diff --git a/.github/guides/ISSUE_MANAGER.md b/.github/guides/ISSUE_MANAGER.md index 3ecab32a7f523..9e5745d77315f 100644 --- a/.github/guides/ISSUE_MANAGER.md +++ b/.github/guides/ISSUE_MANAGER.md @@ -28,8 +28,8 @@ If an issue reports a runtime, it must have the actual runtime call stack provid - usr.loc: the floor (150,25,4) (/turf/open/floor/circuit) - call stack: - Camera Net (/datum/cameranet): visibility(/list (/list), null, /list (/list), 1) - - AI (/mob/living/silicon/ai): camera visibility(Inactive AI Eye (/mob/eye/ai_eye)) - - Inactive AI Eye (/mob/eye/ai_eye): setLoc(the floor (150,25,4) (/turf/open/floor/circuit), 0) + - AI (/mob/living/silicon/ai): camera visibility(Inactive AI Eye (/mob/eye/camera/ai)) + - Inactive AI Eye (/mob/eye/camera/ai): setLoc(the floor (150,25,4) (/turf/open/floor/circuit), 0) - AI (/mob/living/silicon/ai): create eye() - AI (/mob/living/silicon/ai): Initialize(0, null, TagGamerGame2 (/mob/dead/new_player)) - Atoms (/datum/controller/subsystem/atoms): InitAtom(AI (/mob/living/silicon/ai), 0, /list (/list)) diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 6e7f97cf53035..6dfb59a563434 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -288,10 +288,11 @@ jobs: completion_gate: # Serves as a non-moving target for branch rulesets if: always() && !cancelled() name: Completion Gate - needs: [ test_windows, compare_screenshots, compile_all_maps, run_linters ] + needs: [ test_windows, compare_screenshots, compile_all_maps, run_all_tests, run_alternate_tests, run_linters ] runs-on: ubuntu-latest steps: - name: Decide whether the needed jobs succeeded or failed uses: re-actors/alls-green@release/v1 with: jobs: ${{ toJSON(needs) }} + allowed-skips: compare_screenshots diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index 39a4d8c4d9616..423c7f10ad61e 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -27,7 +27,7 @@ jobs: touch dmdoc/.nojekyll echo codedocs.tgstation13.org > dmdoc/CNAME - name: Deploy - uses: JamesIves/github-pages-deploy-action@v4.6.9 + uses: JamesIves/github-pages-deploy-action@v4.7.2 with: branch: gh-pages clean: true diff --git a/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm b/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm index 8ef6caecb96c4..684f452a22047 100644 --- a/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm +++ b/_maps/RandomRuins/IceRuins/doppler/icemoon_underground_icewalker_lower.dmm @@ -182,7 +182,7 @@ dir = 1 }, /obj/structure/chair/sofa/bamboo/left, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "dj" = ( /obj/structure/flora/bush/snow/style_random, @@ -275,7 +275,7 @@ "fK" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/wall_torch/spawns_lit/directional/north, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "fV" = ( /obj/effect/turf_decal/siding/wood{ @@ -302,7 +302,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 4 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "gz" = ( /obj/effect/turf_decal/weather/snow/corner{ @@ -317,7 +317,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 9 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "gU" = ( /obj/structure/rack/wooden, @@ -589,7 +589,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "mr" = ( /obj/structure/wall_torch/spawns_lit/directional/west, @@ -646,7 +646,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "nG" = ( /obj/machinery/griddle/stone, @@ -704,7 +704,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 8 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "ol" = ( /obj/structure/railing/wooden_fencing{ @@ -740,7 +740,7 @@ /area/ruin/unpowered/primitive_genemod_den) "oJ" = ( /obj/effect/turf_decal/weather/dirt, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "oL" = ( /obj/machinery/smartfridge/wooden/seed_shelf, @@ -788,7 +788,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 6 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "po" = ( /obj/effect/turf_decal/siding/wood/corner{ @@ -804,7 +804,7 @@ /area/ruin/unpowered/primitive_genemod_den) "pW" = ( /obj/effect/turf_decal/weather/snow/corner, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "qb" = ( /obj/effect/turf_decal/siding/wood{ @@ -816,7 +816,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 8 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "qr" = ( /obj/structure/rack/wooden, @@ -877,7 +877,7 @@ /obj/structure/chair/sofa/bamboo{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "sj" = ( /obj/structure/spacevine{ @@ -1010,7 +1010,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 6 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "vy" = ( /obj/effect/turf_decal/siding/wood{ @@ -1063,7 +1063,7 @@ /area/ruin/unpowered/primitive_genemod_den) "wU" = ( /obj/structure/wall_torch/spawns_lit/directional/south, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "xc" = ( /obj/structure/wall_torch/spawns_lit/directional/west, @@ -1149,14 +1149,14 @@ /obj/structure/chair/sofa/bamboo/right{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "yx" = ( /obj/effect/turf_decal/weather/dirt{ dir = 9 }, /obj/structure/wall_torch/spawns_lit/directional/south, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "yy" = ( /obj/effect/mob_spawn/ghost_role/human/primitive_genemod, @@ -1164,7 +1164,7 @@ /area/ruin/unpowered/primitive_genemod_den) "yE" = ( /obj/effect/turf_decal/siding/wood, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "yN" = ( /obj/structure/rack/wooden, @@ -1182,7 +1182,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "yU" = ( /obj/structure/window/green_glass_pane, @@ -1193,7 +1193,7 @@ /obj/effect/turf_decal/weather/snow/corner{ dir = 8 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "zu" = ( /obj/effect/turf_decal/siding/wood{ @@ -1543,7 +1543,7 @@ dir = 1 }, /obj/structure/chair/sofa/bamboo/right, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Fj" = ( /obj/structure/chair/wood, @@ -1631,7 +1631,7 @@ /turf/open/floor/wood/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Hd" = ( -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Hv" = ( /obj/structure/rack/wooden, @@ -1690,7 +1690,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "IJ" = ( /obj/structure/wall_torch/spawns_lit/directional/east, @@ -1746,7 +1746,7 @@ name = "thick vines"; opacity = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Jn" = ( /obj/effect/turf_decal/weather/snow/corner{ @@ -1755,7 +1755,7 @@ /obj/effect/turf_decal/weather/snow/corner{ dir = 8 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Jq" = ( /turf/open/misc/hay/icemoon, @@ -1845,7 +1845,7 @@ dir = 1 }, /obj/structure/chair/sofa/bamboo, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Ku" = ( /obj/effect/turf_decal/siding/wood{ @@ -1960,7 +1960,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 8 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Mr" = ( /obj/structure/wall_torch/spawns_lit/directional/north, @@ -2000,7 +2000,7 @@ /obj/effect/turf_decal/weather/snow/corner{ dir = 1 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Nr" = ( /obj/effect/turf_decal/siding/wood{ @@ -2165,7 +2165,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "RZ" = ( /obj/structure/closet/crate/wooden/storage_barrel, @@ -2229,7 +2229,7 @@ /obj/effect/turf_decal/weather/snow/corner{ dir = 4 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "TW" = ( /obj/effect/turf_decal/weather/dirt{ @@ -2277,7 +2277,7 @@ /area/ruin/unpowered/primitive_genemod_den) "Vc" = ( /obj/structure/fluff/minepost, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "Vp" = ( /obj/structure/table/wood, @@ -2402,7 +2402,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 10 }, -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/icemoon, /area/ruin/unpowered/primitive_genemod_den) "YO" = ( /obj/structure/wall_torch/spawns_lit/directional/north, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm index 905403954b67b..d252e77417aca 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_phonebooth.dmm @@ -1,99 +1,119 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_edge{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/turf/open/floor/iron/dark/smooth_large, /area/ruin/powered/icemoon_phone_booth) "c" = ( -/obj/machinery/door/window/left/directional/north, -/obj/machinery/door/window/left/directional/south, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, -/area/ruin/powered/icemoon_phone_booth) +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/icemoon/underground/explored) "e" = ( +/obj/structure/lattice, /turf/open/misc/asteroid/snow/icemoon, -/area/ruin/powered/icemoon_phone_booth) +/area/icemoon/underground/explored) "k" = ( -/obj/machinery/vending/coffee, +/obj/machinery/vending/cigarette{ + all_products_free = 0 + }, /obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/plating/icemoon, -/area/ruin/powered/icemoon_phone_booth) -"q" = ( -/obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 + dir = 8 }, -/obj/machinery/atmospherics/components/tank/air/layer4{ +/obj/effect/turf_decal/weather/snow/corner{ dir = 8 }, -/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/weather/snow, /turf/open/floor/plating/icemoon, /area/ruin/powered/icemoon_phone_booth) -"v" = ( +"q" = ( /obj/structure/lattice, /obj/structure/billboard/Phone_booth, /turf/open/misc/asteroid/snow/icemoon, -/area/ruin/powered/icemoon_phone_booth) -"z" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/area/icemoon/underground/explored) +"v" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, +/obj/item/gps/spaceruin{ + gpstag = "Public Holophone" + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/plating/icemoon, +/area/ruin/powered/icemoon_phone_booth) +"z" = ( +/obj/machinery/door/window/left/directional/north, +/obj/machinery/door/window/left/directional/south, +/obj/effect/turf_decal/weather/snow/corner, /turf/open/floor/iron/dark/smooth_edge{ - dir = 4 + dir = 1 }, /area/ruin/powered/icemoon_phone_booth) "J" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 4 }, -/obj/item/gps/spaceruin{ - gpstag = "Public Holophone" - }, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/atmospherics/components/tank/air/layer4{ + dir = 8 }, /obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow, /turf/open/floor/plating/icemoon, /area/ruin/powered/icemoon_phone_booth) "M" = ( /turf/closed/wall/ice, /area/ruin/powered/icemoon_phone_booth) "R" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating/icemoon, +/obj/machinery/holopad, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/all_access, +/turf/open/floor/iron/dark/smooth_large, /area/ruin/powered/icemoon_phone_booth) "V" = ( -/obj/structure/lattice, -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/powered/icemoon_phone_booth) -"W" = ( -/obj/machinery/vending/cigarette{ - all_products_free = 0 - }, +/obj/machinery/vending/coffee, /obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow, /turf/open/floor/plating/icemoon, /area/ruin/powered/icemoon_phone_booth) +"W" = ( +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) (1,1,1) = {" -v +q M +V k -W M +c "} (2,1,1) = {" -e +W +M R a z c "} (3,1,1) = {" -V +e M +v J -q M +c "} diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm index eb537cd26f6c6..54b33b5e8111d 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_frozen_comms.dmm @@ -311,7 +311,7 @@ }, /obj/structure/rack, /obj/item/wrench, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large/twenty_force, /obj/machinery/light/small/built/directional/south, /turf/open/floor/plating/icemoon, /area/ruin/powered/shuttle) diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm index e2b11a02964eb..e41c2db686323 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm @@ -90,6 +90,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) +"bp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "bu" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/wood, @@ -216,9 +223,15 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 }, -/obj/machinery/smartfridge/organ, -/obj/item/organ/alien/resinspinner, -/obj/item/organ/eyes/night_vision, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/clothing/gloves/latex/coroner{ + pixel_x = -1; + pixel_y = 8 + }, +/obj/item/clothing/mask/surgical{ + pixel_x = 6; + pixel_y = 10 + }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "cE" = ( @@ -498,9 +511,10 @@ /obj/effect/decal/cleanable/blood/gibs/down, /turf/open/floor/iron/cafeteria, /area/ruin/syndibiodome) -"gX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/warm/directional/west, +"gZ" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable/layer1, +/obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "ha" = ( @@ -509,10 +523,10 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/noteleport) "he" = ( -/mob/living/basic/gorilla/genetics, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, +/mob/living/basic/gorilla/hostile, /turf/open/floor/wood, /area/ruin/syndibiodome) "hf" = ( @@ -527,8 +541,8 @@ /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "hm" = ( -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt/dust, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark/small, /area/ruin/syndibiodome) "hr" = ( @@ -639,14 +653,12 @@ }, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) -"iq" = ( -/obj/structure/flora/rock/pile/style_random, -/mob/living/carbon/human/species/monkey/angry, -/turf/open/floor/grass, -/area/ruin/syndibiodome) "ir" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/dim/directional/east, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "iG" = ( @@ -723,16 +735,6 @@ }, /obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/surgery_tray/full, -/obj/item/clothing/gloves/latex/coroner{ - pixel_x = -1; - pixel_y = 8 - }, -/obj/item/clothing/mask/surgical{ - pixel_x = 6; - pixel_y = 10 - }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "jd" = ( @@ -771,9 +773,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) -"jQ" = ( -/turf/closed/indestructible/syndicate/nodiagonal, -/area/icemoon/surface/outdoors/noteleport) "jR" = ( /obj/effect/decal/cleanable/blood/trails{ dir = 4 @@ -1025,9 +1024,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) -"mK" = ( -/turf/open/misc/asteroid/snow/icemoon, -/area/ruin/syndibiodome) "mV" = ( /obj/effect/turf_decal/siding/wideplating/dark, /obj/effect/decal/cleanable/dirt/dust, @@ -1040,6 +1036,9 @@ "mW" = ( /obj/effect/spawner/random/trash, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "mZ" = ( @@ -1113,6 +1112,13 @@ /obj/effect/turf_decal/trimline/dark_red/line, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) +"on" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "oq" = ( /obj/effect/decal/cleanable/blood/trails{ dir = 10 @@ -1147,7 +1153,7 @@ /obj/machinery/light/warm/directional/west, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, -/mob/living/basic/gorilla/genetics, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "oH" = ( @@ -1346,7 +1352,6 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/mob/living/carbon/human/species/monkey/angry, /obj/machinery/light/warm/directional/north, /obj/machinery/digital_clock/directional/north, /obj/effect/decal/cleanable/dirt, @@ -1354,8 +1359,8 @@ /area/ruin/syndibiodome) "rQ" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt/dust, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "rX" = ( @@ -1434,7 +1439,6 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mapping_helpers/broken_machine, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) "td" = ( @@ -1701,12 +1705,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) +"vH" = ( +/obj/effect/spawner/random/trash, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "vJ" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/basic/gorilla/genetics, /obj/effect/turf_decal/trimline/purple/corner, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) "vK" = ( @@ -1959,7 +1971,6 @@ /obj/effect/turf_decal/trimline/dark/line{ dir = 1 }, -/mob/living/carbon/human/species/monkey/angry, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, @@ -2100,7 +2111,6 @@ /turf/open/floor/grass, /area/ruin/syndibiodome) "yU" = ( -/mob/living/carbon/human/species/monkey/angry, /obj/effect/turf_decal/weather/dirt{ dir = 9 }, @@ -2235,6 +2245,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) +"Az" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "AA" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 @@ -2262,9 +2279,9 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/item/storage/belt/security/webbing, /obj/item/storage/toolbox/syndicate, -/obj/item/gun/ballistic/automatic/pistol, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, +/obj/item/gun/ballistic/automatic/pistol/contraband, +/obj/item/ammo_box/magazine/m9mm, +/obj/item/ammo_box/magazine/m9mm, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "Ba" = ( @@ -2496,7 +2513,6 @@ /turf/open/floor/iron/white/small, /area/ruin/syndibiodome) "EE" = ( -/mob/living/carbon/human/species/monkey/angry, /obj/effect/decal/cleanable/blood/trails{ dir = 1 }, @@ -2727,7 +2743,6 @@ "Hs" = ( /obj/structure/flora/bush/flowers_br/style_3, /obj/structure/flora/bush/flowers_yw/style_3, -/mob/living/carbon/human/species/monkey/angry, /obj/effect/gibspawner/human/bodypartless, /obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, /turf/open/floor/grass, @@ -2810,6 +2825,14 @@ }, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) +"Iq" = ( +/obj/machinery/light/small/dim/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "IF" = ( /obj/effect/mob_spawn/corpse/human/syndicatecommando/lessenedgear, /obj/effect/turf_decal/siding/wideplating/dark/end{ @@ -2947,6 +2970,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) +"Kl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/layer3, +/obj/structure/cable/layer1, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/ruin/syndibiodome) "Kn" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 2 @@ -3087,6 +3117,9 @@ "LA" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/dim/directional/west, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "LB" = ( @@ -3192,6 +3225,8 @@ /turf/open/floor/iron/cafeteria, /area/ruin/syndibiodome) "Mr" = ( +/obj/machinery/light/warm/directional/west, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "Mt" = ( @@ -3266,7 +3301,6 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/mob/living/carbon/human/species/monkey/angry, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/dark/line, /obj/effect/decal/cleanable/dirt/dust, @@ -3348,7 +3382,7 @@ /obj/effect/turf_decal/weather/dirt{ dir = 6 }, -/mob/living/basic/gorilla/genetics, +/mob/living/basic/gorilla/hostile, /turf/open/floor/grass, /area/ruin/syndibiodome) "NN" = ( @@ -3364,7 +3398,6 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 6 }, -/obj/effect/gibspawner/generic, /obj/machinery/digital_clock/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium/red, @@ -3379,11 +3412,8 @@ /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "Os" = ( -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 8 - }, /obj/effect/turf_decal/trimline/tram/filled, -/turf/open/floor/pod/dark, +/turf/closed/indestructible/syndicate/nodiagonal, /area/ruin/syndibiodome) "Oy" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, @@ -3392,13 +3422,6 @@ }, /turf/open/floor/plating, /area/ruin/syndibiodome) -"OD" = ( -/mob/living/carbon/human/species/monkey/angry, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 - }, -/turf/open/floor/grass, -/area/ruin/syndibiodome) "OH" = ( /obj/effect/decal/cleanable/blood/trails{ dir = 8 @@ -3428,8 +3451,8 @@ /obj/machinery/light/warm/directional/east, /obj/item/storage/belt/security/webbing, /obj/item/gun/ballistic/automatic/pistol/contraband, -/obj/item/ammo_box/magazine/m10mm, -/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/m9mm, +/obj/item/ammo_box/magazine/m9mm, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "OM" = ( @@ -3446,6 +3469,9 @@ "ON" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/dim/directional/south, +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/structure/cable/layer3, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "OO" = ( @@ -3477,7 +3503,7 @@ /area/ruin/syndibiodome) "Pw" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 }, @@ -3640,7 +3666,6 @@ /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "RK" = ( -/mob/living/carbon/human/species/monkey/angry, /obj/structure/chair/office/tactical{ dir = 4 }, @@ -3659,8 +3684,9 @@ /area/icemoon/surface/outdoors/noteleport) "RX" = ( /obj/effect/turf_decal/siding/wideplating/dark, -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt, +/obj/effect/gibspawner/generic, +/mob/living/basic/gorilla/hostile, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "Se" = ( @@ -3823,6 +3849,10 @@ dir = 1 }, /area/ruin/syndibiodome) +"To" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/turf/open/floor/iron/dark, +/area/ruin/syndibiodome) "Tu" = ( /obj/structure/table/reinforced/plastitaniumglass, /obj/effect/turf_decal/siding/wideplating/dark{ @@ -3897,6 +3927,7 @@ /obj/item/stack/sheet/mineral/uranium/five, /obj/item/stack/sheet/mineral/uranium/five, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/warm/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/syndibiodome) "TL" = ( @@ -3971,12 +4002,12 @@ /turf/open/floor/iron/dark/small, /area/ruin/syndibiodome) "Ux" = ( -/mob/living/basic/gorilla/genetics, /obj/effect/gibspawner/human/bodypartless, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/blue/corner{ dir = 4 }, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark, /area/ruin/syndibiodome) "Uz" = ( @@ -4223,8 +4254,8 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/mob/living/basic/gorilla/genetics, /obj/effect/decal/cleanable/dirt, +/mob/living/basic/gorilla/hostile, /turf/open/floor/iron/dark/herringbone, /area/ruin/syndibiodome) "XG" = ( @@ -4362,13 +4393,13 @@ /area/ruin/syndibiodome) "YZ" = ( /obj/effect/turf_decal/siding/wideplating/dark, -/mob/living/basic/gorilla/genetics, /obj/structure/fluff/fake_vent, /obj/effect/decal/cleanable/blood/trails{ dir = 1 }, /obj/effect/decal/cleanable/dirt, /obj/effect/gibspawner/human/bodypartless, +/mob/living/basic/gorilla/hostile, /turf/open/floor/mineral/plastitanium/red, /area/ruin/syndibiodome) "Zd" = ( @@ -4690,7 +4721,7 @@ oq Mc zM zM -mK +ys ys ys tL @@ -4727,8 +4758,8 @@ ck ys ys zM -Ut -vx +Kl +on xi kw wL @@ -4820,8 +4851,8 @@ jS ys ys zM -Ut -Ut +Kl +Kl zM Sr zM @@ -4867,7 +4898,7 @@ pg pg zM zM -Ut +Kl zM zM Ab @@ -4914,7 +4945,7 @@ zd ys zM Db -Ut +Kl zM kK MB @@ -4961,7 +4992,7 @@ pg pg zM ic -Ut +Kl zM rK YZ @@ -5008,7 +5039,7 @@ uD ys zM wY -Ut +Kl zM cB ja @@ -5102,10 +5133,10 @@ AI ys ys zM -Ut -Ut -zM -zM +Kl +Kl +Iq +Ro zM zM zM @@ -5151,8 +5182,8 @@ Hi zM zM Ut -LA -Ro +Kl +Ut zM qN qU @@ -5198,10 +5229,10 @@ ys ys zM zM -Ut -Ut -Ut -vx +Kl +Kl +Kl +gZ je kt XC @@ -5582,7 +5613,7 @@ Fl qN IU vu -iq +MH YD Fp xz @@ -5664,13 +5695,13 @@ ys ck zM zM -mW -Ut +vH +bp ir -Ut -Ut -Ut -vx +bp +bp +bp +Az kw Eq CV @@ -5711,7 +5742,7 @@ ys ys zM MP -Ut +bp zM zM Ut @@ -5758,7 +5789,7 @@ ys ys zM qa -Ut +bp zM zM dS @@ -5805,7 +5836,7 @@ ys zM zM Sv -Ut +bp zM wx RH @@ -5852,7 +5883,7 @@ zM zM rZ Ut -Ut +bp zM Ra RX @@ -5899,7 +5930,7 @@ zM zM zM zM -Ut +bp zM Pw Oi @@ -5993,12 +6024,12 @@ Uc qp sR zM -Ut -Ut +bp +bp LA -mW -Ut -vx +vH +bp +Az Nt uW Vv @@ -6049,7 +6080,7 @@ qN pY XC XC -qN +To Ut zM Vj @@ -6060,7 +6091,7 @@ XE Mt WB iX -OD +cN zM ys uD @@ -6188,8 +6219,8 @@ zM zM zM zM -Vv zM +To zM LU qN @@ -6235,8 +6266,8 @@ zM ek Dc zM -zM -zM +Mr +Ut Mr Ut qN @@ -6283,7 +6314,7 @@ MM bu zM Kz -gX +Ut Ut Ut zM @@ -6428,7 +6459,7 @@ zM zM zM ys -jQ +zM zM zM zM diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm index 579e6342b9292..6150ca807272c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm @@ -62,7 +62,7 @@ /turf/open/floor/plating/lavaland_atmos, /area/ruin/unpowered) "l" = ( -/turf/open/water/hot_spring, +/turf/open/water/hot_spring/lavaland_atmos, /area/lavaland/surface) "m" = ( /obj/machinery/door/airlock/survival_pod/glass, @@ -118,7 +118,7 @@ /obj/structure/chair/plastic{ dir = 8 }, -/turf/open/misc/ashplanet/wateryrock, +/turf/open/misc/ashplanet/wateryrock/lavaland_atmos, /area/lavaland/surface) "y" = ( /obj/structure/chair/comfy/shuttle{ @@ -129,7 +129,7 @@ /area/ruin/unpowered) "z" = ( /obj/item/book/manual/fish_catalog, -/turf/open/misc/ashplanet/wateryrock, +/turf/open/misc/ashplanet/wateryrock/lavaland_atmos, /area/lavaland/surface) "B" = ( /mob/living/basic/mining/goliath, @@ -140,7 +140,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface) "E" = ( -/turf/open/misc/ashplanet/wateryrock, +/turf/open/misc/ashplanet/wateryrock/lavaland_atmos, /area/lavaland/surface) "F" = ( /obj/effect/mob_spawn/corpse/human/cargo_tech, @@ -175,7 +175,7 @@ /area/ruin/powered) "L" = ( /obj/item/storage/toolbox/fishing, -/turf/open/misc/ashplanet/wateryrock, +/turf/open/misc/ashplanet/wateryrock/lavaland_atmos, /area/lavaland/surface) "M" = ( /obj/structure/rack, @@ -213,7 +213,7 @@ /area/ruin/powered) "U" = ( /obj/item/bait_can/worm/premium, -/turf/open/misc/ashplanet/wateryrock, +/turf/open/misc/ashplanet/wateryrock/lavaland_atmos, /area/lavaland/surface) "V" = ( /obj/structure/table/survival_pod, diff --git a/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm b/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm index 5d7b0c4bee510..4f032c8ac053b 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation/kitchen_1.dmm @@ -30,7 +30,6 @@ /area/ruin/space/djstation) "t" = ( /obj/structure/closet/secure_closet/freezer/fridge/all_access, -/obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/bar/opposingcorners, /obj/machinery/light/small/directional/south, /turf/open/floor/iron, diff --git a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm index c396ddb4121e7..ccbe450085dc9 100644 --- a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm @@ -351,7 +351,7 @@ "kp" = ( /obj/effect/spawner/random/environmentally_safe_anomaly/immobile, /turf/template_noop, -/area/space) +/area/space/nearstation) "kt" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index a8a4a968d976d..1ecb40291e33a 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -285,7 +285,7 @@ /turf/open/misc/asteroid/airless, /area/ruin/space) "ET" = ( -/mob/living/basic/lizard, +/mob/living/basic/lizard/space, /turf/open/misc/asteroid/airless, /area/ruin/space) "Fo" = ( diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 52a288e64e6d1..42fa98704a300 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -98,7 +98,7 @@ /turf/open/floor/iron/white, /area/ruin/space/has_grav/dangerous_research/medical) "aZ" = ( -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/structure/table, /turf/open/floor/plating/rust, /area/ruin/space/has_grav/dangerous_research/medical) diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm index aa15bb27e8b98..35b18eff47ff8 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm @@ -122,7 +122,6 @@ /area/ruin/space/has_grav/garbagetruck/toystore) "lm" = ( /obj/structure/spider/stickyweb, -/obj/structure/spider/stickyweb/very_sticky, /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "mf" = ( @@ -182,7 +181,6 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/garbagetruck/toystore) "qX" = ( -/obj/structure/spider/stickyweb/very_sticky, /obj/item/food/badrecipe/moldy, /obj/structure/spider/stickyweb, /obj/item/food/spidereggs{ diff --git a/_maps/RandomRuins/SpaceRuins/interdyne.dmm b/_maps/RandomRuins/SpaceRuins/interdyne.dmm index 9c802b0be434c..46e22d19fb67b 100644 --- a/_maps/RandomRuins/SpaceRuins/interdyne.dmm +++ b/_maps/RandomRuins/SpaceRuins/interdyne.dmm @@ -1015,7 +1015,7 @@ /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/interdyne) "PD" = ( -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/structure/table/reinforced/rglass, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/interdyne) diff --git a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm index 3e4bece11e8e5..96959954e2678 100644 --- a/_maps/RandomRuins/SpaceRuins/meatderelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/meatderelict.dmm @@ -484,7 +484,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 6 }, -/obj/item/surgery_tray/full/deployed, +/obj/effect/spawner/surgery_tray/full/deployed, /turf/open/indestructible/white, /area/ruin/space/has_grav/powered/biooutpost) "kh" = ( @@ -728,8 +728,8 @@ /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/obj/item/ammo_casing/a357/spent, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/indestructible/white, /area/ruin/space/has_grav/powered/biooutpost) "oQ" = ( @@ -887,7 +887,7 @@ /obj/effect/turf_decal/siding/purple{ dir = 1 }, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/indestructible/white, /area/ruin/space/has_grav/powered/biooutpost) "rl" = ( @@ -1561,9 +1561,9 @@ /turf/open/indestructible/plating, /area/ruin/space/has_grav/powered/biooutpost) "DC" = ( -/obj/item/ammo_casing/a357/spent, -/obj/item/ammo_casing/a357/spent, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, +/obj/item/ammo_casing/c357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/indestructible/white, /area/ruin/space/has_grav/powered/biooutpost) "DJ" = ( diff --git a/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm b/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm index c98a43e89c2ab..7a76e71debf6e 100644 --- a/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm +++ b/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm @@ -6,7 +6,7 @@ /area/ruin) "dI" = ( /obj/item/grown/bananapeel, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 9; pixel_x = -13; pixel_y = 10 @@ -78,19 +78,19 @@ }, /obj/effect/decal/cleanable/blood/gibs, /obj/machinery/light/small/broken/directional/south, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/floor/iron/checker/airless, /area/ruin) "uc" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 4 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = -5; dir = 5; pixel_y = 6 }, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /obj/item/gps/spaceruin, /turf/open/floor/plating/airless, /area/ruin) @@ -204,7 +204,7 @@ /obj/effect/mob_spawn/corpse/human/clown, /obj/effect/decal/cleanable/blood/footprints, /obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/floor/plating/airless, /area/ruin) "Ij" = ( @@ -253,7 +253,7 @@ "Pq" = ( /obj/machinery/light/broken/directional/north, /obj/structure/reagent_dispensers/watertank, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/floor/iron/checker/airless, /area/ruin) "Qb" = ( diff --git a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm index 4b42f668c3377..85c2910d1fab8 100644 --- a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm +++ b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm @@ -210,8 +210,8 @@ "nF" = ( /obj/item/radio/intercom/directional/south, /obj/effect/decal/cleanable/blood/old, -/obj/item/ammo_casing/a357/match, -/obj/item/ammo_casing/a357/match{ +/obj/item/ammo_casing/c357/match, +/obj/item/ammo_casing/c357/match{ pixel_y = -4; pixel_x = -7 }, @@ -306,7 +306,7 @@ /area/ruin/space/unpowered) "uS" = ( /obj/machinery/newscaster/directional/south, -/obj/item/ammo_casing/a357/match, +/obj/item/ammo_casing/c357/match, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/unpowered) "vi" = ( @@ -425,7 +425,7 @@ /turf/open/floor/mineral/plastitanium/red/airless, /area/ruin/space/unpowered) "Cv" = ( -/obj/item/ammo_casing/a357/match, +/obj/item/ammo_casing/c357/match, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/unpowered) "CC" = ( diff --git a/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm b/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm index 6acec2ccc4393..7b0f8a6e8fbcc 100644 --- a/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm +++ b/_maps/RandomRuins/SpaceRuins/prison_shuttle.dmm @@ -147,8 +147,8 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space/prison_shuttle) "O" = ( -/mob/living/basic/cockroach, /obj/effect/turf_decal/tile/brown/fourcorners, +/obj/effect/decal/cleanable/xenoblood/xsplatter, /turf/open/floor/iron/dark/airless, /area/ruin/space/prison_shuttle) "P" = ( diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 5377a113df53c..592b425385099 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -4146,14 +4146,14 @@ "Eb" = ( /obj/structure/cable, /obj/effect/mapping_helpers/burnt_floor, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = -6; pixel_y = 3 }, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = -5 }, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = 6; dir = 9; pixel_y = -3 @@ -5018,8 +5018,8 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "IG" = ( -/obj/item/ammo_casing/a357, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357, +/obj/item/ammo_casing/c357{ pixel_x = 5; pixel_y = 6 }, @@ -5893,8 +5893,8 @@ /turf/open/floor/plating, /area/ruin/space/ks13/science/ordnance) "Nk" = ( -/obj/effect/spawner/random/maintenance, /obj/structure/lattice, +/obj/effect/spawner/random/maintenance/no_decals, /turf/template_noop, /area/space/nearstation) "Nl" = ( @@ -6330,11 +6330,11 @@ /turf/open/floor/iron/airless, /area/ruin/space/ks13/hallway/aft) "Pv" = ( -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = 4; pixel_y = -7 }, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = -5 }, /obj/structure/cable, @@ -6847,12 +6847,12 @@ "Sk" = ( /obj/structure/cable, /obj/effect/mapping_helpers/burnt_floor, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = 6; pixel_y = -4 }, -/obj/item/ammo_casing/a357, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357, +/obj/item/ammo_casing/c357{ pixel_x = -10; pixel_y = 7; dir = 9 @@ -7599,12 +7599,12 @@ /area/ruin/space/ks13/service/hydro) "VH" = ( /obj/effect/mapping_helpers/burnt_floor, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = 8; dir = 8; pixel_y = 6 }, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = 6; pixel_y = -4 }, diff --git a/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm b/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm index 71074aa4451fd..3534df8db024a 100644 --- a/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm +++ b/_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm @@ -63,7 +63,7 @@ /obj/structure/chair/old{ dir = 1 }, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large/twenty_force, /turf/open/floor/oldshuttle, /area/ruin/space/has_grav/powered) "o" = ( diff --git a/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm b/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm index b31a11cba31ca..a358d59956e83 100644 --- a/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm +++ b/_maps/RandomRuins/SpaceRuins/the_faceoff.dmm @@ -1,15 +1,15 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aj" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 12 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -7; pixel_y = 6 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 4; pixel_x = 14; pixel_y = 14 @@ -45,40 +45,40 @@ /turf/template_noop, /area/template_noop) "bM" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = -1; pixel_y = 5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -7; pixel_y = 6 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = -5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 2 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 4; pixel_x = 14; pixel_y = 14 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = -5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = 12 @@ -168,7 +168,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "eI" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = -1; pixel_y = 5 @@ -213,17 +213,17 @@ /turf/open/misc/asteroid/basalt/airless, /area/ruin/space) "gq" = ( -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /obj/structure/barricade/wooden, /turf/open/floor/iron/dark/airless, /area/ruin/space) "gx" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -7; pixel_y = 6 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 2 }, @@ -280,41 +280,41 @@ /turf/open/floor/iron/dark/textured/airless, /area/ruin/space) "je" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 10; pixel_y = 5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = 12 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -2; pixel_y = -5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 2 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = 1 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 6; dir = 1 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = -6 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_y = 13; pixel_x = -5 @@ -322,7 +322,7 @@ /turf/open/floor/mineral/plastitanium/red/airless, /area/ruin/space) "jX" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9; pixel_y = 9 @@ -354,7 +354,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "mC" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 4; pixel_x = 14; pixel_y = 14 @@ -392,7 +392,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "pl" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = -5 @@ -434,11 +434,11 @@ /area/ruin/space) "qX" = ( /obj/effect/mapping_helpers/broken_floor, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 12 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9; pixel_y = 9 @@ -455,7 +455,7 @@ /area/ruin/space) "rU" = ( /obj/effect/mapping_helpers/broken_floor, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9 }, @@ -482,7 +482,7 @@ /area/ruin/space) "su" = ( /obj/effect/mapping_helpers/broken_floor, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = 12 @@ -541,7 +541,7 @@ /turf/open/misc/asteroid/basalt/airless, /area/ruin/space) "vA" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = -1; pixel_y = 5 @@ -549,7 +549,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "vZ" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -2; pixel_y = -5 @@ -588,7 +588,7 @@ /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space) "xi" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 4; pixel_x = 14; pixel_y = 14 @@ -726,7 +726,7 @@ /area/ruin/space) "Dm" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 12 }, @@ -786,7 +786,7 @@ /turf/open/misc/asteroid/basalt/airless, /area/ruin/space) "FQ" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 2 }, @@ -804,7 +804,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "GA" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 4; pixel_x = 14; pixel_y = 14 @@ -822,7 +822,7 @@ /area/ruin/space) "HE" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 12 }, @@ -881,7 +881,7 @@ /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space) "JP" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 12 }, @@ -897,11 +897,11 @@ /turf/open/floor/mineral/plastitanium/red/airless, /area/ruin/space) "Kd" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9; pixel_y = 9 @@ -909,7 +909,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "Kp" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 10; pixel_y = 5 @@ -940,14 +940,14 @@ /turf/open/floor/iron/dark/textured/airless, /area/ruin/space) "LM" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 12 }, /turf/open/floor/iron/dark/airless, /area/ruin/space) "LX" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = 12 @@ -973,7 +973,7 @@ /turf/open/floor/mineral/plastitanium/red/airless, /area/ruin/space) "Nc" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 10; pixel_y = 5 @@ -1047,7 +1047,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "TH" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9 }, @@ -1065,7 +1065,7 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "Uy" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -7; pixel_y = 6 @@ -1102,36 +1102,36 @@ /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space) "Vn" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 4; pixel_x = 14; pixel_y = 14 }, -/obj/item/ammo_casing/a357/spent, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent, +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 10; pixel_y = 5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 10; pixel_y = 5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -7; pixel_y = 6 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 12 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = 9; pixel_y = 9 @@ -1152,7 +1152,7 @@ /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space) "VB" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 2 }, @@ -1209,40 +1209,40 @@ /turf/open/floor/iron/dark/airless, /area/ruin/space) "Zg" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 10; pixel_y = 5 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = 7 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -4; pixel_y = -7 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 2; pixel_y = 12 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 1; pixel_x = -1; pixel_y = 8 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -2; pixel_y = -4 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = -7; pixel_y = 8 }, -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_x = 5; pixel_y = -4 }, @@ -1259,7 +1259,7 @@ /turf/open/floor/mineral/plastitanium/airless, /area/ruin/space) "ZP" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ dir = 8; pixel_x = 2; pixel_y = 1 diff --git a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm index 719088322f21e..922715ca8d7f3 100644 --- a/_maps/RandomRuins/SpaceRuins/the_outlet.dmm +++ b/_maps/RandomRuins/SpaceRuins/the_outlet.dmm @@ -701,7 +701,7 @@ /area/ruin/space/has_grav/the_outlet/employeesection) "rF" = ( /obj/structure/table/reinforced/rglass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/reagent_containers/syringe/lethal/execution, /turf/open/floor/iron/freezer, /area/ruin/space/has_grav/the_outlet/researchrooms) diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index a8f52784b343a..c830fdc968fa1 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -4131,7 +4131,7 @@ /area/awaymission/moonoutpost19/arrivals/shed) "Bf" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = -2; pixel_y = -7 }, @@ -6467,7 +6467,7 @@ "QZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = 11; pixel_y = 8 }, @@ -7514,7 +7514,7 @@ /obj/item/stack/ore/glass{ pixel_x = 8 }, -/obj/item/ammo_casing/a357{ +/obj/item/ammo_casing/c357{ pixel_x = -10; pixel_y = -7 }, diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index c2c7b24788d7c..42a23d57808db 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -11,7 +11,6 @@ #include "map_files\IceBoxStation\IceBoxStation.dmm" #include "map_files\MetaStation\MetaStation.dmm" #include "map_files\Mining\Lavaland.dmm" - #include "map_files\NorthStar\north_star.dmm" #include "map_files\tramstation\tramstation.dmm" #include "map_files\NebulaStation\NebulaStation.dmm" #include "map_files\wawastation\wawastation.dmm" diff --git a/_maps/deathmatch/arena_station.dmm b/_maps/deathmatch/arena_station.dmm index 50089df45e8a0..8009387c50258 100644 --- a/_maps/deathmatch/arena_station.dmm +++ b/_maps/deathmatch/arena_station.dmm @@ -79,7 +79,7 @@ /obj/structure/closet/crate/cardboard, /obj/effect/turf_decal/tile/brown/fourcorners, /obj/item/mail/junkmail, -/obj/item/ammo_casing/a357, +/obj/item/ammo_casing/c357, /obj/item/reagent_containers/syringe/plasma, /turf/open/indestructible, /area/deathmatch) diff --git a/_maps/deathmatch/species_warfare.dmm b/_maps/deathmatch/species_warfare.dmm index e80485c2b5e5c..66e7e9b2275aa 100644 --- a/_maps/deathmatch/species_warfare.dmm +++ b/_maps/deathmatch/species_warfare.dmm @@ -23,7 +23,7 @@ dir = 1 }, /obj/structure/table/glass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/indestructible/white, /area/deathmatch) "bX" = ( @@ -228,7 +228,7 @@ "iM" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/structure/table/glass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/indestructible/white, /area/deathmatch) "iV" = ( diff --git a/_maps/doppler/deathmatch/cybersun_sim.dmm b/_maps/doppler/deathmatch/cybersun_sim.dmm new file mode 100644 index 0000000000000..619a3405bdc99 --- /dev/null +++ b/_maps/doppler/deathmatch/cybersun_sim.dmm @@ -0,0 +1,978 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aQ" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/deathmatch) +"aZ" = ( +/obj/structure/fluff/fake_scrubber, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"bA" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/line{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"bM" = ( +/obj/effect/light_emitter{ + set_cap = 2; + light_color = "#DEEFFF"; + set_luminosity = 4 + }, +/obj/effect/turf_decal/syndicateemblem/middle/middle, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"cB" = ( +/obj/structure/fluff/fake_vent, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"cG" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/line, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"ds" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/warning{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"dQ" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"eP" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"fS" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/closed/wall/r_wall/syndicate, +/area/deathmatch) +"gQ" = ( +/obj/structure/fluff/fake_camera{ + dir = 4 + }, +/obj/item/storage/medkit/civil_defense/stocked{ + pixel_y = 3 + }, +/obj/structure/rack, +/turf/open/floor/engine, +/area/deathmatch) +"hm" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/deathmatch) +"hY" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/turf/open/floor/plating, +/area/deathmatch) +"hZ" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"iL" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/engine, +/area/deathmatch) +"iO" = ( +/obj/effect/turf_decal/siding/dark/corner, +/turf/closed/wall/r_wall/syndicate, +/area/deathmatch) +"jp" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/turf/open/floor/plating, +/area/deathmatch) +"jH" = ( +/obj/effect/turf_decal/syndicateemblem/middle/right, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"kB" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/plating, +/area/deathmatch) +"kY" = ( +/obj/item/forging/reagent_weapon/axe{ + pixel_y = -3 + }, +/obj/item/forging/reagent_weapon/axe{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/structure/table/reinforced/ctf, +/turf/open/floor/engine, +/area/deathmatch) +"lg" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"mq" = ( +/obj/structure/emergency_shield/timer, +/obj/effect/light_emitter{ + set_cap = 2; + light_color = "#DEEFFF"; + set_luminosity = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/deathmatch) +"mv" = ( +/obj/effect/turf_decal/syndicateemblem/bottom/left, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"mH" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 8 + }, +/turf/closed/wall/r_wall/syndicate, +/area/deathmatch) +"ne" = ( +/obj/structure/emergency_shield/timer, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/open/floor/plating, +/area/deathmatch) +"nf" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/deathmatch) +"nr" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 9 + }, +/turf/open/floor/plating, +/area/deathmatch) +"od" = ( +/obj/item/forging/reagent_weapon/spear{ + pixel_x = 3 + }, +/obj/item/forging/reagent_weapon/hammer{ + pixel_x = -3 + }, +/obj/structure/table/reinforced/ctf, +/turf/open/floor/engine, +/area/deathmatch) +"of" = ( +/obj/structure/emergency_shield/timer, +/obj/effect/light_emitter{ + set_cap = 2; + light_color = "#DEEFFF"; + set_luminosity = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/plating, +/area/deathmatch) +"ot" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/warning, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"pi" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"pp" = ( +/obj/item/forging/reagent_weapon/dagger{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/forging/reagent_weapon/dagger{ + pixel_y = -3 + }, +/obj/structure/table/reinforced/ctf, +/turf/open/floor/engine, +/area/deathmatch) +"pM" = ( +/obj/structure/emergency_shield/timer, +/obj/effect/light_emitter{ + set_cap = 2; + light_color = "#DEEFFF"; + set_luminosity = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/plating, +/area/deathmatch) +"qz" = ( +/obj/structure/lattice, +/obj/structure/marker_beacon/burgundy, +/turf/template_noop, +/area/deathmatch) +"qE" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"qM" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_cw{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"sn" = ( +/obj/item/forging/reagent_weapon/katana{ + pixel_x = -6 + }, +/obj/item/forging/reagent_weapon/sword{ + pixel_x = 6 + }, +/obj/structure/table/reinforced/ctf, +/turf/open/floor/engine, +/area/deathmatch) +"sN" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"te" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"tf" = ( +/obj/structure/fluff/fake_camera{ + dir = 9 + }, +/obj/item/storage/medkit/civil_defense/stocked{ + pixel_y = 3 + }, +/obj/structure/rack, +/turf/open/floor/engine, +/area/deathmatch) +"zA" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"zZ" = ( +/obj/structure/emergency_shield/timer, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/plating, +/area/deathmatch) +"AS" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/turf/open/floor/plating, +/area/deathmatch) +"Bc" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/turf/open/floor/plating, +/area/deathmatch) +"Bg" = ( +/obj/effect/turf_decal/syndicateemblem/bottom/right, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"BI" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/plating, +/area/deathmatch) +"Cz" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/turf/open/floor/plating, +/area/deathmatch) +"CG" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/engine, +/area/deathmatch) +"CW" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"Ec" = ( +/obj/structure/emergency_shield/timer, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/turf/open/floor/plating, +/area/deathmatch) +"Fe" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"Fw" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/warning{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"Gy" = ( +/obj/effect/landmark/deathmatch_player_spawn, +/turf/open/floor/engine, +/area/deathmatch) +"HH" = ( +/turf/open/floor/engine, +/area/deathmatch) +"IG" = ( +/obj/effect/turf_decal/syndicateemblem/top/middle, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"IL" = ( +/obj/effect/turf_decal/syndicateemblem/bottom/middle, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"Ji" = ( +/obj/effect/turf_decal/syndicateemblem/top/left, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"Jy" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/plating, +/area/deathmatch) +"Ke" = ( +/turf/open/ai_visible, +/area/deathmatch) +"KB" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"KD" = ( +/obj/structure/fluff/fake_camera{ + dir = 10 + }, +/obj/item/storage/medkit/civil_defense/stocked{ + pixel_y = 3 + }, +/obj/structure/rack, +/turf/open/floor/engine, +/area/deathmatch) +"Mj" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/shrink_ccw{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"NM" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"NN" = ( +/obj/effect/turf_decal/stripes/red/corner, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"NR" = ( +/turf/closed/wall/r_wall/syndicate, +/area/deathmatch) +"Pu" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"PI" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/engine, +/area/deathmatch) +"PK" = ( +/turf/template_noop, +/area/deathmatch) +"Re" = ( +/obj/effect/turf_decal/stripes/red/line, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"Ro" = ( +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"Rx" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/plating, +/area/deathmatch) +"Tw" = ( +/obj/effect/turf_decal/syndicateemblem/middle/left, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"Un" = ( +/obj/effect/turf_decal/syndicateemblem/top/right, +/turf/open/floor/mineral/plastitanium/red, +/area/deathmatch) +"Vi" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/engine, +/area/deathmatch) +"WB" = ( +/obj/structure/fluff/fake_camera, +/obj/item/storage/medkit/civil_defense/stocked{ + pixel_y = 3 + }, +/obj/structure/rack, +/turf/open/floor/engine, +/area/deathmatch) +"Xt" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/warning{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) +"Yl" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 1 + }, +/turf/closed/wall/r_wall/syndicate, +/area/deathmatch) +"YG" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/turf_decal/siding/dark, +/turf/open/floor/plating, +/area/deathmatch) +"YZ" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/turf/open/floor/plating, +/area/deathmatch) +"Zf" = ( +/turf/closed/indestructible/syndicate, +/area/deathmatch) +"Zs" = ( +/obj/effect/turf_decal/trimline/dark_red/filled/line{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/deathmatch) + +(1,1,1) = {" +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +"} +(2,1,1) = {" +Ke +Ke +Ke +Ke +Ke +Ke +Ke +NR +NR +NR +NR +NR +NR +NR +Ke +Ke +Ke +Ke +Ke +Ke +Ke +"} +(3,1,1) = {" +Ke +Ke +qz +nf +nf +nf +nf +NR +pp +kY +KD +od +sn +Zf +nf +nf +nf +nf +qz +Ke +Ke +"} +(4,1,1) = {" +Ke +Ke +nf +PK +PK +PK +nf +NR +PI +HH +Gy +HH +CG +Zf +nf +PK +PK +PK +nf +Ke +Ke +"} +(5,1,1) = {" +Ke +Ke +nf +PK +jp +jp +jp +iO +ne +ne +mq +ne +ne +fS +jp +jp +jp +PK +nf +Ke +Ke +"} +(6,1,1) = {" +Ke +Ke +nf +PK +jp +hY +hY +Jy +qM +ds +Zs +ds +sN +YZ +hY +hY +jp +PK +nf +Ke +Ke +"} +(7,1,1) = {" +Ke +Ke +nf +nf +jp +hY +hY +YG +Ro +aZ +Ro +cB +Ro +Rx +hY +hY +jp +nf +nf +Ke +Ke +"} +(8,1,1) = {" +Ke +NR +NR +NR +iO +hm +aQ +Cz +Ro +Ro +KB +Ro +Ro +AS +aQ +hm +fS +Zf +Zf +NR +Ke +"} +(9,1,1) = {" +Ke +NR +sn +Vi +zZ +Mj +Ro +Ro +NN +qE +qE +qE +NM +Ro +Ro +lg +zZ +Vi +pp +NR +Ke +"} +(10,1,1) = {" +Ke +NR +od +HH +zZ +Fw +cB +Ro +Re +Ji +Tw +mv +Fe +Ro +aZ +ot +zZ +HH +kY +NR +Ke +"} +(11,1,1) = {" +Ke +NR +tf +Gy +pM +Pu +Ro +KB +Re +IG +bM +IL +Fe +KB +Ro +cG +pM +Gy +WB +NR +Ke +"} +(12,1,1) = {" +Ke +NR +kY +HH +zZ +Fw +aZ +Ro +Re +Un +jH +Bg +Fe +Ro +cB +ot +zZ +HH +od +NR +Ke +"} +(13,1,1) = {" +Ke +NR +pp +iL +zZ +hZ +Ro +Ro +pi +zA +zA +zA +eP +Ro +Ro +te +zZ +iL +sn +NR +Ke +"} +(14,1,1) = {" +Ke +NR +NR +NR +mH +BI +kB +Bc +Ro +Ro +KB +Ro +Ro +nr +kB +BI +Yl +NR +NR +NR +Ke +"} +(15,1,1) = {" +Ke +Ke +nf +nf +jp +hY +hY +YG +Ro +cB +Ro +aZ +Ro +Rx +hY +hY +jp +nf +nf +Ke +Ke +"} +(16,1,1) = {" +Ke +Ke +nf +PK +jp +hY +hY +Jy +CW +Xt +bA +Xt +dQ +YZ +hY +hY +jp +PK +nf +Ke +Ke +"} +(17,1,1) = {" +Ke +Ke +nf +PK +jp +jp +jp +mH +Ec +Ec +of +Ec +Ec +Yl +jp +jp +jp +PK +nf +Ke +Ke +"} +(18,1,1) = {" +Ke +Ke +nf +PK +PK +PK +nf +NR +PI +HH +Gy +HH +CG +NR +nf +PK +PK +PK +nf +Ke +Ke +"} +(19,1,1) = {" +Ke +Ke +qz +nf +nf +nf +nf +NR +od +sn +gQ +kY +pp +NR +nf +nf +nf +nf +qz +Ke +Ke +"} +(20,1,1) = {" +Ke +Ke +Ke +Ke +Ke +Ke +Ke +NR +NR +NR +NR +NR +NR +NR +Ke +Ke +Ke +Ke +Ke +Ke +Ke +"} +(21,1,1) = {" +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +Ke +"} diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index b42c05f4ea49b..de9e1338f2939 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -130,7 +130,7 @@ /obj/effect/turf_decal/siding/white, /obj/machinery/light/small/directional/south, /obj/structure/table/reinforced, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /turf/open/floor/iron/small, /area/station/medical/morgue) "adL" = ( @@ -1666,7 +1666,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/firealarm/directional/west, -/turf/open/floor/glass, +/turf/open/floor/iron, /area/station/command/heads_quarters/rd) "aGy" = ( /obj/structure/flora/bush/large/style_random{ @@ -2837,6 +2837,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "bfe" = ( @@ -2858,6 +2859,7 @@ /obj/structure/disposalpipe/junction/flip{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "bfU" = ( @@ -3241,10 +3243,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/delivery/white, /turf/closed/wall, /area/station/maintenance/port/fore) "bmT" = ( @@ -4959,6 +4957,10 @@ /obj/machinery/light/cold/directional/west, /turf/open/floor/tram, /area/station/security/tram) +"bVr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/maintenance/department/engine) "bVD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6737,6 +6739,7 @@ /area/space/nearstation) "cCM" = ( /obj/structure/cable, +/obj/structure/sink/kitchen/directional/east, /turf/open/floor/iron/kitchen/small, /area/station/service/kitchen) "cCP" = ( @@ -6746,7 +6749,6 @@ /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) "cCV" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7190,10 +7192,6 @@ "cKk" = ( /turf/closed/mineral/random/stationside, /area/station/ai_monitored/turret_protected/aisat/maint) -"cKm" = ( -/obj/machinery/camera/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "cKt" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -8485,6 +8483,7 @@ /obj/structure/rack/skeletal, /obj/machinery/camera/autoname/directional/west, /obj/structure/sign/poster/official/random/directional/north, +/obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron/grimy, /area/station/service/library/private) "dgy" = ( @@ -10712,15 +10711,12 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/aft) "dZa" = ( -/obj/structure/table/reinforced, /obj/machinery/camera/directional/west, /obj/effect/decal/cleanable/cobweb, -/obj/item/retractor, -/obj/item/hemostat, -/obj/item/cautery, /obj/machinery/camera/autoname/directional/north, /obj/structure/sign/poster/official/random/directional/north, /obj/machinery/status_display/ai/directional/west, +/obj/effect/spawner/surgery_tray/full/deployed, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) "dZk" = ( @@ -10876,7 +10872,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/door/window/right/directional/east, +/obj/machinery/door/window/right/directional/east{ + name = "Engineering Deliveries"; + req_access = list("engineering") + }, /turf/open/floor/iron/smooth, /area/station/engineering/main) "ecn" = ( @@ -13995,13 +13994,13 @@ /turf/open/floor/iron/small, /area/station/security/office) "fhp" = ( -/obj/structure/table, /obj/effect/spawner/random/food_or_drink/donkpockets{ pixel_y = 6 }, /obj/effect/turf_decal/siding{ dir = 8 }, +/obj/structure/table, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) "fhT" = ( @@ -14979,6 +14978,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "fyZ" = ( @@ -15861,6 +15861,7 @@ dir = 1 }, /obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "fMg" = ( @@ -16212,7 +16213,7 @@ /area/station/maintenance/department/engine/atmos) "fRI" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 + dir = 4 }, /obj/machinery/portable_atmospherics/canister, /turf/open/misc/asteroid, @@ -17735,6 +17736,10 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"gul" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/small, +/area/station/maintenance/department/engine) "gun" = ( /obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/tile/red{ @@ -17874,10 +17879,6 @@ pixel_y = 8 }, /obj/item/clothing/mask/surgical, -/obj/item/surgical_drapes{ - pixel_x = -1; - pixel_y = 4 - }, /obj/machinery/status_display/evac/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) @@ -19276,14 +19277,6 @@ /obj/machinery/light_switch/directional/east, /turf/open/floor/iron/freezer, /area/station/command/heads_quarters/captain/private) -"gRH" = ( -/obj/machinery/button/door/directional/north{ - id = "Cabin4"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1 - }, -/turf/closed/wall, -/area/station/service/abandoned_gambling_den) "gRL" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -20068,6 +20061,11 @@ name = "Pharmacy Shutters Control"; req_access = list("pharmacy") }, +/obj/item/reagent_containers/cup/bottle/multiver, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/cup/bottle/formaldehyde, +/obj/item/reagent_containers/cup/bottle/acidic_buffer, +/obj/item/reagent_containers/cup/bottle/basic_buffer, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) "hdT" = ( @@ -21439,6 +21437,7 @@ /obj/effect/turf_decal/siding/wideplating/corner{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/wood, /area/station/engineering/atmos/pumproom) "hBq" = ( @@ -24186,6 +24185,7 @@ pixel_y = 18 }, /obj/structure/extinguisher_cabinet/directional/east, +/obj/item/circuitboard/mecha/ripley/main, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) "ivC" = ( @@ -25595,6 +25595,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"iPx" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 1; + filter_type = list(/datum/gas/nitrogen) + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "iPy" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -25873,7 +25883,7 @@ /area/station/hallway/primary/port) "iUp" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 + dir = 4 }, /turf/open/floor/circuit, /area/station/tcommsat/server) @@ -26328,6 +26338,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "jab" = ( @@ -28056,6 +28067,11 @@ dir = 8 }, /area/station/commons/storage/tools) +"jEY" = ( +/obj/structure/cable, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/small, +/area/station/security/processing) "jEZ" = ( /obj/structure/hedge, /obj/effect/decal/cleanable/dirt, @@ -28169,7 +28185,9 @@ }, /area/station/cargo/storage) "jGK" = ( -/obj/structure/chair/wood, +/obj/structure/chair/wood{ + dir = 1 + }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -29342,7 +29360,7 @@ "jYr" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/mecha_part_fabricator{ - dir = 8 + drop_direction = 8 }, /obj/effect/turf_decal/stripes/box, /turf/open/floor/iron/dark, @@ -29723,7 +29741,7 @@ /area/station/cargo/lobby) "kgu" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/components/unary/passive_vent, +/obj/machinery/atmospherics/components/unary/passive_vent/layer2, /turf/open/space/basic, /area/space/nearstation) "kgw" = ( @@ -30695,6 +30713,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "engine_airlock_2" }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) "kux" = ( @@ -30773,7 +30792,7 @@ "kvO" = ( /obj/machinery/light/small/directional/north, /obj/machinery/camera/directional/east{ - c_tag = "Prison Isolation Cell"; + c_tag = "Prison Reflection Chamber"; network = list("ss13","prison","isolation") }, /obj/structure/chair, @@ -31360,9 +31379,7 @@ /obj/effect/turf_decal/siding/wideplating/corner{ dir = 8 }, -/obj/effect/turf_decal/siding/wideplating/corner{ - dir = 6 - }, +/obj/effect/turf_decal/siding/wideplating/corner, /turf/open/floor/wood, /area/station/engineering/atmos/office) "kHL" = ( @@ -33919,7 +33936,7 @@ /obj/effect/turf_decal/tile/dark_red/opposingcorners, /obj/machinery/airalarm/directional/north, /obj/structure/rack, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large, /obj/item/wirecutters, /obj/item/wrench, /turf/open/floor/iron, @@ -34864,7 +34881,7 @@ /area/station/tcommsat/server) "lPO" = ( /obj/structure/table, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = -5 }, /obj/item/wirecutters{ @@ -35514,7 +35531,7 @@ "mae" = ( /obj/structure/cable, /turf/closed/wall, -/area/station/service/bar) +/area/station/maintenance/central/greater) "maf" = ( /turf/closed/wall/rust, /area/station/hallway/primary/fore) @@ -39349,10 +39366,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/textured_half, /area/station/commons/fitness/recreation/entertainment) -"num" = ( -/obj/effect/turf_decal/sand/plating, -/turf/closed/wall, -/area/station/maintenance/port/lesser) "nun" = ( /obj/structure/flora/bush/flowers_br/style_random{ pixel_x = -3; @@ -40681,6 +40694,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "nSd" = ( @@ -41305,7 +41319,6 @@ /turf/open/floor/iron/smooth_large, /area/station/maintenance/department/medical/central) "ofx" = ( -/obj/effect/turf_decal/sand/plating, /turf/closed/wall/r_wall, /area/space/nearstation) "ofU" = ( @@ -43687,6 +43700,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "oYj" = ( @@ -43761,7 +43775,7 @@ /area/station/science/ordnance/burnchamber) "oZL" = ( /obj/structure/table, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large, /obj/item/stack/cable_coil, /obj/machinery/light/small/directional/south, /turf/open/floor/iron, @@ -46106,6 +46120,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron/small, /area/station/hallway/primary/port) "pOQ" = ( @@ -47512,7 +47527,7 @@ /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance" }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) "qmz" = ( @@ -50253,7 +50268,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/item/radio/intercom/directional/west, -/turf/open/floor/glass, +/turf/open/floor/iron, /area/station/command/heads_quarters/rd) "rfP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -50743,7 +50758,8 @@ "rqt" = ( /obj/machinery/airalarm/directional/north, /obj/effect/decal/cleanable/dirt, -/obj/structure/aquarium/lawyer, +/obj/item/fish_tank/lawyer, +/obj/structure/table/wood, /turf/open/floor/iron/dark, /area/station/service/lawoffice) "rqw" = ( @@ -51162,6 +51178,11 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark/side, /area/station/hallway/primary/central/fore) +"rxG" = ( +/obj/structure/cable, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/small, +/area/station/security/processing) "rxJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -51221,10 +51242,10 @@ pixel_y = 2 }, /obj/item/holosign_creator/robot_seat/restaurant, -/obj/structure/table, /obj/effect/turf_decal/siding{ dir = 9 }, +/obj/structure/table, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) "rya" = ( @@ -52583,7 +52604,7 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) "rVI" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{ dir = 8 }, /turf/open/floor/iron, @@ -53115,6 +53136,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/purple/fourcorners, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) "sfB" = ( @@ -54459,8 +54481,8 @@ /obj/machinery/modular_computer/preset/research{ dir = 1 }, -/obj/machinery/light/small/directional/south, /obj/effect/turf_decal/siding/purple, +/obj/machinery/light/cold/directional/south, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) "sDj" = ( @@ -54601,13 +54623,7 @@ /turf/open/misc/sandy_dirt, /area/station/security/tram) "sGt" = ( -/obj/structure/table/reinforced, -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/blood_filter, -/obj/item/circular_saw, -/obj/item/bonesetter, +/obj/structure/closet/crate/freezer/surplus_limbs, /turf/open/floor/iron/showroomfloor, /area/station/medical/surgery/theatre) "sGE" = ( @@ -55419,10 +55435,10 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/structure/sign/poster/official/random/directional/west, /obj/structure/destructible/cult/item_dispenser/archives/library, /obj/item/book/codex_gigas, /obj/machinery/light/small/dim/directional/west, +/obj/machinery/airalarm/directional/west, /turf/open/floor/iron/grimy, /area/station/service/library/private) "sTR" = ( @@ -56594,7 +56610,6 @@ /turf/open/floor/plating, /area/station/maintenance/central/lesser) "tnh" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/siding/wideplating{ @@ -57388,6 +57403,9 @@ /obj/item/gun/energy/ionrifle{ pixel_y = 3 }, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 5 + }, /obj/item/clothing/suit/hooded/ablative, /turf/open/floor/iron/dark/small, /area/station/ai_monitored/security/armory) @@ -59074,7 +59092,9 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 }, -/obj/structure/chair/wood, +/obj/structure/chair/wood{ + dir = 1 + }, /turf/open/floor/iron/small, /area/station/service/barber) "ucJ" = ( @@ -61586,6 +61606,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "uQT" = ( @@ -62426,15 +62447,12 @@ /turf/open/floor/iron/smooth_large, /area/station/science/robotics/mechbay) "vfI" = ( -/obj/machinery/microwave{ - pixel_y = 5 - }, /obj/machinery/light_switch/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/table, /obj/effect/turf_decal/siding/end, +/obj/machinery/smartfridge/drying, /turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) "vfK" = ( @@ -62863,12 +62881,13 @@ /turf/open/floor/light/colour_cycle/dancefloor_b, /area/station/maintenance/starboard/central) "vlB" = ( -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 4 - }, /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Gas to Filter" + }, /turf/open/floor/plating, /area/station/maintenance/hallway/abandoned_command) "vlV" = ( @@ -65162,9 +65181,15 @@ /turf/open/floor/iron/dark, /area/station/command/corporate_dock) "vTP" = ( -/obj/structure/sink/kitchen/directional/east, /obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/kitchen/small, +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/effect/turf_decal/siding/end{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, /area/station/service/kitchen) "vTV" = ( /turf/closed/wall/r_wall, @@ -67829,7 +67854,7 @@ /obj/effect/spawner/random/maintenance, /obj/structure/rack, /turf/open/floor/plating, -/area/station/service/bar) +/area/station/maintenance/central/greater) "wKO" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/directional/east, @@ -68042,7 +68067,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light_switch/directional/west, -/turf/open/floor/glass, +/turf/open/floor/iron, /area/station/command/heads_quarters/rd) "wNU" = ( /obj/structure/lattice/catwalk, @@ -69552,6 +69577,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/port) "xiT" = ( @@ -69832,7 +69858,7 @@ "xnC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/glass, +/turf/open/floor/iron, /area/station/command/heads_quarters/rd) "xnE" = ( /turf/closed/wall/r_wall, @@ -84434,7 +84460,7 @@ eHN uhq tXl vAD -num +fEC aJq aJq aJq @@ -87640,7 +87666,7 @@ wCc dDB wZs dDB -bSo +dDB aJq aJq aJq @@ -87690,7 +87716,7 @@ blb dDB dDB dDB -tYT +gcs aJq dDB slY @@ -88461,7 +88487,7 @@ blb dDB dDB tYT -blb +gcs dDB dDB dDB @@ -90216,7 +90242,7 @@ jNV guh cBl fJe -aJb +iPx cay fMB maK @@ -90993,7 +91019,7 @@ pMM tIR hCT kAz -cKm +tIR szg tpW pUM @@ -91873,11 +91899,11 @@ wpO huE wpO wpO -iYY +rxG xKv blb xKv -iYY +jEY wpO wpO huE @@ -93817,7 +93843,7 @@ dDB dDB dDB vxt -nST +bVr evM aOa rtX @@ -94074,9 +94100,9 @@ dDB dDB dDB vxt +bVr nST -nST -nST +gul vxt yfa yfa @@ -94588,9 +94614,9 @@ dDB dDB dDB vxt -gcs -gcs -gcs +vxt +vxt +vxt vxt vxt vxt @@ -94845,10 +94871,10 @@ dDB dDB dDB dDB -bSo -bSo -bSo -bSo +dDB +dDB +aJq +aJq aJq vxt hVq @@ -98003,8 +98029,8 @@ xRV jVM xjQ jVM -tGq -tGq +jVM +jVM xmt xmt xmt @@ -100316,7 +100342,7 @@ jVM jVM jVM jVM -vkh +jVM lnD fzw bKO @@ -100760,15 +100786,15 @@ aJq aJq aJq aJq -gcs -blb -blb -blb -blb -blb -blb -blb -blb +aJq +dDB +dDB +dDB +dDB +dDB +dDB +dDB +aJq aJq aJq yjV @@ -101017,15 +101043,15 @@ aJq aJq aJq aJq -tYT -tYT -dDB -dDB -dDB -dDB -dDB -dDB -aJq +gcs +blb +blb +blb +blb +blb +blb +blb +gcs aJq aJq aJq @@ -101344,7 +101370,7 @@ jgb hRc jVM kXC -vkh +jVM dxV jDT fOq @@ -101601,7 +101627,7 @@ vGe xno jVM kXC -vkh +jVM vkh kWF wtw @@ -102115,7 +102141,7 @@ xHD xHD jVM jBu -vkh +jVM vkh vkh vkh @@ -108877,7 +108903,7 @@ fnz ufn yhH tuT -dDB +blb dDB dDB dDB @@ -109134,10 +109160,10 @@ meN rDj tuT tuT -dDB -dDB -dDB -dDB +blb +blb +blb +xxo dDB dDB dDB @@ -109378,11 +109404,11 @@ vtC vtC kxL vtC -blb dDB dDB dDB -blb +dDB +dDB vtC kxL vtC @@ -109390,8 +109416,8 @@ vtC vtC vtC tuT -dDB -dDB +blb +blb dDB dDB dDB @@ -109629,25 +109655,25 @@ idp tuT tuT tuT -dDB -dDB +blb +blb blb vtC cWZ vtC blb -dDB -dDB -dDB +blb +blb +blb blb vtC cWZ vtC -blb dDB dDB dDB dDB +blb dDB dDB dDB @@ -109885,22 +109911,12 @@ aNX idp vtC blb -blb -blb -blb -blb dDB dDB dDB -blb -blb -blb -blb -blb dDB dDB dDB -blb dDB dDB dDB @@ -109914,6 +109930,16 @@ dDB dDB dDB dDB +blb +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -110145,19 +110171,12 @@ blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB -blb -blb -blb -blb -blb dDB dDB dDB @@ -110167,6 +110186,13 @@ dDB dDB dDB dDB +blb +blb +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -110402,19 +110428,15 @@ blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB @@ -110422,6 +110444,10 @@ dDB dDB dDB dDB +blb +dDB +dDB +dDB dDB dDB dDB @@ -110659,20 +110685,12 @@ blb dDB dDB dDB -blb -blb -blb -blb -blb dDB dDB dDB -blb dDB dDB dDB -blb -esv dDB dDB dDB @@ -110680,6 +110698,14 @@ dDB dDB dDB dDB +esv +dDB +dDB +blb +dDB +dDB +dDB +dDB dDB dDB dDB @@ -110916,19 +110942,15 @@ blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB @@ -110936,6 +110958,10 @@ dDB dDB dDB dDB +blb +dDB +dDB +dDB dDB dDB dDB @@ -111173,19 +111199,12 @@ blb dDB dDB dDB -blb dDB dDB dDB -blb dDB dDB dDB -blb -blb -blb -blb -blb dDB dDB dDB @@ -111195,6 +111214,13 @@ dDB dDB dDB dDB +blb +blb +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -111427,22 +111453,12 @@ nBF idp vtC blb -blb -blb -blb -blb dDB dDB dDB -blb -blb -blb -blb -blb dDB dDB dDB -blb dDB dDB dDB @@ -111456,6 +111472,16 @@ dDB dDB dDB dDB +blb +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB +dDB dDB dDB dDB @@ -111685,25 +111711,25 @@ idp tuT tuT tuT -dDB -dDB +blb +blb blb vtC ijI vtC blb -dDB -dDB -dDB +blb +blb +blb blb vtC ijI vtC -blb dDB dDB dDB dDB +blb dDB dDB dDB @@ -111948,11 +111974,11 @@ vtC vtC kxL vtC -blb dDB dDB dDB -blb +dDB +dDB vtC kxL vtC @@ -111960,8 +111986,8 @@ vtC vtC vtC tuT -dDB -dDB +blb +blb dDB dDB dDB @@ -112218,10 +112244,10 @@ vJN fhZ tuT tuT -dDB -dDB -dDB -dDB +blb +blb +blb +xxo dDB dDB dDB @@ -112475,7 +112501,7 @@ vbR ufn yhH tuT -dDB +blb dDB dDB dDB @@ -114947,7 +114973,7 @@ aJq aJq aJq wOp -gRH +wOp wOp wOp nWk diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 3cc15f7deffa7..a690aede2a2f6 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -44890,7 +44890,8 @@ /area/station/hallway/primary/fore) "lhp" = ( /obj/structure/sign/poster/official/report_crimes/directional/south, -/obj/structure/aquarium/lawyer, +/obj/item/fish_tank/lawyer, +/obj/structure/table/wood, /turf/open/floor/wood, /area/station/service/lawoffice) "lhC" = ( @@ -53108,6 +53109,9 @@ "nmT" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 3 + }, /obj/item/clothing/suit/hooded/ablative, /obj/item/gun/energy/temperature/security, /obj/structure/window/reinforced/spawner/directional/south, @@ -59893,7 +59897,7 @@ /area/station/service/abandoned_gambling_den/gaming) "pcJ" = ( /obj/machinery/mecha_part_fabricator{ - dir = 4 + drop_direction = 4 }, /obj/effect/turf_decal/bot_red, /obj/effect/turf_decal/tile/neutral/full, @@ -75219,7 +75223,7 @@ /area/station/service/abandoned_gambling_den/gaming) "sOp" = ( /obj/structure/table/glass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/structure/window/reinforced/spawner/directional/west, /obj/item/clothing/gloves/latex, /obj/item/clothing/suit/apron/surgical, @@ -79127,7 +79131,7 @@ dir = 4 }, /obj/structure/table/reinforced, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ dir = 4 }, @@ -94583,7 +94587,7 @@ /area/station/cargo/storage) "xES" = ( /obj/structure/table/glass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/gloves/latex, /obj/item/clothing/suit/apron/surgical, /obj/effect/turf_decal/tile/neutral/fourcorners, diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 5a4a74216c43a..aa3df4dfd8a93 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -803,7 +803,7 @@ dir = 4 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "anP" = ( /obj/structure/table, /obj/machinery/light_switch/directional/north, @@ -841,6 +841,32 @@ "aom" = ( /obj/machinery/pdapainter/engineering, /obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/button/door/directional/west{ + id = "Engineering"; + name = "Engineering Lockdown Control"; + pixel_y = -8; + req_access = list("engineering") + }, +/obj/machinery/button/door/directional/west{ + id = "engstorage"; + name = "Engineering Secure Storage Control"; + pixel_x = -36; + pixel_y = 4; + req_access = list("engine_equip") + }, +/obj/machinery/button/door/directional/west{ + id = "atmos"; + name = "Atmospherics Lockdown Control"; + pixel_y = 4; + req_access = list("atmospherics") + }, +/obj/machinery/button/door/directional/west{ + id = "ceprivacy"; + name = "Privacy Shutter Control"; + pixel_y = -8; + req_access = list("engineering"); + pixel_x = -36 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/command/heads_quarters/ce) "aon" = ( @@ -3301,7 +3327,7 @@ dir = 10 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "aWc" = ( /obj/structure/railing{ dir = 8 @@ -3977,7 +4003,7 @@ desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease"; name = "hyper-reinforced wall" }, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "bff" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -4309,7 +4335,6 @@ "bjK" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/keycard_auth/wall_mounted/directional/north, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) "bjL" = ( @@ -4803,7 +4828,7 @@ /obj/structure/window/reinforced/spawner/directional/north, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "bqt" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/circuit, @@ -5478,7 +5503,7 @@ "byB" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "byH" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/iron/dark, @@ -7944,7 +7969,8 @@ /turf/open/floor/iron/dark, /area/station/service/hydroponics/garden) "cgB" = ( -/obj/structure/aquarium/lawyer, +/obj/item/fish_tank/lawyer, +/obj/structure/table/wood, /turf/open/floor/wood, /area/station/service/lawoffice) "cgC" = ( @@ -9869,7 +9895,7 @@ dir = 9 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "cJC" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance/four, @@ -15789,7 +15815,7 @@ /area/station/security/prison/rec) "evT" = ( /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "ewi" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; @@ -18927,7 +18953,7 @@ pixel_x = -4; pixel_y = 3 }, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, @@ -25884,7 +25910,7 @@ /area/station/science/xenobiology) "hvt" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /obj/structure/table/reinforced, /obj/machinery/requests_console/auto_name/directional/north, /obj/effect/turf_decal/bot_white, @@ -26432,7 +26458,7 @@ "hDA" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "hDG" = ( /obj/docking_port/stationary/random/icemoon{ dir = 4; @@ -30113,7 +30139,7 @@ dir = 10 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "iJK" = ( /obj/structure/lattice/catwalk, /obj/structure/railing, @@ -30157,7 +30183,7 @@ dir = 1 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "iKd" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/turf_decal/siding/white, @@ -38592,7 +38618,7 @@ dir = 6 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "lhu" = ( /obj/machinery/camera/directional/north{ c_tag = "Xenobiology Lab Access"; @@ -41086,7 +41112,7 @@ dir = 9 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "lRf" = ( /obj/machinery/teleport/station, /turf/open/floor/plating, @@ -42492,7 +42518,7 @@ dir = 1 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "mpH" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -42609,7 +42635,7 @@ pixel_x = -4; pixel_y = 3 }, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, @@ -42887,7 +42913,7 @@ "mvE" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "mvG" = ( /obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ dir = 8 @@ -44017,7 +44043,7 @@ dir = 5 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "mNi" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -50593,7 +50619,7 @@ dir = 8 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "oDg" = ( /obj/structure/chair/stool/directional/west, /obj/effect/decal/cleanable/dirt, @@ -51249,7 +51275,7 @@ dir = 6 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "oLz" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -55070,7 +55096,7 @@ /area/station/medical/treatment_center) "pRa" = ( /turf/closed/wall, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "pRj" = ( /turf/closed/wall, /area/station/maintenance/port/aft) @@ -58067,7 +58093,7 @@ dir = 5 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "qKQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -60263,8 +60289,8 @@ /area/station/engineering/atmos/storage) "rqF" = ( /obj/machinery/door/poddoor{ - id = "Secure Storage"; - name = "Secure Storage" + id = "engstorage"; + name = "Engineering Secure Storage Lockdown" }, /turf/open/floor/plating, /area/station/engineering/engine_smes) @@ -62768,6 +62794,14 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/iron, /area/station/science/ordnance) +"sdp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "Atmospherics Blast Door" + }, +/turf/open/floor/plating, +/area/station/engineering/atmos) "sdr" = ( /obj/structure/transit_tube/horizontal, /obj/effect/turf_decal/weather/snow/corner{ @@ -65787,7 +65821,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/blue, -/mob/living/simple_animal/bot/floorbot, +/mob/living/basic/bot/repairbot, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/atmos) "sUE" = ( @@ -70994,7 +71028,7 @@ dir = 4 }, /turf/open/floor/plating/icemoon, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "uyW" = ( /obj/machinery/washing_machine, /obj/effect/turf_decal/siding/blue{ @@ -77430,6 +77464,9 @@ "wyF" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 3 + }, /obj/item/gun/energy/temperature/security, /obj/item/clothing/suit/hooded/ablative, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -79885,7 +79922,7 @@ name = "BOMB RANGE" }, /turf/closed/wall, -/area/station/science/ordnance/bomb) +/area/station/science/ordnance/bomb/planet) "xgK" = ( /obj/structure/table, /obj/item/transfer_valve{ @@ -245994,7 +246031,7 @@ keP cRO guU ayq -hpI +sdp bID iKh rOU diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 68433b5278535..6b4adfe0d4896 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -9670,7 +9670,7 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/status_display/evac/directional/west, /obj/machinery/digital_clock/directional/south, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) "dyr" = ( @@ -11327,7 +11327,7 @@ }, /area/station/engineering/atmos) "ecD" = ( -/obj/item/bot_assembly/floorbot{ +/obj/item/bot_assembly/repairbot{ created_name = "FloorDiffBot"; desc = "Why won't it work?"; name = "FloorDiffBot" @@ -11421,6 +11421,9 @@ "eew" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 3 + }, /obj/item/gun/energy/temperature/security, /obj/item/clothing/suit/hooded/ablative, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -12775,7 +12778,7 @@ /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/gloves/latex, /obj/item/clothing/suit/apron/surgical, /turf/open/floor/iron/white, @@ -15055,7 +15058,7 @@ /obj/structure/table/glass, /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/status_display/evac/directional/west, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) "fpj" = ( @@ -20217,7 +20220,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/station/cargo/miningoffice) @@ -34053,7 +34055,6 @@ /turf/open/floor/iron/dark, /area/station/science/ordnance) "mhM" = ( -/obj/structure/disposalpipe/segment, /obj/structure/table/reinforced, /obj/machinery/door/firedoor, /obj/structure/desk_bell{ @@ -43417,7 +43418,7 @@ dir = 4 }, /obj/machinery/mecha_part_fabricator{ - dir = 4 + drop_direction = 4 }, /obj/structure/noticeboard/directional/west, /turf/open/floor/iron, @@ -45638,7 +45639,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/mob/living/simple_animal/bot/floorbot, +/mob/living/basic/bot/repairbot, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "qiY" = ( @@ -47643,6 +47644,7 @@ /obj/structure/railing{ dir = 8 }, +/obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/cargo/miningoffice) "qTz" = ( @@ -51130,7 +51132,7 @@ dir = 4 }, /obj/machinery/mecha_part_fabricator{ - dir = 4 + drop_direction = 4 }, /turf/open/floor/iron, /area/station/science/robotics/lab) @@ -58054,9 +58056,6 @@ /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) "uyP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/table, /obj/machinery/light/directional/east, /obj/item/radio/intercom/directional/east, @@ -59701,7 +59700,8 @@ name = "Lawyer Requests Console" }, /obj/machinery/newscaster/directional/west, -/obj/structure/aquarium/lawyer, +/obj/item/fish_tank/lawyer, +/obj/structure/table/wood, /turf/open/floor/wood, /area/station/service/lawoffice) "uZP" = ( @@ -61159,7 +61159,7 @@ dir = 8 }, /obj/machinery/light/small/directional/north, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /turf/open/floor/iron/dark/smooth_edge{ dir = 8 }, @@ -65418,6 +65418,9 @@ /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /obj/effect/mapping_helpers/airlock/access/any/supply/maintenance, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/station/maintenance/disposal) "wXF" = ( diff --git a/_maps/map_files/Mining/Iceland.dmm b/_maps/map_files/Mining/Iceland.dmm index ae9b356b5f008..a2c9174fbdfaa 100644 --- a/_maps/map_files/Mining/Iceland.dmm +++ b/_maps/map_files/Mining/Iceland.dmm @@ -21,9 +21,8 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 - }, +/obj/machinery/vending/wallmed/directional/north, +/turf/open/floor/iron/colony/white/bolts, /area/mine/medical) "ag" = ( /obj/machinery/door/airlock/external/glass{ @@ -34,7 +33,7 @@ }, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/blue/filled/mid_joiner, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "am" = ( /obj/structure/sign/poster/official/random/directional/west, @@ -60,16 +59,15 @@ /obj/item/mining_scanner, /obj/item/flashlight, /obj/item/clothing/glasses/meson, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/storage/public) "av" = ( -/obj/machinery/computer/arcade/orion_trail{ - dir = 4 - }, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/entertainment, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "ay" = ( -/turf/closed/wall/ice, +/turf/closed/wall/prefab_plastic, /area/icemoon/underground/explored) "aB" = ( /obj/machinery/shower/directional/east, @@ -86,7 +84,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "aL" = ( -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/middle) "aM" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ @@ -101,7 +99,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "aN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -111,7 +109,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "aO" = ( /obj/effect/decal/cleanable/dirt, @@ -149,7 +147,7 @@ }, /area/mine/laborcamp/production) "bc" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -182,7 +180,9 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/obj/machinery/biogenerator/medstation/directional/north, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "by" = ( /obj/effect/decal/cleanable/dirt, @@ -202,18 +202,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/middle) "bD" = ( /obj/structure/fence/corner, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) "bH" = ( -/obj/structure/table, -/obj/item/book/manual/chef_recipes{ - pixel_x = -3; - pixel_y = -5 - }, +/obj/machinery/biogenerator/organic_printer, /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, @@ -225,13 +221,8 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, /obj/structure/sign/poster/official/corporate_perks_vacation/directional/west, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "bL" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -246,27 +237,35 @@ /obj/machinery/door/airlock/external{ name = "Lavaland Shuttle Airlock" }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "bW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, /obj/machinery/mining_weather_monitor/directional/north, -/turf/open/floor/iron/dark/smooth_edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) +"bX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "cb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "cc" = ( -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "ce" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -279,12 +278,13 @@ name = "Mining External Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "ch" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plating, /area/mine/maintenance/public/south) "ci" = ( @@ -308,12 +308,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "ck" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/condiment/peppermill{ pixel_x = 3 @@ -345,21 +343,27 @@ /obj/structure/cable, /turf/open/floor/plating, /area/mine/maintenance/service) +"cs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/laborcamp/security/maintenance) "cw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/production) "cy" = ( /obj/structure/bed/medical/emergency, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/medical) "cC" = ( /obj/machinery/door/airlock/external/glass{ @@ -371,42 +375,37 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "cE" = ( -/obj/effect/spawner/structure/window, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/storage/public) "cF" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, /obj/item/camera, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "cJ" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Processing Area" +/obj/machinery/door/airlock/colony_prefab{ + name = "Station Stairs" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "cK" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 1 - }, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/siding/red{ dir = 1 }, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/obj/machinery/biogenerator/food_replicator, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "cM" = ( /obj/structure/closet/emcloset, @@ -422,9 +421,7 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/lounge) "cQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -439,14 +436,11 @@ }, /area/mine/laborcamp/quarters) "cR" = ( -/obj/structure/cable, /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "cU" = ( /obj/structure/lattice/catwalk/mining, @@ -470,10 +464,16 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "cW" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/living/north) "cX" = ( -/turf/open/floor/plating/snowed/icemoon, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/machinery/seed_extractor, +/obj/structure/cable, +/turf/open/floor/iron/colony, /area/mine/lounge) "da" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -486,37 +486,46 @@ /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp/quarters) "db" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = -5; - pixel_y = 7 - }, -/obj/item/storage/box/donkpockets/donkpocketspicy, /obj/effect/turf_decal/siding/wood{ dir = 5 }, -/turf/open/floor/iron/white, +/obj/machinery/oven/range_frontier, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) +"df" = ( +/obj/machinery/door/airlock/colony_prefab{ + name = "Shuttle Lounge" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/lounge) "dh" = ( /obj/machinery/mech_bay_recharge_port{ dir = 2 }, -/turf/open/floor/plating, +/turf/open/floor/iron/colony, /area/mine/mechbay) "di" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "dk" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/production/lower) "dr" = ( -/obj/machinery/door/airlock{ - name = "Labor Camp Library" +/obj/machinery/door/airlock/colony_prefab{ + name = "Enrichment Center" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -528,7 +537,7 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/production) "dw" = ( /obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ @@ -550,7 +559,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lavaland_public_west" }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "dz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -562,7 +571,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "dB" = ( /obj/structure/disposalpipe/segment, @@ -581,6 +590,7 @@ dir = 1 }, /obj/structure/lattice/catwalk/mining, +/obj/machinery/camera/autoname/directional/north, /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "dJ" = ( @@ -591,9 +601,21 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "dK" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/eva) +"dN" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/table/greyscale, +/obj/item/reagent_containers/cup/bottle/nutrient/ez, +/obj/item/cultivator, +/obj/item/shovel/spade, +/obj/item/secateurs, +/obj/item/reagent_containers/cup/watering_can, +/turf/open/floor/iron/colony, +/area/mine/lounge) "dP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -601,13 +623,13 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) "dQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "dV" = ( /obj/structure/railing/corner{ @@ -638,6 +660,15 @@ "eb" = ( /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) +"ed" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/living_quarters) "ee" = ( /obj/machinery/shower/directional/south, /obj/machinery/door/window/right/directional/south, @@ -665,16 +696,11 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, /obj/machinery/light/directional/west, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "eA" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/public/south) "eC" = ( /obj/machinery/shower/directional/west, @@ -682,25 +708,19 @@ /turf/open/floor/iron/freezer, /area/mine/living_quarters) "eD" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 - }, /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron/white/smooth_edge, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "eH" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 1 }, -/obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/lounge) "eI" = ( /obj/machinery/power/apc/auto_name/directional/north, @@ -716,25 +736,26 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "eP" = ( -/obj/structure/chair/sofa/left/brown, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/power/rtg/old_station, +/obj/structure/railing{ + dir = 6 }, -/turf/open/floor/iron/checker, -/area/mine/cafeteria) +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "eQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, +/obj/structure/cable, /turf/open/floor/plating, /area/mine/production) "eR" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/laborcamp/production) "eT" = ( @@ -746,11 +767,17 @@ /obj/structure/sign/poster/official/work_for_a_future/directional/west, /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) -"eW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 +"eV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/railing{ + dir = 5 }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) +"eW" = ( +/obj/structure/cable, +/obj/machinery/power/terminal, /turf/open/floor/plating, /area/mine/maintenance/service) "eX" = ( @@ -765,7 +792,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "fb" = ( /obj/structure/lattice/catwalk/mining, @@ -777,7 +804,7 @@ /turf/open/floor/iron/smooth_large, /area/mine/laborcamp/production) "ff" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/laborcamp/production) "fg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -799,9 +826,8 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "fk" = ( -/obj/machinery/door/airlock/public/glass{ - id_tag = "cellblock1"; - name = "Labor Camp Operations" +/obj/machinery/door/airlock/colony_prefab{ + name = "Mineral Processing" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -824,11 +850,8 @@ /turf/open/floor/iron/dark, /area/mine/laborcamp) "fv" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/machinery/vending/dinnerware, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "fw" = ( /turf/closed/mineral/random/labormineral/ice, @@ -848,12 +871,12 @@ dir = 1 }, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "fD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/structure/railing, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "fH" = ( @@ -861,16 +884,21 @@ dir = 1 }, /obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/turf/open/floor/iron/corner, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "fI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/maintenance/service) +"fJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/biogenerator, +/obj/structure/cable, +/turf/open/floor/iron/colony, +/area/mine/lounge) "fL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -882,7 +910,7 @@ /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "fM" = ( /obj/structure/sink/kitchen/directional/west{ @@ -905,12 +933,9 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "fS" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line, /mob/living/simple_animal/bot/secbot/beepsky/ofitser, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "fU" = ( /obj/machinery/portable_atmospherics/canister/oxygen, @@ -920,9 +945,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "fX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -930,8 +953,15 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) +"gb" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "gd" = ( /obj/structure/marker_beacon/yellow, /obj/effect/turf_decal/stripes/corner, @@ -949,16 +979,11 @@ /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp/quarters) "gg" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/living/south) "gh" = ( /obj/effect/decal/cleanable/glass, -/obj/structure/grille/broken, -/obj/item/shard{ - pixel_x = -6; - pixel_y = -5 - }, -/obj/effect/spawner/random/trash/graffiti, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/laborcamp) "gl" = ( @@ -985,7 +1010,7 @@ /turf/open/floor/iron/dark/smooth_corner, /area/mine/production/middle) "gp" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/tank/internals/emergency_oxygen{ pixel_x = 5; pixel_y = 3 @@ -994,40 +1019,31 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "gq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = 3 - }, +/obj/machinery/power/smes/battery_pack/large/precharged, /turf/open/floor/plating, /area/mine/maintenance/service) "gs" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/crayons, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) "gx" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/hydroponics) +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "gz" = ( /obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, +/turf/open/floor/iron/colony/white, /area/mine/living_quarters) "gA" = ( /obj/structure/railing/corner{ @@ -1048,7 +1064,7 @@ /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "gE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -1066,9 +1082,7 @@ /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "gK" = ( /obj/machinery/door/airlock/external/glass{ @@ -1081,13 +1095,10 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "gP" = ( -/obj/structure/cable, /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "gQ" = ( /obj/structure/marker_beacon/yellow, @@ -1104,13 +1115,14 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lavaland_mining_low" }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/lower) "gU" = ( /obj/machinery/conveyor{ dir = 6; id = "mining_disposals" }, +/obj/item/trash/empty_food_tray, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "gW" = ( @@ -1118,32 +1130,29 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "gZ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/structure/cable, /obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "hd" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Security Airlock" +/obj/machinery/door/airlock/colony_prefab{ + name = "Labor Camp Shuttle Guard Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp) "he" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/cable, /turf/open/floor/plating, /area/mine/laborcamp/security) @@ -1157,7 +1166,7 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony/bolts, /area/mine/storage/public) "hj" = ( /obj/structure/sink/directional/east, @@ -1173,10 +1182,10 @@ /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 1 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "ho" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/living_quarters) "hr" = ( @@ -1187,19 +1196,16 @@ /turf/open/floor/iron/freezer, /area/mine/laborcamp) "ht" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony, /area/mine/mechbay) "hx" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/labor) "hy" = ( /obj/structure/disposaloutlet, @@ -1215,26 +1221,18 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/machinery/vending/deforest_medvend, +/turf/open/floor/iron/colony/white/bolts, /area/mine/medical) "hD" = ( /obj/structure/disposalpipe/junction{ dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "hE" = ( -/obj/machinery/button/door/directional/north{ - id = "miningdorm2"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, +/turf/open/floor/iron/colony/white, /area/mine/living_quarters) "hF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1247,7 +1245,6 @@ /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "hK" = ( -/obj/machinery/seed_extractor, /obj/machinery/camera/autoname/directional/east{ network = list("mine") }, @@ -1255,13 +1252,23 @@ dir = 6 }, /obj/effect/turf_decal/trimline/blue/filled/warning, -/turf/open/floor/iron/dark, +/obj/structure/closet/crate/hydroponics, +/obj/item/seeds/korta_nut, +/obj/item/seeds/potato, +/obj/item/seeds/lavaland/fireblossom, +/obj/item/seeds/lavaland/inocybe, +/obj/item/seeds/lavaland/polypore, +/obj/item/seeds/lavaland/porcini, +/obj/item/seeds/lavaland/seraka, +/obj/item/seeds/lavaland/cactus, +/obj/item/seeds/soya, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "hR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "hT" = ( /obj/structure/fence{ @@ -1280,26 +1287,25 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony/bolts, /area/mine/storage/public) "hW" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/reagent_containers/cup/bowl, /obj/item/kitchen/spoon, /turf/open/floor/iron/checker, /area/mine/laborcamp) "hY" = ( -/obj/machinery/door/airlock/public/glass{ - id_tag = "gulag1"; - name = "Cell 1" +/obj/machinery/door/airlock/colony_prefab{ + name = "Prisoner Bunk" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) "ia" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" +/obj/machinery/door/airlock/colony_prefab{ + name = "Emergency Clinic" }, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white/side{ @@ -1307,14 +1313,11 @@ }, /area/mine/medical) "ib" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/turf/open/floor/iron/large, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "ie" = ( -/obj/machinery/door/airlock/hydroponics{ - name = "Xenobotany" +/obj/machinery/door/airlock/colony_prefab{ + name = "Native Hydroponics" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -1323,9 +1326,7 @@ /obj/effect/turf_decal/tile/green/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "ii" = ( /obj/structure/marker_beacon/yellow, @@ -1345,16 +1346,13 @@ /obj/item/mining_scanner, /obj/item/flashlight, /obj/item/clothing/glasses/meson, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/storage/public) "io" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) "ip" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1364,7 +1362,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "iu" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/living_quarters) "iw" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -1373,15 +1371,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) -"ix" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, -/area/mine/living_quarters) "iB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1393,31 +1382,22 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/mechbay) "iD" = ( /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/tank/internals/emergency_oxygen{ pixel_x = 5; pixel_y = 3 }, /obj/item/tank/internals/emergency_oxygen, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/storage/public) "iH" = ( -/obj/structure/table, -/obj/item/kitchen/fork{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/food_or_drink/dinner, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "iN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1426,7 +1406,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "iX" = ( /obj/effect/decal/cleanable/dirt, @@ -1439,20 +1419,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/production) "iZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "jc" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/laborcamp/security) "jd" = ( @@ -1466,7 +1443,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/middle) "jf" = ( /obj/item/lighter/greyscale{ @@ -1487,17 +1464,17 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "jj" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Maintenance" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/plating, /area/mine/maintenance/public/north) "jm" = ( -/obj/machinery/door/airlock/public/glass{ +/obj/machinery/door/airlock/colony_prefab{ name = "Showers" }, /obj/structure/cable, @@ -1510,7 +1487,7 @@ /turf/open/floor/iron/freezer, /area/mine/laborcamp) "jq" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/paper_bin, /obj/item/pen, /obj/structure/cable, @@ -1518,7 +1495,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "jr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1527,7 +1504,8 @@ dir = 1 }, /obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "js" = ( /obj/structure/railing{ @@ -1541,9 +1519,7 @@ dir = 9 }, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/production) "jA" = ( /obj/structure/cable, @@ -1573,7 +1549,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/middle) "jQ" = ( /obj/structure/cable, @@ -1584,15 +1560,14 @@ /turf/open/floor/iron/dark/smooth_edge, /area/mine/production/middle) "jS" = ( -/obj/structure/chair{ - dir = 4 - }, /obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/structure/chair/plastic, +/turf/open/floor/iron/colony, /area/mine/cafeteria) +"jT" = ( +/obj/structure/railing/corner, +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/icemoon/surface/outdoors/nospawn) "jU" = ( /obj/machinery/conveyor{ dir = 4; @@ -1601,14 +1576,11 @@ /turf/open/floor/plating, /area/mine/laborcamp/production) "jW" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, /obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "jX" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -1616,18 +1588,25 @@ }, /turf/open/floor/iron/dark/smooth_edge, /area/mine/production/middle) +"jZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/iron/colony, +/area/mine/lounge) "ka" = ( -/obj/structure/table, /obj/machinery/newscaster/directional/north, -/obj/item/plate/large, -/obj/item/kitchen/fork, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage, +/turf/open/floor/iron/colony, /area/mine/cafeteria) +"kf" = ( +/obj/item/trash/can/food/chap, +/turf/open/floor/plating/snowed/icemoon, +/area/icemoon/surface/outdoors/nospawn) "kg" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/prefab_plastic, /area/mine/laborcamp) "kn" = ( /obj/effect/turf_decal/delivery, @@ -1644,22 +1623,22 @@ }, /area/mine/laborcamp) "kt" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/laborcamp/security) "ku" = ( -/obj/machinery/button/door/directional/north{ - id = "miningdorm1"; - normaldoorcontrol = 1; - specialfunctions = 4 +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 5 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, -/area/mine/living_quarters) +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "kv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "kx" = ( /turf/closed/mineral/random/snow/high_chance, @@ -1671,7 +1650,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "kD" = ( /obj/structure/railing, @@ -1680,9 +1659,8 @@ "kE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/mine/maintenance/labor) +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/laborcamp/security/maintenance) "kF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply, /turf/open/floor/plating, @@ -1703,7 +1681,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lavaland_living_east" }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "kJ" = ( /obj/structure/ladder, @@ -1713,7 +1691,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "kK" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, @@ -1722,30 +1700,24 @@ pixel_y = 5 }, /obj/item/camera_film, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "kL" = ( -/obj/machinery/door/airlock/glass{ - name = "Canteen" +/obj/machinery/door/airlock/colony_prefab{ + name = "Cafeteria-Bunks" }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "kR" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, /obj/machinery/mining_weather_monitor/directional/west, -/turf/open/floor/iron/checker, +/obj/structure/chair/plastic, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "kV" = ( /obj/machinery/atmospherics/components/tank/air{ @@ -1755,25 +1727,38 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "kY" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/cafeteria) +"kZ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/power/rtg/old_station, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) +"la" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/colony/white/texture, +/area/mine/lounge) "lb" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 6 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "ld" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "lg" = ( /obj/machinery/computer/order_console/mining, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony, /area/mine/eva) "lh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1784,10 +1769,11 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "li" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/gps/mining{ pixel_x = 5; pixel_y = 5 @@ -1805,9 +1791,7 @@ pixel_y = -2 }, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/eva) "lo" = ( /obj/structure/disposalpipe/segment{ @@ -1824,12 +1808,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/living_quarters) +"ls" = ( +/obj/structure/closet/emcloset, +/obj/machinery/space_heater/wall_mounted/directional/south, +/turf/open/floor/iron/dark/textured_edge{ dir = 1 }, -/area/mine/living_quarters) +/area/mine/production/middle) "lt" = ( /obj/structure/railing{ dir = 6 @@ -1837,20 +1825,15 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "lx" = ( -/obj/machinery/button/door/directional/east{ - id = "labor"; - name = "Labor Camp Lockdown"; - req_access = list("brig") - }, /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp) "ly" = ( /obj/structure/railing/corner{ dir = 1 }, -/turf/closed/wall/ice, +/turf/closed/wall/prefab_plastic, /area/icemoon/underground/explored) "lC" = ( /obj/machinery/airalarm/directional/east, @@ -1868,8 +1851,8 @@ /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) "lJ" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Storage" +/obj/machinery/door/airlock/colony_prefab{ + name = "Security Supply" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1889,13 +1872,14 @@ /turf/open/floor/iron/dark/textured_large, /area/mine/production) "lN" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Maintenance" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/mine/maintenance/living/south) "lO" = ( @@ -1918,14 +1902,13 @@ dir = 8 }, /obj/machinery/light/directional/east, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "lV" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "lX" = ( /obj/structure/sink/directional/east, @@ -1943,21 +1926,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/hydroponics) "mn" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 }, -/obj/effect/turf_decal/siding/yellow, -/turf/open/floor/iron/corner{ - dir = 1 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) +"mx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/mine/maintenance/service) "my" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Maintenance" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1967,7 +1952,7 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "mA" = ( /obj/structure/fence{ @@ -1980,9 +1965,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) "mF" = ( /obj/structure/railing/corner/end/flip{ @@ -2013,6 +1997,15 @@ /obj/item/cigbutt, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) +"mM" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "mN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2026,9 +2019,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 - }, +/turf/open/floor/iron/colony/white, /area/mine/medical) "mP" = ( /obj/machinery/hydroponics/constructable, @@ -2044,14 +2035,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony, /area/mine/lounge) "mT" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/item/pickaxe, @@ -2062,7 +2052,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/eva) "mU" = ( /obj/structure/rack, @@ -2075,9 +2065,8 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "ni" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, +/obj/structure/rack, +/obj/item/stack/sheet/mineral/plasma/five, /obj/structure/cable, /turf/open/floor/plating, /area/mine/maintenance/service) @@ -2085,7 +2074,7 @@ /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/tile/brown/fourcorners, /obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "nl" = ( /obj/structure/fence{ @@ -2094,37 +2083,29 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "nm" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/production) "np" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) -"nq" = ( -/obj/structure/falsewall, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/mine/laborcamp) "nv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "nx" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, /obj/machinery/mining_weather_monitor/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "nA" = ( /obj/effect/turf_decal/bot, @@ -2155,7 +2136,7 @@ /turf/open/floor/iron/dark, /area/mine/laborcamp) "nN" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/spawner/random/trash/food_packaging, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/food_packaging, @@ -2201,32 +2182,45 @@ dir = 4 }, /obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ +/turf/open/floor/iron/colony, +/area/mine/laborcamp/security) +"ob" = ( +/obj/machinery/door/airlock/colony_prefab{ + name = "Cafeteria" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/area/mine/laborcamp/security) +/turf/open/floor/iron/colony, +/area/mine/cafeteria) "oc" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, +/obj/item/flatpacked_machine/fuel_generator, /obj/structure/cable, -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/maintenance/service) -"oe" = ( -/obj/structure/chair/sofa/corner/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 +"od" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/colony/white/bolts, +/area/mine/lounge) +"og" = ( +/obj/machinery/door/poddoor/shutters/colony_fabricator{ + id = 12 }, -/turf/open/floor/iron/checker, -/area/mine/cafeteria) -"oh" = ( -/obj/effect/spawner/structure/window, /turf/open/floor/plating, -/area/mine/eva) +/area/mine/maintenance/service) +"oh" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "oi" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 4 @@ -2234,18 +2228,17 @@ /obj/structure/railing/corner{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "ol" = ( /obj/structure/railing, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "om" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/mine/laborcamp) +/obj/structure/lattice/catwalk, +/obj/structure/railing, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "op" = ( /obj/machinery/camera/autoname/directional/south{ network = list("mine") @@ -2253,8 +2246,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 6 }, -/obj/structure/cable, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "oq" = ( /obj/structure/cable, @@ -2266,9 +2258,7 @@ dir = 4 }, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "ou" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2296,7 +2286,7 @@ /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "oA" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/storage) "oI" = ( /obj/structure/bed, @@ -2314,9 +2304,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony, /area/mine/mechbay) "oM" = ( /obj/structure/fence, @@ -2335,7 +2323,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lavaland_living_west" }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/cafeteria) "oT" = ( /obj/structure/chair/comfy/lime{ @@ -2348,9 +2336,8 @@ /turf/open/floor/plating, /area/mine/laborcamp) "pc" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/condiment, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth_edge{ dir = 8 @@ -2382,11 +2369,14 @@ /turf/open/floor/iron/white, /area/mine/laborcamp/production) "ps" = ( +/obj/structure/lattice/catwalk, /obj/structure/cable, -/obj/machinery/power/smes/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/mine/maintenance/service) +/obj/machinery/power/rtg/old_station, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "pu" = ( /obj/item/chair/stool{ pixel_x = -2; @@ -2411,24 +2401,23 @@ /obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ dir = 1 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/cafeteria) "py" = ( -/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "pB" = ( -/obj/machinery/biogenerator, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "pE" = ( /obj/effect/spawner/random/trash/hobo_squat, @@ -2454,7 +2443,7 @@ /turf/open/floor/iron/freezer, /area/mine/living_quarters) "pK" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/eva) "pL" = ( /obj/structure/toilet{ @@ -2524,20 +2513,16 @@ dir = 1 }, /obj/effect/turf_decal/siding/red, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "qg" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "qh" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/decal/cleanable/dirt, /obj/item/paper_bin, /obj/item/pen, @@ -2549,12 +2534,12 @@ }, /area/mine/laborcamp/quarters) "ql" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/production/middle) "qo" = ( -/obj/machinery/door/airlock/glass{ - name = "Equipment Storage" +/obj/machinery/door/airlock/colony_prefab{ + name = "Expedition Supplies" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2563,18 +2548,19 @@ dir = 1 }, /obj/effect/turf_decal/tile/brown/opposingcorners, -/turf/open/floor/iron/dark/side, +/turf/open/floor/iron/colony, /area/mine/storage/public) "qp" = ( -/obj/machinery/door/airlock/glass{ - name = "Canteen" +/obj/machinery/door/airlock/colony_prefab{ + name = "Cafeteria-Bunks" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/checker, +/obj/structure/cable, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "qq" = ( /obj/structure/fence{ @@ -2586,6 +2572,13 @@ /obj/structure/railing/corner, /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) +"qt" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/machinery/space_heater, +/turf/open/floor/iron/colony, +/area/mine/production) "qw" = ( /obj/structure/bed, /obj/effect/decal/cleanable/dirt, @@ -2607,32 +2600,31 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "qA" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "qE" = ( /obj/structure/fence/door, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) "qH" = ( -/obj/machinery/door/airlock{ - id_tag = "miningbathroomprivate"; - name = "Restroom" +/obj/machinery/door/airlock/colony_prefab{ + name = "Private Shower" }, /obj/effect/turf_decal/siding/white{ dir = 8 }, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "qN" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/mine/cafeteria) @@ -2644,12 +2636,14 @@ "qQ" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) +"qU" = ( +/obj/structure/lattice/catwalk, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "qV" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/decal/cleanable/dirt, /obj/item/paper, /obj/item/pen, @@ -2665,12 +2659,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "ra" = ( /obj/structure/marker_beacon/teal, @@ -2701,15 +2690,17 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp) "rp" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/cable, /turf/open/floor/plating, /area/mine/production) +"rr" = ( +/obj/machinery/camera/autoname/directional/west, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "rv" = ( /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/production) "rw" = ( /obj/structure/reagent_dispensers/watertank, @@ -2720,7 +2711,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "rz" = ( /obj/machinery/shower/directional/west, @@ -2734,7 +2725,7 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "rF" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/labor) "rG" = ( /obj/structure/railing/corner{ @@ -2756,10 +2747,10 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp) "rU" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/storage/public) "rX" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/laborcamp) "rY" = ( @@ -2769,23 +2760,17 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/brown/filled/warning, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/lounge) "rZ" = ( /obj/structure/cable, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/battery_pack/large/precharged, /turf/open/floor/plating, /area/mine/maintenance/service) "se" = ( -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/eva) "sf" = ( /obj/structure/closet/secure_closet/brig, @@ -2803,12 +2788,25 @@ }, /turf/open/floor/iron/checker, /area/mine/laborcamp) +"sj" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "sk" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/mine/maintenance/living/south) "so" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 }, @@ -2820,9 +2818,8 @@ pixel_x = -6; pixel_y = 4 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 - }, +/obj/effect/spawner/random/medical/supplies, +/turf/open/floor/iron/colony/white, /area/mine/medical) "st" = ( /obj/structure/chair/stool/directional/north, @@ -2841,15 +2838,12 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "sx" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "sy" = ( /obj/structure/bonfire, @@ -2860,6 +2854,7 @@ /obj/structure/sign/departments/medbay/alt/directional/north, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, +/obj/machinery/space_heater, /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp/production) "sI" = ( @@ -2891,21 +2886,9 @@ /turf/open/floor/iron/dark, /area/mine/laborcamp) "sW" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = -1; - pixel_y = 9 - }, -/obj/item/reagent_containers/cup/glass/bottle/beer{ - pixel_x = -8 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, +/obj/machinery/griddle/frontier_tabletop, +/obj/structure/table/greyscale, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "sX" = ( /obj/machinery/mechpad, @@ -2913,7 +2896,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/mechbay) "tc" = ( /obj/structure/bed{ @@ -2923,7 +2906,7 @@ dir = 4 }, /obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet, +/turf/open/floor/iron/colony/white, /area/mine/living_quarters) "te" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -2931,37 +2914,39 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "tg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Air Tanks" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/plating, /area/mine/maintenance/service) "th" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/cable, /turf/open/floor/plating, /area/mine/production/lower) "ti" = ( -/obj/structure/table, +/obj/machinery/vending/clothing, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "tj" = ( /obj/structure/railing/corner{ dir = 1 }, -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production/lower) +"tk" = ( +/obj/machinery/camera/autoname/directional/east, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "tr" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/decal/cleanable/dirt, @@ -2975,11 +2960,9 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "tx" = ( -/obj/structure/chair/wood/wings{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/structure/chair/plastic, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "tz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -2994,7 +2977,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron/white/smooth_corner, +/turf/open/floor/iron/colony/white/bolts, /area/mine/medical) "tC" = ( /obj/structure/railing/corner/end{ @@ -3011,36 +2994,51 @@ /area/icemoon/underground/explored) "tG" = ( /obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "tL" = ( /obj/machinery/light/small/directional/east, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "tM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/mine/storage) +/obj/machinery/vending/assist, +/turf/open/floor/iron/colony, +/area/mine/living_quarters) +"tT" = ( +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/structure/table/greyscale, +/obj/item/gps/mining, +/obj/item/gps/mining{ + pixel_x = -4; + pixel_y = -2 + }, +/obj/item/gps/mining{ + pixel_x = -4; + pixel_y = -2 + }, +/obj/item/gps/mining, +/turf/open/floor/iron/colony, +/area/mine/storage/public) "tV" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/storage) "tW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/maintenance/service) "tX" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/neon/simple/red/nodots, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "tZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/sustenance/labor_camp, +/obj/machinery/biogenerator/foodricator, +/obj/structure/table/greyscale, /turf/open/floor/iron/smooth_edge{ dir = 8 }, @@ -3052,11 +3050,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "uj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3064,15 +3058,15 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "uk" = ( -/obj/machinery/door/airlock/glass{ - name = "Games Room" +/obj/machinery/door/airlock/colony_prefab{ + name = "Lounge" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "ul" = ( /obj/item/crowbar/large/emergency, @@ -3085,32 +3079,39 @@ "ut" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/neon/simple/red/nodots, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "uu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "uv" = ( -/obj/structure/table, /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron/white/smooth_edge, +/obj/structure/table/greyscale, +/obj/item/cutting_board, +/obj/item/knife, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "ux" = ( -/obj/machinery/door/airlock{ - id_tag = "miningdorm1"; - name = "Room 1" +/obj/machinery/door/airlock/colony_prefab{ + name = "Bunk B" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) +"uA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/colony, +/area/mine/lounge) "uC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/wideplating_new{ @@ -3126,10 +3127,14 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "uI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/mine/maintenance/labor) +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/power/rtg/old_station, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "uM" = ( /obj/structure/fence{ dir = 8 @@ -3137,18 +3142,16 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "uN" = ( -/obj/structure/chair/sofa/corp{ - dir = 4 - }, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, /obj/effect/turf_decal/siding/red{ dir = 4 }, -/turf/open/floor/iron/edge{ +/obj/structure/chair/sofa/corp/left{ dir = 4 }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "uO" = ( /obj/structure/railing{ @@ -3156,6 +3159,13 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) +"uR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "uT" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/components/unary/passive_vent/layer2{ @@ -3172,19 +3182,20 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) "vb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white/smooth_corner, +/turf/open/floor/iron/colony/white, /area/mine/medical) "vc" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Power" }, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/mine/maintenance/service) "vd" = ( @@ -3194,14 +3205,11 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "ve" = ( -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/labor) "vf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3214,9 +3222,8 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "vh" = ( -/obj/machinery/door/airlock/public/glass{ - id_tag = "cellblock1"; - name = "Labor Camp Cellblock" +/obj/machinery/door/airlock/colony_prefab{ + name = "Sleeping Quarters" }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3230,14 +3237,9 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, /obj/structure/sign/poster/official/high_class_martini/directional/east, /obj/machinery/light/small/directional/east, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "vk" = ( /obj/effect/spawner/random/trash/garbage{ @@ -3257,10 +3259,10 @@ dir = 9 }, /obj/machinery/mining_weather_monitor/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "vp" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/mine/hydroponics) @@ -3268,7 +3270,7 @@ /obj/structure/bed/medical/emergency, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, +/turf/open/floor/iron/colony/white/bolts, /area/mine/medical) "vz" = ( /obj/structure/ladder, @@ -3277,15 +3279,7 @@ "vA" = ( /obj/machinery/light/small/directional/west, /obj/structure/rack, -/obj/item/chair, -/obj/item/chair{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/chair{ - pixel_x = 6; - pixel_y = 6 - }, +/obj/effect/spawner/random/engineering/toolbox, /turf/open/floor/plating, /area/mine/maintenance/service) "vB" = ( @@ -3300,13 +3294,12 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "vD" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/laborcamp/security/maintenance) "vF" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Mining Maintenance" }, -/obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/supply/mining_station, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/open/floor/plating, @@ -3342,7 +3335,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "vO" = ( /obj/effect/decal/cleanable/dirt, @@ -3354,15 +3347,16 @@ /turf/open/floor/iron/dark, /area/mine/laborcamp) "vQ" = ( -/obj/machinery/door/airlock{ - id_tag = "miningdorm2"; - name = "Room 2" +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/structure/railing{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, -/area/mine/living_quarters) +/obj/structure/railing{ + dir = 4 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "vS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -3370,12 +3364,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/lounge) "vU" = ( /obj/structure/ore_box, @@ -3398,14 +3389,18 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "wb" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ dir = 8 }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/iron/checker, -/area/mine/cafeteria) +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "wf" = ( /obj/structure/closet/emcloset, /turf/open/floor/iron/dark/textured_edge{ @@ -3413,22 +3408,20 @@ }, /area/mine/production/middle) "wg" = ( -/obj/structure/chair/sofa/corp{ - dir = 1 - }, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/siding/red{ dir = 1 }, -/turf/open/floor/iron/edge{ +/obj/structure/chair/sofa/corp/right{ dir = 1 }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "wl" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "wo" = ( /obj/structure/railing/corner, @@ -3438,25 +3431,13 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "wq" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/mine/cafeteria) +/obj/machinery/power/smes/full, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/laborcamp/security/maintenance) "wr" = ( /obj/item/seeds/plump, /obj/machinery/hydroponics/soil, @@ -3466,10 +3447,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "wu" = ( /obj/machinery/hydroponics/constructable, @@ -3480,14 +3459,19 @@ /obj/item/seeds/onion, /turf/open/floor/iron/dark, /area/mine/laborcamp) -"wA" = ( -/obj/structure/cable, +"wv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/mine/maintenance/public/south) +"wA" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/structure/cable, +/obj/structure/closet/radiation, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "wE" = ( @@ -3502,21 +3486,10 @@ /turf/open/floor/iron/dark/textured_large, /area/mine/production/middle) "wJ" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck{ - pixel_x = -6; - pixel_y = -1 - }, -/obj/item/toy/cards/deck/cas/black{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/toy/cards/deck/cas{ - pixel_x = 6; - pixel_y = 8 - }, /obj/machinery/airalarm/directional/east, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/entertainment/money_small, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "wM" = ( /obj/item/seeds/banana, @@ -3543,9 +3516,7 @@ }, /obj/effect/turf_decal/trimline/purple/filled/line, /obj/effect/turf_decal/trimline/brown/filled/warning, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/mechbay) "xe" = ( /turf/closed/mineral/random/snow, @@ -3557,19 +3528,18 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "xi" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/paper, /obj/item/pen, -/turf/open/floor/carpet, +/turf/open/floor/iron/colony/white, /area/mine/living_quarters) "xn" = ( /obj/effect/spawner/random/vending/colavend, /obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "xr" = ( /obj/structure/sink/directional/east, -/obj/item/reagent_containers/cup/bucket, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, @@ -3577,7 +3547,7 @@ dir = 10 }, /obj/effect/turf_decal/trimline/blue/filled/warning, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "xt" = ( /obj/structure/railing{ @@ -3604,10 +3574,10 @@ /turf/open/floor/plating, /area/mine/laborcamp/production) "xB" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/public/north) "xD" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/service/comms) "xF" = ( /obj/machinery/door/airlock/external/glass{ @@ -3626,7 +3596,7 @@ /obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "xG" = ( /turf/open/floor/plating/snowed/icemoon, @@ -3634,8 +3604,8 @@ "xI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Telecommunications Relay" }, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, @@ -3644,7 +3614,7 @@ "xJ" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "xN" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -3653,17 +3623,14 @@ /obj/machinery/door/airlock/external{ name = "Lavaland Shuttle Airlock" }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "xO" = ( -/obj/effect/spawner/random/vending/snackvend, +/obj/machinery/chem_master/condimaster, /obj/machinery/camera/autoname/directional/east{ network = list("mine") }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "xQ" = ( /obj/structure/table, @@ -3684,15 +3651,12 @@ /area/icemoon/underground/explored) "xU" = ( /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/table, -/obj/item/gps/mining, -/obj/item/gps/mining{ - pixel_x = -4; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/obj/structure/table/greyscale, +/obj/item/climbing_hook/emergency, +/obj/item/climbing_hook/emergency, +/obj/item/climbing_hook/emergency, +/obj/item/climbing_hook/emergency, +/turf/open/floor/iron/colony, /area/mine/storage/public) "xX" = ( /obj/structure/gulag_vent/ice, @@ -3724,17 +3688,13 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "yf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "yh" = ( /obj/machinery/door/airlock/external/glass{ @@ -3747,11 +3707,11 @@ /turf/open/floor/iron/dark/textured_large, /area/mine/laborcamp/security) "yj" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/hydroponics) "yl" = ( -/obj/machinery/door/airlock/glass{ - name = "Arrival Lounge" +/obj/machinery/door/airlock/colony_prefab{ + name = "Expedition Lounge" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -3781,7 +3741,7 @@ /turf/open/floor/plating, /area/mine/laborcamp/production) "yv" = ( -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/lower) "yC" = ( /obj/structure/bed{ @@ -3814,7 +3774,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "yM" = ( /obj/structure/ore_box, @@ -3825,21 +3785,18 @@ /turf/open/floor/iron/dark/textured_large, /area/mine/production/middle) "yN" = ( -/obj/structure/cable, /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "yR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "yT" = ( /obj/effect/turf_decal/stripes/line{ @@ -3848,20 +3805,21 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "yV" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production/middle) "yX" = ( -/obj/effect/spawner/structure/window, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/hydroponics) "zc" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Maintenance" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/mine/maintenance/public/south) "zd" = ( @@ -3870,24 +3828,32 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "zf" = ( -/obj/machinery/door/airlock{ - name = "Restroom" +/obj/machinery/door/airlock/colony_prefab{ + name = "Community Showers" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/freezer, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) +"zg" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "zh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "zi" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "zj" = ( @@ -3950,7 +3916,7 @@ /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "zD" = ( /obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ @@ -3970,7 +3936,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "zH" = ( /obj/structure/sign/directions/arrival/directional/south{ @@ -3978,7 +3944,7 @@ }, /obj/structure/closet/emcloset, /obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "zJ" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -3987,9 +3953,7 @@ /obj/structure/railing{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "zK" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -4061,7 +4025,7 @@ /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) "Am" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/maintenance/living/north) "Ao" = ( @@ -4080,8 +4044,18 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) +"Aq" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "Aw" = ( /obj/structure/railing/corner{ dir = 8 @@ -4107,16 +4081,15 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp) "AI" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Security Post Power" }, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "AJ" = ( /turf/closed/wall, @@ -4129,7 +4102,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "AN" = ( /obj/effect/decal/cleanable/dirt, @@ -4142,14 +4115,12 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "AV" = ( -/obj/structure/closet/secure_closet/freezer/fridge/all_access, -/obj/item/reagent_containers/cup/glass/bottle/beer, -/obj/item/reagent_containers/cup/glass/bottle/beer, -/obj/item/reagent_containers/cup/glass/bottle/beer, -/obj/effect/spawner/random/food_or_drink/booze, -/turf/open/floor/iron/white, +/obj/machinery/chem_dispenser/frontier_appliance, +/obj/structure/table/greyscale, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "AX" = ( +/obj/structure/closet/emcloset, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "Bb" = ( @@ -4159,7 +4130,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "Bd" = ( /obj/structure/railing/corner, @@ -4170,7 +4141,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "Bp" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production/lower) "Bs" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4179,7 +4150,8 @@ dir = 1 }, /obj/machinery/light/directional/north, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "By" = ( /obj/machinery/door/poddoor/preopen{ @@ -4214,14 +4186,13 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/explored) "BR" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/mine/maintenance/service) "BS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /turf/open/floor/plating, /area/mine/maintenance/public/south) "BT" = ( @@ -4248,6 +4219,11 @@ /obj/structure/sign/poster/official/report_crimes/directional/west, /turf/open/floor/iron/smooth, /area/mine/laborcamp) +"BX" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "BY" = ( /obj/structure/railing{ dir = 6 @@ -4255,6 +4231,7 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Ce" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plating, /area/mine/maintenance/public/south) "Cf" = ( @@ -4263,27 +4240,24 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "Cg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, /obj/effect/turf_decal/trimline/brown/filled/corner, -/turf/open/floor/iron/dark/smooth_corner, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "Cm" = ( -/obj/machinery/door/airlock/glass{ - name = "Canteen" +/obj/machinery/door/airlock/colony_prefab{ + name = "Cafeteria" }, /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Ct" = ( /turf/open/misc/asteroid/snow/icemoon, @@ -4295,8 +4269,8 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) "Cz" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" +/obj/machinery/door/airlock/colony_prefab{ + name = "Prisoner Clinic" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4323,16 +4297,16 @@ /obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "CD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/labor) "CE" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/mecha_parts/mecha_equipment/drill{ pixel_y = -2 }, @@ -4343,7 +4317,7 @@ dir = 6 }, /obj/effect/turf_decal/trimline/brown/filled/warning, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/mechbay) "CI" = ( /obj/structure/sign/directions/supply/directional/east{ @@ -4354,16 +4328,14 @@ dir = 4 }, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "CM" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "CO" = ( -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "CQ" = ( /obj/machinery/recharge_station, @@ -4371,11 +4343,11 @@ dir = 5 }, /obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/mechbay) "CS" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Emergency Clinic Maintenance" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4398,7 +4370,7 @@ /obj/structure/cable, /obj/effect/spawner/random/trash/mess, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "CZ" = ( /obj/structure/railing{ @@ -4415,7 +4387,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "Di" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -4438,13 +4410,13 @@ /turf/open/floor/iron/smooth_large, /area/mine/laborcamp) "Dl" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Security Airlock" +/obj/machinery/door/airlock/colony_prefab{ + name = "Labor Camp Shuttle Guard Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp) "Dn" = ( /obj/structure/cable, @@ -4458,7 +4430,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/middle) "Dv" = ( /turf/closed/mineral/random/labormineral/ice, @@ -4472,7 +4444,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "Dz" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/medical) "DF" = ( /obj/structure/cable, @@ -4483,7 +4455,7 @@ /area/mine/maintenance/service/comms) "DI" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/cafeteria) "DK" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -4515,7 +4487,8 @@ /obj/effect/turf_decal/tile/bar/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/checker, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/cafeteria) "DY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4525,11 +4498,15 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "DZ" = ( -/obj/effect/turf_decal/siding/yellow/corner{ - dir = 8 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/iron/large, -/area/mine/lounge) +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Ec" = ( /obj/docking_port/stationary{ dir = 2; @@ -4542,12 +4519,16 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Ee" = ( -/obj/machinery/power/smes/full, +/obj/structure/lattice/catwalk, /obj/structure/cable, -/turf/open/floor/plating, -/area/mine/maintenance/labor) +/obj/machinery/power/rtg/old_station, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Eg" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/mine/maintenance/living/north) @@ -4566,14 +4547,12 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "Eq" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Monitoring" - }, +/obj/machinery/door/airlock/colony_prefab, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp/security) "Ev" = ( /obj/structure/cable, @@ -4583,8 +4562,8 @@ /turf/open/floor/circuit, /area/mine/maintenance/service/comms) "Ex" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restroom" +/obj/machinery/door/airlock/colony_prefab{ + name = "Bathroom" }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/white{ @@ -4594,7 +4573,7 @@ /area/mine/laborcamp/quarters) "Ey" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, /turf/open/floor/plating, /area/mine/storage) "Ez" = ( @@ -4615,12 +4594,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "EG" = ( /obj/effect/decal/cleanable/dirt, @@ -4649,9 +4623,7 @@ }, /obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/production) "EQ" = ( /turf/open/floor/iron/smooth_edge{ @@ -4661,6 +4633,7 @@ "ER" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/mine/maintenance/service) "EU" = ( @@ -4682,25 +4655,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "Fc" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "Fd" = ( -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/structure/chair/plastic, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Ff" = ( /turf/open/floor/glass/reinforced, @@ -4710,15 +4675,16 @@ /turf/open/lava/plasma/ice_moon, /area/icemoon/underground/explored) "Fp" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/machinery/recharger, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Fs" = ( /obj/effect/spawner/random/maintenance/two, +/obj/item/trash/can/food/peaches, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Fv" = ( @@ -4739,14 +4705,19 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"Fy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/steam_vent, +/turf/open/floor/plating, +/area/mine/maintenance/public/south) "FD" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/open/floor/iron/corner, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "FH" = ( +/obj/structure/sign/warning/radiation, /turf/closed/wall/ice, /area/icemoon/surface/outdoors/nospawn) "FL" = ( @@ -4758,7 +4729,7 @@ /obj/structure/railing/corner{ dir = 4 }, -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production/middle) "FT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -4773,14 +4744,16 @@ /obj/effect/turf_decal/siding/red{ dir = 8 }, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "FX" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/maintenance/production) +"FZ" = ( +/obj/machinery/camera/autoname/directional/south, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "Gb" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/railing{ @@ -4794,7 +4767,7 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) "Ge" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/laborcamp/quarters) "Gf" = ( /obj/machinery/door/airlock/external/glass{ @@ -4806,7 +4779,7 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "Gj" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -4824,11 +4797,21 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) +"Gn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Gr" = ( -/obj/effect/spawner/random/trash/botanical_waste, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/green/filled/line, /turf/open/floor/iron/dark, /area/mine/laborcamp) @@ -4839,8 +4822,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 }, -/obj/item/radio/intercom/prison/directional/south, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "Gz" = ( /obj/machinery/shower/directional/west, @@ -4857,7 +4839,8 @@ /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 }, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "GD" = ( /obj/machinery/computer/shuttle/labor/one_way, @@ -4870,13 +4853,11 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "GH" = ( -/obj/machinery/door/airlock/glass{ - name = "Arrival Lounge" +/obj/machinery/door/airlock/colony_prefab{ + name = "Expedition Lounge" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4889,15 +4870,14 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "GW" = ( /obj/structure/chair/office{ dir = 1 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/laborcamp/security) "GZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4911,7 +4891,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/labor) "Hb" = ( /obj/structure/cable, @@ -4919,7 +4899,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/steam_vent, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/labor) "Hc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4941,29 +4921,33 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/plating, /area/mine/maintenance/public/north) +"Hl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, +/turf/open/floor/plating, +/area/mine/storage) "Hp" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony, /area/mine/eva) "Hs" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/maintenance/service) "Hw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 +/obj/structure/railing{ + dir = 4 }, -/area/mine/lounge) +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Hx" = ( /obj/structure/railing/corner{ dir = 4 @@ -4971,15 +4955,14 @@ /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "Hz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/toilet/secret{ - dir = 4 +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 8 }, -/obj/effect/mob_spawn/corpse/human/skeleton, -/obj/item/clothing/under/rank/cargo/miner/lavaland, -/obj/item/storage/backpack/duffelbag/explorer, -/turf/open/floor/plating, -/area/mine/living_quarters) +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "HA" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/camera/autoname/directional/west{ @@ -4999,9 +4982,7 @@ /obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/brown/filled/warning, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "HC" = ( /obj/structure/tank_holder/extinguisher, @@ -5010,25 +4991,25 @@ }, /area/mine/production/lower) "HD" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/red/filled/end{ dir = 8 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "HF" = ( /obj/structure/railing/corner{ dir = 4 }, -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production/lower) "HG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/mine/maintenance/service) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/lattice/catwalk, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "HI" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -5039,7 +5020,8 @@ dir = 4 }, /obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, +/obj/machinery/space_heater, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "HP" = ( /obj/machinery/computer/mech_bay_power_console{ @@ -5051,10 +5033,18 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/mechbay) +"HR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "HS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5065,10 +5055,8 @@ }, /area/mine/laborcamp) "HT" = ( -/obj/structure/chair/stool{ - dir = 8 - }, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/structure/chair/plastic, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "HX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5085,8 +5073,11 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) "Ia" = ( -/turf/closed/wall/r_wall, -/area/mine/laborcamp/security) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/cafeteria) "Ic" = ( /obj/structure/chair/stool/directional/south, /obj/effect/turf_decal/siding/wideplating_new{ @@ -5094,8 +5085,15 @@ }, /turf/open/floor/iron/checker, /area/mine/laborcamp) +"Ie" = ( +/obj/machinery/button/door{ + id = 12; + name = "Ventilation Shutters"; + req_one_access = null + }, +/turf/closed/wall/prefab_plastic, +/area/mine/maintenance/service) "If" = ( -/obj/structure/cable, /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -5119,14 +5117,17 @@ /turf/open/floor/carpet/royalblue, /area/mine/living_quarters) "Is" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "It" = ( -/obj/effect/spawner/structure/window, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/medical) "Ix" = ( @@ -5135,7 +5136,7 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp) "Iy" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/medkit/emergency{ pixel_x = -3 }, @@ -5143,7 +5144,6 @@ /turf/open/floor/iron/white, /area/mine/laborcamp/production) "IA" = ( -/obj/structure/cable, /obj/structure/closet, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -5178,9 +5178,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/eva) "IN" = ( /turf/open/genturf, @@ -5194,9 +5192,7 @@ dir = 8 }, /obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "IV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5208,7 +5204,7 @@ /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony/bolts, /area/mine/storage/public) "IW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5219,7 +5215,8 @@ /obj/effect/turf_decal/trimline/purple/filled/warning{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Je" = ( /obj/machinery/door/airlock/maintenance{ @@ -5249,15 +5246,14 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "Ji" = ( -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/security{ - name = "Labor Camp Gate Monitoring" +/obj/machinery/door/airlock/colony_prefab{ + name = "Storage and Power" }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Jl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5265,23 +5261,22 @@ /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 1 - }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Jn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "Jp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/eva) "Jt" = ( /obj/machinery/disposal/bin, @@ -5291,12 +5286,13 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "Ju" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/mechbay) "Jv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -5333,7 +5329,7 @@ dir = 5 }, /obj/machinery/light/small/directional/north, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "JB" = ( /obj/structure/railing/corner, @@ -5351,14 +5347,23 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "JE" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/maintenance/labor) +"JF" = ( +/obj/machinery/door/airlock/colony_prefab{ + name = "Public Supply Hall" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/lounge) "JG" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "JH" = ( /obj/structure/stairs/south, @@ -5384,9 +5389,7 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/lounge) "JK" = ( /obj/structure/flora/grass/both/style_random, @@ -5402,14 +5405,15 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "JN" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Security Post Power" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "JP" = ( /obj/structure/disposalpipe/segment{ @@ -5419,9 +5423,7 @@ dir = 1 }, /obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "JS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5440,7 +5442,7 @@ /area/mine/laborcamp/production) "JZ" = ( /obj/structure/displaycase, -/turf/open/floor/carpet/executive, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "Ka" = ( /obj/structure/railing{ @@ -5455,21 +5457,19 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/eva) "Kf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "Kh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp/security) "Ki" = ( /obj/machinery/door/airlock/external/glass{ @@ -5482,8 +5482,7 @@ /turf/open/floor/iron/dark/textured_large, /area/mine/production) "Kk" = ( -/obj/structure/girder, -/turf/open/misc/asteroid/snow/icemoon, +/turf/closed/wall/prefab_plastic, /area/icemoon/surface/outdoors/nospawn) "Kn" = ( /obj/machinery/telecomms/relay/preset/mining, @@ -5501,7 +5500,7 @@ /obj/item/mining_scanner, /obj/item/flashlight, /obj/item/clothing/glasses/meson, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/storage/public) "Kp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5517,10 +5516,10 @@ /area/mine/laborcamp) "Kv" = ( /obj/machinery/mineral/processing_unit_console, -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/laborcamp/production) "Kw" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/medkit/regular, /turf/open/floor/iron/white, /area/mine/laborcamp/production) @@ -5536,11 +5535,6 @@ /turf/open/floor/plating, /area/mine/laborcamp/production) "KC" = ( -/obj/machinery/button/door/directional/north{ - id = "miningdorm3"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/siding/yellow{ dir = 1 @@ -5557,22 +5551,19 @@ }, /area/mine/production/middle) "KJ" = ( -/obj/item/kirbyplants/random, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, /obj/effect/turf_decal/siding/red/corner, /obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, +/obj/machinery/biogenerator/organic_printer, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "KL" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "KV" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/machinery/light/directional/east, /obj/item/stack/package_wrap, /obj/item/hand_labeler, @@ -5580,7 +5571,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 6 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/eva) "KW" = ( /obj/structure/disposalpipe/segment{ @@ -5589,10 +5580,10 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "Le" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/production) "Lf" = ( @@ -5624,16 +5615,14 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "Li" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "Lk" = ( /obj/structure/cable, @@ -5673,9 +5662,7 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "Ls" = ( /obj/structure/lattice/catwalk/mining, @@ -5696,9 +5683,14 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Ly" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/storage/public) +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/power/rtg/old_station, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Lz" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -5708,19 +5700,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/turf/open/floor/iron/large, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "LF" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "LG" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/medkit/emergency{ pixel_x = 3; pixel_y = 6 @@ -5734,9 +5723,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, +/turf/open/floor/iron/colony/white, /area/mine/medical) "LI" = ( /obj/structure/flora/tree/pine/style_random, @@ -5751,31 +5738,30 @@ }, /area/mine/laborcamp/quarters) "LK" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Maintenance" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, /turf/open/floor/plating, /area/mine/maintenance/public/north) "LM" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 4 - }, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, /obj/effect/turf_decal/siding/red{ dir = 4 }, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/obj/structure/table/greyscale, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "LO" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/box/bandages{ pixel_y = 6 }, @@ -5811,9 +5797,9 @@ /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp) "Mc" = ( -/obj/structure/chair/wood/wings, /obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/machinery/vending/games, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "Me" = ( /obj/machinery/shower/directional/west, @@ -5832,9 +5818,7 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/lounge) "Mr" = ( /obj/effect/decal/cleanable/dirt, @@ -5850,7 +5834,7 @@ /obj/effect/turf_decal/siding/red/corner{ dir = 4 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "Mu" = ( /obj/machinery/disposal/bin, @@ -5860,7 +5844,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "My" = ( /obj/machinery/light/small/directional/east, @@ -5884,7 +5868,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "MH" = ( /obj/machinery/door/airlock/external/glass{ @@ -5902,7 +5886,7 @@ /obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "MI" = ( /obj/structure/fence/door/opened, @@ -5916,17 +5900,24 @@ dir = 8 }, /obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "MM" = ( /obj/structure/railing/corner{ dir = 1 }, -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production/middle) +"MN" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "MQ" = ( /obj/structure/railing/corner{ dir = 4 @@ -5942,7 +5933,7 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "MS" = ( -/turf/open/floor/carpet/executive, +/turf/open/floor/iron/colony/white/bolts, /area/mine/lounge) "MW" = ( /obj/structure/cable, @@ -5970,7 +5961,7 @@ name = "Mining External Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/production) "Ne" = ( /obj/machinery/light/small/directional/west, @@ -5997,12 +5988,10 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner{ dir = 8 }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "Ni" = ( -/obj/effect/spawner/structure/window, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/mechbay) "Nl" = ( @@ -6020,14 +6009,14 @@ name = "Mining External Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance/departmental, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "No" = ( /obj/structure/tank_dispenser/oxygen, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/eva) "Nq" = ( /obj/effect/turf_decal/bot, @@ -6054,16 +6043,12 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/plating, /area/mine/maintenance/public/south) "Nw" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Nz" = ( /obj/effect/turf_decal/bot, @@ -6088,27 +6073,27 @@ "NE" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock{ - id_tag = "miningdorm3"; - name = "Luxury Room" +/obj/machinery/door/airlock/colony_prefab{ + name = "Bunk C" }, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, /obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "NG" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 }, -/obj/machinery/computer/order_console/mining, -/turf/open/floor/iron/dark, +/obj/machinery/vending/deforest_medvend, +/turf/open/floor/iron/colony, /area/mine/production) "NL" = ( /turf/open/openspace/icemoon/keep_below, /area/icemoon/underground/explored) "NM" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, +/obj/structure/cable, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "NR" = ( @@ -6127,14 +6112,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/end, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "NU" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/production) "NV" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/maintenance/service) "NX" = ( @@ -6158,7 +6142,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/eva) "Og" = ( /obj/machinery/power/apc/auto_name/directional/west, @@ -6173,42 +6157,36 @@ /obj/item/flashlight, /obj/item/clothing/glasses/meson, /obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/storage/public) "Oh" = ( /obj/machinery/computer/security/labor, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Oj" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/structure/closet/secure_closet/freezer/fridge/all_access, +/obj/effect/spawner/random/food_or_drink/cake_ingredients, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Ok" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 3 - }, +/obj/structure/table/greyscale, /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 10 }, -/turf/open/floor/iron/dark, +/obj/machinery/cell_charger_multi/directional/west, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, +/turf/open/floor/iron/colony, /area/mine/mechbay) "Om" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/siding/yellow/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/mine/lounge) +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/underground/explored) "Ot" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -6228,10 +6206,18 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/laborcamp/security) +"OD" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "OH" = ( /obj/item/storage/fancy/cigarettes/cigpack_robust{ pixel_x = -8; @@ -6248,18 +6234,16 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp) "OM" = ( -/obj/structure/table, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "ON" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/maintenance/service) "OO" = ( /obj/machinery/seed_extractor, @@ -6275,39 +6259,51 @@ /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp/quarters) "OT" = ( -/obj/structure/cable, -/turf/open/floor/iron/white/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/cafeteria) "OU" = ( /turf/closed/mineral/random/snow, /area/icemoon/surface/outdoors/labor_camp) +"OW" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "OZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/purple/filled/line, /obj/effect/turf_decal/trimline/brown/filled/warning, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/mechbay) "Pc" = ( -/obj/structure/closet/crate/grave, -/turf/open/misc/asteroid/snow/icemoon, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Pd" = ( /obj/structure/marker_beacon/teal, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"Ph" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Pi" = ( /obj/machinery/light/small/directional/south, /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Pk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6321,16 +6317,14 @@ /obj/structure/cable, /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/blue/filled/warning, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "Pm" = ( -/obj/effect/spawner/structure/window, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/cafeteria) "Po" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/paper/guides/jobs/security/labor_camp, /obj/structure/cable, /obj/machinery/camera/autoname/directional/south{ @@ -6340,7 +6334,7 @@ dir = 10 }, /obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Pp" = ( /obj/item/toy/beach_ball, @@ -6369,9 +6363,7 @@ dir = 4 }, /obj/machinery/light/small/directional/east, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/lounge) "PD" = ( /obj/effect/decal/cleanable/dirt, @@ -6401,8 +6393,18 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) +"PK" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "PL" = ( /obj/machinery/recycler{ dir = 8 @@ -6415,7 +6417,7 @@ /area/icemoon/surface/outdoors/nospawn) "PR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/executive, +/turf/open/floor/iron/colony/white/bolts, /area/mine/lounge) "PS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -6425,10 +6427,10 @@ dir = 1 }, /obj/effect/turf_decal/siding/red, -/turf/open/floor/iron/edge, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "PT" = ( -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/mechbay) "PV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6439,7 +6441,7 @@ /obj/effect/turf_decal/trimline/green/filled/warning{ dir = 1 }, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "PW" = ( /obj/structure/cable, @@ -6448,17 +6450,14 @@ }, /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "PY" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/spawner/random/entertainment/toy, /turf/open/floor/iron/checker, /area/mine/laborcamp) "Qa" = ( -/obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -6466,7 +6465,9 @@ /obj/effect/turf_decal/siding/red/corner{ dir = 1 }, -/turf/open/floor/iron, +/obj/structure/table/greyscale, +/obj/machinery/biogenerator/foodricator, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "Qb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6482,17 +6483,17 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "Qi" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Mining Station Mech Bay" +/obj/machinery/door/airlock/colony_prefab{ + name = "Exosuit Bay" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, -/obj/effect/turf_decal/tile/brown/opposingcorners, /obj/effect/turf_decal/tile/purple/opposingcorners{ dir = 1 }, -/turf/open/floor/iron/dark, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/mechbay) "Qq" = ( /obj/structure/ore_vent/starter_resources{ @@ -6509,7 +6510,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lavaland_mining_mid" }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production/middle) "Qx" = ( /obj/structure/stairs/south, @@ -6532,9 +6533,8 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "QG" = ( -/obj/machinery/door/airlock/public/glass{ - id_tag = "gulag2"; - name = "Cell 2" +/obj/machinery/door/airlock/colony_prefab{ + name = "Prisoner Bunk" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6555,28 +6555,29 @@ /obj/structure/railing{ dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "QN" = ( -/obj/structure/girder, -/turf/open/floor/plating/snowed/icemoon, -/area/icemoon/surface/outdoors/nospawn) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/colony, +/area/mine/lounge) "QP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/executive, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "QR" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/structure/chair/plastic, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "QT" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony, /area/mine/production) "QV" = ( /obj/structure/railing{ @@ -6589,18 +6590,18 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "QX" = ( -/turf/closed/wall, +/turf/closed/wall/prefab_plastic, /area/mine/mechbay) "Ra" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Mining Station EVA" +/obj/machinery/door/airlock/colony_prefab{ + name = "Mining EVA" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/eva) "Rd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6612,15 +6613,11 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 10 }, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "Re" = ( /obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Rf" = ( /obj/effect/decal/cleanable/dirt, @@ -6637,7 +6634,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "Rl" = ( /obj/structure/flora/rock/icy/style_random, @@ -6650,9 +6647,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Rs" = ( /obj/structure/fence/corner{ @@ -6664,8 +6659,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/obj/effect/turf_decal/siding/yellow/corner, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "Ru" = ( /obj/structure/sink/kitchen/directional/east{ @@ -6688,6 +6682,7 @@ "Rw" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/toolcloset, +/obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/plating, /area/mine/maintenance/service) "Ry" = ( @@ -6702,8 +6697,8 @@ /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "RD" = ( -/turf/closed/wall, -/area/mine/maintenance/labor) +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/icemoon/surface/outdoors/nospawn) "RF" = ( /obj/structure/railing/corner{ dir = 1 @@ -6719,10 +6714,7 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "RG" = ( -/obj/machinery/door/airlock/public/glass{ - id_tag = "cellblock1"; - name = "Labor Camp Operations" - }, +/obj/structure/window/fulltile/colony_fabricator, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, @@ -6773,14 +6765,18 @@ /turf/open/floor/iron/dark/textured_large, /area/mine/production) "RY" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/mine/production) -"RZ" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) +"RZ" = ( +/obj/structure/table/greyscale, +/obj/machinery/microwave/frontier_printed, /turf/open/floor/iron/smooth_edge{ dir = 8 }, @@ -6798,8 +6794,7 @@ /area/mine/laborcamp/production) "Sm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/siding/yellow, -/turf/open/floor/iron/large, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "Sn" = ( /obj/machinery/hydroponics/constructable, @@ -6807,7 +6802,7 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "Sq" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -6816,9 +6811,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, +/turf/open/floor/iron/colony/white/bolts, /area/mine/medical) "Sr" = ( /obj/item/cigbutt, @@ -6828,19 +6821,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/effect/turf_decal/trimline/brown/filled/warning, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/lounge) "St" = ( -/obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Sz" = ( /obj/machinery/hydroponics/constructable, @@ -6848,20 +6835,16 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "SA" = ( -/obj/machinery/door/airlock/glass{ - name = "Arrival Lounge" +/obj/machinery/door/airlock/colony_prefab{ + name = "Public Supply Hall" }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "SB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6872,22 +6855,14 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/turf/open/floor/iron/dark/smooth_edge, -/area/mine/laborcamp/security) -"SD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/end{ - dir = 1 - }, -/turf/open/floor/iron, -/area/mine/lounge) +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/laborcamp/security) "SG" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp/security) "SL" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -6899,15 +6874,25 @@ }, /turf/open/floor/iron/smooth_large, /area/mine/laborcamp) -"SO" = ( -/obj/structure/chair/stool{ - dir = 8 +"SN" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Labor Camp External Airlock" }, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/carpet/neon/simple/red/nodots, -/area/mine/cafeteria) +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "lavaland_gulag_east" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/security/brig, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/maintenance/labor) +"SO" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "SP" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/lounge) "SQ" = ( @@ -6915,16 +6900,19 @@ dir = 4 }, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/production) "Tc" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/cafeteria) +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "Te" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/window/fulltile/colony_fabricator, /turf/open/floor/plating, /area/mine/laborcamp/quarters) "Tf" = ( @@ -6934,27 +6922,23 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony, /area/mine/eva) "Ti" = ( /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/table, -/obj/item/paper/fluff/stations/lavaland/orm_notice, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/obj/structure/closet/xenoarch, +/turf/open/floor/iron/colony, /area/mine/production) "To" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/iron/white, +/obj/structure/table/greyscale, +/obj/machinery/microwave/frontier_printed, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "Tp" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, /turf/open/floor/plating, /area/mine/storage) "Tr" = ( @@ -6968,13 +6952,13 @@ name = "Mining External Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/production) "Ts" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Tu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6987,13 +6971,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/maintenance/living/north) +"TA" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "TD" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 1 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/production) "TF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7002,13 +6991,11 @@ /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/mechbay) "TJ" = ( /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "TN" = ( /obj/structure/ore_box, @@ -7019,15 +7006,13 @@ }, /area/mine/production/lower) "TQ" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/toolbox/mechanical{ pixel_x = -2; pixel_y = 4 }, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/eva) "TR" = ( /obj/structure/fence/cut/large{ @@ -7042,31 +7027,33 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) "TV" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" +/obj/machinery/door/airlock/colony_prefab{ + name = "Utility Storage" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/plating, /area/mine/maintenance/service) "TW" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Storage" +/obj/machinery/door/airlock/colony_prefab{ + name = "Power and Storage" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/security/brig, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/structure/disposalpipe/segment, +/obj/structure/cable, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "Ua" = ( /obj/structure/railing/corner{ dir = 8 }, -/turf/closed/wall/ice, +/turf/closed/wall/prefab_plastic, /area/icemoon/underground/explored) "Ub" = ( /obj/item/kirbyplants/random, @@ -7089,7 +7076,8 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "Uj" = ( /obj/structure/railing/corner{ @@ -7110,7 +7098,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/living/north) "Up" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7118,14 +7106,21 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/edge, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/living_quarters) "Uq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) +"Ur" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/camera/autoname/directional/north, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "Us" = ( /obj/machinery/shower/directional/south, /turf/open/floor/iron/dark/textured_edge, @@ -7137,10 +7132,9 @@ /turf/open/floor/iron/smooth_edge, /area/mine/laborcamp) "Uu" = ( -/obj/machinery/door/airlock/security{ - name = "Labor Camp Break Room" +/obj/machinery/door/airlock/colony_prefab{ + name = "Break Lounge" }, -/obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark, @@ -7166,21 +7160,17 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) "UQ" = ( -/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 }, /obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "US" = ( -/obj/structure/table/wood, -/obj/item/toy/cards/deck, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "UV" = ( /obj/machinery/door/airlock/external/glass{ @@ -7193,7 +7183,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "UZ" = ( /obj/structure/chair/stool/directional/west, @@ -7218,14 +7208,14 @@ /area/icemoon/surface/outdoors/nospawn) "Ve" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp) "Vf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp) "Vh" = ( /obj/machinery/door/airlock/external/glass{ @@ -7241,7 +7231,7 @@ /obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ dir = 4 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "Vi" = ( /obj/structure/cable, @@ -7263,15 +7253,13 @@ /turf/open/floor/iron/dark, /area/mine/laborcamp) "Vn" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Maintenance" - }, +/obj/machinery/door/airlock/colony_prefab, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/all/supply/mining_station, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/maintenance/production) "Vp" = ( /obj/structure/ore_box, @@ -7293,21 +7281,26 @@ /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/open/floor/plating, /area/mine/maintenance/labor) -"Vt" = ( +"Vs" = ( +/obj/structure/lattice/catwalk, /obj/structure/cable, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) +"Vt" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, /obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "Vw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Vy" = ( /obj/structure/cable, @@ -7315,7 +7308,7 @@ /area/mine/production/middle) "Vz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/executive, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "VD" = ( /obj/structure/railing, @@ -7326,7 +7319,7 @@ /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "VF" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/decal/cleanable/dirt, /obj/item/plate, /obj/item/kitchen/fork, @@ -7340,12 +7333,11 @@ /turf/open/floor/iron/checker, /area/mine/laborcamp) "VJ" = ( -/obj/structure/closet/crate, /obj/item/food/mint, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/storage) "VK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7382,30 +7374,30 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/laborcamp) "VZ" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/table, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/obj/structure/table/greyscale, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Wb" = ( /obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "We" = ( /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plating, /area/mine/storage) "Wg" = ( -/obj/structure/girder, -/turf/open/floor/plating/snowed/icemoon, -/area/mine/lounge) +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, +/turf/open/floor/plating, +/area/mine/maintenance/service) "Wl" = ( /obj/machinery/door/airlock/external/glass{ name = "Mining External Airlock" @@ -7414,17 +7406,25 @@ cycle_id = "lavaland_mining_west" }, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "Wm" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 1 - }, +/turf/open/floor/iron/colony/bolts, /area/mine/laborcamp/security) +"Wn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/openspace/icemoon/keep_below, +/area/icemoon/surface/outdoors/nospawn) "Wr" = ( /obj/structure/flora/grass/both/style_random, /turf/open/misc/asteroid/snow/icemoon, @@ -7435,13 +7435,13 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony, /area/mine/hydroponics) "Wx" = ( -/obj/machinery/computer/arcade/battle{ - dir = 4 - }, -/turf/open/floor/carpet/neon/simple/red/nodots, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/entertainment/lighter, +/obj/machinery/light/small/blacklight/directional/west, +/turf/open/floor/iron/colony/bolts, /area/mine/cafeteria) "Wy" = ( /obj/structure/lattice/catwalk/mining, @@ -7454,7 +7454,7 @@ /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "WD" = ( /obj/structure/railing{ @@ -7473,7 +7473,7 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 }, -/turf/open/floor/iron/dark, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/mechbay) "WK" = ( /obj/structure/chair/sofa/corp{ @@ -7482,12 +7482,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "WN" = ( /obj/structure/railing{ @@ -7509,12 +7504,11 @@ /turf/open/openspace/icemoon/keep_below, /area/icemoon/underground/explored) "WU" = ( -/obj/machinery/space_heater, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/storage) "WV" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -7536,14 +7530,14 @@ /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/explored) "WX" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Station Storage" +/obj/machinery/door/airlock/colony_prefab{ + name = "Mining Station Production Storage" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/effect/mapping_helpers/airlock/access/any/supply/mining_station, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/storage) "Xd" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -7556,9 +7550,7 @@ network = list("mine") }, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/production) "Xe" = ( /obj/structure/marker_beacon/burgundy, @@ -7568,13 +7560,16 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) "Xg" = ( -/obj/structure/table, /obj/machinery/light/directional/west, -/obj/effect/spawner/random/food_or_drink/booze, /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/iron/white, +/obj/structure/cable, +/obj/structure/table/greyscale, +/obj/item/kitchen/rollingpin, +/obj/effect/spawner/random/food_or_drink/condiment, +/obj/machinery/reagentgrinder, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "Xi" = ( /obj/structure/chair/comfy/teal{ @@ -7586,12 +7581,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "Xj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7600,9 +7590,7 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/production) "Xn" = ( /obj/structure/stairs/east, @@ -7615,22 +7603,21 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/turf/open/floor/iron/edge, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "Xs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/lounge) "Xt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/highsecurity{ - name = "Labor Camp Service Gate"; - security_level = 4 +/obj/machinery/door/airlock/colony_prefab{ + name = "Security Post Maintenance" }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/open/floor/plating, @@ -7662,7 +7649,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "XB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7673,9 +7660,7 @@ /obj/effect/turf_decal/siding/yellow/corner{ dir = 4 }, -/turf/open/floor/iron/edge{ - dir = 4 - }, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/lounge) "XC" = ( /obj/structure/stairs/south, @@ -7688,12 +7673,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/light/directional/south, -/turf/open/floor/iron/edge{ - dir = 1 - }, +/turf/open/floor/iron/colony, /area/mine/lounge) "XH" = ( /obj/structure/disposalpipe/segment{ @@ -7717,25 +7699,27 @@ pixel_x = 32; pixel_y = 0 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "XQ" = ( /mob/living/basic/mining/ice_whelp, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) "XT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, -/area/mine/production) +/obj/machinery/door/airlock/colony_prefab{ + name = "Shuttle Lounge" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/lounge) "XV" = ( /obj/machinery/light/small/directional/north, /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/iron/textured_large, +/turf/open/floor/iron/colony/white/texture, /area/mine/living_quarters) "XW" = ( /obj/item/kirbyplants/random, @@ -7746,17 +7730,15 @@ /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/iron/colony, /area/mine/mechbay) "XZ" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/storage/fancy/donut_box, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Ya" = ( /obj/machinery/vending/security{ @@ -7765,7 +7747,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 10 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Yb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7776,33 +7758,36 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/turf/open/floor/plating, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security/maintenance) "Yc" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, +/obj/structure/table/greyscale, +/obj/item/food/canned/tomatoes, +/obj/item/plate/oven_tray, +/turf/open/floor/iron/colony/white/bolts, /area/mine/cafeteria) "Ye" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 4 }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, +/turf/open/floor/iron/colony, /area/mine/production) "Yf" = ( -/obj/effect/turf_decal/siding/yellow, -/turf/open/floor/iron/large, -/area/mine/lounge) +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "Yg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/bolts, /area/mine/eva) "Yk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -7816,10 +7801,10 @@ "Yl" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/production) "Ym" = ( -/turf/closed/wall/ice, +/turf/closed/wall/prefab_plastic, /area/mine/lounge) "Yn" = ( /obj/machinery/conveyor{ @@ -7845,7 +7830,7 @@ /turf/open/openspace/icemoon/keep_below, /area/icemoon/surface/outdoors/nospawn) "Yr" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/effect/decal/cleanable/dirt, /obj/item/toy/cards/deck, /turf/open/floor/iron/checker, @@ -7855,10 +7840,10 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "Yv" = ( -/obj/structure/table, +/obj/structure/table/greyscale, /obj/item/paper, /obj/item/pen, /turf/open/floor/iron/smooth_edge{ @@ -7886,6 +7871,14 @@ /obj/structure/barricade/wooden, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) +"YN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/turf/open/floor/catwalk_floor/colony_fabricator, +/area/mine/living_quarters) "YQ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -7906,7 +7899,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/iron/dark/textured_large, +/turf/open/floor/iron/colony/texture, /area/mine/production) "YY" = ( /obj/structure/rack, @@ -7919,29 +7912,24 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "Zb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 +/obj/machinery/door/airlock/colony_prefab{ + name = "Bunk A" }, -/turf/open/floor/iron, -/area/mine/lounge) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/colony/white/texture, +/area/mine/living_quarters) "Zh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Zj" = ( -/obj/structure/chair/sofa/middle/brown, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 1 - }, /obj/machinery/light/small/directional/north, -/turf/open/floor/iron/checker, +/obj/structure/table/greyscale, +/obj/effect/spawner/random/food_or_drink/any_snack_or_beverage, +/turf/open/floor/iron/colony, /area/mine/cafeteria) "Zl" = ( /obj/structure/cable, @@ -7949,20 +7937,17 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/turf/open/floor/iron/dark/smooth_edge, +/turf/open/floor/catwalk_floor/colony_fabricator, /area/mine/laborcamp/security) "Zn" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/colony/white, /area/mine/cafeteria) "Zp" = ( /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) "Zq" = ( @@ -7975,8 +7960,10 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) "Zt" = ( -/turf/closed/wall, -/area/mine/laborcamp) +/obj/structure/flora/grass/both/style_random, +/obj/machinery/camera/autoname/directional/west, +/turf/open/misc/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors/nospawn) "Zv" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/effect/turf_decal/siding/yellow{ @@ -8012,9 +7999,7 @@ /obj/effect/turf_decal/siding/red{ dir = 8 }, -/turf/open/floor/iron/edge{ - dir = 8 - }, +/turf/open/floor/iron/colony/white, /area/mine/lounge) "ZH" = ( /obj/structure/closet/secure_closet/labor_camp_security, @@ -8022,7 +8007,7 @@ dir = 9 }, /obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/colony, /area/mine/laborcamp/security) "ZM" = ( /turf/open/lava/plasma/ice_moon, @@ -8035,6 +8020,7 @@ pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/space_heater, /turf/open/floor/plating, /area/mine/maintenance/living/north) "ZT" = ( @@ -30364,12 +30350,12 @@ Nr pU pU pU +Om pU pU pU pU -pU -pU +Om pU pU ZM @@ -31906,12 +31892,12 @@ Nr pU pU pU +Om pU pU pU pU -pU -pU +Om pU pU ZM @@ -48608,7 +48594,7 @@ Nr Nr Nr pU -pU +Om pU pU pU @@ -49893,7 +49879,7 @@ Nr Nr pU Wr -pU +Om pU pU pU @@ -96157,12 +96143,12 @@ Nr Nr Nr pU -pU +Om Bd uO uO sI -pU +Om pU pU NL @@ -96928,12 +96914,12 @@ Nr Nr Nr pU -pU +Om mF pU pU tC -pU +Om pU NL NL @@ -114932,7 +114918,7 @@ ge ge pU lE -pU +Om NL NL NL @@ -115698,7 +115684,7 @@ yV Us aL bC -wf +ls yV pU pU @@ -116217,7 +116203,7 @@ Wr Wr pU pU -pU +Om pU pU pU @@ -116723,10 +116709,10 @@ pU pU pU pU +Om pU pU -pU -pU +Om pU pU pU @@ -152973,11 +152959,11 @@ Dv Dv aK aK -aK +SO tL aK pV -aK +SO aK Dv Dv @@ -155548,7 +155534,7 @@ fe JV ff jU -uq +eR sf UN Ge @@ -155805,7 +155791,7 @@ eo Zr Yn xz -uq +eR OS LJ QG @@ -156054,14 +156040,14 @@ Lw eb eb eb -Zt -Zt -om +kg +kg +rX RG fk gh -Zt -Zt +kg +kg Ge gf cQ @@ -156309,9 +156295,9 @@ xG xG rX rX -Zt +kg rX -Zt +kg Ub Tu MW @@ -156823,9 +156809,9 @@ xG xG rX rX -Zt +kg rX -Zt +kg rS Kp Xy @@ -157350,9 +157336,9 @@ jA Ix OK tr -Zt +kg pE -Zt +kg aK aK Dv @@ -157607,7 +157593,7 @@ Vi AC pH zr -Zt +kg EG rX aK @@ -157861,14 +157847,14 @@ RZ tZ EQ Tu -Zt -Zt +kg +kg jm -Zt -Zt -RD -RD -RD +kg +kg +rF +rF +rF Dv Dv Dv @@ -158111,22 +158097,22 @@ aK eb eb eb -Zt +kg Vm mP XJ fo Rf DV -Zt +kg pO hr Ru -Zt +kg IA VO -RD -RD +rF +rF Dv aK eb @@ -158368,22 +158354,22 @@ fP eb eb eb -Zt +kg nI sU cq Di fg PG -Zt +kg ee hr hr Je hx -uI +CD Mr -RD +rF Dv eb eb @@ -158632,15 +158618,15 @@ vO Gr tE ro -Zt -Zt +kg +kg Gz rz -Zt +kg If -kE +ve Mr -RD +rF Dv Dv Dv @@ -158890,14 +158876,14 @@ oN Jf Jf WF -Zt -Zt -Zt -Zt -Ee +kg +kg +kg +kg +YJ ve -RD -RD +rF +rF Dv Dv Dv @@ -159147,13 +159133,13 @@ BH XW Sr Rf -nq +kg oT kg rF rF Hb -RD +rF Dv Dv Dv @@ -159408,9 +159394,9 @@ kg xQ kg CD -Vq +SN Ha -RD +rF Dv Dv Dv @@ -159667,7 +159653,7 @@ kg Vq rF YJ -RD +rF Dv Dv Dv @@ -159924,7 +159910,7 @@ aK dJ rF JE -RD +rF aK Dv Dv @@ -162482,16 +162468,16 @@ eb aK aK aK -Ia +kt he he -Ia +kt TT gZ -Ia -Ia -Ia -Ia +kt +kt +kt +kt Jn tG vD @@ -162500,7 +162486,7 @@ vD dJ aK aK -Pc +aK aK eb eb @@ -162738,19 +162724,19 @@ eb eb aK aK -Ia -Ia +kt +kt vn Po -Ia +kt Gm fS he ZH Ya -Ia +kt wA -zh +cs UV zh eX @@ -163005,15 +162991,15 @@ io lJ aN Pi -Ia +kt Zp +kE vD vD vD -vD -dJ +Ur +aK aK -Pc aK aK fP @@ -163262,17 +163248,17 @@ St he qy qA -Ia -Is +kt +wq Is NM dJ dJ dJ -aK -aK -aK -aK +aD +aD +aD +aD aK aK eb @@ -163516,21 +163502,21 @@ IU he Zl PW -Ia -Ia -Ia -Ia +kt +kt +kt +kt kt AI kt -Ae +HG aK aK -Pc aK -Pc aK -Pc +aK +aD +aK aK eb eb @@ -163766,11 +163752,11 @@ Ps eb eb aK -Ia -Ia +kt +kt Fp jq -Ia +kt np lV Uu @@ -163780,19 +163766,19 @@ py Ji HD jc -Ae +HG aK aK aK fP aK +aD aK aK -aK -eb -eb -eb -eb +kZ +Ly +Ly +uI eb eb eb @@ -164024,10 +164010,10 @@ eb eb aK aK -Ia +kt he he -Ia +kt ci ci kt @@ -164037,19 +164023,19 @@ Ys kt HO jc -Ae +HG aK eb eb aK -Pc -aK -aK aK -eb -eb -eb -eb +eV +Vs +vQ +BX +qU +qU +om eb eb eb @@ -164291,11 +164277,11 @@ kt jc jc jc -Ia -Ia -Ia +kt +kt +kt Xt -Ia +kt eb eb eb @@ -164303,10 +164289,10 @@ aK aK aK eb -eb -eb -eb -eb +Ee +ps +ps +eP eb eb eb @@ -164551,14 +164537,14 @@ aK eb aK aK -dJ +Yf aK aK aK eb eb aK -aK +FH eb eb eb @@ -164783,10 +164769,10 @@ fP aK aK aK +SO aK aK -aK -aK +SO eb eb eb @@ -164808,9 +164794,9 @@ aK eb eb eb -dJ -dJ -dJ +ku +mM +OD aK aK eb @@ -165067,7 +165053,7 @@ eb eb eb eb -dJ +Aq aK fP eb @@ -165324,7 +165310,7 @@ eb eb eb eb -VK +DZ eb eb eb @@ -165554,7 +165540,7 @@ aK aK fP aK -aK +SO aK eb eb @@ -165581,7 +165567,7 @@ eb eb eb eb -VK +DZ eb eb eb @@ -165838,7 +165824,7 @@ eb eb eb eb -VK +DZ eb eb eb @@ -166095,7 +166081,7 @@ eb eb eb eb -VK +DZ eb eb eb @@ -166352,7 +166338,7 @@ eb eb eb eb -VK +DZ eb eb aK @@ -166571,11 +166557,11 @@ ZY aK aK aK -AJ -AJ -AJ -AJ -AJ +Kk +Kk +Kk +Kk +Kk aK aK aK @@ -166609,11 +166595,11 @@ eb eb eb eb -dJ +Aq aK eb fP -Kk +aK aK aK aK @@ -166866,11 +166852,11 @@ eb aK aK aK -dJ +Aq +aK aK aK aK -Kk aK aK aK @@ -167087,7 +167073,7 @@ aK aK mA su -xG +kf PL Sd aK @@ -167107,8 +167093,8 @@ eb aK aK kY -Tc -Tc +Pm +Pm kY aK eb @@ -167122,13 +167108,13 @@ eb aK aK fP -Kk -dJ -dJ -dJ -dJ -dJ -dJ +aK +ku +Hz +Hz +Hz +Hz +OD aK aK eb @@ -167368,7 +167354,7 @@ gD zH kY kY -Tc +Pm kY RF RB @@ -167385,7 +167371,7 @@ fP aK aK Kk -dJ +TA fP fP eb @@ -167619,7 +167605,7 @@ eb eb aK fP -Tc +Pm xn ry te @@ -167632,17 +167618,17 @@ ol eb eb eb -aK -Zq +FZ +Ym SP SP -Zq +Ym SP SP SP SP -Zq -dJ +Ym +TA aK fP eb @@ -167858,8 +167844,8 @@ aK Qz ON rw -eW -HG +mx +mx vA ON ON @@ -167876,7 +167862,7 @@ eb aK fP fP -Tc +Pm xJ XA eK @@ -167893,14 +167879,14 @@ Ka SP JI cM -Zq +Ym KJ LM uN Mt SP fD -QN +xG eb eb eb @@ -168136,10 +168122,10 @@ kY kY kY Cm -qp +ob kY kY -Tc +Pm kY xt pq @@ -168156,7 +168142,7 @@ Ff Ff wg SP -VK +uR eb eb eb @@ -168393,7 +168379,7 @@ kY kR jS KL -DW +Ia Xg qQ AV @@ -168414,7 +168400,7 @@ Ff cK SP fD -QN +xG eb eb eb @@ -168626,8 +168612,8 @@ aK aK aK Qz -ON -ni +og +eW rZ ni ON @@ -168650,18 +168636,18 @@ kY ka iH KL -DW +Ia uv OT Yc -Tc +Pm fP eb eb eb IH Vp -Zq +Ym Me PA Zq @@ -168670,8 +168656,8 @@ Zz FT Qa SP -dJ -dJ +gx +Tc eb eb eb @@ -168883,10 +168869,10 @@ aK aK aK Qz -ON +og oc sO -Hs +Wg ON Hs xD @@ -168900,18 +168886,18 @@ eb fP aK aK -Tc +Pm +HT HT -SO Pm -wb -wb +Fd +Fd Nw -DW +Ia eD OT sW -Tc +Pm eb eb eb @@ -168925,10 +168911,10 @@ yj yj GH yl -Zq -Zq -Zq -dJ +Ym +Ym +Ym +TA eb eb eb @@ -169140,8 +169126,8 @@ aK Ue AA gB -ON -ps +og +eW gq ER vc @@ -169157,35 +169143,35 @@ eb aK aK fP -Tc +Pm tX ut uk Zh Zh DW -DW +Ia db gP To -Tc +Pm aK eb eb eb eb aK -gx +yX Sn Sz xr yX PV -Gx -Zq -cX -Wg -dJ +QN +uA +dN +Ym +TA aK eb eb @@ -169396,7 +169382,7 @@ aK aK Qz ON -ON +Ie ON ON ON @@ -169414,11 +169400,11 @@ eb eb aK fP -Tc +Pm QR tx Pm -oe +Fd Fd DW yN @@ -169426,12 +169412,12 @@ Re hD Oj qN -RL -RL -dB -dB -dB -RL +oh +oh +Hw +Hw +Hw +oh vp Wt mf @@ -169439,11 +169425,11 @@ Pl ie fL eH -Zq +fJ cX -Wg -dJ -dJ +Ym +gx +Tc eb eb eb @@ -169689,7 +169675,7 @@ eb eb eb eb -gx +yX pB OM hK @@ -169700,7 +169686,7 @@ rU rU rU rU -dJ +TA eb eb eb @@ -169932,8 +169918,8 @@ kY kY kY kY -eP -wq +Fd +Fd DW qg kY @@ -169942,7 +169928,7 @@ kY kY gg gg -RM +EU eb eb eb @@ -169956,8 +169942,8 @@ XD rU Og Ko -Ly -dJ +cE +TA eb eb eb @@ -170200,9 +170186,9 @@ PH hF WV VK -VK -VK -Xw +wb +wb +sj Xw Dz LG @@ -170213,8 +170199,8 @@ Ss cE hV xU -Ly -dJ +cE +TA eb eb eb @@ -170456,11 +170442,11 @@ GZ gg sk gg -RM +Ph eb eb eb -VK +bX Dz mO vb @@ -170470,8 +170456,8 @@ HB qo IV iD -Ly -zU +cE +gb aK eb eb @@ -170696,7 +170682,7 @@ eb eb eb eb -eb +tk aK cW cW @@ -170722,13 +170708,13 @@ Dz hB vu It -Xp +yf rY cE hi -xU -Ly -dJ +tT +cE +TA fP eb eb @@ -170946,13 +170932,13 @@ kV kV ON Ae -fP +Zt fP eb eb eb eb -RM +RY cW Am cW @@ -170962,7 +170948,7 @@ iu tc xi iu -Up +ed Cf NE In @@ -170979,14 +170965,14 @@ Dz Sq cy It -Xp -Hw +yf +jZ cE aq ij -Ly -dJ -dJ +cE +gx +Tc eb eb eb @@ -171204,11 +171190,11 @@ ON ON Ae Ae +PK di di -di -VK -VK +wb +wb VK Nn kv @@ -171216,9 +171202,9 @@ ce Li kv iu -ku +hE gz -ux +Zb Uf lq iu @@ -171243,8 +171229,8 @@ rU rU rU eA -dJ -aK +gx +Nl eb eb eb @@ -171466,7 +171452,7 @@ eb eb eb eb -RM +MN cW Am cW @@ -171493,9 +171479,9 @@ Dz CS Dz Dz -GH +JF SA -Zq +Ym ch sR QH @@ -171724,7 +171710,7 @@ eb eb eb eb -aK +rr aK cW cW @@ -171750,12 +171736,12 @@ iB Pk Pk LK -SD +yf NT zc ou -ou -ou +Fy +wv Nv BS eA @@ -171989,8 +171975,8 @@ Li iu hE gz -vQ -Uf +ux +YN JP iu IS @@ -172001,15 +171987,15 @@ fP eb eb aK -Zq +Ym jj -Zq -Zq -Zq -Zq -GH -yl -Zq +Ym +Ym +Ym +Ym +df +XT +Ym pg Ce PD @@ -172248,7 +172234,7 @@ iu iu iu iN -ix +iZ iu Zw UD @@ -172257,16 +172243,16 @@ aK aK eb eb -Zq -Zq +Ym +Ym Rt bK Xi ez EE XB -Zb -Zq +Gx +Ym eA eA eA @@ -172763,8 +172749,8 @@ qO iu yH KW +tM iu -Hz iu aK aK @@ -172773,8 +172759,8 @@ eb aK SP cF -Yf -Vz +ib +od JZ JZ PR @@ -173034,10 +173020,10 @@ Sm Vz MS MS -PR +la fH Jt -Zq +Ym aK fP xe @@ -173287,14 +173273,14 @@ RM aK SP ti -DZ +ib FD vi WK qW -Om -Zq -Zq +zF +Ym +Ym aK fP eb @@ -173523,8 +173509,8 @@ eb eb eb eb -aK -fP +RD +RD cW cW cW @@ -173542,15 +173528,15 @@ aK RM eb eb -Zq +Ym JA wp zF -Zq +Ym SP SP SP -Zq +Ym aK aK eb @@ -173781,14 +173767,14 @@ eb eb eb eb -fP -fP -aK -RM -RM -oy +RD +RD +RD +OW +zg oy -RM +HR +zg js Jz eb @@ -173799,11 +173785,11 @@ eb RM eb eb -Zq +Ym SP bL SP -Zq +Ym eb eb eb @@ -174043,7 +174029,7 @@ eb eb eb eb -oy +Gn eb eb js @@ -174300,7 +174286,7 @@ eb eb eb eb -oy +Gn eb eb js @@ -174556,10 +174542,10 @@ eb eb eb eb -RM -oy +Yq oy -RM +Wn +Gb js Jz eb @@ -176094,8 +176080,8 @@ aK xe oA Ey -tV -tM +Hl +WU QX sX ht @@ -176866,7 +176852,7 @@ oA Lz tV tV -tM +WU QX dh WJ @@ -177368,7 +177354,7 @@ aK aK aK aK -aK +SO aK aK eb @@ -177380,7 +177366,7 @@ Lh Nh NU Yl -XT +dQ NU ld nk @@ -177627,7 +177613,7 @@ aK aK aK aK -Aw +Pc aa Gb cU @@ -177884,7 +177870,7 @@ aK aK aK aK -Pq +jT pq pq pq @@ -178139,8 +178125,8 @@ aK aK aK aK -aK -aK +SO +RD aK eb eb @@ -178151,15 +178137,15 @@ Lq ye NU NU -RY +Le cJ -RY +Le NU pK pK -oh +dK Ra -oh +dK pK NU aK @@ -178412,7 +178398,7 @@ gW Xj QT NG -pK +dK No Hp Kc @@ -178669,7 +178655,7 @@ TD Vw wl Ti -pK +dK lg se Yg @@ -178919,7 +178905,7 @@ eb eb aK aK -NU +Le QI zJ oi @@ -179176,13 +179162,13 @@ eb eb aK aK -NU +Le rH rH fV dQ Cg -lb +qt pK Ob IL @@ -180209,7 +180195,7 @@ aK aK hG aK -aK +RD hT dY eb diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm index 7a3b22d254f9e..7fda323c9ce19 100644 --- a/_maps/map_files/NebulaStation/NebulaStation.dmm +++ b/_maps/map_files/NebulaStation/NebulaStation.dmm @@ -423,7 +423,7 @@ "adt" = ( /obj/machinery/defibrillator_mount/directional/south, /obj/structure/table/glass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/effect/turf_decal/box/white/corners{ dir = 4 }, @@ -545,7 +545,7 @@ id = "cmoprivacy2"; req_access = list("cmo") }, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/white/herringbone, /area/station/command/heads_quarters/cmo) "aer" = ( @@ -770,6 +770,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing/corner/end/flip, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "afN" = ( @@ -10568,6 +10569,9 @@ "bDU" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 3 + }, /obj/item/clothing/suit/hooded/ablative, /obj/item/gun/energy/temperature/security, /obj/effect/turf_decal/bot/right, @@ -11757,8 +11761,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/trimline/dark/warning, /obj/effect/turf_decal/trimline/dark/warning{ dir = 1 }, @@ -11769,6 +11771,9 @@ /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, /obj/machinery/camera/autoname/directional/west, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) "bMP" = ( @@ -12152,6 +12157,19 @@ }, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"bPJ" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/cup/glass/mug/britcup{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_y = 5; + pixel_x = 7 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark/small, +/area/station/hallway/secondary/entry) "bPN" = ( /obj/effect/turf_decal/siding/dark{ dir = 8 @@ -12752,6 +12770,7 @@ /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) "bUo" = ( +/obj/structure/cable, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/port/aft) "bUs" = ( @@ -13469,9 +13488,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/central) -"bZE" = ( -/turf/open/floor/glass/reinforced, -/area/space/nearstation) "bZJ" = ( /obj/effect/turf_decal/siding/wideplating_new/dark{ dir = 8 @@ -14494,6 +14510,7 @@ name = "Auxillary Base Shutters"; dir = 8 }, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/textured_half{ dir = 1 }, @@ -23916,6 +23933,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"dAP" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/mecha_part_fabricator{ + drop_direction = 1 + }, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) "dAT" = ( /obj/effect/spawner/random/entertainment/toy_figure{ pixel_y = 37; @@ -24499,10 +24523,6 @@ /area/station/service/lawoffice) "dFs" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "qmprivacy"; - name = "Privacy Shutters" - }, /obj/machinery/door/poddoor/preopen{ id = "hosprivacy"; name = "HoS Privacy Blast Door" @@ -27286,13 +27306,6 @@ /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) "eaQ" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/sign/warning/secure_area/directional/west, -/obj/effect/turf_decal/trimline/dark/corner{ - dir = 1 - }, /obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 1 }, @@ -42497,6 +42510,12 @@ }, /turf/open/floor/iron/dark, /area/station/command/gateway) +"gnG" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "gnK" = ( /obj/machinery/airalarm/directional/south, /obj/structure/railing{ @@ -56446,6 +56465,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/structure/railing/corner/end/flip{ + dir = 1 + }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "isi" = ( @@ -56556,7 +56578,7 @@ "isM" = ( /obj/machinery/defibrillator_mount/directional/south, /obj/structure/table/glass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/effect/turf_decal/box/white/corners{ dir = 1 }, @@ -60206,10 +60228,6 @@ /area/station/cargo/storage) "iUM" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "qmprivacy"; - name = "Privacy Shutters" - }, /obj/machinery/door/poddoor/preopen{ id = "hosprivacy"; name = "HoS Privacy Blast Door" @@ -62219,7 +62237,7 @@ /obj/structure/table/reinforced, /obj/effect/turf_decal/trimline/red/corner, /obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/dark/side{ dir = 9 }, @@ -62774,7 +62792,7 @@ /obj/structure/table/glass, /obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/digital_clock/directional/east, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/dark/small, /area/station/science/robotics/augments) "jqo" = ( @@ -63101,18 +63119,15 @@ /area/station/engineering/supermatter/room/upper) "jsw" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 4 - }, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/dark/line{ + dir = 4 + }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "jsz" = ( @@ -63639,6 +63654,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark/side{ dir = 8 }, @@ -64531,7 +64547,7 @@ /area/station/engineering/supermatter/room/upper) "jBX" = ( /obj/structure/table/reinforced, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /obj/effect/turf_decal/siding/dark/corner{ dir = 8 }, @@ -68969,9 +68985,6 @@ /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) "kki" = ( -/obj/structure/railing{ - dir = 4 - }, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 4 }, @@ -72856,6 +72869,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/brig) +"kJJ" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/bot_white, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/iron/dark/textured_large, +/area/station/maintenance/central) "kJO" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 8 @@ -75533,9 +75558,6 @@ /obj/structure/railing{ dir = 8 }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 8 - }, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, @@ -75543,6 +75565,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/dark/line{ + dir = 8 + }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "lhV" = ( @@ -78630,6 +78655,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/medical/virology) +"lFB" = ( +/obj/structure/chair/sofa/bench/solo{ + dir = 4 + }, +/turf/open/floor/iron/dark/small, +/area/station/hallway/secondary/entry) "lFM" = ( /obj/effect/turf_decal/tile/purple, /obj/structure/railing/corner/end/flip, @@ -78774,6 +78805,11 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"lGG" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/effect/turf_decal/trimline/dark/line, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central) "lGR" = ( /obj/effect/turf_decal/siding/dark{ dir = 9 @@ -81330,6 +81366,7 @@ dir = 5 }, /obj/structure/marker_beacon/lime, +/obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/station/hallway/primary/fore) "mcX" = ( @@ -83914,28 +83951,22 @@ /turf/open/floor/iron/dark, /area/station/engineering/atmos) "mxU" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /obj/effect/turf_decal/trimline/dark/corner{ dir = 1 }, -/obj/effect/turf_decal/trimline/dark/corner{ - dir = 8 - }, /obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 8 }, /obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, /obj/structure/cable, +/obj/structure/railing/corner/end/flip{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/primary/central) "mxV" = ( @@ -84200,6 +84231,12 @@ }, /turf/open/floor/wood/large, /area/station/service/theater) +"mAd" = ( +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "mAi" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -85717,7 +85754,7 @@ /area/space/nearstation) "mLK" = ( /obj/structure/rack, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large, /obj/item/wirecutters, /obj/item/wrench, /obj/effect/turf_decal/siding/thinplating_new/dark{ @@ -85778,6 +85815,15 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/dark, /area/station/engineering/lobby) +"mMv" = ( +/obj/structure/table/glass, +/obj/item/newspaper{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark/small, +/area/station/hallway/secondary/entry) "mMD" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 6 @@ -93258,20 +93304,12 @@ /area/station/service/chapel/office) "nTb" = ( /obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, /obj/effect/turf_decal/trimline/dark/corner, -/obj/effect/turf_decal/trimline/dark/corner{ - dir = 4 - }, /obj/effect/turf_decal/siding/thinplating_new/corner, /obj/effect/turf_decal/siding/thinplating_new/corner{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, +/obj/structure/railing/corner/end/flip, /turf/open/floor/iron, /area/station/hallway/primary/central) "nTe" = ( @@ -93403,12 +93441,6 @@ "nUi" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 1 - }, /obj/effect/turf_decal/trimline/dark/warning, /obj/effect/turf_decal/siding/thinplating_new, /obj/effect/turf_decal/siding/thinplating_new{ @@ -93416,6 +93448,7 @@ }, /obj/structure/sign/poster/official/random/directional/east, /obj/machinery/camera/autoname/directional/east, +/obj/machinery/door/firedoor/border_only, /turf/open/floor/iron, /area/station/hallway/secondary/entry) "nUp" = ( @@ -102237,6 +102270,21 @@ }, /turf/open/floor/iron/white/herringbone, /area/station/commons/toilet/restrooms) +"pfI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 1 + }, +/obj/structure/sign/directions/arrival/directional/west{ + dir = 10 + }, +/turf/open/floor/iron/dark/small, +/area/station/maintenance/central) "pfY" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 10 @@ -108970,7 +109018,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/port) "qfy" = ( -/mob/living/simple_animal/bot/floorbot, +/mob/living/basic/bot/repairbot, /obj/effect/turf_decal/bot_white, /obj/machinery/status_display/ai/directional/east, /turf/open/floor/iron/dark/textured_large, @@ -113542,7 +113590,7 @@ /turf/open/floor/engine/n2, /area/station/engineering/atmos) "qOe" = ( -/obj/item/ammo_casing/a357/spent{ +/obj/item/ammo_casing/c357/spent{ pixel_y = 6; pixel_x = 9 }, @@ -115706,9 +115754,6 @@ dir = 8 }, /area/station/maintenance/starboard/fore) -"rgi" = ( -/turf/open/openspace, -/area/space) "rgl" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; @@ -120862,7 +120907,7 @@ /area/station/maintenance/fore/lesser) "rUg" = ( /obj/structure/table/reinforced, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/machinery/status_display/ai/directional/east, /obj/effect/turf_decal/trimline/dark_red/filled/corner{ dir = 1 @@ -121591,9 +121636,6 @@ /turf/open/floor/wood/large, /area/station/service/chapel/office) "rZU" = ( -/obj/structure/railing{ - dir = 8 - }, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, @@ -121606,6 +121648,9 @@ /obj/structure/disposalpipe/segment, /obj/machinery/power/apc/auto_name/directional/west, /obj/machinery/camera/autoname/directional/west, +/obj/structure/railing/corner{ + dir = 8 + }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "rZV" = ( @@ -122560,7 +122605,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/station/construction/mining/aux_base) "shs" = ( @@ -123053,6 +123098,9 @@ /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/effect/turf_decal/trimline/dark/warning, +/obj/structure/sign/directions/arrival/directional/east{ + dir = 5 + }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "sms" = ( @@ -123403,6 +123451,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron/dark/corner, /area/station/commons/dorms) "spf" = ( @@ -129806,6 +129855,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/textured, /area/station/commons/fitness/recreation/lasertag) +"toI" = ( +/obj/structure/chair/sofa/bench/solo{ + dir = 8 + }, +/turf/open/floor/iron/dark/small, +/area/station/hallway/secondary/entry) "toJ" = ( /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 9 @@ -141111,7 +141166,7 @@ /area/station/hallway/primary/central) "uYT" = ( /obj/machinery/mecha_part_fabricator{ - dir = 1 + drop_direction = 1 }, /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, @@ -146931,12 +146986,6 @@ /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) "vQl" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 8 - }, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 }, @@ -146944,6 +146993,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/dark/line{ + dir = 8 + }, /turf/open/floor/iron/dark/small, /area/station/maintenance/central) "vQw" = ( @@ -146956,7 +147008,7 @@ /obj/machinery/button/door/directional/north{ id = "aux_base_shutters"; name = "Public Shutters Control"; - req_access = list("aux_base") + req_access = list("cargo") }, /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -149572,13 +149624,10 @@ /turf/open/floor/grass, /area/station/hallway/secondary/entry) "wkR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 1 }, -/obj/effect/turf_decal/trimline/dark/warning{ +/obj/effect/turf_decal/trimline/dark/line{ dir = 1 }, /turf/open/floor/iron/dark/small, @@ -149755,6 +149804,14 @@ }, /turf/open/floor/iron/white, /area/station/science/lab) +"wmi" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/effect/decal/cleanable/oil, +/obj/item/screwdriver, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/iron/dark/textured_large, +/area/station/maintenance/central) "wmj" = ( /obj/effect/turf_decal/siding/wideplating_new/dark/corner{ dir = 1 @@ -150851,10 +150908,6 @@ /turf/open/floor/iron/dark, /area/station/medical/virology) "wvW" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/sign/warning/secure_area/directional/east, -/obj/structure/railing/corner, -/obj/effect/turf_decal/trimline/dark/corner, /obj/effect/turf_decal/siding/thinplating_new/corner, /turf/open/floor/iron, /area/station/hallway/primary/central) @@ -153621,10 +153674,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison) -"wRv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/glass/reinforced, -/area/space/nearstation) "wRx" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/structure/flora/grass/jungle/b/style_random, @@ -155515,7 +155564,6 @@ }, /area/station/maintenance/department/science) "xiv" = ( -/obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, @@ -193520,11 +193568,11 @@ pmV qFS tUf dOv -smp -fCR +lGG +wmi pmV qwd -wkR +pfI ntL lND yhH @@ -199177,7 +199225,7 @@ rLH smp fCR pmV -qwd +kJJ wkR aBc ooG @@ -258799,8 +258847,8 @@ bna ijB czt wvW -jBA -jBA +gnG +gnG nTb jBA jBA @@ -259056,8 +259104,8 @@ fub ijB eev kJl -cIJ -cIJ +mMv +toI nUi cIJ cIJ @@ -260341,11 +260389,11 @@ xaB mIv kJl cNP -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW dOr kJl tTV @@ -260597,13 +260645,13 @@ ijB wgT wgT wgT -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW wgT wgT tWk @@ -260854,13 +260902,13 @@ tGJ sMq fGO vQQ -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW sMq fGO vQQ @@ -261111,13 +261159,13 @@ nQo wgT wgT wgT -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW wgT wgT wgT @@ -261368,13 +261416,13 @@ czV lro gjO cvQ -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW cvQ sXX jRA @@ -261626,11 +261674,11 @@ hkb okW cvQ anE -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW anE cvQ nAq @@ -261883,11 +261931,11 @@ olS glP cvQ cvQ -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW cvQ cvQ glP @@ -262140,11 +262188,11 @@ rOL eiY cvQ anE -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW anE cvQ lSF @@ -262396,13 +262444,13 @@ vSF hrZ ahD cvQ -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW cvQ xvt lro @@ -262653,13 +262701,13 @@ erP wgT wgT wgT -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW wgT wgT wgT @@ -262910,13 +262958,13 @@ tGJ sMq fGO vQQ -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW sMq fGO vQQ @@ -263167,13 +263215,13 @@ ijB wgT wgT wgT -rgi -rgi -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW +txW +txW wgT wgT wgT @@ -263425,11 +263473,11 @@ xmr hFM kJl cNP -rgi -rgi -rgi -rgi -rgi +txW +txW +txW +txW +txW dOr kJl skU @@ -263666,7 +263714,7 @@ juD iZk vqW jyY -uYT +dAP xGM mVH xGM @@ -264713,8 +264761,8 @@ kJl cIJ cIJ bMx -cIJ -cIJ +lFB +bPJ kJl eev ijB @@ -264970,8 +265018,8 @@ psN xCp xCp mxU -xCp -xCp +mAd +mAd eaQ ijB ijB @@ -266531,11 +266579,11 @@ dPt tao dtb dtb -bZE -wRv -bZE -bZE -bZE +uty +tzp +uty +uty +uty rUO uQr wBL diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm deleted file mode 100644 index 973b6209da885..0000000000000 --- a/_maps/map_files/NorthStar/north_star.dmm +++ /dev/null @@ -1,356444 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aah" = ( -/obj/machinery/rnd/experimentor, -/turf/open/floor/engine, -/area/station/science/explab) -"aak" = ( -/obj/structure/displaycase/labcage, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"aal" = ( -/turf/closed/wall, -/area/station/maintenance/floor2/port) -"aap" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"aat" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"aaw" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"aax" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/chair/comfy, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"aaC" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/glass, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/barricade/wooden, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"aaI" = ( -/obj/effect/landmark/start/quartermaster, -/obj/structure/bed/double/pod, -/obj/item/bedsheet/qm/double, -/obj/machinery/requests_console/directional/north{ - department = "Quartermaster's Desk"; - name = "Quartermaster's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/qm) -"aaM" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet) -"aaN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"aaO" = ( -/obj/machinery/computer/atmos_alert{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/status_display/evac/directional/west, -/obj/effect/turf_decal/bot, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"aaP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"aaU" = ( -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"aaV" = ( -/obj/structure/curtain, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"abk" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Genetics Desk" - }, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/airalarm/directional/east, -/obj/item/storage/box/gloves{ - pixel_x = 5; - pixel_y = 1 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"abl" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/science{ - name = "Bedroom" - }, -/turf/open/floor/iron/white/textured_half, -/area/station/command/heads_quarters/rd) -"abm" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/explab) -"abs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/half, -/area/station/engineering/atmos/hfr_room) -"abu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"abx" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/science/xenobiology/hallway) -"abA" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "HFR" - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"abP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"abS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"abU" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"acj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/holopad, -/obj/effect/landmark/navigate_destination/dockarrival, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"acl" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"acp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"acq" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"act" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"acu" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"acv" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"acC" = ( -/obj/effect/turf_decal/trimline/white/filled/line{ - color = "#065C93"; - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/bridge) -"acE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/barricade, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"acF" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/explab) -"acJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/chair/comfy{ - dir = 1 - }, -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"acK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"acL" = ( -/obj/structure/table/wood, -/obj/item/cigarette/cigar/cohiba, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"adq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/port) -"adB" = ( -/obj/structure/closet/crate/bin{ - name = "biowaste bin" - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"adD" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/yellow{ - dir = 9 - }, -/obj/item/flashlight/flare/candle, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"adL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"adT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/brig) -"aea" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/ladder, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"aeb" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"aeg" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/green/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"aeu" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"aex" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"aeF" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "coffinbelt"; - name = "Coffin Dispenser"; - pixel_x = 8; - pixel_y = 8 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"aeL" = ( -/obj/effect/spawner/random/trash/botanical_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"aeS" = ( -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/storage/box/bodybags, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"aeW" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"aeX" = ( -/obj/machinery/computer/robotics, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"afa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"afb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"afe" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/construction) -"afg" = ( -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/item/stack/sheet/iron/five{ - pixel_x = -6 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/frame/machine, -/obj/item/stack/sheet/glass{ - amount = 12 - }, -/obj/item/stack/cable_coil/five, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/engineering/lobby) -"afs" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/effect/turf_decal/trimline/purple, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"afv" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"afz" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/computer/rdconsole, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"afD" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/south{ - id = "cell-2"; - name = "2nd Floor Prisoner Tube" - }, -/obj/machinery/disposal/delivery_chute{ - name = "prisoner transport" - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"afE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/small/red/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"agi" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"agl" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"agn" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"agp" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"ags" = ( -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"agt" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"agK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"agU" = ( -/obj/structure/chair/pew/left{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"agV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"ahd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"aho" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/space/basic, -/area/space/nearstation) -"aht" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"ahG" = ( -/obj/machinery/modular_computer/preset/research{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"ahO" = ( -/obj/machinery/vending/clothing, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"ahS" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"ahT" = ( -/obj/machinery/camera/directional/west, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"ahU" = ( -/obj/machinery/door/airlock/hatch{ - name = "Escape Pods" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"aib" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"aic" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"aih" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"aik" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/meter/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"aim" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/obj/structure/sign/departments/restroom/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/fore) -"aip" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"air" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/green/end{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"ait" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/item/pillow, -/obj/effect/turf_decal/box, -/obj/machinery/flasher/directional/west{ - id = "drunktank" - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"aiw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"aiF" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/white/arrow_ccw{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"aiL" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"aiN" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/circuitboard/aicore, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"aiO" = ( -/obj/machinery/door/airlock/medical{ - name = "Operating Room X" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"aiR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"aiS" = ( -/obj/structure/bed/double, -/obj/machinery/light_switch/directional/north, -/obj/effect/landmark/start/assistant, -/obj/item/bedsheet/black/double, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"ajb" = ( -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"aje" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"ajg" = ( -/obj/item/stack/sheet/iron/five, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"ajp" = ( -/obj/item/rack_parts, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"ajs" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"ajt" = ( -/obj/item/stack/rods/fifty, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"ajB" = ( -/obj/effect/spawner/random/trash/mopbucket, -/obj/effect/spawner/random/trash/soap, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"ajE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sink/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"ajX" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"akh" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"aki" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"akk" = ( -/obj/structure/lattice/catwalk, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk, -/turf/open/space/basic, -/area/space/nearstation) -"akr" = ( -/obj/machinery/button/door/directional/south{ - id = "captain_privacy"; - name = "Privacy Shutters" - }, -/obj/machinery/keycard_auth/wall_mounted/directional/east, -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/hand_tele, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"akt" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"akD" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"akI" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"akU" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/vending/cola/pwr_game, -/obj/structure/sign/poster/contraband/pwr_game/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"ala" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"alf" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 1 - }, -/obj/machinery/vending/sovietsoda, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/secondary/exit/escape_pod) -"alj" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"aln" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/entry) -"alr" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"alu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"alK" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"alL" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"amg" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/camera/autoname/directional/south, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/maintenance/solars/starboard/fore) -"ami" = ( -/obj/effect/turf_decal/trimline/brown/arrow_ccw{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/cargo/lobby) -"amm" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/brig) -"ams" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "N2 to Airmix" - }, -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"amt" = ( -/turf/closed/wall, -/area/station/service/library/lounge) -"amK" = ( -/obj/machinery/door/poddoor/shutters{ - id = "aux_base_shutters"; - name = "Auxiliary Base Shutters" - }, -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"amM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/blue, -/obj/machinery/medical_kiosk, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"anb" = ( -/obj/machinery/vending/wardrobe/hydro_wardrobe, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"anf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet/blue, -/area/station/cargo/miningdock) -"anj" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"ann" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/cargo/storage) -"ano" = ( -/obj/item/shard/plasma, -/obj/structure/foamedmetal, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"anq" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/edge, -/area/station/engineering/atmos) -"anr" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"anA" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/flashlight/lamp, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"anF" = ( -/obj/structure/bed, -/obj/item/bedsheet/cult, -/obj/structure/sign/painting{ - pixel_y = 32 - }, -/obj/machinery/light_switch/directional/south, -/obj/effect/landmark/start/librarian, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"anH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"anK" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) -"anN" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"anO" = ( -/obj/effect/spawner/random/contraband/landmine, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"anU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/cargo/storage) -"anW" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"aof" = ( -/obj/machinery/suit_storage_unit/radsuit, -/obj/machinery/light/small/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/pumproom) -"aog" = ( -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/medical/pharmacy) -"aoh" = ( -/obj/structure/chair/plastic, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"aom" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"aoo" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"aoq" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"aos" = ( -/obj/effect/turf_decal/box/white{ - color = "#9FED58" - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"aow" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"aoG" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"aoM" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"aoW" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/structure/hedge, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"ape" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"apg" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"apk" = ( -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/structure/chair/stool/bar/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit) -"apl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"apm" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/arrow_cw{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"apq" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Detective's Office" - }, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"apt" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"apw" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/sign/departments/psychology/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"apy" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"apC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"apM" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"apR" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"apS" = ( -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"apT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"apX" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"aqd" = ( -/obj/structure/spider/stickyweb, -/obj/structure/table, -/obj/item/clothing/mask/facehugger/toy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"aqm" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, -/obj/effect/turf_decal/box/red, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"aqu" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"aqx" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"aqz" = ( -/obj/structure/table, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/storage/box/syringes, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"aqP" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/cargo/sorting) -"aqQ" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/science/robotics/lab) -"aqR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"aqW" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"arq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sink/kitchen/directional/east, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"art" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/machinery/door/poddoor{ - id = "Secure Storage"; - name = "Secure Storage" - }, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"arE" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"arG" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"arI" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"arM" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = 8 - }, -/obj/item/radio/intercom/directional/east{ - freerange = 1; - listening = 0; - name = "Common Channel" - }, -/obj/item/radio/intercom/directional/south{ - freerange = 1; - frequency = 1447; - listening = 0; - name = "Private Channel"; - pixel_x = 8 - }, -/turf/open/floor/circuit/green, -/area/station/ai_monitored/turret_protected/ai) -"asb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/mirror/directional/north, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/structure/sink/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"asf" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"ask" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/camera/directional/north{ - c_tag = "Medbay - Treatment Center"; - name = "medbay camera"; - network = list("ss13","medbay") - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"asl" = ( -/obj/machinery/door/window/left/directional/west{ - name = "Cargo Conveyor Access"; - req_access = list("cargo") - }, -/obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"ast" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit) -"asw" = ( -/obj/machinery/telecomms/server/presets/science, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"asF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"asL" = ( -/turf/closed/wall/r_wall, -/area/station/construction) -"asS" = ( -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"asU" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"asV" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/obj/structure/cable, -/obj/machinery/door/airlock/silver/glass{ - name = "Kitchen" - }, -/turf/open/floor/iron/dark, -/area/station/service/kitchen) -"asZ" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"ata" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"ate" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"ati" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/science/glass{ - name = "Science East" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ato" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/rack_parts, -/obj/item/stack/cable_coil, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"atv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"atA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"atB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/vacuum/external, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"atK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/maintenance/floor1/starboard/aft) -"atL" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"atP" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance-aft" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig Aft Entrance" - }, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/machinery/scanner_gate/preset_guns, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"atT" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/commons/storage/primary) -"atU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"atX" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"aua" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"auc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"aug" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/cargo/miningdock) -"aut" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/delivery/red, -/turf/open/floor/iron/smooth, -/area/station/construction) -"auv" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - initialize_directions = 8; - volume_rate = 200 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"aux" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"auD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor3/aft) -"auF" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/fax{ - fax_name = "Research Division"; - name = "Research Division Fax Machine"; - pixel_x = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"auJ" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/checkpoint) -"auK" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"auN" = ( -/obj/machinery/door/airlock{ - id_tag = "dorms_4_bolts"; - name = "Standard Dorm 4" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"auO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"auQ" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"auU" = ( -/obj/structure/hedge, -/turf/open/floor/wood/tile, -/area/station/science/lobby) -"avf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"avg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"avi" = ( -/obj/structure/hedge, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/science/lobby) -"avk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/machinery/button/door/directional/west{ - id = "library2"; - name = "Library Shutters" - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"avl" = ( -/obj/structure/chair/sofa/bench, -/turf/open/floor/grass, -/area/station/service/library/garden) -"avm" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"avp" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"avt" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/item/toy/plush/moth{ - color = "#8e2e87"; - desc = "A strange moth plushie named Edict, it's dyed purple."; - name = "Edict" - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/station/medical/psychology) -"avH" = ( -/obj/structure/table/glass, -/obj/item/experi_scanner, -/turf/open/floor/iron/white, -/area/station/science/lower) -"avM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"avP" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron, -/area/station/commons/fitness) -"avX" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/surgery_tray/full/morgue, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"awb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"awf" = ( -/obj/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"awn" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/status_display/ai/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"awo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"awt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/kitchen/diner) -"awA" = ( -/obj/structure/table/reinforced, -/obj/item/screwdriver, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"awD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"awH" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"awR" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/machinery/light/directional/west, -/turf/open/floor/grass, -/area/station/security/courtroom) -"awU" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"awV" = ( -/obj/structure/sink/kitchen/directional/east, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"axe" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor1/fore) -"axf" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"axF" = ( -/obj/machinery/gateway/centerstation, -/turf/open/floor/iron/large, -/area/station/command/gateway) -"axG" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"axK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/hatch{ - name = "Emergency Ladder Access" - }, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"axP" = ( -/obj/structure/closet/crate/large, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"axQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/landmark/start/psychologist, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"axR" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/landmark/start/scientist, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"axS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"axX" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"axY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/plate_press, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Prison Workshop"; - network = list("ss13","prison") - }, -/turf/open/floor/iron, -/area/station/security/prison/work) -"ayc" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ayi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"ayl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/chapel) -"ayv" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"ayB" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/turf/open/space/basic, -/area/space/nearstation) -"ayJ" = ( -/obj/structure/sign/warning/docking, -/turf/closed/wall/r_wall, -/area/station/security/execution/transfer) -"ayU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"ayW" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/corner, -/obj/effect/turf_decal/stripes/red/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/corner{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"aze" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"azu" = ( -/obj/structure/table/wood, -/obj/item/gun/ballistic/shotgun/doublebarrel, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/newscaster/directional/north, -/obj/item/ammo_casing/shotgun/dart, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"azI" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side, -/area/station/commons/storage/primary) -"azK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"azW" = ( -/obj/structure/bookcase/random/religion, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"aAj" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"aAx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"aAB" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"aAE" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/mob/living/basic/cow, -/turf/open/floor/grass, -/area/station/science/cytology) -"aAK" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"aAM" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"aAZ" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"aBa" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"aBd" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"aBh" = ( -/obj/machinery/computer/atmos_control/nocontrol/incinerator{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Incinerator Camera North"; - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"aBo" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"aBK" = ( -/turf/closed/wall/r_wall, -/area/station/medical/virology) -"aBR" = ( -/obj/item/wrench, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"aBS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/science/robotics/lab) -"aBV" = ( -/obj/effect/turf_decal/trimline/blue/end, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/door/airlock/command/glass{ - name = "Queue Access" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopline"; - name = "Queue Shutters" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"aCd" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"aCl" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/chemistry, -/obj/item/hand_labeler, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"aCq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"aCu" = ( -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"aCw" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/office) -"aCx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"aCz" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/orange/visible, -/obj/effect/turf_decal/tile/yellow/half, -/turf/open/floor/iron/edge, -/area/station/engineering/atmos) -"aCB" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance-aft" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig Aft Entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/turf/open/floor/iron, -/area/station/security/brig) -"aCG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"aDf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"aDi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"aDk" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"aDl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"aDn" = ( -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard/fore) -"aDp" = ( -/obj/structure/chair/comfy/black, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"aDq" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/aft) -"aDx" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"aDC" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"aDD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"aDE" = ( -/obj/structure/table/reinforced, -/obj/item/radio{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/radio{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/radio, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"aDM" = ( -/obj/item/bot_assembly/medbot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"aDN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"aDQ" = ( -/obj/structure/rack, -/obj/item/wrench, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"aEh" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"aEj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"aEm" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"aEq" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Interrogation Monitoring" - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"aEH" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit) -"aEJ" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"aEP" = ( -/obj/structure/chair/sofa/corp/left, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"aES" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/turf/open/floor/grass, -/area/station/service/library/garden) -"aEW" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"aFg" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"aFh" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"aFj" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/aisat/service) -"aFm" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/airalarm/directional/south, -/obj/structure/table/reinforced, -/obj/item/gun/syringe, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"aFs" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"aFB" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"aFJ" = ( -/obj/machinery/button/door/directional/north{ - id = "sm_bolt"; - name = "SM Chamber Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"aFM" = ( -/obj/machinery/light/directional/east, -/obj/machinery/disposal/bin/tagger, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/office) -"aFQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"aFY" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"aGm" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"aGr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 3 - }, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 6 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"aGw" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/office) -"aGz" = ( -/obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/toy/figure/qm, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"aGE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"aGH" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"aGI" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"aGJ" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/twenty, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"aGK" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/chair/comfy/brown, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"aGQ" = ( -/turf/open/openspace, -/area/station/maintenance/floor3/port) -"aGW" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"aHa" = ( -/obj/structure/chair/stool/bar/directional/north, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"aHb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"aHk" = ( -/turf/closed/wall, -/area/station/medical/medbay/lobby) -"aHn" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/construction) -"aHo" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/office) -"aHs" = ( -/obj/structure/table, -/obj/item/storage/belt/utility/full, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron, -/area/station/science/auxlab) -"aHt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"aHA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/red/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"aHC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/work) -"aHK" = ( -/obj/machinery/light/directional/east, -/obj/structure/closet/secure_closet/medical2, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"aHM" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/closet_empty/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"aHP" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/brigdoor/right/directional/north{ - name = "Security Desk"; - req_access = list("security") - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"aHR" = ( -/obj/effect/landmark/start/depsec/science, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"aHV" = ( -/obj/structure/chair/stool/bar/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"aHW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"aHX" = ( -/obj/machinery/light/red/dim/directional/north, -/turf/open/water/beach{ - desc = "Refreshing!"; - name = "treated water" - }, -/area/station/maintenance/floor1/port/aft) -"aHY" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/vending/wardrobe/chem_wardrobe, -/obj/structure/sign/poster/official/plasma_effects/directional/west, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"aId" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"aIe" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/openspace, -/area/station/medical/pharmacy) -"aIs" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"aIB" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/machinery/power/energy_accumulator/grounding_rod/anchored, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer4, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"aII" = ( -/obj/machinery/firealarm/directional/east, -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"aIJ" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/aft) -"aIU" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"aIV" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"aIY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"aJb" = ( -/obj/effect/mapping_helpers/mail_sorting/service/chapel, -/obj/effect/mapping_helpers/mail_sorting/service/dormitories, -/obj/effect/mapping_helpers/mail_sorting/service/hop_office, -/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, -/obj/effect/mapping_helpers/mail_sorting/service/janitor_closet, -/obj/effect/mapping_helpers/mail_sorting/service/kitchen, -/obj/effect/mapping_helpers/mail_sorting/service/law_office, -/obj/effect/mapping_helpers/mail_sorting/service/library, -/obj/effect/mapping_helpers/mail_sorting/service/theater, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"aJk" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"aJD" = ( -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"aJE" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"aJT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"aJX" = ( -/obj/machinery/light/red/dim/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"aJZ" = ( -/obj/item/instrument/banjo, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"aKc" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"aKi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"aKq" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/commons/storage/primary) -"aKr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"aKt" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"aKx" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor3/starboard/aft) -"aKA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"aKC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"aKF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"aKQ" = ( -/turf/open/floor/iron/textured_half, -/area/station/cargo/sorting) -"aKZ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/machinery/computer/atmos_control/plasma_tank, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"aLb" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"aLe" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"aLh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"aLv" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/green/full, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"aLz" = ( -/obj/effect/turf_decal/trimline/green/corner{ - dir = 4 - }, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"aLA" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/directional/north{ - c_tag = "Jim Norton's Quebecois Coffee" - }, -/obj/structure/noticeboard/directional/north, -/obj/item/reagent_containers/condiment/sugar{ - pixel_y = 4 - }, -/obj/item/storage/pill_bottle/happinesspsych{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/storage/box/coffeepack, -/obj/item/storage/box/coffeepack/robusta, -/obj/item/reagent_containers/condiment/soymilk, -/obj/item/reagent_containers/condiment/milk, -/obj/structure/closet/secure_closet/freezer/empty/open, -/obj/item/storage/box/coffeepack, -/obj/item/storage/box/coffeepack, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"aLC" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"aLO" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor2/fore) -"aLP" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/fore) -"aLU" = ( -/obj/machinery/disposal/bin, -/obj/structure/railing{ - dir = 6 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"aLZ" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"aMo" = ( -/obj/machinery/door/window/right/directional/south{ - name = "Gateway Access"; - req_access = list("gateway") - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/turf/open/floor/iron/large, -/area/station/command/gateway) -"aMA" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"aMJ" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"aNm" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"aNs" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/starboard/fore) -"aNz" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"aNQ" = ( -/obj/structure/transit_tube/station/dispenser{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"aNV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 10 - }, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"aOa" = ( -/obj/structure/chair/comfy/shuttle, -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard/aft) -"aOp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"aOt" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"aOw" = ( -/obj/machinery/light/small/directional/north, -/mob/living/basic/bot/cleanbot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"aOx" = ( -/obj/machinery/griddle, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"aOD" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/miningoffice) -"aOI" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/obj/structure/railing, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/floor1/aft) -"aOJ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"aOV" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"aPc" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"aPd" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/cable, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"aPf" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"aPg" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/storage/primary) -"aPh" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/east, -/obj/machinery/camera/directional/east{ - c_tag = "Interrogation room"; - network = list("interrogation") - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"aPu" = ( -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"aPA" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"aPE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"aPH" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"aPM" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"aQk" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"aQt" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 5 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"aQA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/telecomms, -/area/station/tcommsat/server) -"aQC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"aQJ" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/meson/engine/tray, -/obj/item/clothing/glasses/meson/engine/tray, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"aQK" = ( -/turf/closed/wall, -/area/station/cargo/drone_bay) -"aQL" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/brig) -"aQM" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"aQR" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"aQS" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"aQU" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"aQV" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"aQW" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/obj/item/flashlight/lamp, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"aQZ" = ( -/obj/machinery/telecomms/server/presets/command, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"aRd" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"aRz" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"aRF" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/atmospherics/components/tank/plasma, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"aRI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"aRK" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/white, -/area/station/science/lab) -"aRM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"aRP" = ( -/obj/machinery/power/turbine/core_rotor, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"aRS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"aRU" = ( -/turf/closed/wall, -/area/station/security/mechbay) -"aRX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/artgallery) -"aRY" = ( -/obj/structure/cable, -/obj/machinery/power/solar, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/aft) -"aSb" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/white, -/area/station/science/lab) -"aSg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"aSj" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/water/no_planet_atmos{ - desc = "Filthy."; - name = "untreated water" - }, -/area/station/maintenance/floor1/port/aft) -"aSq" = ( -/obj/machinery/rnd/production/protolathe/department/science, -/obj/effect/turf_decal/bot, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"aSs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"aSu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"aSB" = ( -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"aSI" = ( -/obj/machinery/shower/directional/west, -/obj/structure/fluff/shower_drain, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"aSK" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"aSL" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"aSQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/commons/toilet) -"aSU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"aSX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"aTc" = ( -/obj/effect/turf_decal/siding/white, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"aTh" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/roboticist, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"aTi" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/decoration/carpet, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"aTj" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"aTl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"aTJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"aTO" = ( -/obj/machinery/power/shuttle_engine/propulsion/burst{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"aTU" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"aUb" = ( -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"aUe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"aUh" = ( -/turf/open/floor/grass, -/area/station/science/genetics) -"aUj" = ( -/obj/effect/turf_decal/siding/wideplating_new/end{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"aUl" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"aUG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/item/reagent_containers/pill/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"aUH" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"aUJ" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"aUR" = ( -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"aUT" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/effect/turf_decal/bot, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"aUV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"aVc" = ( -/obj/effect/spawner/random/structure/crate, -/obj/machinery/light/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"aVk" = ( -/obj/machinery/door/airlock/freezer{ - name = "Rec Room Showers" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"aVq" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"aVr" = ( -/obj/structure/cable, -/obj/machinery/power/solar_control{ - dir = 1; - id = "portbowsolar"; - name = "Port Bow Solar Control" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"aVs" = ( -/turf/open/openspace, -/area/station/maintenance/floor3/starboard) -"aVD" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"aVM" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "radshutsouth" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"aVX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"aWa" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/directions/evac/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"aWc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"aWd" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"aWe" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"aWf" = ( -/obj/item/experi_scanner, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"aWg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"aWj" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"aWq" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"aWr" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"aWv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/security/prison) -"aWw" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"aWy" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"aWB" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 6 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"aWE" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"aWH" = ( -/obj/machinery/door/airlock/grunge{ - name = "Mech Bay" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/science/robotics/mechbay) -"aWJ" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/science/cytology) -"aWO" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 9 - }, -/obj/structure/railing/corner, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"aWR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/recharge_station, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) -"aWV" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/condiment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"aWZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"aXh" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"aXj" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"aXk" = ( -/obj/structure/table/wood, -/obj/item/plate/large{ - pixel_y = 2 - }, -/obj/item/food/pizza/dank{ - pixel_y = 6 - }, -/obj/structure/sign/poster/contraband/pwr_game/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"aXq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lobby) -"aXC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"aXH" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"aXN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"aXO" = ( -/obj/item/trash/ready_donk, -/obj/item/trash/candle, -/obj/item/trash/can/food/envirochow{ - pixel_x = -7 - }, -/obj/item/trash/boritos/red{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/food/pie_smudge, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"aXR" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"aXW" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"aYa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"aYb" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"aYd" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"aYe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"aYl" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/vending/wallmed/directional/south, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"aYq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"aYs" = ( -/obj/machinery/power/shieldwallgen/xenobiologyaccess, -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"aYv" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"aYy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "mechbay"; - name = "Mech Bay Shutters" - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/science/robotics/mechbay) -"aYA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor2/fore) -"aYB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/light/small/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"aYJ" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"aYS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/construction) -"aYU" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/medbay/chemistry, -/obj/effect/mapping_helpers/mail_sorting/medbay/cmo_office, -/obj/effect/mapping_helpers/mail_sorting/medbay/general, -/obj/effect/mapping_helpers/mail_sorting/medbay/virology, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"aZd" = ( -/obj/machinery/reagentgrinder, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"aZl" = ( -/obj/structure/sign/poster/official/do_not_question/directional/south, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"aZm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/grown/bananapeel, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/grass, -/area/station/medical/virology) -"aZn" = ( -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"aZp" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin/carbon, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"aZq" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"aZs" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"aZw" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"aZA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"aZC" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"aZF" = ( -/obj/structure/table/wood, -/obj/item/toy/crayon/spraycan{ - pixel_x = -4 - }, -/obj/item/toy/crayon/spraycan, -/obj/item/toy/crayon/spraycan{ - pixel_x = 4 - }, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"aZI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"aZN" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"aZW" = ( -/turf/closed/wall, -/area/station/medical/treatment_center) -"aZX" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor4/fore) -"baa" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"bag" = ( -/obj/structure/table, -/obj/item/paper/fluff/holodeck/disclaimer, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"bam" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor2/fore) -"bap" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/chemistry/pharmacy/directional/south, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/white/corner, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"bau" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lab) -"baA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth_edge{ - dir = 4 - }, -/area/station/science/robotics/mechbay) -"bbb" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"bbo" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/storage/primary) -"bbs" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet, -/area/station/service/abandoned_gambling_den) -"bbv" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bbE" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"bbI" = ( -/obj/structure/stairs/north, -/obj/structure/sign/departments/science/alt/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/aft) -"bbK" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Robotics Lab" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"bbL" = ( -/obj/structure/bonfire/prelit, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"bcb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"bcr" = ( -/obj/item/shard, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"bcx" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"bcC" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"bcD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"bcH" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/science/robotics/lab) -"bcK" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"bcR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"bcZ" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"bde" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"bdo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/structure/table, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"bdx" = ( -/obj/structure/railing/corner, -/obj/structure/chair/stool/bar/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"bdC" = ( -/obj/structure/chair/bronze, -/turf/open/floor/bronze/filled, -/area/station/maintenance/floor1/starboard) -"bdD" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/corner, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"bdN" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/pipe_dispenser, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"bdR" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"beh" = ( -/turf/open/floor/iron, -/area/station/commons/toilet) -"bej" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/prison) -"bel" = ( -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"bep" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"bet" = ( -/obj/machinery/vending/modularpc, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor2/aft) -"bew" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"bex" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/toilet) -"beB" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 1 - }, -/turf/open/space/basic, -/area/space/nearstation) -"beE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"beG" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"beM" = ( -/obj/machinery/vending/drugs, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) -"bfc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"bff" = ( -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"bfh" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"bfj" = ( -/turf/open/openspace, -/area/station/service/library) -"bfk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"bfl" = ( -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) -"bfs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/assembly/prox_sensor{ - pixel_x = -6; - pixel_y = -8 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -7 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 6 - }, -/obj/item/healthanalyzer{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/item/healthanalyzer{ - pixel_x = 4 - }, -/obj/item/healthanalyzer{ - pixel_x = 5; - pixel_y = -6 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"bfx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"bfC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"bfM" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/requests_console/directional/west{ - department = "Chief Medical Officer's Desk"; - name = "Chief Medical Officer's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/stairs/left{ - dir = 1 - }, -/area/station/command/heads_quarters/cmo) -"bfT" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/command{ - name = "Teleporter Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/teleporter, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"bfW" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"bfX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"bgg" = ( -/obj/machinery/door/airlock/medical{ - name = "Safe Internment" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"bgr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_corner, -/area/station/maintenance/floor1/starboard/aft) -"bgs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"bgw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/reagentgrinder, -/obj/structure/table, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"bgz" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) -"bgA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/emitter/welded, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"bgH" = ( -/obj/structure/rack, -/obj/item/toy/plush/plasmamanplushie{ - desc = "A stuffed toy that resembles your plasma coworkers. It is cute despite itself."; - name = "Nitrous II" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"bgI" = ( -/obj/machinery/button/elevator/directional/south{ - id = "com_vator" - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "com_vator"; - pixel_y = -36 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor4/aft) -"bgO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"bgQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/reflector/double, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"bhb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"bhh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"bho" = ( -/obj/item/statuebust, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"bhp" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/corner, -/area/station/engineering/lobby) -"bhz" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"bhF" = ( -/obj/machinery/chem_master, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"bhN" = ( -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-2"; - location = "3-1" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"bhW" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "disposals" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters{ - id = "disposals-launch"; - name = "Disposals Launch" - }, -/obj/structure/plasticflaps, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"bhZ" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/clipboard, -/obj/item/toy/figure/roboticist, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"bid" = ( -/obj/machinery/computer/mech_bay_power_console, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"bie" = ( -/obj/structure/table, -/obj/machinery/door/window/left/directional/west, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "visitation"; - name = "Visitation Shutters" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"bif" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"bij" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/construction) -"bin" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"bir" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 6 - }, -/obj/effect/spawner/random/engineering/canister, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"biz" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/airlock/medical{ - name = "Paramedic Dispatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured, -/area/station/medical/paramedic) -"biC" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"biD" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/machinery/button/door/directional/north{ - id = "roboprivacy"; - name = "Robotics Privacy Control"; - pixel_x = -24; - req_access = list("robotics") - }, -/obj/machinery/light_switch/directional/west{ - pixel_x = -52 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"biH" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/power/emitter/welded{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"biJ" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/misc/sandy_dirt, -/area/station/science/cytology) -"biM" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/arrows{ - dir = 8 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"biO" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"biR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"biS" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"biV" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"biW" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) -"biZ" = ( -/obj/machinery/microwave/engineering/cell_included, -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/break_room) -"bja" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"bjb" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"bje" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"bjf" = ( -/obj/machinery/light/directional/east, -/obj/effect/landmark/start/hangover, -/obj/structure/flora/coconuts, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"bjg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"bjw" = ( -/obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"bjz" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"bjC" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/maintenance/floor2/port/fore) -"bjF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"bjI" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"bjK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/sofa/middle/brown, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"bjP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/structure/ladder, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"bjT" = ( -/obj/machinery/computer{ - desc = "Barely powered, it's not working well."; - name = "Flickering Nav Console" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) -"bjZ" = ( -/obj/structure/chair/comfy/carp{ - dir = 8 - }, -/obj/effect/landmark/start/research_director, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"bkd" = ( -/obj/structure/table/glass, -/obj/item/hand_tele, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"bkh" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"bkj" = ( -/obj/machinery/biogenerator, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"bks" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"bku" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white/corner, -/obj/structure/railing/corner, -/obj/machinery/vending/wardrobe/robo_wardrobe, -/turf/open/floor/iron/white/side{ - dir = 10 - }, -/area/station/science/robotics/lab) -"bkx" = ( -/obj/machinery/door/poddoor/shutters{ - id = "warehouseqm" - }, -/obj/machinery/button/door/directional/north{ - id = "warehouseqm" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"bkz" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"bkG" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/turf/open/water/beach{ - desc = "Refreshing!"; - name = "treated water" - }, -/area/station/maintenance/floor1/port/aft) -"bkH" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/kirbyplants/random, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"bkM" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = -8 - }, -/obj/item/radio/intercom/directional/west{ - freerange = 1; - listening = 0; - name = "Common Channel" - }, -/obj/item/radio/intercom/directional/south{ - freerange = 1; - frequency = 1447; - listening = 0; - name = "Private Channel"; - pixel_x = -8 - }, -/turf/open/floor/circuit/green, -/area/station/ai_monitored/turret_protected/ai) -"bkO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bkR" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron/white/side, -/area/station/science/robotics/lab) -"bkT" = ( -/obj/machinery/newscaster/directional/west, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"bkU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"bkY" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/wardrobe/grey, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"blj" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"bln" = ( -/obj/docking_port/stationary/random{ - dir = 2; - name = "lavaland"; - shuttle_id = "pod_lavaland" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"blq" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/hedge, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/grass, -/area/station/service/chapel) -"blt" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"blv" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/science/robotics/lab) -"blw" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"blF" = ( -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"blH" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/blue, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"blI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"blJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"blK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"blN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"blO" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/trimline/green/corner, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"blS" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/structure/table, -/obj/item/storage/bag/plants, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/service/hydroponics/garden) -"blX" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/effect/turf_decal/siding/white, -/obj/structure/railing, -/turf/open/floor/iron/white/side, -/area/station/science/robotics/lab) -"bmf" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/closet/secure_closet/research_director, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"bml" = ( -/obj/structure/lattice/catwalk, -/obj/structure/ladder, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"bmx" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/rnd/production/techfab/department/cargo, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"bmA" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron/white/side, -/area/station/science/robotics/lab) -"bmD" = ( -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"bmE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"bmG" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/structure/table, -/obj/item/cultivator, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/service/hydroponics/garden) -"bmL" = ( -/obj/structure/chair/office, -/turf/open/floor/iron/white/side, -/area/station/science/robotics/lab) -"bmN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"bmO" = ( -/obj/effect/turf_decal/trimline/neutral, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"bmT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/navigate_destination/tcomms, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/tcommsat/computer) -"bna" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"bne" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"bnf" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"bnt" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"bnz" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"bnC" = ( -/obj/structure/bed/medical/anchored{ - dir = 1 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bnL" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"bnN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/closet/secure_closet/security, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"bnQ" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"bnV" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"boa" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"bof" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"bom" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"boq" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album/chapel, -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/obj/item/storage/fancy/candle_box{ - pixel_x = -19; - pixel_y = 5 - }, -/obj/machinery/requests_console/directional/north{ - department = "Chapel"; - name = "Chapel Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"bor" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"bos" = ( -/obj/machinery/camera{ - c_tag = "Atmos Tank #5 - Plasma"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"boB" = ( -/obj/machinery/hydroponics/soil, -/obj/item/shovel/spade, -/turf/open/misc/dirt/jungle, -/area/station/security/prison/garden) -"boH" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/stairs/left, -/area/station/science/robotics/lab) -"boI" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/stairs/right, -/area/station/science/robotics/lab) -"boL" = ( -/obj/machinery/rnd/destructive_analyzer, -/obj/effect/turf_decal/bot, -/obj/machinery/requests_console/directional/east{ - department = "Research Lab"; - name = "Research Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"boP" = ( -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"boS" = ( -/obj/effect/spawner/random/trash/botanical_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"boY" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"bpd" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Genetics Lab" - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"bpq" = ( -/obj/machinery/vending/robotics, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"bpu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"bpA" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/crowbar/mechremoval, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"bpE" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"bpF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"bpY" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 5 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"bqn" = ( -/obj/structure/closet/crate, -/obj/item/reagent_containers/cup/bowl, -/obj/effect/spawner/random/contraband/prison, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/storage/box/drinkingglasses, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/box/drinkingglasses, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"bqs" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Emergency Closet" - }, -/turf/open/floor/plating, -/area/station/security/prison) -"bqu" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark/half/contrasted{ - dir = 4 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"bqx" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/commons/storage/primary) -"bqF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/footprints, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"bqH" = ( -/obj/machinery/vending/cola, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"bqI" = ( -/obj/structure/window/spawner/directional/east, -/turf/open/floor/grass, -/area/station/maintenance/floor3/starboard) -"bqQ" = ( -/obj/structure/closet/crate/freezer/blood{ - anchored = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/office) -"bqU" = ( -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"brj" = ( -/turf/closed/wall, -/area/station/hallway/secondary/entry) -"brn" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/machinery/airalarm/directional/north, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"brs" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Laboratory A" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lab) -"bru" = ( -/obj/machinery/teleport/hub, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"brA" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"brC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"brN" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/cargo/miningdock) -"brT" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"bsl" = ( -/obj/item/stack/tile/iron/white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"bsu" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"bsv" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"bsw" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"bsz" = ( -/obj/structure/closet/bombcloset, -/obj/machinery/light/cold/no_nightlight/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"bsB" = ( -/obj/machinery/door/airlock/science{ - name = "Changing Room" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/lower) -"bsC" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-19"; - location = "1-18" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"bsG" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"bsI" = ( -/obj/machinery/door/window/right/directional/north{ - name = "Infirmary" - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/side{ - dir = 6 - }, -/area/station/security/medical) -"bsK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/science/robotics/lab) -"bsN" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"bsQ" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/trimline/yellow, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"bsS" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"bsV" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner, -/area/station/security/brig) -"bsX" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/clothing/gloves/latex, -/obj/item/clothing/glasses/science, -/obj/item/healthanalyzer, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/requests_console/directional/north{ - department = "Virology"; - name = "Virology Requests Console" - }, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"bta" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"btp" = ( -/obj/structure/table, -/obj/item/storage/backpack/science{ - pixel_y = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"btq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"bts" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"btt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/science/robotics/lab) -"btC" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"btL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/commons/storage/primary) -"btN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/hallway/secondary/entry) -"btP" = ( -/obj/effect/spawner/random/structure/crate_loot, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"btT" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/floor4/fore) -"btU" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/east, -/obj/machinery/camera/directional/east{ - c_tag = "MiniSAT Access" - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"btV" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor1/fore) -"btW" = ( -/obj/effect/turf_decal/tile/purple/full, -/obj/effect/turf_decal/bot, -/obj/effect/landmark/start/roboticist, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"bun" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"buu" = ( -/obj/machinery/door/airlock/medical{ - name = "Operating Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"buB" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"buC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/west, -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"buI" = ( -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Security Desk"; - req_access = list("security") - }, -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/structure/cable, -/obj/structure/desk_bell{ - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/station/security/checkpoint) -"buJ" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/trimline/brown, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"buP" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"buQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"buR" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"bvc" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"bvf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"bvi" = ( -/obj/effect/decal/cleanable/blood/innards{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/sink/directional/south{ - pixel_x = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"bvq" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"bvx" = ( -/obj/structure/table, -/obj/item/clothing/under/plasmaman/science{ - pixel_x = 2; - pixel_y = -7 - }, -/obj/item/clothing/suit/hooded/wintercoat/science{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/item/clothing/suit/hooded/wintercoat/science, -/obj/item/clothing/suit/hooded/wintercoat/science{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/space/plasmaman/science{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lower) -"bvC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/structure/disposalpipe/trunk/multiz{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"bvF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/landmark/start/bartender, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"bvG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/hallway/secondary/entry) -"bvL" = ( -/obj/structure/table/glass, -/obj/item/storage/box/masks{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/storage/box/gloves{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"bvM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"bvO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/south, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"bvP" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"bvR" = ( -/obj/structure/chair/comfy, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"bvT" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) -"bvU" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"bwl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/pumproom) -"bwu" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"bwx" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bwz" = ( -/obj/structure/table/wood, -/obj/machinery/light_switch/directional/east, -/obj/item/toy/figure/curator, -/obj/machinery/requests_console/directional/south{ - department = "Library"; - name = "Library Requests Console" - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/carpet/red, -/area/station/service/library) -"bwA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"bwE" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/machinery/cryo_cell{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"bwF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"bwK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"bwL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"bwS" = ( -/obj/effect/turf_decal/trimline/red/filled/end{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"bwZ" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"bxb" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/ai_monitored/command/storage/eva) -"bxc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/south, -/obj/structure/table/wood/fancy/blue, -/obj/item/toy/figure/captain{ - pixel_x = -1; - pixel_y = 3 - }, -/obj/item/lighter{ - pixel_x = 8 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"bxd" = ( -/obj/structure/table, -/obj/machinery/airalarm/directional/north, -/obj/item/paper_bin, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"bxe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/command/bridge) -"bxf" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/engine, -/area/station/maintenance/floor1/starboard/fore) -"bxk" = ( -/obj/structure/rack, -/obj/item/toy/crayon/spraycan/roboticist, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"bxl" = ( -/turf/closed/wall, -/area/station/commons/dorms/room1) -"bxr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/conveyor_switch/oneway{ - id = "robo1" - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"bxs" = ( -/obj/structure/rack, -/obj/item/storage/briefcase{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/storage/briefcase/secure{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/clothing/glasses/sunglasses, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"bxE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"bxG" = ( -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/smooth, -/area/station/construction) -"bxH" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) -"bxT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/maintenance/floor1/starboard/aft) -"bxZ" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "robo1" - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"byc" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"byi" = ( -/obj/machinery/status_display/evac/directional, -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"byk" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"byl" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/trimline/neutral/warning, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"byE" = ( -/obj/structure/table, -/turf/open/floor/iron, -/area/station/security/prison) -"byH" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "robo2" - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"byI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/conveyor_switch/oneway{ - id = "robo2" - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"byK" = ( -/turf/open/floor/iron/stairs{ - dir = 4 - }, -/area/station/service/bar/atrium) -"byW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"byX" = ( -/obj/machinery/computer/monitor, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"byY" = ( -/obj/structure/dresser, -/obj/machinery/camera/directional/west{ - c_tag = "Command - Research Director's Quarters #2" - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"bza" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/engineering/storage/tech) -"bzm" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"bzw" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"bzy" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"bzB" = ( -/mob/living/basic/slime, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"bzF" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/table/reinforced, -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "lockers"; - name = "Locker Room Shutters" - }, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"bzJ" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/desk_bell{ - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"bzM" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 1 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/aft) -"bzO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/camera/directional/east{ - c_tag = "Science - Study" - }, -/turf/open/floor/iron/grimy, -/area/station/science/xenobiology/hallway) -"bzW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"bAb" = ( -/obj/structure/sign/poster/contraband/atmosia_independence/directional/west, -/obj/machinery/light/small/directional/west, -/obj/machinery/light_switch/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) -"bAc" = ( -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "robo1" - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"bAe" = ( -/obj/structure/rack, -/obj/machinery/ecto_sniffer, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"bAf" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/sign/directions/evac/directional/east{ - dir = 2 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"bAj" = ( -/obj/machinery/conveyor{ - dir = 9; - id = "robo2" - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"bAk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"bAq" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 5 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"bAx" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"bAG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"bAL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"bAP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard) -"bBg" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/security/medical) -"bBx" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"bBK" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"bBP" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"bBS" = ( -/obj/structure/chair/plastic, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"bBV" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/computer/order_console/mining, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"bCd" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/chem_pack{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/reagent_containers/chem_pack{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/item/reagent_containers/chem_pack{ - pixel_y = 3 - }, -/obj/item/clothing/neck/stethoscope{ - pixel_y = 4 - }, -/obj/item/reagent_containers/cup/bottle{ - pixel_x = -2 - }, -/obj/item/reagent_containers/cup/bottle{ - pixel_x = 2 - }, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"bCk" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"bCo" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"bCp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"bCq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"bCr" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"bCz" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"bCG" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"bCR" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 8 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/east, -/turf/open/floor/plating, -/area/station/cargo/bitrunning/den) -"bCT" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"bCW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/material, -/obj/structure/table/wood, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"bCX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/rods/ten, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"bDg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/requests_console/directional/south{ - department = "Mining"; - name = "Mining Requests Console" - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"bDm" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"bDn" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"bDr" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"bDC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"bDD" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"bDL" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint) -"bDU" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 2 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "lockers"; - name = "Locker Room Shutters" - }, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"bDV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/command/bridge) -"bED" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 7 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) -"bEK" = ( -/obj/structure/holosign/barrier, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"bEQ" = ( -/obj/structure/table/wood, -/obj/effect/landmark/start/hangover, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"bET" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"bEV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"bFd" = ( -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"bFf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"bFq" = ( -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"bFD" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"bFH" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"bFI" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Inner Pipe Access"; - req_access = list("atmospherics") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bFM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"bGb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"bGc" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"bGf" = ( -/turf/open/water/beach{ - desc = "Refreshing!"; - name = "treated water" - }, -/area/station/maintenance/floor1/port/aft) -"bGh" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"bGl" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"bGn" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"bGs" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"bGt" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/ai_monitored/command/storage/eva) -"bGV" = ( -/obj/machinery/door/window/brigdoor/left/directional/north, -/mob/living/basic/pet/fox, -/turf/open/floor/noslip, -/area/station/maintenance/floor1/port) -"bHw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"bHU" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"bIk" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"bIl" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"bIm" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"bIx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"bIy" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"bID" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"bIG" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/newscaster/directional/north, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"bII" = ( -/obj/machinery/power/solar, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) -"bIQ" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"bIW" = ( -/obj/machinery/door/airlock/maintenance/external{ - name = "Ports To Supermatter" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) -"bJg" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"bJi" = ( -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"bJj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/security/range) -"bJk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"bJm" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"bJo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"bJs" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"bJA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"bJQ" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"bJU" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/atmospherics, -/obj/item/t_scanner, -/obj/item/storage/belt/utility, -/obj/machinery/requests_console/directional/west{ - department = "Atmospherics"; - name = "Atmospherics Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"bJV" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"bJW" = ( -/obj/structure/ladder, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"bKa" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bKp" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/effect/turf_decal/siding/thinplating_new/corner{ - dir = 8 - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"bKq" = ( -/obj/effect/turf_decal/siding/blue/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"bKv" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"bKz" = ( -/obj/item/restraints/handcuffs/cable/zipties/used, -/obj/structure/table/optable, -/obj/effect/landmark/blobstart, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"bKG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) -"bKP" = ( -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"bKR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"bKS" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/entertainment/lighter, -/obj/effect/turf_decal/tile/green/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"bKY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"bLd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"bLi" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"bLm" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "viro-inner"; - name = "Virology Inner Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/virology) -"bLq" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"bLt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"bLy" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"bLB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"bMa" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"bMd" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"bMo" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"bMs" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"bMt" = ( -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/wood/tile, -/area/station/service/library) -"bMz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"bMD" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor1/starboard) -"bME" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"bMI" = ( -/obj/item/flashlight/lamp, -/obj/structure/table, -/obj/item/radio/intercom/directional/west, -/obj/item/paper/fluff/jobs/engineering/frequencies, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"bMJ" = ( -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"bMP" = ( -/obj/structure/closet/emcloset/anchored, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"bMR" = ( -/obj/machinery/door/airlock/security{ - name = "Evidence Lockers" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"bMW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"bNg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"bNh" = ( -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"bNp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"bNs" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"bNu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/smooth, -/area/station/construction) -"bNL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/reflector/box/anchored{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"bNP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"bNU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/green/warning, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"bOg" = ( -/obj/structure/marker_beacon/burgundy, -/obj/effect/turf_decal/trimline/brown/warning, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"bOk" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) -"bOq" = ( -/obj/machinery/door/airlock/maintenance/external, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "Gravgenrear" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"bOx" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Medical"; - name = "Medical Fax Machine" - }, -/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/east, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"bOB" = ( -/obj/effect/turf_decal/tile/blue/anticorner{ - dir = 8 - }, -/turf/open/floor/iron/textured_corner{ - dir = 4 - }, -/area/station/medical/chemistry) -"bOE" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/command/storage/eva) -"bOJ" = ( -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"bPh" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"bPq" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"bPv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/commons/storage/primary) -"bPx" = ( -/obj/structure/water_source/puddle, -/obj/structure/flora/bush/reed/style_2{ - pixel_x = -6 - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"bPK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/duct, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"bPO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/camera/directional/north{ - c_tag = "Science - Applied Mechanics" - }, -/obj/item/radio/intercom/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/science/auxlab) -"bPP" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"bQe" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"bQn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"bQv" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/maintenance/solars/starboard/fore) -"bQz" = ( -/obj/machinery/camera{ - c_tag = "Supermatter Foyer Cam #1"; - dir = 1; - network = list("ss13","engine") - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"bQA" = ( -/obj/effect/turf_decal/trimline/red, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"bQG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"bQK" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"bQU" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"bQV" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"bQY" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/door/window/left/directional/north{ - name = "Genetics Desk"; - req_access = list("genetics") - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"bRd" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/computer/atmos_control/oxygen_tank, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bRh" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/components/tank/air, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"bRl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"bRq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"bRt" = ( -/obj/structure/marker_beacon/burgundy, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"bRx" = ( -/obj/structure/frame/machine, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"bRI" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"bRM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"bRP" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"bRR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-14"; - location = "1-13" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"bRZ" = ( -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/pumproom) -"bSa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"bSb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/griddle, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"bSd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"bSg" = ( -/obj/structure/grille, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"bSi" = ( -/obj/machinery/door/airlock/external{ - name = "Labor Camp Shuttle Airlock"; - shuttledocked = 1 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"bSj" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"bSq" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bSs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"bSE" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"bSH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"bSR" = ( -/obj/structure/closet/crate/freezer, -/obj/effect/spawner/random/medical/memeorgans, -/obj/effect/spawner/random/medical/surgery_tool, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"bSU" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"bSV" = ( -/obj/machinery/door/airlock/medical{ - name = "Psychologist's Office" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"bSX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/airlock/security{ - name = "Private Investigator's Office" - }, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"bTe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"bTf" = ( -/obj/structure/chair/pew/right{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"bTm" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/arrows/white{ - pixel_x = -16 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"bTq" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/green/half, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"bTu" = ( -/turf/open/floor/iron, -/area/station/service/chapel) -"bTy" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"bTK" = ( -/obj/machinery/door/window/brigdoor/right/directional/west{ - name = "Judge's Stand"; - req_access = list("court") - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/courtroom) -"bTQ" = ( -/turf/closed/wall, -/area/station/science/ordnance/bomb) -"bTR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"bTW" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"bTX" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/brig) -"bTY" = ( -/obj/machinery/camera/directional/west, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"bUa" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"bUh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"bUq" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"bUv" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"bUC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half, -/area/station/cargo/warehouse) -"bUH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"bUO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/camera{ - c_tag = "Supermatter Foyer Cam #3"; - dir = 8; - network = list("ss13","engine") - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"bUP" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"bUW" = ( -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"bUZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"bVg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"bVj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/range) -"bVl" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"bVu" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"bVy" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"bVG" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bVT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/south{ - id = "public_toilets_b"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"bVY" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"bVZ" = ( -/obj/structure/table, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/corner, -/obj/item/hfr_box/core, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"bWd" = ( -/obj/machinery/shieldgen, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"bWn" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"bWu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/half, -/area/station/engineering/atmos/hfr_room) -"bWz" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"bWH" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) -"bWZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"bXd" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"bXe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"bXn" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"bXv" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-5"; - location = "1-4" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"bXw" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - id_tag = "sm_bolt"; - name = "Supermatter Engine" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"bXz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/ai_slipper{ - uses = 10 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"bXB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bXD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"bYb" = ( -/obj/structure/table/glass, -/obj/item/stack/medical/gauze, -/obj/machinery/defibrillator_mount/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"bYg" = ( -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"bYp" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/material, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"bYq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=4-3"; - location = "4-2" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"bYu" = ( -/obj/structure/fluff/broken_canister_frame, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"bYB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/medical/storage) -"bYJ" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Xenobio - Port Pens" - }, -/obj/structure/sign/poster/official/nanotrasen_logo/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"bYP" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"bYX" = ( -/obj/structure/bed/medical/anchored{ - dir = 8 - }, -/obj/item/bedsheet/medical{ - dir = 4 - }, -/obj/structure/curtain/cloth, -/obj/machinery/newscaster/directional/south, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/wood/parquet, -/area/station/medical/patients_rooms) -"bZd" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/blue, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"bZg" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"bZr" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"bZA" = ( -/obj/structure/table, -/obj/item/plate{ - pixel_y = -3 - }, -/obj/item/plate, -/obj/item/plate{ - pixel_y = 3 - }, -/obj/item/knife/plastic{ - pixel_x = 14 - }, -/obj/item/knife/plastic{ - pixel_x = 14; - pixel_y = -3 - }, -/obj/item/knife/plastic{ - pixel_x = 14; - pixel_y = 3 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = -12; - pixel_y = 3 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = -12; - pixel_y = -3 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = -12 - }, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment1) -"bZE" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"bZM" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"cah" = ( -/obj/machinery/door/airlock/command{ - name = "Teleporter Storage" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/command/teleporter) -"can" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"cau" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"cax" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"cay" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"caC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"caF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/aiupload, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"caP" = ( -/obj/structure/rack, -/obj/effect/spawner/random/bureaucracy/briefcase{ - spawn_loot_count = 2; - spawn_loot_split = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"caQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"cbi" = ( -/obj/structure/table/wood, -/obj/machinery/requests_console/directional/south{ - department = "Kitchen"; - name = "Kitchen Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/item/storage/bag/tray, -/obj/item/reagent_containers/cup/rag, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"cbm" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"cbo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/service) -"cbt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"cbu" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/medical/pharmacy) -"cbw" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"cbE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/cable_coil/cut, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"cbG" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"cbM" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/turf_decal/trimline/yellow/warning, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"cbT" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"cca" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "aft_vator" - }, -/obj/effect/abstract/elevator_music_zone{ - linked_elevator_id = "aft_vator"; - range = 2 - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/aft) -"ccc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"ccf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/captain, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"ccp" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"ccA" = ( -/obj/effect/spawner/random/engineering/material_cheap, -/obj/structure/table/wood, -/obj/item/chisel{ - pixel_x = -7; - pixel_y = 5 - }, -/obj/item/toy/crayon/spraycan{ - pixel_x = 7; - pixel_y = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"ccF" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"ccH" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor3/starboard/fore) -"ccK" = ( -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"ccP" = ( -/obj/machinery/seed_extractor, -/obj/item/seeds/poppy, -/obj/effect/turf_decal/siding/green{ - dir = 6 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"ccU" = ( -/obj/structure/table/wood, -/obj/item/storage/box/donkpockets, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"ccV" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"cdc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"cdd" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/button/ignition{ - id = "Xenobio"; - pixel_x = 24; - pixel_y = 5 - }, -/obj/machinery/button/door/directional/east{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_y = -5; - req_access = list("xenobiology") - }, -/obj/machinery/light/cold/no_nightlight/directional/east, -/obj/machinery/power/shieldwallgen/xenobiologyaccess, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"cdf" = ( -/obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"cdj" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"cdm" = ( -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"cdo" = ( -/obj/effect/turf_decal/arrows/red{ - dir = 4; - pixel_x = -15 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"cdq" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"cdF" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"cdN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-4"; - location = "2-3" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"cdS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"cdU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"ced" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"cee" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"ceh" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"cek" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"cem" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"cep" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/computer/security/telescreen/minisat/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"cev" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - desc = "Someone's bolted this manually."; - name = "Damaged Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"cez" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/mob/living/basic/rabbit, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"ceF" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "CMO Privacy Shutters"; - dir = 4; - id = "cmoshutter" - }, -/turf/open/floor/plating, -/area/station/medical/storage) -"ceH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/line{ - dir = 10 - }, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"ceL" = ( -/obj/machinery/vending/cola, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"cfa" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/second) -"cfe" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"cff" = ( -/obj/structure/hedge/opaque, -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) -"cfh" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/auxlab) -"cfp" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"cfu" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"cfC" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"cfD" = ( -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "armory"; - name = "Armoury Shutter" - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"cfH" = ( -/obj/structure/stairs/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"cfJ" = ( -/obj/structure/railing{ - dir = 5 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"cfO" = ( -/obj/machinery/vending/wardrobe/cargo_wardrobe, -/turf/open/floor/iron, -/area/station/cargo/storage) -"cfU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"cga" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"cgb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"cgc" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"cgi" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"cgm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/line, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"cgp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"cgw" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"cgx" = ( -/obj/structure/sign/warning{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) -"cgB" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology/hallway) -"cgM" = ( -/turf/open/floor/iron/stairs{ - icon_state = "stairs-m" - }, -/area/station/science/lobby) -"cgR" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"cgT" = ( -/obj/machinery/plumbing/sender, -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"cgZ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"chd" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/purple/warning, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"che" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"chk" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"chn" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"chs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/engineering{ - name = "Construction" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"cht" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"chF" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"chO" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/item/folder/blue, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"chP" = ( -/turf/closed/wall/mineral/plastitanium, -/area/station/maintenance/floor4/starboard/aft) -"chY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"cib" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"cil" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"cim" = ( -/obj/structure/stairs/north, -/obj/structure/sign/departments/cargo/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"ciq" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"cir" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"cis" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/clothing/under/trek/command/next, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/command/teleporter) -"cix" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"ciz" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/stamp/head/captain, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"ciC" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"ciH" = ( -/obj/structure/table, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/rods/fifty, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/machinery/button/door/directional/south{ - id = "aux_base_shutters"; - name = "Public Shutters Control"; - req_access = list("aux_base") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"ciK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, -/area/station/commons/fitness/recreation) -"ciM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"ciQ" = ( -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"ciS" = ( -/obj/machinery/door/airlock/medical/glass{ - id_tag = "MedbayFoyer"; - name = "Permabrig Medbay" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"ciU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"ciW" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"ciZ" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/foamedmetal, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"cja" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"cjc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "ceprivacy"; - name = "Privacy Shutter" - }, -/turf/open/floor/plating, -/area/station/engineering/engine_smes) -"cjo" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"cjp" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"cjx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/construction) -"cjB" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"cjC" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"cjE" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"cjK" = ( -/obj/effect/turf_decal/siding/wood, -/obj/item/kirbyplants/organic/plant21, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"cjM" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"cjX" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard) -"ckk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/floor2/aft) -"ckl" = ( -/obj/item/toy/snowball, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/misc/asteroid/snow/standard_air, -/area/station/maintenance/floor2/port/aft) -"ckn" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"ckv" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"cky" = ( -/obj/structure/table_frame/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"ckQ" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"ckR" = ( -/obj/item/storage/medkit/o2{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/medkit/o2, -/obj/item/storage/medkit/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/storage/medkit/regular, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"ckU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 5 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"ckX" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"clb" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"cle" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/sign/warning/yes_smoking/circle/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"clf" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"cll" = ( -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"clp" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"clv" = ( -/obj/machinery/door/airlock/hatch{ - name = "Stairwell Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"cly" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"clF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/mineral/plastitanium/airless, -/area/space/nearstation) -"clH" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/service) -"clJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"clP" = ( -/obj/machinery/chem_master, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"clT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"clU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/brig) -"clV" = ( -/obj/structure/closet{ - name = "Evidence Closet 4" - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"cmh" = ( -/obj/structure/closet/toolcloset, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/vacant_room/commissary) -"cmi" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cmj" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/hallway/floor1/fore) -"cmk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"cml" = ( -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"cmr" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"cms" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/cargo/miningdock) -"cmu" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"cmw" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"cmG" = ( -/turf/closed/wall, -/area/station/medical/psychology) -"cmH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor3/aft) -"cmM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/courtroom) -"cmT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"cng" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"cnj" = ( -/turf/open/floor/carpet, -/area/station/hallway/secondary/entry) -"cnk" = ( -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"cnq" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"cnx" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"cnz" = ( -/obj/machinery/iv_drip, -/obj/structure/mirror/directional/south, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"cnI" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"cnL" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"col" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/ai_monitored/turret_protected/ai) -"con" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"cow" = ( -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"coH" = ( -/obj/structure/chair/comfy/brown, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"coI" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"coZ" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"cpa" = ( -/obj/structure/table/wood, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/item/stack/pipe_cleaner_coil/random, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"cpe" = ( -/obj/machinery/holopad, -/turf/open/floor/carpet, -/area/station/hallway/secondary/entry) -"cpg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/machinery/door/airlock/hatch{ - name = "Genetics Maintenance" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"cpk" = ( -/obj/vehicle/ridden/janicart, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/janitor) -"cpm" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"cpo" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/commons/locker) -"cpr" = ( -/turf/open/floor/plating, -/area/station/construction) -"cpu" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/grass, -/area/station/service/library/garden) -"cpx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/floor1/aft) -"cpz" = ( -/obj/structure/table, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/cargo/sorting) -"cpD" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"cpE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"cpW" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"cqc" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/command/teleporter) -"cqm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"cqu" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"cqy" = ( -/obj/structure/table, -/obj/item/folder/white, -/obj/machinery/camera/autoname/directional/north, -/obj/item/paper_bin, -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/newscaster/directional/north, -/obj/item/healthanalyzer, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"cqz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/checkpoint) -"cqP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"cqR" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_edge, -/area/station/science/robotics/mechbay) -"cqT" = ( -/obj/machinery/recycler{ - dir = 8 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "disposals" - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"cqV" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/delivery, -/obj/machinery/button/door/directional/north{ - id = "lockers"; - name = "Shutters Control" - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"cqY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"crd" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"crj" = ( -/obj/structure/window/reinforced/tinted/fulltile, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"crn" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"crp" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"crr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"crK" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/camera/motion/directional/south{ - c_tag = "AI Upload Chamber - Port"; - network = list("aiupload") - }, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"crO" = ( -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor1/fore) -"crW" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/window{ - dir = 4; - id = "atmos_incinerator_auxvent"; - name = "Combustion Chamber Vent" - }, -/turf/open/floor/engine/airless, -/area/station/maintenance/disposal/incinerator) -"cse" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"csf" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Supermatter Waste To Port" - }, -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"csr" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"css" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/project) -"csw" = ( -/obj/structure/chair{ - name = "Judge" - }, -/obj/machinery/camera/directional/north{ - c_tag = "Courtroom" - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"csz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-10"; - location = "2-9" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"csC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"csF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"csM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"csP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/bar) -"csR" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 4; - pixel_x = -15 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/machinery/camera/directional/north{ - c_tag = "Medbay - Treatment Center"; - name = "medbay camera"; - network = list("ss13","medbay"); - dir = 2 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"csT" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/obj/structure/railing/corner/end{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"csY" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/engineering/atmos/hfr_room) -"ctd" = ( -/obj/structure/sign/poster/contraband/pwr_game, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"cti" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/stripes, -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"ctv" = ( -/obj/machinery/computer/warrant, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"ctI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"ctT" = ( -/obj/structure/rack, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"ctX" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #9"; - dir = 4; - network = list("ss13","engine") - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"ctY" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"cub" = ( -/obj/structure/rack, -/obj/item/clothing/under/trek/command/voy, -/obj/item/clothing/under/trek/command, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"cuc" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"cuf" = ( -/obj/structure/sign/poster/contraband/eat/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"cui" = ( -/obj/machinery/button/door/directional/south{ - id = "nsminingdorm1"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/carpet, -/area/station/cargo/miningdock) -"cuk" = ( -/obj/effect/turf_decal/tile/red/full, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #2"; - network = list("ss13","engine") - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos) -"cun" = ( -/obj/machinery/camera/motion/directional/east{ - c_tag = "MiniSat - Fore"; - network = list("minisat") - }, -/obj/structure/lattice/catwalk, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"cus" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"cuC" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"cuK" = ( -/obj/machinery/photocopier, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"cuL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "surg_b_privacy"; - name = "Surgery Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/surgery/aft) -"cuR" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"cuS" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"cuT" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"cuX" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"cvf" = ( -/obj/effect/spawner/structure/window/hollow/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"cvg" = ( -/obj/structure/table/reinforced, -/obj/item/shard/plasma{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/oil, -/obj/item/weldingtool{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/clothing/glasses/welding, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"cvm" = ( -/obj/item/stack/tile/light, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"cvn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"cvo" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"cvA" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cvC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-5"; - location = "2-4" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"cvD" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/ladder, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"cvE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"cvK" = ( -/obj/structure/water_source/puddle, -/turf/open/floor/grass, -/area/station/science/cytology) -"cvM" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Garden" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"cvP" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/service/hydroponics/garden) -"cvW" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"cvX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/printer) -"cvZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/cyborg, -/obj/structure/cable/layer3, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"cwl" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) -"cwq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"cwz" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"cwD" = ( -/obj/machinery/newscaster/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/directional/south{ - c_tag = "Courtroom - Gallery" - }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"cwF" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/library, -/obj/machinery/light/floor, -/turf/open/floor/wood/tile, -/area/station/service/library) -"cwG" = ( -/obj/machinery/door/airlock{ - id_tag = "nsminingdorm2"; - name = "Room 2" - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"cwX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/lockers) -"cxc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/office) -"cxg" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Gen Pop" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/security/holding_cell) -"cxl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"cxx" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"cxN" = ( -/obj/structure/rack, -/obj/item/clothing/gloves/boxing/blue, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"cxO" = ( -/obj/machinery/vending/hydronutrients, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"cxQ" = ( -/obj/structure/table_frame, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"cxR" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"cxX" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"cyb" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lower) -"cyc" = ( -/obj/machinery/door/airlock{ - id_tag = "dorms_lux_1_bolts"; - name = "Luxury Dorm 1" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"cyx" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"cyF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"cyL" = ( -/obj/structure/table/wood, -/obj/item/storage/dice, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"cyX" = ( -/obj/item/instrument/banjo, -/obj/item/clothing/head/costume/festive, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"czj" = ( -/obj/structure/sign/poster/random/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"czm" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"czp" = ( -/turf/closed/wall/r_wall, -/area/station/command/meeting_room) -"czr" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"czu" = ( -/obj/structure/rack, -/obj/item/toner/large, -/obj/item/toner/large, -/obj/item/toner/large, -/obj/item/toner/large, -/obj/item/toner/large, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"czP" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/bar) -"czZ" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Pen 1"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"cAf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/item/radio/intercom/directional/east, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"cAi" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"cAt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/brig) -"cAu" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"cAJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/security/mechbay) -"cAO" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"cAU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"cBb" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"cBk" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/white/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"cBq" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"cBx" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"cBE" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"cBJ" = ( -/obj/machinery/door/airlock/medical{ - name = "Morgue" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/morgue) -"cBU" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"cCc" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"cCd" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/entry) -"cCf" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 6 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 5 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"cCk" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Aft Starboard Solar Maintenance" - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"cCq" = ( -/turf/closed/wall, -/area/station/maintenance/solars/port/aft) -"cCu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"cCC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"cCE" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"cCK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"cCO" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/maintenance/solars/starboard/fore) -"cCS" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"cCV" = ( -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"cCX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/duct, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"cDa" = ( -/obj/structure/cable, -/obj/machinery/chem_master, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"cDh" = ( -/obj/item/broken_bottle, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"cDj" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/cargo/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"cDq" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"cDu" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"cDv" = ( -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cEb" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/service/hydroponics/garden) -"cEt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/green/end{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"cEu" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"cEw" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library2" - }, -/obj/machinery/door/airlock/public/glass{ - name = "Library" - }, -/turf/open/floor/iron, -/area/station/service/library) -"cEH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"cEP" = ( -/obj/structure/frame/machine, -/turf/open/floor/iron/smooth, -/area/station/construction) -"cFc" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"cFg" = ( -/obj/machinery/chem_master, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"cFq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"cFx" = ( -/obj/effect/turf_decal/trimline/brown/corner, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"cFF" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"cFK" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/dice, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"cFM" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"cFQ" = ( -/turf/closed/wall, -/area/station/science/auxlab/firing_range) -"cGh" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"cGn" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"cGt" = ( -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"cGu" = ( -/turf/open/floor/glass/reinforced, -/area/station/maintenance/floor2/starboard/aft) -"cGA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lab) -"cGI" = ( -/obj/structure/table, -/obj/item/paper_bin/construction, -/obj/item/pen/fountain, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"cGM" = ( -/obj/structure/cable, -/obj/machinery/conveyor{ - dir = 5; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"cGQ" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"cGT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"cGU" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/green, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"cGX" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/item/raw_anomaly_core/random{ - pixel_x = -5; - pixel_y = 7 - }, -/obj/item/raw_anomaly_core/random{ - pixel_x = 7; - pixel_y = 9 - }, -/obj/item/raw_anomaly_core/random{ - pixel_y = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"cHb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/structure/ladder, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"cHd" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"cHf" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"cHg" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"cHm" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/fore) -"cHr" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"cHy" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Second Deck Outpost" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"cHz" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"cHE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"cHK" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 9 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"cHT" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"cHX" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"cIc" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/structure/sign/departments/aiupload/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"cId" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"cIl" = ( -/obj/machinery/vending/hydronutrients, -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"cIo" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/west{ - name = "Outer Window" - }, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Security Desk"; - req_access = list("security") - }, -/obj/item/folder/red, -/obj/item/pen, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/security/checkpoint/escape) -"cIr" = ( -/obj/structure/chair/stool/bar/directional/east, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"cIt" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"cIE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"cIJ" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/arrow_cw, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"cIL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cIM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"cIN" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cIT" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"cJh" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"cJi" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"cJt" = ( -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"cJu" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark{ - dir = 8 - }, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"cJv" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"cJw" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/shower/directional/west, -/turf/open/floor/noslip, -/area/station/commons/toilet) -"cJB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/hydroponics, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"cJI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"cJR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/roboticist, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"cJY" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"cKf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/engineering/glass, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"cKq" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"cKs" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/trimline/red/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"cKv" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"cKC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"cKE" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cKH" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/aft) -"cKJ" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"cKM" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"cKS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/button/elevator/directional/south{ - id = "com_vator" - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "com_vator"; - pixel_y = -36 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"cLg" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/oxygen_input, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"cLt" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"cLA" = ( -/obj/structure/railing, -/turf/open/floor/grass, -/area/station/science/cytology) -"cLC" = ( -/obj/structure/table, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"cLF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/brig) -"cLG" = ( -/obj/structure/chair/e_chair, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"cLI" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"cLQ" = ( -/obj/machinery/door/airlock{ - name = "Locker Room" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/commons/locker) -"cLX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"cMb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/small/red/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"cMg" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/closet/crate/trashcart/laundry, -/obj/effect/spawner/random/contraband/prison, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner/skirt, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/item/seeds/tea, -/obj/item/clothing/under/rank/prisoner/skirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"cMh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"cMi" = ( -/obj/effect/turf_decal/trimline/white/arrow_cw{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"cMz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/bluespace_vendor/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"cMA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"cMB" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/hallway/floor1/aft) -"cMU" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/snack/green, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit/escape_pod) -"cNb" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/pump, -/obj/structure/sign/warning/vacuum{ - pixel_y = 32 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/floor1/aft) -"cNf" = ( -/obj/item/stack/tile/pod/light, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"cNl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"cNm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Science Maintenance" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"cNx" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"cNA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/bronze/filled, -/area/station/maintenance/floor1/starboard) -"cNE" = ( -/obj/structure/mineral_door/paperframe, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"cNH" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"cNQ" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/checkpoint) -"cNR" = ( -/obj/effect/turf_decal/bot/right, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"cNT" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"cOt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/service/library) -"cOx" = ( -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/prison/garden) -"cOz" = ( -/obj/machinery/vending/wardrobe/chap_wardrobe, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"cOD" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"cOE" = ( -/obj/effect/turf_decal/trimline/white/line, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/air_input, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"cOI" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"cOM" = ( -/obj/effect/decal/cleanable/confetti, -/obj/effect/turf_decal/siding/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"cOT" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) -"cPg" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "O2 to Airmix" - }, -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cPQ" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 5 - }, -/turf/open/water/no_planet_atmos{ - desc = "Filthy."; - name = "untreated water" - }, -/area/station/maintenance/floor1/port/aft) -"cPR" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/table, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 4 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/atmos) -"cPT" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor4/aft) -"cQa" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"cQj" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/fore) -"cQm" = ( -/obj/effect/turf_decal/trimline/red/filled/end{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"cQo" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"cQr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"cQz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"cQB" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/tank_dispenser/oxygen, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/engineering/lobby) -"cQC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/smes, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"cQL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 9 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cQS" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/engineering/atmos/hfr_room) -"cQY" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"cRd" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Research and Development" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cRe" = ( -/obj/machinery/status_display/ai/directional/north, -/obj/structure/secure_safe/caps_spare, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"cRs" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/recharge_station, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"cRA" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"cRH" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/closet/emcloset/anchored, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"cRJ" = ( -/obj/structure/filingcabinet/security, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/command/teleporter) -"cRL" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"cRU" = ( -/obj/machinery/sparker/directional/north{ - id = "Xenobio" - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"cRY" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"cSb" = ( -/obj/structure/table, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/servo{ - pixel_x = 15; - pixel_y = 4 - }, -/obj/item/reagent_containers/dropper{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker - }, -/obj/item/multitool, -/turf/open/floor/iron/white, -/area/station/science/lab) -"cSc" = ( -/obj/item/food/cornchips/green{ - pixel_x = -8; - pixel_y = -7 - }, -/obj/item/toy/plush/rouny{ - desc = "That is a rouny."; - pixel_x = 10; - pixel_y = 2 - }, -/obj/structure/bed/pod, -/obj/item/bedsheet/green, -/obj/effect/landmark/start/janitor, -/turf/open/floor/eighties, -/area/station/service/janitor) -"cSe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"cSk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"cSu" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/service/chapel) -"cSF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"cSK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/obj/structure/rack, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"cSQ" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/prison) -"cSW" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"cSY" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"cTb" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"cTk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/entry) -"cTo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"cTw" = ( -/obj/structure/table/reinforced, -/obj/machinery/airalarm/directional/south, -/obj/item/storage/box/evidence, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"cTB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos) -"cTJ" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"cTV" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"cUb" = ( -/obj/effect/landmark/start/chemist, -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"cUd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"cUh" = ( -/obj/structure/rack, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"cUq" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"cUt" = ( -/obj/docking_port/stationary/public_mining_dock, -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"cUu" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/structure/window/spawner/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"cUL" = ( -/turf/closed/wall, -/area/station/cargo/storage) -"cUN" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 10 - }, -/obj/structure/rack, -/obj/item/food/grown/poppy/geranium/fraxinella{ - color = "#00FFFF"; - desc = "A beautiful cyan flower. You get the feeling you won't see one like this here very often." - }, -/obj/item/clothing/mask/gas/cyborg, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"cUY" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"cVb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"cVl" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"cVo" = ( -/obj/machinery/door/airlock/command{ - name = "Fuel Storage" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"cVy" = ( -/obj/structure/transport/linear/public, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "aft_vator"; - pixel_x = 38; - pixel_y = -7 - }, -/obj/machinery/elevator_control_panel/directional/east{ - linked_elevator_id = "aft_vator"; - pixel_x = 24; - preset_destination_names = list("2" = "Supply-Engi Floor", "3" = "Med-Sci Floor", "4" = "Service Floor") - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/aft) -"cVz" = ( -/obj/machinery/door/airlock/security{ - name = "Gulag" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"cVD" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"cVG" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"cVJ" = ( -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/floor2/aft) -"cVK" = ( -/obj/machinery/vending/cigarette, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"cVL" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/commons/locker) -"cVR" = ( -/obj/machinery/light/small/directional/west, -/turf/open/openspace, -/area/station/service/chapel) -"cVT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"cVX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"cWf" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/hallway/floor4/fore) -"cWo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"cWu" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"cWw" = ( -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"cWy" = ( -/obj/structure/table, -/obj/machinery/button/door{ - desc = "Controls the shutters over the cell windows."; - id = "secure-gate"; - name = "Cell Window Control"; - pixel_x = -6; - pixel_y = 7; - req_access = list("armory"); - specialfunctions = 4 - }, -/obj/machinery/button/door{ - desc = "Controls the shutters over the brig windows."; - id = "briglockdown"; - name = "Brig Lockdown Control"; - pixel_x = 6; - pixel_y = 7; - req_access = list("armory") - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"cWD" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 10 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"cWF" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"cWK" = ( -/turf/open/floor/iron, -/area/station/security/range) -"cWM" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/virology{ - name = "Virology" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"cWO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"cWR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"cWX" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"cWY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"cWZ" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"cXm" = ( -/obj/structure/lattice/catwalk, -/obj/effect/landmark/carpspawn, -/turf/open/space/openspace, -/area/space/nearstation) -"cXo" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"cXq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"cXr" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"cXs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"cXC" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/maintenance/floor3/port/fore) -"cXD" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"cXG" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"cXI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"cXJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/plush/lizard_plushie/green{ - desc = "A stuffed toy which resembles a wayward Ashlander. This one fills you with hope for the future."; - name = "Bites-The-Wires" - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"cXK" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"cXP" = ( -/obj/machinery/telecomms/bus/preset_three, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"cYh" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/spawner/random/engineering/tank, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"cYu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"cYx" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/rack, -/obj/item/wrench, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/iron/telecomms, -/area/station/tcommsat/server) -"cYF" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"cYP" = ( -/obj/structure/closet/wardrobe/black, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"cYR" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/machinery/door/window/left/directional/south{ - name = "Inner Pipe Access"; - req_access = list("atmospherics") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"cYS" = ( -/obj/structure/closet/emcloset/anchored, -/obj/machinery/light/small/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"cYW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/security/prison) -"cYZ" = ( -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"cZe" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"cZA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/item/reagent_containers/cup/bottle/morphine{ - pixel_y = 6 - }, -/obj/item/reagent_containers/syringe, -/obj/structure/table, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"cZB" = ( -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"cZG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"cZK" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/prison) -"cZS" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"cZT" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/computer/order_console/cook{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"daa" = ( -/obj/machinery/camera/motion/directional/north{ - c_tag = "Minisat North" - }, -/obj/machinery/power/smes/super/full, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"dab" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"dac" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/trash/cigbutt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"daf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"dan" = ( -/obj/structure/cable, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"daz" = ( -/obj/machinery/light/directional/north, -/mob/living/basic/pet/penguin/baby/permanent{ - dir = 8 - }, -/turf/open/misc/snow/actually_safe{ - icon_state = "snow6" - }, -/area/station/hallway/floor2/fore) -"daD" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"daT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"daY" = ( -/obj/machinery/door/poddoor/shutters{ - id = "survhang"; - name = "Ancient Hangars" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"dbc" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit) -"dbe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/structure/table, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/rods/fifty, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"dby" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"dbH" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/catwalk_floor, -/area/station/construction/mining/aux_base) -"dbK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"dbN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/warning, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"dbU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/airlock_controller/incinerator_atmos{ - pixel_y = 26 - }, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/bridge_pipe/supply/visible/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"dbZ" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"dch" = ( -/obj/machinery/light/directional/east, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/carpet/purple, -/area/station/commons/dorms/apartment1) -"dcp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"dcw" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"dcG" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"dcH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"dcN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"dcO" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"dcZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ddb" = ( -/obj/structure/closet/crate/solarpanel_small, -/obj/machinery/door/window/left/directional/west{ - name = "Spare Solars"; - req_access = list("engineering") - }, -/turf/open/floor/plating/airless, -/area/station/maintenance/solars/starboard/aft) -"ddd" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"ddg" = ( -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"ddj" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/light/small/red/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"ddv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/bronze, -/obj/item/toy/eightball, -/turf/open/floor/bronze, -/area/station/maintenance/floor1/starboard) -"ddx" = ( -/obj/structure/curtain/cloth/fancy/mechanical{ - id = "restaurant_booth_a"; - name = "Booth A" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"ddy" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"ddA" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"ddH" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"ddM" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"ddO" = ( -/obj/effect/turf_decal/siding/wideplating_new/corner, -/obj/effect/turf_decal/siding/wideplating_new/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 8 - }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"ddT" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/engineering/supermatter/room) -"ddW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"deg" = ( -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"dej" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dek" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"del" = ( -/obj/machinery/door/airlock/shuttle, -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard/aft) -"deu" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/arrow_ccw, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"deF" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"deG" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"deK" = ( -/obj/structure/secure_safe/directional/south, -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard/aft) -"deM" = ( -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"dfa" = ( -/obj/item/flashlight/lamp/green, -/obj/structure/table/wood, -/obj/item/instrument/guitar, -/obj/machinery/duct, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"dff" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"dfi" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"dfl" = ( -/obj/structure/chair/comfy/teal{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"dfm" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"dfn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/commons/locker) -"dfp" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/medical/abandoned) -"dfs" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"dfw" = ( -/obj/machinery/status_display/ai/directional/west, -/turf/open/openspace, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"dfA" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"dfB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/window/preopen{ - dir = 1; - name = "Medbay Lockdown Shutters"; - id = "med_lockdown" - }, -/turf/open/floor/plating, -/area/station/medical/medbay/lobby) -"dfP" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/sign/poster/contraband/red_rum/directional/east, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"dfR" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/commons/locker) -"dfU" = ( -/obj/machinery/computer/pandemic, -/obj/structure/sign/poster/official/periodic_table/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"dgb" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"dge" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"dgp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"dgq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"dgs" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"dgw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/silver{ - name = "Bathroom" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"dgA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/warning/pods/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"dgU" = ( -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"dgZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"dhb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/public/glass{ - name = "Petting Zoo" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"dhs" = ( -/obj/structure/table/wood/fancy/royalblack, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"dhE" = ( -/obj/machinery/power/turbine/inlet_compressor{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"dhJ" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"dhX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"dhZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"dil" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/aft) -"dim" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/machinery/light/cold/no_nightlight/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"din" = ( -/obj/structure/cable, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"dit" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"diA" = ( -/turf/closed/wall, -/area/station/service/kitchen/coldroom) -"diS" = ( -/obj/machinery/door/airlock/freezer{ - name = "Bathroom" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"diU" = ( -/obj/effect/decal/cleanable/ash, -/obj/structure/disposalpipe/broken{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"diW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"djc" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"djd" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"dje" = ( -/obj/structure/chair/stool/bamboo, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"dji" = ( -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"djs" = ( -/obj/structure/railing, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"djv" = ( -/obj/effect/landmark/start/research_director, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"djx" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/green/full, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/displaycase/forsale/kitchen{ - pixel_y = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"djy" = ( -/turf/closed/wall/mineral/iron, -/area/station/maintenance/floor3/starboard/aft) -"djF" = ( -/obj/structure/rack, -/obj/item/chair/plastic, -/obj/item/chair/plastic{ - pixel_y = 4 - }, -/obj/item/chair/plastic{ - pixel_y = 8 - }, -/obj/item/chair/plastic{ - pixel_y = 12 - }, -/obj/item/chair/plastic{ - pixel_y = 14 - }, -/obj/effect/turf_decal/trimline/green/warning, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"djH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/structure/cable, -/obj/machinery/door/airlock/science{ - name = "Genetics" - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"djJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"djX" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"dke" = ( -/obj/machinery/door/window/left/directional/south, -/obj/machinery/door/window/left/directional/north, -/obj/machinery/holopad, -/turf/open/floor/circuit/green, -/area/station/science/server) -"dkf" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/cargo/storage) -"dkh" = ( -/obj/machinery/camera/motion/directional/south{ - name = "Minisat - Starboard"; - network = list("minisat") - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"dkk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dkn" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"dks" = ( -/obj/structure/girder, -/obj/item/stack/sheet/iron, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"dkD" = ( -/obj/machinery/computer/cargo/request{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"dkP" = ( -/obj/structure/bodycontainer/morgue{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"dkQ" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"dla" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"dlp" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/storage/tcomms) -"dlt" = ( -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"dly" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"dlR" = ( -/obj/item/radio/intercom/directional/north{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Private Channel" - }, -/obj/machinery/recharge_station, -/obj/machinery/computer/security/telescreen/minisat/directional/east, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"dlW" = ( -/turf/closed/wall, -/area/station/maintenance/floor4/starboard/aft) -"dmc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/eva, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"dmx" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 12; - height = 18; - name = "Emergency Shuttle Dock"; - shuttle_id = "emergency_home"; - width = 32 - }, -/turf/open/space/basic, -/area/space) -"dmG" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"dmR" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"dmS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor1/aft) -"dmU" = ( -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"dnx" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"dny" = ( -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/cargo/office) -"dnH" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/beaker/large, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"dnJ" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"dnM" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"dnR" = ( -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"dnS" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/station/solars/port/aft) -"dnT" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dnU" = ( -/turf/closed/wall, -/area/station/security/office) -"dog" = ( -/obj/structure/showcase/cyborg/old{ - dir = 8; - pixel_x = 9; - pixel_y = 2 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"doh" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"dop" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/stairs/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"dou" = ( -/obj/effect/decal/cleanable/ash, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"doy" = ( -/obj/machinery/light/directional/east, -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/freezer, -/area/station/service/chapel) -"doC" = ( -/obj/effect/spawner/structure/window/hollow/plasma/middle{ - dir = 4 - }, -/obj/structure/girder/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"doJ" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"doT" = ( -/obj/structure/table/reinforced, -/obj/item/grenade/chem_grenade{ - pixel_x = -4 - }, -/obj/item/grenade/chem_grenade{ - pixel_x = 5 - }, -/obj/item/grenade/chem_grenade, -/obj/item/stack/cable_coil, -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"dpd" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"dps" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"dpC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"dpH" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/miningdock) -"dpL" = ( -/turf/closed/wall, -/area/station/science/lower) -"dpM" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/arrow_cw{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"dpP" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/science/cytology) -"dpQ" = ( -/obj/structure/filingcabinet/security, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/service/lawoffice) -"dpR" = ( -/obj/item/paper{ - default_raw_text = "The SM DOES IN FACT LOOP
The gas goes in from the top side of the SM, and comes out of the bottom side
once out of the SM and into the orange pipes it goes out into space.
The gas cools in space and then comes back to the filters to be put into the SM again.
Remember, the gas is not sent to space but is sent to a room north of the SM to be recycled. You'll need to set that up."; - name = "HOW TO SET UP THE SM" - }, -/obj/structure/table/reinforced, -/obj/machinery/light/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"dqe" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"dqm" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/o_plus{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/reagent_containers/blood/o_minus, -/obj/item/reagent_containers/blood/b_plus, -/obj/item/reagent_containers/blood/b_minus, -/obj/item/reagent_containers/blood/a_plus, -/obj/item/reagent_containers/blood/a_minus, -/obj/item/reagent_containers/blood/lizard, -/obj/item/reagent_containers/blood/ethereal, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/effect/turf_decal/box/white, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"dqn" = ( -/obj/machinery/power/shuttle_engine/heater{ - icon_state = "router" - }, -/turf/closed/wall, -/area/station/maintenance/floor1/port/aft) -"dqB" = ( -/obj/item/clothing/mask/breath{ - pixel_x = -4 - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath{ - pixel_x = 4 - }, -/obj/structure/table, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"dqF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"dqM" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/brown/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 8 - }, -/area/station/cargo/bitrunning/den) -"dqQ" = ( -/turf/closed/wall/r_wall, -/area/station/security/medical) -"dqV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos) -"dqX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-14"; - location = "2-13" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"drk" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"drm" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/science/cytology) -"dro" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/dim/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"drp" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/turf_decal/bot, -/turf/open/floor/engine, -/area/station/maintenance/floor1/starboard/fore) -"drw" = ( -/obj/structure/closet/secure_closet/captains, -/obj/item/camera, -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"drA" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"drB" = ( -/obj/machinery/processor/slime, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"drD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/button/door/directional/south{ - id = "law-priv"; - name = "Shutters" - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"dsb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"dsl" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"dso" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"dsv" = ( -/obj/item/flamethrower, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"dsz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"dsB" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"dtb" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Break Room" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/breakroom) -"dtc" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"dtj" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"dtl" = ( -/obj/machinery/door/airlock/public{ - name = "Funeral Hall" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/crematorium, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"dtm" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Cytology - Cytology Containment" - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"dts" = ( -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"dtv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"dtx" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"dty" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"dtI" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/head/utility/welding, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"dtJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"dtM" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"dtO" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/space_heater, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dtU" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"dtX" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"dtY" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"dui" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wideplating_new/dark{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"dus" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"duu" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "arrivalsprivacy"; - name = "Arrivals Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"duv" = ( -/obj/structure/holosign/barrier, -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"duw" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"duC" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"duZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/camera/directional/south{ - c_tag = "Security - Shooting Range" - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/range) -"dvc" = ( -/obj/structure/sign/poster/contraband/random/directional/west, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/item/plant_analyzer, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"dvA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"dvB" = ( -/obj/machinery/light/directional/east, -/obj/machinery/smartfridge/drying, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"dvC" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Garden" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"dvF" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/white/arrow_ccw{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/entry) -"dvJ" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/range) -"dvP" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/status_display/ai/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"dvT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"dwi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"dwx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"dwE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"dwG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"dwN" = ( -/obj/machinery/chem_master, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"dxd" = ( -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"dxr" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/obj/effect/spawner/random/maintenance, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"dxu" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"dxv" = ( -/obj/machinery/griddle{ - name = "hibachi grill" - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"dxz" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"dxD" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"dxE" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"dxG" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/service/hydroponics/garden) -"dxK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"dxP" = ( -/obj/structure/punching_bag, -/turf/open/floor/noslip, -/area/station/commons/fitness) -"dxS" = ( -/obj/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"dxY" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/office) -"dya" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"dyk" = ( -/obj/structure/transit_tube/station/dispenser{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"dyo" = ( -/obj/machinery/door/airlock/medical{ - name = "Recovery Room" - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/patients_rooms) -"dyq" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"dyt" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"dyG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/sign/departments/medbay/alt/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"dyQ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/vending/wallmed/directional/north, -/obj/item/radio/intercom/directional/west, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"dyS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"dyW" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/fore) -"dyX" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/flasher/directional/west{ - id = "secentranceflasher" - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"dzg" = ( -/obj/machinery/light/directional/west, -/obj/structure/chair/sofa/middle/maroon{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"dzo" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 6 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/warehouse) -"dzq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/glass/shaker, -/obj/item/holosign_creator/robot_seat/bar, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"dzr" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "fore_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"dzs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/exit) -"dzB" = ( -/obj/structure/marker_beacon/burgundy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"dzE" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/detective, -/obj/machinery/door/airlock/security/glass{ - name = "Detective's Backroom" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"dzM" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"dzQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"dzR" = ( -/obj/structure/closet/emcloset, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"dzY" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/directional, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"dAc" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Cafeteria" - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/cargo/miningdock) -"dAe" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/deputy, -/obj/machinery/camera/directional/north{ - c_tag = "Security - Head of Security's Office" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"dAi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"dAk" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"dAn" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"dAo" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"dAp" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"dAr" = ( -/obj/machinery/hydroponics/soil, -/obj/machinery/camera/directional/west{ - c_tag = "Prison Forestry"; - network = list("ss13","prison") - }, -/obj/machinery/light/directional/west, -/turf/open/misc/dirt/jungle, -/area/station/security/prison/garden) -"dAB" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dAF" = ( -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/airlock/medical/glass{ - name = "Triage" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"dAI" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - name = "Ports To Supermatter" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dAN" = ( -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron, -/area/station/commons/locker) -"dAU" = ( -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"dBb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/floodlight_frame, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"dBf" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"dBh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dBj" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"dBo" = ( -/obj/structure/sign/poster/official/cleanliness/directional/west, -/obj/machinery/holopad, -/obj/machinery/camera/directional/west{ - name = "Security - Medical" - }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"dBu" = ( -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"dBw" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"dBO" = ( -/obj/effect/turf_decal/siding/wideplating, -/obj/structure/table/reinforced, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/item/clothing/glasses/science, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"dBY" = ( -/obj/machinery/door/airlock{ - name = "Janitor's Closet" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/service/janitor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/service/janitor) -"dBZ" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"dCt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"dCx" = ( -/obj/structure/closet/secure_closet/psychology, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"dCD" = ( -/obj/effect/spawner/random/entertainment/arcade, -/obj/machinery/light/blacklight/directional/north, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"dCK" = ( -/turf/closed/wall/r_wall, -/area/station/command/bridge) -"dCL" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"dCU" = ( -/turf/closed/wall, -/area/station/commons/dorms/room2) -"dCW" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"dDk" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"dDs" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dDu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/stack/cable_coil/cut, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"dDv" = ( -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dDw" = ( -/obj/structure/bed, -/obj/effect/landmark/start/detective, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"dDz" = ( -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"dDC" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"dDF" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"dDG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"dDH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"dDR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/window/left/directional/north{ - name = "Infirmary" - }, -/turf/open/floor/iron/white/side{ - dir = 10 - }, -/area/station/security/medical) -"dEa" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/engineering/tool, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"dEb" = ( -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/science/genetics) -"dEc" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor1/port/aft) -"dEq" = ( -/obj/structure/chair/stool/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"dEt" = ( -/turf/closed/wall, -/area/station/maintenance/floor2/starboard/aft) -"dED" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 5 - }, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"dEJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"dEN" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/item/camera, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"dEO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"dEQ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"dFb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/structure/ladder, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"dFd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"dFj" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/button/door/directional/east{ - id = "arrivalsprivacy"; - name = "Privacy Control" - }, -/obj/structure/table/reinforced, -/obj/item/radio/headset{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/radio/headset, -/obj/item/radio/headset{ - pixel_x = 3; - pixel_y = 2 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dFn" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"dFq" = ( -/obj/structure/cable, -/obj/machinery/power/terminal, -/obj/machinery/power/port_gen/pacman, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plating, -/area/station/engineering/gravity_generator) -"dFy" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/service/hydroponics/garden) -"dFL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"dFN" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"dFR" = ( -/obj/machinery/power/emitter, -/obj/machinery/camera{ - c_tag = "Secure Storage"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"dFT" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side, -/area/station/engineering/lobby) -"dFZ" = ( -/obj/structure/railing, -/obj/machinery/light/small/red/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"dGa" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/xenoblood, -/turf/open/floor/engine, -/area/station/science/cytology) -"dGe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/toggle/labcoat, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"dGf" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"dGo" = ( -/turf/open/floor/engine/hull/reinforced, -/area/station/science/xenobiology) -"dGp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"dGE" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"dGF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"dGG" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"dGS" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor3/fore) -"dHa" = ( -/obj/structure/closet/boxinggloves, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"dHf" = ( -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/floor1/aft) -"dHg" = ( -/obj/structure/table, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dHn" = ( -/obj/structure/closet/emcloset, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"dHq" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"dHD" = ( -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/checkpoint) -"dHR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"dHY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"dId" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"dIh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"dIi" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"dIl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"dIv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"dIx" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen/diner) -"dIz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"dIJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"dIO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing/corner, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"dIQ" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"dIU" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"dIX" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"dJf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"dJh" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/bar/atrium) -"dJo" = ( -/obj/effect/landmark/navigate_destination/gateway, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"dJq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"dJs" = ( -/obj/machinery/vatgrower{ - dir = 4 - }, -/obj/machinery/light/cold/no_nightlight/directional/south, -/obj/machinery/status_display/evac/directional/south, -/turf/open/misc/sandy_dirt, -/area/station/science/cytology) -"dJu" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/space/openspace, -/area/station/solars/starboard/aft) -"dJx" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/closet/l3closet/virology, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"dJy" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"dJC" = ( -/obj/machinery/light/small/dim/directional/east, -/turf/open/openspace, -/area/station/command/heads_quarters/hop) -"dJF" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "law-priv"; - name = "Law Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/service/lawoffice) -"dJI" = ( -/obj/effect/landmark/start/research_director, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"dJL" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"dJO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"dJV" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"dKb" = ( -/obj/structure/kitchenspike, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"dKf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"dKk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"dKz" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"dKF" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"dKJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/railing/corner/end/flip{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"dKL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"dKS" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"dKU" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/cytology) -"dLe" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/service/library/garden) -"dLj" = ( -/obj/structure/chair/plastic, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"dLu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/cigbutt, -/obj/structure/sign/poster/contraband/random/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"dLL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"dLT" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"dLV" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Hydroponics - Garden" - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"dMb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"dMj" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/wood{ - name = "Dining Room" - }, -/turf/open/floor/iron/dark, -/area/station/service/kitchen/diner) -"dMk" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"dMm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/smooth, -/area/station/construction) -"dMr" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "Escape Airlock" - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"dMt" = ( -/obj/machinery/computer/security/telescreen/minisat/directional/east, -/obj/machinery/camera/directional/south{ - c_tag = "MiniSat Exterior Access"; - network = list("minisat") - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"dMA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/white/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock{ - name = "Arrivals" - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dMO" = ( -/obj/structure/sign/warning/chem_diamond/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"dMV" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"dMY" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/captain/double, -/obj/effect/landmark/start/captain, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"dNm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"dNn" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 4 - }, -/obj/effect/landmark/start/bartender, -/obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"dNp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/library) -"dNx" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "engimain" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dNy" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"dNA" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"dNG" = ( -/obj/structure/rack, -/obj/item/pai_card, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"dNH" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"dNI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/item/stack/sheet/cloth/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"dNL" = ( -/obj/structure/frame/machine, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"dOa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"dOg" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"dOl" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"dOs" = ( -/turf/open/floor/pod, -/area/station/cargo/storage) -"dOv" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/food/drug/moon_rock, -/obj/item/food/drug/moon_rock{ - pixel_x = 12 - }, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"dOD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/security/medical) -"dOI" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/storage/tech) -"dOK" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/item/taperecorder, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"dOM" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"dOQ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"dPf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/office) -"dPh" = ( -/obj/effect/turf_decal/siding/blue/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"dPk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"dPv" = ( -/obj/machinery/chem_master/condimaster{ - desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; - name = "SapMaster XP" - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"dPx" = ( -/obj/machinery/computer/quantum_console{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_corner, -/area/station/cargo/bitrunning/den) -"dPC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"dPH" = ( -/turf/closed/wall/r_wall, -/area/station/security/brig) -"dPS" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Fore Entrance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/machinery/scanner_gate/preset_guns, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"dPT" = ( -/obj/machinery/light/small/red/directional/east, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"dQg" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"dQi" = ( -/obj/effect/spawner/random/engineering/material_cheap, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"dQn" = ( -/obj/structure/sign/poster/contraband/power, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"dQo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) -"dQs" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"dQH" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"dQI" = ( -/obj/structure/girder/reinforced, -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"dQM" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark, -/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/carbon_output, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"dQQ" = ( -/obj/effect/turf_decal/tile/blue/anticorner{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/ai_monitored/turret_protected/ai) -"dQU" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/engineering_all, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"dQX" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/quantumpad, -/turf/open/floor/iron, -/area/station/science/auxlab) -"dRb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/ash, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"dRn" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"dRs" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"dRE" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"dRI" = ( -/obj/structure/filingcabinet/security, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"dRR" = ( -/obj/machinery/door/airlock{ - name = "Locker Room" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/locker) -"dRX" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"dRY" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Escape Airlock"; - space_dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"dSa" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast"; - name = "Bridge Blast Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"dSe" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"dSf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"dSl" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"dSm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"dSn" = ( -/obj/structure/closet{ - name = "Evidence Closet 5" - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"dSv" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/pill/happinesspsych{ - desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug."; - list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10); - name = "strange pill"; - pixel_x = 9 - }, -/obj/item/reagent_containers/pill/happinesspsych{ - desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug."; - list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10); - name = "strange pill" - }, -/obj/item/reagent_containers/pill/happinesspsych{ - desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug."; - list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10); - name = "strange pill"; - pixel_x = -9; - pixel_y = -8 - }, -/obj/item/reagent_containers/pill/happinesspsych{ - desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug."; - list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10); - name = "strange pill"; - pixel_y = -8 - }, -/obj/item/reagent_containers/pill/happinesspsych{ - desc = "A mysterious unlabelled pill. You're not sure what it is, but it's probably a synthetic drug."; - list_reagents = list(/datum/reagent/drug/happiness = 5, /datum/reagent/drug/space_drugs = 10, /datum/reagent/drug/mushroomhallucinogen = 10); - name = "strange pill"; - pixel_x = -9 - }, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"dSw" = ( -/obj/structure/table, -/obj/item/storage/medkit/regular, -/obj/item/storage/backpack/duffelbag/sec/surgery{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"dSE" = ( -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/freezer, -/area/station/service/chapel) -"dSF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"dSH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/aft) -"dSI" = ( -/obj/structure/grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"dSS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle, -/obj/structure/girder/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) -"dTe" = ( -/obj/structure/chair/wood/wings{ - dir = 4 - }, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"dTk" = ( -/obj/item/storage/pill_bottle, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/medical/abandoned) -"dTm" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"dTn" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"dTB" = ( -/obj/structure/table/wood, -/obj/item/newspaper{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/folder/red, -/obj/item/pen, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"dTF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/corner, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"dTJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/virology{ - id_tag = "viro-iso"; - name = "Virology Isolation" - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/medical/virology/isolation) -"dTN" = ( -/obj/structure/table/wood, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"dTX" = ( -/obj/machinery/telecomms/server/presets/security, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"dTY" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/detective, -/obj/machinery/door/airlock/security{ - name = "Detective's Office" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/checkpoint) -"dUh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"dUi" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/warning/biohazard/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"dUj" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/machinery/button/door/directional/south{ - name = "Medbay Lockdown Shutters"; - id = "med_lockdown" - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"dUr" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor1/aft) -"dUF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"dUJ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"dUP" = ( -/obj/machinery/disposal/bin{ - name = "Book Returns" - }, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron, -/area/station/service/library) -"dUQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/cargo/miningoffice) -"dUT" = ( -/obj/structure/cable, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"dUU" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"dUW" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dUY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/half, -/area/station/command/gateway) -"dVf" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"dVi" = ( -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"dVk" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters{ - id = "evashutter"; - name = "E.V.A. Storage Shutter" - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"dVt" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"dVx" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/security/prison) -"dVy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"dVB" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"dVD" = ( -/obj/effect/spawner/random/engineering/canister, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"dVH" = ( -/turf/open/misc/asteroid/snow/standard_air{ - icon_state = "snow10" - }, -/area/station/maintenance/floor2/port/aft) -"dVQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/textured_half, -/area/station/cargo/office) -"dVV" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"dVW" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"dWg" = ( -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"dWh" = ( -/obj/structure/cable, -/obj/machinery/meter/monitored/waste_loop, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"dWi" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dWj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"dWl" = ( -/obj/machinery/vending/hydroseeds, -/obj/effect/turf_decal/siding/green{ - dir = 10 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"dWn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/west, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"dWt" = ( -/obj/machinery/camera/directional/north{ - name = "Law Backroom" - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/service/lawoffice) -"dWu" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"dWv" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"dWz" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 5 - }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"dWF" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark, -/obj/effect/turf_decal/siding/wideplating_new/dark{ - dir = 1 - }, -/obj/machinery/air_sensor/carbon_tank, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"dWG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"dWK" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box/white, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"dWL" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/effect/landmark/start/hangover, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/hallway/floor4/fore) -"dWT" = ( -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - id_tag = "virology_airlock_exterior"; - name = "Virology Exterior Airlock" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/medical/virology, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "viro" - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"dXc" = ( -/obj/machinery/air_sensor/ordnance_burn_chamber, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"dXh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"dXo" = ( -/obj/structure/weightmachine, -/turf/open/floor/noslip, -/area/station/commons/fitness) -"dXp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"dXr" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"dXy" = ( -/obj/structure/table/glass, -/obj/machinery/defibrillator_mount/directional/east, -/obj/item/storage/box/syringes{ - pixel_y = 6 - }, -/obj/item/stack/medical/mesh, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"dXz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"dXA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/floor2/aft) -"dXJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"dXX" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/rnd/production/techfab/department/security, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"dXY" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"dYf" = ( -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"dYh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/aft) -"dYj" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"dYl" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"dYq" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard) -"dYB" = ( -/obj/effect/turf_decal/tile/green/anticorner, -/obj/structure/rack, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/secondary/exit/escape_pod) -"dYM" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/item/storage/belt/medical, -/obj/item/storage/belt/medical{ - pixel_y = 6 - }, -/obj/item/storage/belt/medical{ - pixel_y = 12 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"dYX" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"dZa" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"dZf" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"dZt" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"dZz" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"dZQ" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/air_sensor/oxygen_tank, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"dZW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/hedge, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"eac" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron/checker, -/area/station/commons/locker) -"eae" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"eai" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"eao" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/yjunction, -/turf/open/floor/iron/white, -/area/station/science/lower) -"eas" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/commons/locker) -"eaB" = ( -/obj/structure/chair/comfy/carp, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"eaI" = ( -/obj/structure/railing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"eaW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"ebl" = ( -/obj/effect/turf_decal/siding/wideplating_new/end{ - dir = 1 - }, -/turf/open/floor/engine/airless, -/area/space/nearstation) -"ebm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"ebn" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"ebz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"ebA" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"ebE" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/locker) -"ebG" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/purple, -/area/station/commons/dorms/apartment1) -"ebK" = ( -/turf/closed/wall, -/area/station/security/checkpoint) -"ebN" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"ebO" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"ebY" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"ecf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/paper_bin/construction{ - pixel_x = -6 - }, -/obj/item/paper_bin/construction, -/obj/item/paper_bin/construction{ - pixel_x = 6 - }, -/obj/item/storage/crayons{ - pixel_x = 6; - pixel_y = -3 - }, -/turf/open/floor/iron, -/area/station/security/prison) -"ecl" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/curtain/cloth, -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/wood/parquet, -/area/station/medical/patients_rooms) -"ecB" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood/tile, -/area/station/service/library) -"ecF" = ( -/obj/effect/decal/cleanable/food/flour, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"ecI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"ecN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"ede" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"edj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/security/prison/visit) -"edm" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"edA" = ( -/obj/structure/ladder, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"edI" = ( -/obj/structure/dresser, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"edO" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"edS" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"edT" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"edX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Curator's Desk" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/library, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"edZ" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/ai_monitored/turret_protected/ai) -"eea" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"eee" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"eem" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"eep" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"eey" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/effect/turf_decal/bot, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"eeB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"eeC" = ( -/obj/item/paperplane, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"eeL" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"eeN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/up, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"eeP" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"eeQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"efa" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"efb" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"efe" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"efn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/mecha_part_fabricator{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"efr" = ( -/obj/structure/table, -/obj/item/gun/ballistic/revolver/russian, -/obj/machinery/light/dim, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"efz" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"efF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"efW" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"efX" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"efY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"egx" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"egz" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"egD" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"egG" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/thinplating_new/corner{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"egJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"ehg" = ( -/obj/machinery/fax{ - fax_name = "Cargo Office"; - name = "Cargo Office Fax Machine" - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"ehh" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/west, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"ehk" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"ehl" = ( -/obj/effect/turf_decal/trimline/purple/warning, -/obj/machinery/light/red/dim/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"ehm" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"eho" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ehr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/electronics/apc{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/electronics/apc, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"ehu" = ( -/obj/structure/chair/sofa/corp{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"ehA" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"ehD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"ehG" = ( -/turf/closed/wall, -/area/station/cargo/miningdock) -"ehL" = ( -/obj/machinery/atmospherics/components/binary/crystallizer{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"ehO" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"ehQ" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/table/reinforced, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"ehR" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Departure Lounge Security Post" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"ehX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/command/teleporter) -"eir" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"eiw" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-13"; - location = "3-12" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"eiD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"eiJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"eiM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"eiO" = ( -/obj/effect/turf_decal/stripes/end, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"eiP" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/textured_edge, -/area/station/medical/abandoned) -"eiV" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/service/chapel) -"ejb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"ejl" = ( -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/storage/toolbox/mechanical, -/obj/item/knife, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"ejr" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"ejE" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"ejF" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"ejG" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"ejI" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"ejK" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"ejN" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/port/aft) -"ejP" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"ejS" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"ejZ" = ( -/obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/processor, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"ekj" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"ekk" = ( -/obj/structure/rack, -/obj/item/trash/boritos/red{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"eky" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ekB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ekI" = ( -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/atmos/hfr_room) -"ekY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/green/visible{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"ell" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"elB" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"elD" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"elE" = ( -/obj/effect/mapping_helpers/airlock/access/any/science/ordnance_storage, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Lab" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/siding/thinplating/dark/end{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"elI" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Departures" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"elX" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"ema" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"emg" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"emj" = ( -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron/corner, -/area/station/engineering/lobby) -"emk" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"eml" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"emp" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/blastoff_ampoule, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"emr" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"emu" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/effect/turf_decal/siding/wideplating, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"emv" = ( -/obj/machinery/camera{ - c_tag = "Atmos Tank #3 - Mixed Air"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"emx" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"emI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/science/genetics) -"emJ" = ( -/obj/item/kitchen/fork/plastic, -/turf/open/floor/iron, -/area/station/security/prison) -"emK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"emP" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"emS" = ( -/obj/machinery/door_buttons/access_button{ - dir = 1; - idDoor = "virology_airlock_exterior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_y = -24; - req_access = list("virology") - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 8; - pixel_y = 16 - }, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"emU" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"emV" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/item/card/id/advanced/prisoner/two, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"emZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"enl" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"enp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-7"; - location = "2-6" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"enB" = ( -/obj/machinery/door/window/brigdoor/left/directional/north, -/mob/living/basic/mothroach, -/turf/open/floor/noslip, -/area/station/maintenance/floor1/port) -"enE" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/gun/ballistic/revolver/russian, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"enF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"enJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/holopad, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"enX" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"enZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"eod" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"eoe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/button/door/directional/north{ - id = "public_toilets_a"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"eop" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"eov" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/flare, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"eoG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"eoI" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"eoL" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/closet/crate/bin{ - name = "biowaste bin" - }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"eoQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"epb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"epk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/box, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"epm" = ( -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/security/courtroom) -"eps" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"epu" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"epv" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"epz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"epB" = ( -/obj/machinery/destructive_scanner, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"epO" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/medical/pharmacy) -"epQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/marker_beacon/ten, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"eqa" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/structure/window/spawner/directional/east, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"eqk" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"eqs" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/conveyor_switch/oneway{ - id = "disposals" - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/maintenance/disposal) -"eqF" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"eqK" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"eqN" = ( -/obj/structure/table/reinforced, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"eqQ" = ( -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/construction) -"eqV" = ( -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"erp" = ( -/turf/open/floor/iron/smooth, -/area/station/hallway/floor4/aft) -"erN" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"erR" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Arrivals" - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"erU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"erY" = ( -/obj/machinery/vending/wardrobe/bar_wardrobe, -/turf/open/floor/wood, -/area/station/service/bar) -"esk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"ess" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"esu" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"esx" = ( -/obj/machinery/suit_storage_unit/atmos, -/obj/machinery/light/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/office) -"esz" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/airless, -/area/station/maintenance/disposal) -"esB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"esG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-0"; - location = "1-19" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"esH" = ( -/obj/effect/spawner/random/structure/crate, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"esR" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/food/grown/harebell, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"esV" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/power/energy_accumulator/tesla_coil/anchored, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible/layer2, -/obj/machinery/camera{ - c_tag = "Supermatter Engine Camera"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"etb" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/structure/rack, -/obj/item/stock_parts/power_store/cell/lead, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"etj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"etv" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"etA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"etV" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 6 - }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"eub" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"eud" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"euu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"euy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"euA" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"euC" = ( -/obj/structure/table/wood, -/obj/item/storage/bag/plants/portaseeder, -/obj/item/shovel/spade, -/turf/open/floor/grass, -/area/station/service/library/garden) -"euS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"euW" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"evi" = ( -/obj/machinery/door/airlock/science{ - name = "Monkey Atrium" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"evn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"evo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) -"evt" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"evB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/smooth_large, -/area/station/tcommsat/server) -"evI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"evN" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/circuitboard/machine/processor{ - pixel_y = 10 - }, -/obj/item/circuitboard/machine/oven, -/obj/item/circuitboard/machine/microwave{ - pixel_y = -10 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/vacant_room/commissary) -"evR" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/construction) -"evW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"ewd" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"ewm" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Genetics Lab" - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"ewp" = ( -/obj/effect/turf_decal/trimline/white/filled/corner{ - color = "#065C93"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/command/bridge) -"ewq" = ( -/obj/machinery/washing_machine, -/obj/machinery/status_display/ai/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"ewz" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/iron/smooth_edge, -/area/station/science/robotics/mechbay) -"ewA" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"ewB" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"ewH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"ewK" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"ewM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output, -/obj/effect/turf_decal/trimline/red/line, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"ewW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/railing/corner/end{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"ewY" = ( -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"exc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"exe" = ( -/obj/machinery/light/red/dim/directional/north, -/turf/open/openspace, -/area/station/maintenance/floor4/starboard/fore) -"exl" = ( -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"exp" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"exw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"exL" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"exN" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"eyk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/got_wood/directional/west, -/turf/open/floor/wood, -/area/station/maintenance/floor1/port/aft) -"eyo" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"eys" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"eyB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eyJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/library/lounge) -"eyO" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"eyV" = ( -/obj/machinery/door/airlock/public{ - name = "Arcade" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"eyY" = ( -/obj/machinery/requests_console/directional/north{ - department = "Tool Storage"; - name = "Tool Storage Requests Console" - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/storage/primary) -"ezd" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/machinery/duct, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"ezi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/storage/primary) -"ezm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"ezw" = ( -/obj/machinery/shower/directional/west, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/entry) -"ezy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"ezC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"ezF" = ( -/obj/structure/transit_tube/horizontal{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"ezH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/electrolyzer, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"ezI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"ezK" = ( -/obj/machinery/iv_drip, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"ezM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"ezQ" = ( -/obj/structure/railing/corner/end{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"ezR" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"ezX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"eAa" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Science - Foyer #3" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"eAi" = ( -/obj/machinery/light_switch/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet) -"eAl" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/frame/machine, -/obj/item/seeds/cannabis, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"eAm" = ( -/obj/structure/cable, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"eAr" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"eAv" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"eAE" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"eAP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"eAV" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/item/lighter/greyscale, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"eAY" = ( -/obj/machinery/button/door/directional/south{ - id = "nsminingdorm3"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/carpet/blue, -/area/station/cargo/miningdock) -"eBf" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/table/glass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/storage/box/beakers{ - pixel_x = 12; - pixel_y = 6 - }, -/obj/item/flashlight/lamp{ - pixel_x = -7; - pixel_y = 5 - }, -/turf/open/floor/iron, -/area/station/science/cytology) -"eBg" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"eBo" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"eBu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"eBy" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"eBM" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"eBQ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"eBT" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/suit_storage_unit/ce, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"eBY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/mob/living/carbon/human/species/monkey{ - name = "Banana" - }, -/turf/open/floor/grass, -/area/station/medical/virology) -"eCf" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 1 - }, -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"eCg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"eCj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"eCr" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"eCz" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Pen 4"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"eCD" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"eCJ" = ( -/obj/structure/railing, -/obj/structure/table, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"eCK" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"eCM" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/command/nuke_storage) -"eCO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"eCP" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"eCQ" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"eDe" = ( -/turf/closed/wall, -/area/station/hallway/floor3/fore) -"eDj" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"eDl" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"eDm" = ( -/obj/machinery/light/cold/directional/east, -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"eDt" = ( -/obj/effect/turf_decal/trimline/purple/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"eDC" = ( -/obj/machinery/light/cold/directional/south, -/turf/open/openspace, -/area/station/medical/pharmacy) -"eEd" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Ancient Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/gateway, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"eEf" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, -/area/station/service/library/printer) -"eEn" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/easel, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, -/area/station/security/prison/work) -"eEp" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"eEr" = ( -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"eEu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"eEA" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"eEB" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"eEE" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"eEN" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"eEQ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/checker, -/area/station/commons/locker) -"eET" = ( -/obj/structure/filingcabinet/medical, -/turf/open/floor/iron/dark/corner, -/area/station/service/lawoffice) -"eEZ" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/button/door/directional/west{ - id = "med_lockdown"; - name = "Medbay Lockdown Shutters"; - req_access = list("medical") - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"eFc" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/cargo/miningdock) -"eFe" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"eFq" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/ai_monitored/command/storage/eva) -"eFr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"eFz" = ( -/obj/structure/chair/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"eFC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"eFJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"eFO" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/science/cytology) -"eFY" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"eGb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, -/obj/machinery/meter, -/turf/open/floor/iron/dark/textured_half, -/area/station/engineering/supermatter/room) -"eGl" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"eGp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"eGr" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"eGF" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/machinery/light/cold/no_nightlight/directional/south, -/obj/structure/closet/radiation, -/turf/open/floor/iron/white, -/area/station/science/lower) -"eGK" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"eGQ" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"eHc" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/genetics) -"eHf" = ( -/obj/machinery/light/floor, -/turf/open/floor/engine, -/area/station/science/cytology) -"eHk" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"eHr" = ( -/obj/machinery/button/door/directional/north{ - id = "stationawaygate"; - name = "Gateway Shutters"; - req_access = list("gateway") - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor4/fore) -"eHD" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"eHG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"eHK" = ( -/obj/effect/turf_decal/trimline/white/line, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/monitored/air_output, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"eHN" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/chapel) -"eHT" = ( -/obj/machinery/firealarm/directional/east, -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"eHU" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"eHW" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"eHX" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Arrivals" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) -"eIb" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/trimline/white/filled/line{ - color = "#065C93"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/bridge) -"eIg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/machinery/turretid{ - control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; - icon_state = "control_stun"; - name = "AI Upload turret control"; - pixel_y = 28 - }, -/obj/machinery/computer/security/telescreen/aiupload/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"eIq" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"eIr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"eIs" = ( -/obj/machinery/airlock_sensor/incinerator_ordmix{ - pixel_x = 24 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/pump/off/general{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"eIt" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/hfr_room) -"eIw" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/office) -"eIK" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"eIU" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"eIW" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"eJc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"eJd" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"eJl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 10 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"eJs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"eJy" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/obj/effect/turf_decal/weather/dirt{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison/garden) -"eJF" = ( -/obj/machinery/airalarm/directional/south, -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"eJU" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"eJX" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/item/radio/intercom/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/command/teleporter) -"eKd" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Applied Mechanics" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/science/auxlab) -"eKe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/checkpoint) -"eKf" = ( -/obj/item/radio/intercom/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"eKg" = ( -/obj/effect/turf_decal/box/white{ - color = "#EFB341" - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"eKk" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eKl" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"eKn" = ( -/obj/machinery/telecomms/broadcaster/preset_right, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"eKp" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"eKB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/sink/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"eKC" = ( -/turf/closed/wall, -/area/station/science/xenobiology/hallway) -"eKD" = ( -/obj/structure/railing{ - dir = 5 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"eKY" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"eLd" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor3/fore) -"eLe" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"eLg" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"eLq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"eLt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/emitter/welded, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"eLw" = ( -/turf/closed/wall, -/area/station/commons/vacant_room/commissary) -"eLB" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/space_heater/improvised_chem_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"eLC" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/junction, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"eLF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/waste) -"eLK" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"eLQ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/machinery/rnd/production/circuit_imprinter, -/obj/machinery/firealarm/directional/south, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/camera{ - c_tag = "Engineering Foyer #2"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/lobby) -"eLS" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/radio/intercom/directional/south, -/obj/machinery/bci_implanter, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"eMg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"eMi" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/item/radio/intercom/directional/west, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet) -"eMp" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"eMR" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"eNa" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/white{ - pixel_y = -5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"eNi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"eNj" = ( -/turf/closed/wall/r_wall, -/area/station/security/mechbay) -"eNk" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"eNo" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"eNw" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"eNM" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/misc/snow/actually_safe{ - icon_state = "snow4" - }, -/area/station/hallway/floor2/fore) -"eNN" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/white, -/area/station/cargo/miningdock) -"eNS" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/restroom/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"eNX" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"eNY" = ( -/obj/effect/turf_decal/trimline/green/corner{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"eOf" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) -"eOh" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"eOy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"eOz" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/storage) -"eOC" = ( -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"eOP" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/floor4/aft) -"eOY" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ePa" = ( -/turf/closed/wall/r_wall, -/area/station/science/lab) -"ePp" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"ePs" = ( -/obj/structure/railing/corner, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ePv" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/commons/locker) -"ePH" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"ePJ" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"ePM" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-3"; - location = "3-2" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"ePT" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"ePU" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/prison/garden) -"ePV" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"ePY" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/pod, -/area/station/hallway/secondary/entry) -"eQd" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/pdapainter/security, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"eQe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"eQi" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 4 - }, -/obj/machinery/flasher/directional/east{ - name = "drunktank" - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"eQm" = ( -/obj/structure/chair/sofa/left{ - dir = 8 - }, -/obj/item/toy/plush/beeplushie{ - desc = "A cute bee toy to calm down hysteric patients."; - name = "Bee Haave" - }, -/turf/open/floor/wood, -/area/station/medical/psychology) -"eQD" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/bot, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"eQG" = ( -/obj/effect/turf_decal/caution, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit) -"eQH" = ( -/turf/closed/wall/r_wall, -/area/station/medical/psychology) -"eQN" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/computer/security{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"eQP" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"eQZ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos) -"eRe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"eRu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"eRZ" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"eSa" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"eSc" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"eSn" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"eSq" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"eSw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eSx" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Escape Airlock" - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"eSI" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"eSJ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"eSP" = ( -/obj/structure/bed/double, -/obj/effect/spawner/random/bedsheet/double, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/shaft_miner, -/turf/open/floor/carpet, -/area/station/cargo/miningdock) -"eSX" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/obj/structure/window/spawner/directional/west, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"eTa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"eTd" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/aft) -"eTp" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"eTr" = ( -/obj/structure/chair/sofa/corner/brown{ - dir = 1 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"eTH" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/mob/living/carbon/human/species/monkey, -/turf/open/floor/grass, -/area/station/science/genetics) -"eTJ" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/east, -/obj/structure/sign/poster/random/directional/north, -/obj/effect/landmark/start/paramedic, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"eTQ" = ( -/obj/structure/chair/stool/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/medical/abandoned) -"eTR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"eTT" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood, -/area/station/service/theater) -"eTV" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"eUn" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"eUp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-6"; - location = "3-5" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"eUq" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/shower/directional/north, -/obj/effect/turf_decal/trimline/green/end{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"eUx" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/closet/l3closet/scientist, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"eUJ" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/obj/structure/railing/corner/end/flip{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"eUM" = ( -/obj/structure/spider/stickyweb, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"eUT" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"eUU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/security/brig) -"eUW" = ( -/obj/structure/railing, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eUX" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/station/medical/psychology) -"eUZ" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/item/food/gumball, -/obj/item/food/gumball, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"eVh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"eVk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eVl" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 6 - }, -/obj/structure/closet/crate/science{ - name = "Protein Collection Supplies" - }, -/obj/item/clothing/gloves/butchering, -/obj/item/knife/hunting, -/obj/item/gun/energy/laser/retro/old, -/obj/item/paper{ - default_raw_text = "Just do what comes natural -J"; - name = "odd note" - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"eVo" = ( -/obj/machinery/suit_storage_unit/captain, -/obj/machinery/light/directional/north, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"eVN" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eVQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"eVV" = ( -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"eWb" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/barricade/wooden/crude, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"eWg" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/prison) -"eWl" = ( -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"eWC" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"eWI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"eWS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"eWV" = ( -/obj/structure/stairs/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"eWW" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"eXg" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing/corner/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"eXi" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"eXp" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"eXy" = ( -/turf/closed/wall, -/area/station/science/breakroom) -"eXB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"eXL" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "ai_sat" - }, -/obj/machinery/door/airlock/hatch{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"eXR" = ( -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 1 - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/mid_joiner{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"eXT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"eYa" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"eYh" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/obj/item/radio/intercom, -/obj/effect/turf_decal/trimline/blue/corner, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"eYj" = ( -/obj/structure/lattice/catwalk, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"eYm" = ( -/obj/machinery/door/airlock/hatch{ - name = "Psych Office Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"eYp" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"eYq" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"eYw" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"eYL" = ( -/obj/structure/table/reinforced, -/obj/item/mmi{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/mmi{ - pixel_y = 4 - }, -/obj/item/mmi{ - pixel_x = 5 - }, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"eYN" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"eYQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"eYY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/built/directional/south, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) -"eZa" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"eZu" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"eZA" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"eZD" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"eZQ" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"fae" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/camera/autoname/directional/south, -/obj/effect/landmark/start/psychologist, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"faq" = ( -/obj/effect/turf_decal/trimline/purple/end, -/obj/machinery/shower/directional/south, -/turf/open/floor/noslip{ - icon_state = "textured_dark" - }, -/area/station/science/robotics/lab) -"faw" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/departure_lounge) -"fax" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/machinery/telecomms/bus/preset_four, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"faA" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"faL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/freezer, -/obj/effect/spawner/random/medical/memeorgans, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"faM" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"faP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"faS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"fbd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/small/red/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"fbe" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/openspace, -/area/station/science/xenobiology/hallway) -"fbl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/light/small/directional/west, -/obj/machinery/power/smes/full, -/turf/open/floor/plating, -/area/station/engineering/gravity_generator) -"fbo" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/rack, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"fbt" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"fbC" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"fbD" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"fbO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/lobby) -"fbV" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/abandoned) -"fcp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/meter, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"fcz" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"fcC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/construction) -"fcS" = ( -/obj/machinery/camera{ - c_tag = "Atmos Tank #6 - N2O"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"fdp" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"fdr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"fdx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 - }, -/area/station/cargo/miningdock) -"fdB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/start/warden, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"fdG" = ( -/obj/effect/turf_decal/trimline/white/filled/corner{ - color = "#065C93" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/command/bridge) -"fdW" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "surg_a_privacy"; - name = "Surgery Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/surgery/fore) -"fdX" = ( -/obj/item/stack/sheet/iron, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"fey" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/machinery/button/elevator/directional/west{ - id = "fore_vator" - }, -/obj/machinery/lift_indicator/directional/west{ - linked_elevator_id = "fore_vator"; - pixel_y = -4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"feH" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/science/robotics/lab) -"feP" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"feR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"feX" = ( -/turf/open/openspace, -/area/station/hallway/floor2/fore) -"ffb" = ( -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"ffe" = ( -/turf/closed/wall/r_wall, -/area/station/security/holding_cell) -"ffh" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"ffi" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/cultivator, -/obj/item/stack/cable_coil, -/obj/item/clothing/glasses/science, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"ffv" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"ffz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"ffA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/duct, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"ffD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"ffN" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"ffV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"ffZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/effect/landmark/start/janitor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"fgr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"fgz" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/reagent_containers/cup/rag, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"fgB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"fgD" = ( -/turf/open/floor/iron/white/corner, -/area/station/hallway/floor2/fore) -"fgN" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/office) -"fhl" = ( -/obj/structure/bed{ - dir = 1 - }, -/obj/item/toy/plush/snakeplushie{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/bedsheet/purple{ - dir = 1 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/purple, -/area/station/commons/dorms/apartment1) -"fho" = ( -/obj/machinery/computer/crew{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"fhp" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"fhr" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"fhv" = ( -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark/corner, -/area/station/security/brig) -"fhx" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) -"fhy" = ( -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/turf_decal/caution/white{ - pixel_y = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"fhA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"fhC" = ( -/obj/structure/closet/l3closet/virology, -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 5 - }, -/obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"fhG" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"fhN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"fhO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"fhX" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"fhZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"fij" = ( -/obj/effect/spawner/structure/window/hollow/middle, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"fio" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"fiw" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"fix" = ( -/obj/structure/chair/wood, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"fiz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/tile/light, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"fiA" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"fiI" = ( -/obj/structure/closet, -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/spawner/random/exotic/tool, -/obj/effect/spawner/random/maintenance/two, -/obj/item/stack/cable_coil, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"fiO" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit) -"fiT" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"fiX" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/assistant, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"fja" = ( -/turf/closed/wall/r_wall, -/area/station/science/lobby) -"fje" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/security/prison/garden) -"fji" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Chemistry Lab"; - req_access = list("plumbing") - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"fjo" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"fjq" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"fjv" = ( -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"fjx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/turf_decal/trimline/green/end{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"fjD" = ( -/obj/structure/chair/sofa/right/brown{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"fjF" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"fjG" = ( -/obj/machinery/computer/atmos_control/nitrogen_tank, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"fjK" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark/side, -/area/station/command/teleporter) -"fjN" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/cargo/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"fjQ" = ( -/obj/machinery/button/flasher{ - id = "virosec_flash"; - pixel_x = -26 - }, -/obj/effect/turf_decal/trimline/red/filled/end{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"fjS" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"fkf" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"fkj" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock{ - name = "Service Hall" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"fko" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fkp" = ( -/obj/structure/chair/pew/left{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"fkv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"fkA" = ( -/turf/closed/wall/r_wall, -/area/station/security/execution/education) -"fkD" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/turf_decal/trimline/red/warning{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"fkE" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/light_construct/directional/north, -/obj/item/bot_assembly/floorbot, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"fkG" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) -"fkJ" = ( -/obj/item/stack/tile/pod, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"fkL" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/trimline/blue, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"fkN" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/recharger, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"fkW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"flf" = ( -/obj/machinery/button/door/directional/east{ - id = "psy"; - name = "Window Privacy" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"fli" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"flk" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/obj/structure/window/spawner/directional/east, -/obj/item/flashlight/lamp/green{ - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"fll" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/table/wood, -/turf/open/floor/wood/tile, -/area/station/service/library) -"flx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/hangover, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"flD" = ( -/obj/machinery/smartfridge, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "viro-inner"; - name = "Virology Inner Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/virology) -"flN" = ( -/obj/machinery/duct, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/cargo/miningdock) -"flS" = ( -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"flX" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"fmb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"fmg" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/engineering/storage/tcomms) -"fmk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"fmq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output, -/obj/effect/turf_decal/trimline/purple/line, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"fmx" = ( -/obj/structure/table, -/obj/item/paper_bin/carbon{ - pixel_x = -2; - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"fmE" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"fmF" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"fmG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"fmK" = ( -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron, -/area/station/commons/toilet) -"fmN" = ( -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"fmO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"fna" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-1"; - location = "1-0" - }, -/mob/living/simple_animal/bot/secbot/beepsky/officer{ - name = "Beepsky the First" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"fnq" = ( -/obj/machinery/button/door/directional/south{ - id = "radshutnorth" - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"fnB" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/west, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"fnF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"fnL" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/machinery/power/port_gen/pacman/pre_loaded, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat/service) -"fnM" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/starboard/fore) -"fnO" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 5 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"fnS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/atmos) -"fnT" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-3"; - location = "1-2" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"fnW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"foa" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/machinery/door/window/left/directional/north{ - name = "Fitness Room" - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"fod" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/flashlight/flare/candle, -/turf/open/floor/iron, -/area/station/service/chapel) -"foh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"fok" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"fou" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/chair/plastic, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"fov" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"foB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"foF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"foI" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"foK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"foL" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"foT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"fpb" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"fpg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"fpn" = ( -/obj/structure/chair/office, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"fpp" = ( -/obj/structure/table/wood, -/obj/item/paint_palette, -/obj/item/paint_palette, -/obj/item/paint_palette, -/obj/machinery/light/directional/north, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"fps" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"fpD" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"fpF" = ( -/obj/structure/table, -/obj/structure/reagent_dispensers/servingdish, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"fpH" = ( -/obj/structure/table, -/obj/item/folder/blue{ - pixel_y = 2 - }, -/obj/item/pen, -/obj/item/radio/off{ - pixel_x = -6; - pixel_y = 7 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"fpN" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"fpU" = ( -/turf/open/floor/glass, -/area/station/service/library) -"fpW" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"fqe" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/gravity_generator) -"fqg" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"fqn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"fqo" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"fqu" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"fqx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"fqE" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"fqJ" = ( -/obj/structure/closet/bombcloset/security, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 9 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"fqP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"frw" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/machinery/plumbing/input{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"fry" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"frz" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/structure/rack, -/obj/item/storage/box/syringes{ - pixel_y = 3 - }, -/obj/item/storage/box/beakers, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"frL" = ( -/turf/closed/wall, -/area/station/engineering/gravity_generator) -"frU" = ( -/obj/structure/filingcabinet/chestdrawer{ - pixel_y = 2 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"frV" = ( -/obj/structure/weightmachine, -/obj/effect/turf_decal/stripes, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/smooth_large, -/area/station/medical/psychology) -"frW" = ( -/turf/closed/wall, -/area/station/service/theater) -"fsg" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"fst" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/vault, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) -"fsu" = ( -/obj/structure/girder/displaced, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"fsv" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"fsD" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"fsI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fsJ" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/ai_upload) -"fsK" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"fsR" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"fsY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"ftl" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"ftp" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/antiweed, -/obj/item/grenade/chem_grenade/antiweed, -/obj/item/grenade/chem_grenade/antiweed, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/watertank, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_y = 3 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"ftt" = ( -/obj/structure/table, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/item/radio/intercom/directional/west, -/obj/effect/spawner/random/engineering/tool{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/effect/spawner/random/engineering/tool{ - pixel_x = 1; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"ftu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"ftv" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"ftJ" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"ftT" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"ftZ" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"fuq" = ( -/obj/structure/closet/wardrobe/grey, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"fur" = ( -/obj/machinery/destructive_scanner, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"fuy" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/red/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"fuH" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"fuI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"fuJ" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "ExoDrone Launchbay" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/cargo/drone_bay) -"fvb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"fve" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shieldgen, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"fvr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"fvx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"fvy" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/effect/turf_decal/trimline/red, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"fvA" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance-aft" - }, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig Aft Entrance" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/obj/machinery/scanner_gate/preset_guns, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"fvD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"fvJ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"fvO" = ( -/obj/structure/sign/departments/cargo/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"fvV" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/machinery/gulag_item_reclaimer{ - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"fwb" = ( -/obj/structure/frame/computer{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"fwj" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"fws" = ( -/obj/machinery/button/door/directional/north{ - id = "radshutsouth" - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"fwJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"fwK" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, -/area/station/commons/locker) -"fwM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-0"; - location = "2-19" - }, -/mob/living/basic/bot/medbot/autopatrol, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"fwV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"fxd" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"fxm" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"fxo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"fxG" = ( -/obj/machinery/vending/cola/pwr_game, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"fxI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"fxS" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/space) -"fxT" = ( -/obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/storage/fancy/donut_box, -/obj/machinery/status_display/ai/directional/south, -/obj/item/binoculars, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"fyb" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"fyg" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"fyQ" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"fyT" = ( -/obj/structure/cable, -/obj/machinery/modular_computer/preset/engineering{ - dir = 8 - }, -/obj/machinery/light_switch/directional/north, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fzr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"fzw" = ( -/turf/open/floor/wood/tile, -/area/station/service/library) -"fzy" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"fzB" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Main Power Connector" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"fzG" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"fzL" = ( -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"fzR" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aband_armour"; - name = "Armoury Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"fzU" = ( -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"fzV" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"fzY" = ( -/obj/item/weldingtool/mini, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"fzZ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/commons/locker) -"fAp" = ( -/obj/machinery/door/airlock{ - name = "Escape Pod B" - }, -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) -"fAy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"fAz" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/kitchen) -"fAP" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"fAT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"fAU" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"fBa" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"fBf" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/machinery/button/elevator/directional/east{ - id = "aft_vator" - }, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "aft_vator"; - pixel_y = -4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"fBk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"fBt" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/escape_pod) -"fBu" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"fBw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"fBA" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/trimline/white/filled/line{ - color = "#065C93" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/bridge) -"fBJ" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"fBM" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"fBO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"fBP" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"fBT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"fBX" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/trash/mess, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"fBY" = ( -/obj/structure/table, -/obj/item/stock_parts/scanning_module{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stock_parts/matter_bin, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"fCc" = ( -/obj/structure/stairs/north, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"fCq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"fCx" = ( -/obj/structure/rack, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"fCz" = ( -/obj/structure/rack, -/obj/item/storage/box/firingpins{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/firingpins, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/security/brig) -"fCA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"fCE" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Security - Foyer" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/brig) -"fCG" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fCH" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/machinery/newscaster/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fCM" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/engineering/toolbox, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"fCQ" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"fCS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"fCU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/item/stack/sheet/cardboard{ - amount = 14 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/security/prison/work) -"fDq" = ( -/obj/structure/sign/poster/contraband/atmosia_independence/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"fDv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"fDA" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/ai_slipper{ - uses = 10 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"fDF" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"fDI" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/range) -"fDM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"fDN" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library) -"fDO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/security, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"fDR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"fDS" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"fDT" = ( -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"fDZ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/cold/directional/south, -/obj/machinery/modular_computer/preset/cargochat/medical{ - dir = 1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/break_room) -"fEj" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/closed/wall, -/area/station/medical/treatment_center) -"fEn" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"fEp" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Worship Hall" - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"fEr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/robot_debris/down, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"fEv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"fED" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"fEG" = ( -/obj/structure/mineral_door/paperframe, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"fES" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/turf/open/floor/iron/dark/textured, -/area/station/medical/office) -"fEZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"fFo" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"fFt" = ( -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"fFu" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fFA" = ( -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"fFB" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"fFF" = ( -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"fFI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/dresser, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/qm) -"fFT" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"fFY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/gravity_generator) -"fGc" = ( -/obj/structure/sign/departments/engineering/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"fGi" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"fGm" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"fGn" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"fGt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"fGx" = ( -/obj/effect/turf_decal/trimline/dark_blue/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_blue/corner, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"fGy" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"fGD" = ( -/obj/structure/transit_tube/curved, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/floor4/aft) -"fGJ" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"fGK" = ( -/obj/structure/rack, -/obj/item/trash/champagne_cork{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"fGP" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"fGW" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/rack, -/obj/item/mop{ - pixel_x = -4 - }, -/obj/item/mop, -/obj/item/mop{ - pixel_x = 4 - }, -/obj/item/reagent_containers/cup/bucket, -/obj/item/reagent_containers/cup/bucket, -/obj/item/reagent_containers/cup/bucket, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron, -/area/station/service/janitor) -"fGX" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"fHb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fHd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"fHe" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Research and Development" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fHf" = ( -/obj/effect/turf_decal/arrows/white, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"fHy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fHz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"fHE" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"fHM" = ( -/obj/machinery/light/small/red/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"fHW" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"fIa" = ( -/obj/machinery/newscaster/directional/south, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"fIg" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"fIk" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"fIs" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"fIv" = ( -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical{ - pixel_y = 10 - }, -/obj/structure/table, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 1 - }, -/area/station/engineering/storage/tech) -"fIz" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"fID" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"fIF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/cannabis, -/obj/structure/table, -/obj/effect/spawner/random/maintenance/four, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"fIK" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fIM" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"fIU" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"fIX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/trimline/green/line{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"fJa" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"fJl" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"fJo" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fJw" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"fJy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"fJz" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/obj/structure/showcase/perfect_employee, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"fJA" = ( -/obj/structure/stairs/north, -/turf/open/floor/plating, -/area/station/medical/psychology) -"fJE" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/machinery/power/energy_accumulator/tesla_coil/anchored, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible/layer4, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"fJT" = ( -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"fJU" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"fJY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"fKd" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/spawner/random/structure/table_fancy, -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"fKi" = ( -/turf/open/floor/iron/textured_large, -/area/station/engineering/gravity_generator) -"fKr" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/rd) -"fKs" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"fKC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"fKH" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"fKL" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"fKS" = ( -/obj/structure/sink/directional/west, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"fKU" = ( -/obj/machinery/telecomms/receiver/preset_right, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"fKZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/closet/emcloset, -/obj/effect/landmark/start/hangover/closet, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"fLf" = ( -/obj/structure/window/spawner/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"fLn" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) -"fLu" = ( -/obj/structure/window/plasma/spawner/directional/east, -/obj/structure/window/plasma/spawner/directional/south, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, -/turf/open/floor/plating, -/area/station/science/server) -"fLv" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"fLx" = ( -/obj/structure/lattice/catwalk, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk, -/turf/open/space/openspace, -/area/space/nearstation) -"fLz" = ( -/obj/effect/turf_decal/stripes/end, -/obj/effect/turf_decal/stripes/white/end, -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/large, -/area/station/command/gateway) -"fLR" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 6 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"fMc" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"fMf" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"fMl" = ( -/obj/structure/ladder, -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/space/nearstation) -"fMm" = ( -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"fMs" = ( -/turf/open/floor/plating/airless, -/area/station/maintenance/floor3/port/aft) -"fMu" = ( -/obj/structure/girder/reinforced, -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/turf/open/floor/plating, -/area/station/science/cytology) -"fMB" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"fMY" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/machinery/shieldgen, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"fNe" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/medbay/alt/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"fNg" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"fNh" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"fNq" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"fNt" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"fNy" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 5 - }, -/obj/machinery/status_display/ai/directional/west, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"fNA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"fNK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fNL" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"fNT" = ( -/turf/closed/wall, -/area/station/hallway/floor2/fore) -"fNV" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"fNY" = ( -/obj/effect/decal/cleanable/robot_debris/up, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"fOg" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"fOj" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/command/teleporter) -"fOk" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"fOl" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"fOq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"fOu" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"fOw" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"fOA" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"fOH" = ( -/obj/machinery/monkey_recycler, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"fOI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"fOK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"fOR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"fOS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"fOU" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"fPf" = ( -/obj/effect/turf_decal/tile/blue/half, -/turf/open/floor/iron/textured_edge, -/area/station/medical/chemistry) -"fPj" = ( -/obj/machinery/barsign, -/turf/closed/wall, -/area/station/maintenance/floor3/starboard/fore) -"fPl" = ( -/obj/machinery/requests_console/directional/south{ - department = "Medbay"; - name = "Medbay Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical3, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"fPo" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"fPD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"fPH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"fPW" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"fPX" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"fQf" = ( -/obj/machinery/vending/autodrobe, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"fQi" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"fQj" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"fQl" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"fQm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"fQs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"fQv" = ( -/obj/structure/table/wood, -/obj/item/gavelblock, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"fQx" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"fQA" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"fQF" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/ai_monitored/command/storage/eva) -"fQH" = ( -/obj/structure/cable, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Coroner's Office"; - req_access = list("morgue_secure") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"fQQ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"fQY" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/pickaxe/improvised, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"fRa" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"fRd" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"fRm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"fRo" = ( -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"fRx" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port) -"fRy" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"fRA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"fRH" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"fRJ" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"fRN" = ( -/obj/machinery/light/cold/no_nightlight/directional/east, -/obj/structure/closet/l3closet/virology, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"fRS" = ( -/obj/machinery/air_sensor/incinerator_tank{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"fSi" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"fSv" = ( -/obj/machinery/door/airlock/atmos{ - name = "Hypertorus Fusion Reactor" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"fSA" = ( -/obj/structure/barricade/sandbags, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"fSO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"fSS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fSV" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction, -/obj/structure/noticeboard/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"fSX" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"fTa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/sandbags, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"fTb" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"fTd" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fTn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"fTo" = ( -/obj/structure/table/reinforced, -/obj/item/cautery{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/retractor{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/circular_saw{ - pixel_y = -4 - }, -/obj/item/radio/intercom/directional/east, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"fTu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"fTv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"fTE" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor1/port/aft) -"fTN" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"fTO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"fUg" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor2/aft) -"fUi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"fUk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"fUm" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"fUq" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/navigate_destination/det, -/obj/structure/sign/poster/official/report_crimes/directional/west, -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"fUv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"fUM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"fUT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"fUZ" = ( -/obj/effect/turf_decal/tile/red, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/corner, -/area/station/security/brig) -"fVe" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"fVf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 - }, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"fVi" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/effect/turf_decal/stripes/white/line, -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/machinery/module_duplicator, -/turf/open/floor/iron/dark, -/area/station/science/circuits) -"fVq" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"fVA" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"fVF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"fVV" = ( -/turf/closed/wall, -/area/station/service/chapel/funeral) -"fWa" = ( -/obj/effect/turf_decal/trimline/white/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 4; - pixel_y = 16 - }, -/obj/machinery/camera/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"fWc" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"fWf" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/engine/air, -/area/station/engineering/supermatter/waste) -"fWh" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"fWl" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/cake_ingredients, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"fWr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"fWz" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"fWD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"fWE" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/cargo/miningdock) -"fWY" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"fWZ" = ( -/obj/structure/table, -/obj/item/stack/sheet/plasteel/fifty, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"fXa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/blue/line, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"fXb" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"fXd" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/machinery/modular_computer/preset/engineering{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/lobby) -"fXm" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"fXq" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"fXr" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"fXs" = ( -/turf/closed/wall, -/area/station/maintenance/floor4/port) -"fXy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/power/smes/engineering, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"fXB" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"fXD" = ( -/obj/structure/chair/comfy/black, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"fXF" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"fXM" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/south{ - name = "Atmospherics Desk" - }, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Atmospherics Desk"; - req_access = list("atmospherics") - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/engineering/atmos/office) -"fXR" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"fXU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"fXV" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/effect/mapping_helpers/airlock/locked, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) -"fYa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"fYf" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"fYg" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/radio/intercom/directional/east, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/engineering/lobby) -"fYi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/secondary/entry) -"fYj" = ( -/obj/structure/chair, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"fYm" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"fYr" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"fYt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"fYu" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"fYw" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/auxlab) -"fYz" = ( -/turf/open/floor/plating, -/area/station/engineering/atmos/hfr_room) -"fYH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"fYJ" = ( -/obj/structure/chair/sofa/bench/left, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"fYM" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/flashlight/flare/candle{ - pixel_x = 1; - pixel_y = 7 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/food/ready_donk, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"fYR" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"fZg" = ( -/obj/structure/chair/sofa/bench, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"fZl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/service/library/private) -"fZn" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/turf/open/space/openspace, -/area/station/solars/starboard/aft) -"fZv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"fZC" = ( -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) -"fZI" = ( -/obj/structure/closet/firecloset/full, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"fZP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-1"; - location = "2-0" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"fZV" = ( -/obj/structure/grille, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"fZX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"fZZ" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"gaf" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"gaA" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"gaB" = ( -/obj/machinery/newscaster/directional/east, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen/fountain, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"gaC" = ( -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/structure/cable, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Warden's Desk"; - req_access = list("armory") - }, -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/north{ - name = "Warden's Desk" - }, -/obj/item/paper_bin{ - pixel_x = -6 - }, -/obj/structure/desk_bell{ - pixel_x = 7 - }, -/turf/open/floor/plating, -/area/station/security/warden) -"gaH" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"gaJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/vending/wallmed/directional/east, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"gaL" = ( -/turf/closed/wall, -/area/station/medical/patients_rooms) -"gaM" = ( -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) -"gaT" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"gaU" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"gaW" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"gaY" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gbh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"gbj" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"gbk" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"gbp" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/prison) -"gby" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"gbR" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"gbU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"gbW" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/west, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"gbZ" = ( -/obj/structure/bodycontainer/crematorium{ - dir = 8; - id = "crematorium_chapel" - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"gcf" = ( -/obj/structure/table/wood/poker, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/spawner/random/entertainment/coin, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"gcj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/shutters{ - id = "warehouseqm" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"gcm" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/item/pai_card, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"gcs" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/green/half, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/service/hydroponics/garden) -"gct" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"gcE" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 6 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"gcG" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"gcH" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"gdg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gdm" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"gdr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"gdt" = ( -/obj/item/stack/sheet/sandblock/five, -/obj/structure/table_frame/wood, -/obj/item/camera{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"gdA" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/shieldgen, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"gdM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"gdS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"gdY" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/light/directional/north, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"gdZ" = ( -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/disposals, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"geb" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard) -"gec" = ( -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor3/fore) -"gef" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"geh" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"gej" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/green/half, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/service/hydroponics/garden) -"gem" = ( -/obj/structure/table/wood, -/obj/item/camera, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library) -"geA" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"geD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"geH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"geL" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"geY" = ( -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor1/fore) -"geZ" = ( -/obj/machinery/camera{ - c_tag = "Atmos Tank #7 - Mixing Chamber"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"gfb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=4-2"; - location = "4-1" - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor4/fore) -"gfg" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"gfn" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) -"gfr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/departments/security/directional/east, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"gfD" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/aft) -"gfP" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/artgallery) -"gfQ" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_secure_all, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Secure Tech Storage"; - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 8 - }, -/area/station/engineering/storage/tech) -"ggd" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/aft) -"ggg" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"ggi" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"ggp" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/siding/yellow{ - dir = 8; - pixel_x = 15 - }, -/obj/structure/chair, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"ggD" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/light/cold/no_nightlight/directional/south, -/obj/machinery/light_switch/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"ggH" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/closet/secure_closet/atmospherics, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"ggO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/cargo/storage) -"ggQ" = ( -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"ggS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/checkpoint) -"ggW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"ggX" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"gha" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"ghg" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"gho" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"ghv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"ghy" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/machinery/cell_charger{ - pixel_y = 10 - }, -/obj/machinery/cell_charger{ - pixel_y = 1 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_y = 9; - pixel_x = -1 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -1 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"ghH" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/teleporter) -"ghJ" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"ghX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/blobstart, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"ghZ" = ( -/obj/structure/table, -/obj/item/inspector{ - pixel_x = -5; - pixel_y = 12 - }, -/obj/item/inspector{ - pixel_x = 5 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/office) -"gid" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"gih" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"gip" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/south, -/obj/structure/closet/secure_closet/freezer/empty{ - name = "sashimi fridge" - }, -/obj/item/fish/angelfish, -/obj/item/fish/guppy, -/obj/item/food/boiledrice, -/obj/item/food/boiledrice, -/obj/item/food/boiledrice, -/obj/item/food/boiledrice, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"giq" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/science/cytology) -"gir" = ( -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor4/fore) -"giv" = ( -/turf/closed/wall, -/area/station/service/janitor) -"giy" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/stairs/right{ - dir = 1 - }, -/area/station/command/heads_quarters/cmo) -"giC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"giQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"giV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"gja" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"gjb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"gjd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Transit Tube Access" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"gjf" = ( -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"gjh" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"gjn" = ( -/obj/structure/table, -/obj/item/stock_parts/matter_bin, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"gjq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"gjr" = ( -/obj/effect/spawner/structure/electrified_grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"gjy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"gjC" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"gjH" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"gjP" = ( -/obj/effect/turf_decal/trimline/white/filled/corner, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"gjR" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gkq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/checker, -/area/station/commons/locker) -"gkx" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gkI" = ( -/obj/machinery/field/generator, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"gkX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"gle" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"gll" = ( -/obj/machinery/door/airlock/security{ - name = "Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"glo" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"glp" = ( -/obj/effect/spawner/random/entertainment/drugs, -/obj/effect/spawner/random/entertainment/drugs, -/obj/structure/table, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/exit) -"glr" = ( -/obj/item/stack/sheet/glass/fifty, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"gls" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"glu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor3/aft) -"glw" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"glH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"glI" = ( -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"glN" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/armory, -/obj/machinery/door/airlock/security/glass{ - name = "Armoury" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/turf/open/floor/iron, -/area/station/security/brig) -"glY" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"gmj" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"gmk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"gmp" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"gmw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gmA" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"gmC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/machinery/airalarm/directional/south, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gmF" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Arrivals" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"gmH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"gmO" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"gmQ" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"gmW" = ( -/obj/effect/turf_decal/trimline/brown/arrow_ccw, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/cargo/lobby) -"gni" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/arcade_boards, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"gnj" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"gns" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"gnx" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Atmos Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/pumproom) -"gnL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"gnW" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Briefing Room" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/effect/turf_decal/tile/red/half, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"gnY" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/station_engineer, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"goe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"goh" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"gok" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"goy" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/item/wallframe/light_fixture{ - dir = 1 - }, -/obj/structure/table, -/turf/open/floor/iron/smooth, -/area/station/construction) -"goD" = ( -/obj/structure/rack, -/obj/item/restraints/legcuffs/bola/energy, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"goJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"goX" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "CMO Office" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"gpf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"gpg" = ( -/obj/machinery/door/airlock/atmos{ - name = "Incinerator" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"gph" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"gpt" = ( -/obj/structure/lattice/catwalk, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"gpu" = ( -/obj/machinery/door/airlock/silver{ - name = "Bathroom" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/command/heads_quarters/rd) -"gpA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/plate_press, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron, -/area/station/security/prison/work) -"gpM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/printer) -"gpW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/marker_beacon/jade, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"gpZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/directional/south, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "com_vator"; - pixel_y = -36 - }, -/obj/machinery/button/elevator/directional/south{ - id = "com_vator" - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"gqi" = ( -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"gqm" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"gqp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/shower/directional/east, -/obj/effect/turf_decal/stripes/full, -/turf/open/floor/noslip, -/area/station/engineering/supermatter/room) -"gqs" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/science/robotics/lab) -"gqF" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"gqI" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/prison) -"gqJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/floor2/starboard/aft) -"gqO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"gqP" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"gqU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"gqV" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"grb" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"grg" = ( -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"gri" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"grk" = ( -/obj/effect/landmark/start/roboticist, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"grv" = ( -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"grA" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"grD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) -"grE" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/window/reinforced/plasma/spawner/directional/west, -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"grI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"grN" = ( -/turf/closed/wall/r_wall, -/area/station/medical/paramedic) -"grW" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"grX" = ( -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"gsh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"gsn" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/chair/stool/bar/directional/east, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"gsp" = ( -/obj/machinery/door/airlock/medical{ - id_tag = "asylum_airlock_exterior"; - name = "Asylum Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"gss" = ( -/obj/machinery/computer/operating{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/south, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"gst" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"gsx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"gsy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"gsD" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"gsN" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"gsP" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"gsS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock{ - name = "Service Hall" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"gsV" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"gta" = ( -/obj/structure/closet{ - name = "Evidence Closet 2" - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"gts" = ( -/obj/item/rack_parts, -/obj/item/weldingtool/mini, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"gtt" = ( -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"gtu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"gtw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"gty" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 6 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"gtO" = ( -/obj/structure/closet/athletic_mixed, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"gtQ" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/suit_storage_unit/radsuit, -/obj/machinery/camera{ - c_tag = "Shared Engineering Storage #1"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/pumproom) -"gtX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, -/area/station/cargo/miningdock) -"guk" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"gup" = ( -/obj/structure/frame/machine{ - anchored = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit, -/area/station/science/cytology) -"guF" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"guI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"guQ" = ( -/turf/open/floor/engine/hull, -/area/station/maintenance/floor1/starboard/aft) -"guT" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/machinery/light/cold/no_nightlight/directional/east, -/turf/open/floor/grass, -/area/station/science/genetics) -"gvc" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/melee/baton/security/cattleprod, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"gvh" = ( -/obj/machinery/vending/snack/blue, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"gvj" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"gvn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/abandoned) -"gvp" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/airlock/public/glass{ - name = "Medbay" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/lobby) -"gvx" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, -/area/station/medical/office) -"gvM" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/table, -/obj/item/folder/white, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/explab) -"gvN" = ( -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/airlock/medical/glass{ - name = "Triage" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"gvO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"gvQ" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"gvU" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"gvX" = ( -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"gwb" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"gwe" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"gwl" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/spawner/random/trash/moisture_trap, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"gws" = ( -/obj/structure/railing, -/obj/effect/turf_decal/weather/dirt{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"gwz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/sign/departments/aisat/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor2/aft) -"gwE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/brig) -"gwH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/smooth_large, -/area/station/tcommsat/computer) -"gwL" = ( -/turf/closed/wall, -/area/station/maintenance/floor3/port/fore) -"gwN" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/hydroponics/constructable{ - anchored = 0 - }, -/obj/machinery/light/small/broken/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"gwT" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/spawner/random/engineering/tool, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"gxb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/multilayer/multiz, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"gxc" = ( -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"gxd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"gxf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"gxi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/textured, -/area/station/medical/paramedic) -"gxn" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"gxr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"gxH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"gxP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"gxQ" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"gxT" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/machinery/airalarm/directional/east, -/obj/item/multitool, -/obj/item/screwdriver, -/obj/item/wrench, -/obj/item/stack/cable_coil, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"gxU" = ( -/obj/machinery/vending/medical, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) -"gxW" = ( -/obj/effect/spawner/random/structure/crate, -/obj/item/storage/box/mousetraps, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"gxX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/chair, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"gyd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate/cardboard, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"gyf" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"gyp" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"gyr" = ( -/turf/closed/wall, -/area/station/service/kitchen) -"gyu" = ( -/obj/effect/turf_decal/trimline/white/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/arrow_ccw, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"gyy" = ( -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"gyz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"gyG" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"gyI" = ( -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"gyS" = ( -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"gyW" = ( -/obj/structure/weightmachine/weightlifter, -/obj/machinery/light/directional/east, -/turf/open/floor/noslip, -/area/station/commons/fitness) -"gyX" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"gzc" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/sign/directions/security/directional/west{ - dir = 2 - }, -/obj/structure/sign/directions/command/directional/west{ - dir = 2; - pixel_y = -8 - }, -/obj/structure/sign/directions/vault/directional/west{ - dir = 2; - pixel_y = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"gzt" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark, -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"gzv" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"gzw" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"gzM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/cytology) -"gzO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"gzT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/tcommsat/computer) -"gzU" = ( -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"gAe" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"gAf" = ( -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"gAg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"gAi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/brig) -"gAt" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"gAC" = ( -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/library) -"gAD" = ( -/obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/vending/wallmed/directional/south, -/turf/open/floor/iron/white, -/area/station/security/medical) -"gAP" = ( -/obj/item/reagent_containers/spray/syndicate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"gAT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"gAW" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"gBo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"gBp" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"gBr" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"gBs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/mop, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"gBu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"gBz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"gBG" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"gBK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/spawner/random/entertainment/plushie, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"gBN" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"gBU" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor4/fore) -"gBV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/directional/north{ - c_tag = "Medbay - Treatment Center"; - name = "medbay camera"; - network = list("ss13","medbay"); - dir = 2 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gBX" = ( -/obj/effect/turf_decal/trimline/blue/corner, -/obj/structure/window/spawner/directional/east, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 8 - }, -/obj/machinery/recharge_station, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/engineering/lobby) -"gCv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/button/door/directional/north{ - id = "disposals-launch"; - req_access = list("cargo") - }, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"gCw" = ( -/obj/machinery/vending/wardrobe/coroner_wardrobe, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"gCC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"gCD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"gCE" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"gCG" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/fore) -"gCH" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"gCM" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 10 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"gCP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/sign/departments/psychology/directional/west{ - name = "Asylum Entrance" - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"gDe" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"gDx" = ( -/turf/closed/wall, -/area/station/security/interrogation) -"gDy" = ( -/turf/closed/wall, -/area/station/maintenance/floor4/starboard) -"gDL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/random/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"gDM" = ( -/obj/effect/turf_decal/siding/wideplating, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"gDO" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"gDW" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"gEa" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"gEc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"gEe" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Third Deck Outpost" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"gEf" = ( -/turf/closed/wall, -/area/station/solars/port/aft) -"gEh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/warden, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"gEk" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"gEl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"gEv" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Genetics Lab" - }, -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"gEB" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"gEL" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"gET" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"gEW" = ( -/obj/machinery/computer/communications{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/station/command/bridge) -"gEZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"gFh" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"gFk" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/department/engine/atmos) -"gFz" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"gFO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"gFS" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"gFT" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Security - Office Aft" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"gGe" = ( -/obj/machinery/telecomms/bus/preset_one, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"gGi" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"gGp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"gGt" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"gGx" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/port/aft) -"gGA" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/machinery/button/door/directional/south{ - id = "workshop-sci"; - name = "shutters control" - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"gGB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/lead_pipe, -/obj/structure/closet/cardboard/metal, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"gGH" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"gGO" = ( -/obj/machinery/camera/directional/west, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"gGX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"gHi" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"gHk" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"gHp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/safety_internals/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"gHs" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"gHu" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"gHw" = ( -/obj/machinery/exodrone_launcher, -/obj/item/exodrone, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/drone_bay) -"gHB" = ( -/obj/item/clothing/suit/toggle/owlwings/griffinwings, -/obj/item/clothing/under/costume/griffin, -/obj/item/clothing/shoes/griffin, -/obj/structure/sign/poster/contraband/the_griffin/directional/north, -/obj/structure/closet/cabinet, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) -"gHJ" = ( -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"gHM" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"gHO" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"gHU" = ( -/obj/structure/rack, -/obj/item/storage/box/syringes, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/effect/turf_decal/box/white, -/obj/item/storage/bag/chemistry, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"gHV" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"gHY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"gIa" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/warning, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"gIb" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"gId" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/warning/pods/directional/east, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"gIf" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/station/service/theater) -"gIg" = ( -/obj/structure/table/wood, -/obj/item/airlock_painter/decal/tile{ - pixel_y = -5 - }, -/obj/item/airlock_painter, -/obj/item/airlock_painter/decal{ - pixel_y = 5 - }, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"gIh" = ( -/obj/structure/table/reinforced, -/obj/item/screwdriver{ - pixel_y = -3 - }, -/obj/item/multitool{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/stock_parts/micro_laser{ - pixel_y = 7 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/floor1/aft) -"gIl" = ( -/turf/closed/wall, -/area/station/command/teleporter) -"gIo" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "roboprivacy"; - name = "Robotics Shutters" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/south{ - name = "Robotics Lab"; - req_access = list("robotics") - }, -/obj/structure/desk_bell{ - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"gIs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"gIz" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"gIK" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"gJg" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/landmark/start/captain, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"gJl" = ( -/obj/machinery/computer/security/telescreen/engine_waste/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"gJm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"gJo" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/grimy, -/area/station/science/xenobiology/hallway) -"gJp" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/flashlight/lamp{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/effect/spawner/random/entertainment/coin, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"gJq" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"gJr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"gJs" = ( -/obj/machinery/door/airlock/hatch{ - name = "External Path Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"gJu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/navigate_destination/court, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"gJy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"gJz" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/modular_computer/preset/civilian{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"gJA" = ( -/obj/structure/rack, -/obj/item/restraints/handcuffs{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"gJI" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"gKa" = ( -/obj/effect/turf_decal/tile/dark/half/contrasted, -/obj/effect/turf_decal/tile/dark/half/contrasted, -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"gKg" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/gravity_generator) -"gKi" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"gKp" = ( -/obj/machinery/door/airlock/research{ - name = "Research Director's Experimentation Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"gKu" = ( -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_x = -1; - pixel_y = -3 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"gKy" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"gKG" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor1/fore) -"gKN" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/commons/locker) -"gKO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"gKV" = ( -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"gLb" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/plate, -/obj/item/food/donut/caramel{ - pixel_x = 1; - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"gLf" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"gLt" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/mob/living/simple_animal/bot/floorbot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"gLy" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Security - Warden's Office" - }, -/obj/structure/bed/dogbed/mcgriff, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/directional/east, -/mob/living/basic/pet/dog/pug/mcgriff, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"gLA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-13"; - location = "1-12" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"gLD" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"gLE" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"gLI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"gLK" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/pipe_dispenser, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"gMe" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_glass"; - name = "Bridge Blast Door" - }, -/turf/open/floor/plating, -/area/station/command/bridge) -"gMf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"gMi" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen/fountain, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"gMo" = ( -/obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/item/clothing/suit/hooded/ablative, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"gMs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/chapel) -"gMv" = ( -/obj/effect/mapping_helpers/airlock/access/any/science/ordnance, -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Stairway" - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"gMz" = ( -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"gMQ" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/stripes/box, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"gMZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"gNc" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"gNi" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "disposals" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"gNm" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/south, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"gNL" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/button/door/directional/south{ - id = "secmechbay"; - name = "Security Mech Garage Door Controls"; - req_access = list("security") - }, -/obj/effect/turf_decal/trimline/brown/filled/end{ - dir = 8 - }, -/obj/machinery/modular_computer/preset/cargochat/security{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/office) -"gNN" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard) -"gNS" = ( -/obj/structure/flora/rock, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) -"gNU" = ( -/obj/machinery/modular_computer/preset/id, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"gOd" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"gOf" = ( -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"gOp" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"gOx" = ( -/obj/machinery/computer{ - desc = "Looks like someone punched the keyboard until it stopped working."; - dir = 8; - name = "Shattered Records Console" - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"gOz" = ( -/obj/structure/grille/broken, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"gOF" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"gOO" = ( -/obj/structure/table, -/obj/machinery/newscaster/directional/east, -/obj/item/hand_labeler, -/obj/item/book/manual/chef_recipes{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"gOU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/end{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"gOZ" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/chem_mass_spec, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"gPb" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"gPc" = ( -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/engineering/lobby) -"gPr" = ( -/turf/open/floor/iron/textured_corner{ - dir = 1 - }, -/area/station/cargo/office) -"gPt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/medical/psychology) -"gPJ" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"gPR" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"gQa" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/canister, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"gQh" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"gQx" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/station/hallway/floor2/aft) -"gQy" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"gQA" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"gQI" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"gQO" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"gQU" = ( -/obj/structure/table/wood, -/obj/machinery/coffeemaker/impressa, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"gQV" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"gRf" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor1/aft) -"gRh" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"gRj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"gRw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"gRx" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"gRA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/weldingtool/mini, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"gRI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"gRQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"gSd" = ( -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"gSj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"gSk" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/textured_half, -/area/station/hallway/secondary/entry) -"gSn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"gSs" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"gSu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"gSw" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/white/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage/tech) -"gSx" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"gSD" = ( -/obj/structure/rack, -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/bulletproof_armor, -/obj/effect/spawner/random/armory/bulletproof_helmet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"gSS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"gTd" = ( -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"gTk" = ( -/obj/structure/stairs/south, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"gTp" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"gTs" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"gTt" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/structure/sign/departments/restroom/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"gTA" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"gTF" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"gTL" = ( -/obj/effect/turf_decal/trimline/purple/warning, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"gTR" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"gTT" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"gTW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{ - dir = 5 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"gTZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/computer/security/telescreen/engine_waste/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/pumproom) -"gUc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"gUp" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"gUs" = ( -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"gUH" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/laser_gun, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"gUO" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/purple, -/obj/item/radio/intercom/directional/south, -/obj/item/reagent_containers/cup/mortar, -/obj/item/pestle, -/turf/open/floor/iron/white, -/area/station/cargo/miningdock) -"gUR" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"gUS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/mech_bay_recharge_port{ - dir = 2 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/warehouse) -"gUT" = ( -/mob/living/basic/slime, -/turf/open/floor/grass, -/area/station/maintenance/floor3/starboard) -"gUX" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/server) -"gVm" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/recharge_station, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gVw" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"gVx" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"gVA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"gVI" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"gVR" = ( -/obj/machinery/camera/motion/directional/north{ - c_tag = "Armoury - Exterior" - }, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"gVS" = ( -/obj/structure/hedge, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) -"gWg" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"gWv" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"gWA" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/aft) -"gWF" = ( -/obj/effect/landmark/start/prisoner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"gWN" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"gWU" = ( -/obj/machinery/computer/security/labor, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"gWY" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"gWZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"gXi" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"gXl" = ( -/obj/machinery/computer/cargo{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"gXo" = ( -/obj/structure/punching_bag, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"gXp" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"gXs" = ( -/obj/structure/flora/bush/grassy/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"gXG" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"gXH" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"gXM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32; - spawn_loot_chance = 50 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"gXO" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"gXW" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"gYa" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 4; - pixel_x = -15 - }, -/obj/effect/landmark/start/assistant, -/obj/structure/chair, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"gYb" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/port/aft) -"gYc" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/screwdriver, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"gYe" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"gYh" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"gYj" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"gYt" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"gYI" = ( -/obj/structure/fluff/shower_drain, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"gYN" = ( -/obj/machinery/airalarm/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side, -/area/station/commons/locker) -"gYO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"gYS" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/floor4/fore) -"gYX" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"gZf" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/table, -/turf/open/floor/iron/white/side, -/area/station/hallway/floor2/fore) -"gZm" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"gZn" = ( -/obj/structure/table/bronze, -/obj/item/storage/fancy/candle_box{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/storage/fancy/candle_box{ - pixel_x = -2; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/station/service/chapel) -"gZu" = ( -/turf/open/floor/iron/white, -/area/station/science/lobby) -"gZG" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"gZL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"gZQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ - dir = 1 - }, -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hab" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "cmoshutter"; - name = "CMO Privacy Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) -"hah" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 - }, -/area/station/cargo/miningdock) -"hai" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/rack, -/obj/item/stack/sheet/iron/ten, -/obj/item/circuitboard/machine/exoscanner, -/obj/item/circuitboard/machine/exoscanner, -/obj/item/circuitboard/machine/exoscanner, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/corner, -/area/station/cargo/drone_bay) -"haj" = ( -/obj/effect/landmark/start/psychologist, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"har" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"has" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"hat" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"hav" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/turf/open/floor/wood/tile, -/area/station/service/library) -"hax" = ( -/obj/machinery/photobooth, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"haB" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/iv_drip, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"haK" = ( -/turf/open/floor/plating, -/area/station/engineering/lobby) -"haL" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/grass, -/area/station/science/genetics) -"haM" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"haS" = ( -/obj/structure/fluff/paper/stack{ - desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging."; - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"haV" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"haW" = ( -/obj/structure/table/bronze, -/obj/item/book/bible, -/turf/open/floor/iron, -/area/station/service/chapel) -"hbe" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/spawner/random/engineering/canister, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"hbg" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"hbi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"hbj" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Smoking Area" - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"hbk" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"hbl" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"hbm" = ( -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"hbs" = ( -/obj/effect/turf_decal/trimline/green/corner{ - dir = 1 - }, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"hbw" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/commons/locker) -"hbz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"hbN" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"hbS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"hbW" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/closet/firecloset, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"hbX" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"hca" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"hch" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"hci" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"hcj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"hcr" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/station/science/robotics/mechbay) -"hct" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hcF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"hcO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/commons/locker) -"hcR" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"hcT" = ( -/turf/open/openspace, -/area/station/maintenance/floor3/port/aft) -"hdg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"hdh" = ( -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/apartment1) -"hdj" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"hds" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"hdx" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"hdy" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"hdz" = ( -/obj/structure/curtain/cloth, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"hdA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"hdL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"hdN" = ( -/obj/structure/sign/painting/large/library{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/artgallery) -"hdS" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/structure/sink/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"hdX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"hee" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"heg" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"hem" = ( -/obj/effect/turf_decal/trimline/brown/arrow_ccw{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/cargo/lobby) -"hep" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 10 - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"hex" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"heC" = ( -/obj/structure/rack, -/obj/effect/spawner/random/clothing/costume, -/obj/item/clothing/mask/balaclava, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"heF" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"heI" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"heR" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "chem-lock-f"; - name = "Chemistry Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"heY" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"hfb" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"hfd" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/white, -/area/station/security/medical) -"hfe" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/trash/mess, -/obj/effect/spawner/random/trash/box, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"hfm" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"hfz" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"hfC" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"hfD" = ( -/obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"hfE" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"hfO" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"hge" = ( -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"hgn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"hgB" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"hgC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"hgD" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"hgE" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"hgK" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"hgM" = ( -/obj/machinery/libraryscanner, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/carpet/red, -/area/station/service/library) -"hgN" = ( -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 8 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"hgQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/floor2/starboard/aft) -"hgS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hhb" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"hhf" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/aft) -"hhk" = ( -/obj/structure/foamedmetal, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"hhl" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"hhw" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"hhx" = ( -/turf/closed/wall, -/area/station/hallway/secondary/exit) -"hhz" = ( -/obj/machinery/computer/turbine_computer{ - dir = 8; - mapping_id = "main_turbine" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"hhI" = ( -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/siding/dark_blue, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters/window{ - id = "stationawaygate"; - name = "Gateway Access Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"hhQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/security/prison) -"hhX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"hic" = ( -/obj/item/bodybag, -/obj/structure/closet/crate, -/obj/effect/spawner/random/medical/surgery_tool, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"hio" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"hip" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"hit" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom, -/obj/item/paper/fluff/jobs/engineering/frequencies, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"hiu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"hiD" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"hiF" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"hiJ" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) -"hiQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"hiU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"hjd" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/effect/landmark/start/chemist, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"hje" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"hjg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"hjr" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"hjs" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"hjx" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"hjz" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"hjE" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/turf/open/space/basic, -/area/space/nearstation) -"hjF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/library) -"hjH" = ( -/obj/structure/chair/comfy, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/start/depsec/medical, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"hjK" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/psychology) -"hjN" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"hjP" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"hjV" = ( -/obj/item/stack/sheet/iron, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"hkd" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 4 - }, -/obj/vehicle/ridden/secway, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"hke" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"hkq" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"hkw" = ( -/turf/open/floor/iron/white/side{ - dir = 6 - }, -/area/station/hallway/floor2/fore) -"hkK" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lab) -"hkV" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"hkZ" = ( -/obj/machinery/door/airlock{ - name = "Service Hall" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"hle" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"hlo" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"hlG" = ( -/obj/structure/closet/mini_fridge{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment2) -"hlP" = ( -/obj/machinery/button/door/directional/north{ - id = "mechbay"; - name = "Mech Bay Shutters Control"; - req_access = list("robotics") - }, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) -"hlU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/library) -"hlX" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/chair/sofa/right/brown{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"hma" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_y = 10 - }, -/obj/item/airlock_painter/decal/tile, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"hmn" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/fore) -"hmu" = ( -/obj/structure/dresser, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"hmH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"hmJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"hmM" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"hmN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 10 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"hmX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"hnb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/stairs{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) -"hng" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"hni" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Upload" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/command/ai_upload, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"hns" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"hnz" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"hnC" = ( -/obj/structure/bed/dogbed/ian, -/mob/living/basic/pet/dog/corgi/ian, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"hnG" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"hnL" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"hnS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/lobby) -"hnU" = ( -/obj/effect/turf_decal/loading_area, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"hnX" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/siding/thinplating_new, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"hnZ" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"hoa" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/ordnance{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/computer_disk, -/obj/item/computer_disk{ - pixel_y = 4 - }, -/obj/item/computer_disk{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/computer_disk/ordnance{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/full, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"hoj" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"hoo" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"hoy" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_y = 3 - }, -/obj/item/pen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"hoB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"hoF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"hoK" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"hoM" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/security/glass{ - name = "Security Entrance" - }, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"hoW" = ( -/obj/machinery/door/airlock/silver/glass{ - name = "Kitchen" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"hpc" = ( -/obj/effect/turf_decal/box/white, -/obj/effect/turf_decal/arrows/white{ - color = "#0000FF"; - pixel_y = 15 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"hpe" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"hpg" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"hpi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"hpj" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"hpn" = ( -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit) -"hpz" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"hpF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"hpI" = ( -/turf/closed/wall, -/area/station/commons/fitness/recreation) -"hpV" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/closet/crate, -/obj/item/shard, -/obj/item/shard, -/obj/item/stack/cable_coil, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"hpW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"hqh" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"hqi" = ( -/obj/machinery/computer/arcade/amputation, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"hqv" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"hqy" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"hqD" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - name = "killroom vent" - }, -/turf/open/floor/engine/hull/reinforced, -/area/station/science/xenobiology) -"hqG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #7"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"hqR" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"hrc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"hre" = ( -/obj/machinery/vending/wardrobe/law_wardrobe, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/service/lawoffice) -"hrp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/hobo_squat, -/obj/item/clothing/neck/necklace/dope{ - desc = "A memento, it belonged to a man's murdered father."; - name = "significant gold necklace" - }, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hrw" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/chair/plastic{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"hry" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"hrB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"hrC" = ( -/obj/structure/sign/poster/contraband/syndicate_pistol, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"hrL" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"hrW" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"hsa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"hse" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/secondary/entry) -"hsh" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/barricade/wooden/snowed, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hss" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"hsA" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/commons/toilet) -"hsG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hsI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"hsK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/bucket, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hsT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/structure/window/hollow/plasma/middle, -/obj/structure/girder/reinforced, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard) -"hsU" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/item/stack/arcadeticket, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"hsW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"htc" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"hte" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"htg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"hto" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"htq" = ( -/obj/effect/decal/cleanable/plastic, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"htr" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"htD" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"htF" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/aft) -"htG" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"htW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"hug" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"huh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"huk" = ( -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"hur" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/lobby) -"hut" = ( -/obj/structure/stairs/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"huz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/genetics) -"huJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"huR" = ( -/obj/machinery/door/airlock/medical{ - name = "The Blue Door" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) -"huT" = ( -/obj/structure/cable, -/obj/machinery/status_display/ai/directional/west, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"hvb" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 2 - }, -/obj/effect/turf_decal/tile/red/anticorner, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"hvc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/silver/glass{ - name = "Kitchen" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"hvf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"hvv" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"hvB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Evidence Lockers" - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"hvC" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"hvD" = ( -/obj/machinery/camera{ - c_tag = "Atmos Tank #2 - O2"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"hvE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"hvF" = ( -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"hvY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"hwd" = ( -/obj/structure/rack, -/obj/item/storage/briefcase/secure, -/obj/item/restraints/handcuffs, -/obj/machinery/light/small/directional/south, -/obj/machinery/camera/directional/east{ - c_tag = "Detective's Backroom" - }, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"hwe" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/delivery_chute{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/arrow_cw, -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/turf_decal/trimline/green/filled/mid_joiner, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"hwi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"hwr" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"hwt" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"hww" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"hwL" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"hwM" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"hwN" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/turretid{ - control_area = "/area/station/ai_monitored/turret_protected/aisat_interior"; - name = "Antechamber Turret Control"; - pixel_y = -32 - }, -/turf/open/openspace, -/area/station/ai_monitored/turret_protected/aisat/service) -"hwP" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"hwQ" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"hwV" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"hxl" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/structure/curtain, -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"hxy" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"hxz" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"hxF" = ( -/obj/structure/closet/wardrobe/black, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hxJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "captain_privacy"; - name = "Captain's Private Room Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/captain/private) -"hxL" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"hxN" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"hxP" = ( -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/apartment2) -"hyp" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"hys" = ( -/obj/structure/spider/stickyweb, -/obj/item/chair, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"hyt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"hyx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"hyD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"hyL" = ( -/obj/structure/cable, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/atmos/hfr_room) -"hyN" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/firealarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"hyR" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"hyW" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"hyY" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"hzf" = ( -/obj/machinery/computer/rdconsole{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"hzq" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"hzu" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat) -"hzv" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk/multiz, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"hzE" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"hzI" = ( -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"hzJ" = ( -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/atmos, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-16"; - location = "1-15" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"hzL" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/theater) -"hzQ" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"hzR" = ( -/obj/item/shovel, -/turf/open/misc/asteroid/snow/standard_air{ - icon_state = "snow5" - }, -/area/station/maintenance/floor2/port/aft) -"hzU" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/service/theatre, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"hzV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"hzX" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/service/theater) -"hAc" = ( -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"hAg" = ( -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"hAk" = ( -/obj/structure/flora/tree/jungle/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"hAn" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"hAs" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"hAH" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"hAI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hAO" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigpack_midori{ - pixel_x = -6; - pixel_y = -4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/lighter{ - pixel_x = 8; - pixel_y = 7 - }, -/obj/effect/spawner/random/entertainment/drugs, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"hAP" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Armoury Desk"; - req_access = list("armory") - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/turf/open/floor/plating, -/area/station/security/brig) -"hAR" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth_edge{ - dir = 1 - }, -/area/station/science/robotics/mechbay) -"hAT" = ( -/obj/structure/stairs/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"hAV" = ( -/obj/structure/table, -/obj/machinery/button/ticket_machine{ - pixel_x = -24; - pixel_y = -6 - }, -/obj/item/stamp/head/hop{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/flashlight/lamp{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/machinery/button/photobooth{ - pixel_y = 6; - pixel_x = -24 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"hBe" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"hBw" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"hBx" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/silver{ - name = "Captain's Bathroom" - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"hBG" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"hBN" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hBT" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/item/razor, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"hCh" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/blue/warning, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"hCs" = ( -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"hCt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"hCv" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear/white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"hCD" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/rods/fifty, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hCJ" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"hCK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"hCM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"hCT" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"hCV" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/storage/pill_bottle/mutadone{ - pixel_x = -9 - }, -/obj/item/toy/figure/geneticist, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/science/genetics) -"hDa" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/drone_bay) -"hDb" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/grass, -/area/station/science/cytology) -"hDf" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"hDr" = ( -/turf/closed/indestructible/riveted{ - desc = "A wall impregnated with Fixium, able to withstand massive explosions with ease"; - name = "hyper-reinforced wall" - }, -/area/station/science/ordnance/bomb) -"hDy" = ( -/obj/effect/turf_decal/trimline/green, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"hDI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 10 - }, -/obj/item/storage/toolbox/electrical{ - pixel_x = 3; - pixel_y = 1 - }, -/obj/item/clothing/glasses/welding{ - pixel_x = -1; - pixel_y = -3 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"hDK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"hDU" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"hDZ" = ( -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/obj/machinery/recharger, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"hEc" = ( -/obj/structure/bodycontainer/crematorium{ - name = "broken crematorium" - }, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"hEm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"hEo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"hEu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"hED" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"hEM" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Xenobio - Kill Room" - }, -/obj/structure/sign/warning/cold_temp/directional/east, -/turf/open/floor/engine/hull/reinforced, -/area/station/science/xenobiology) -"hEO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"hEQ" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/bot_white, -/obj/item/folder/documents, -/obj/effect/turf_decal/tile/blue/full, -/turf/open/floor/iron/textured_large, -/area/station/ai_monitored/command/nuke_storage) -"hFa" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit) -"hFb" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/fore) -"hFc" = ( -/obj/structure/table/wood, -/obj/item/chisel, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"hFi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/entry) -"hFA" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"hFE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-18"; - location = "2-17" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"hFL" = ( -/obj/effect/turf_decal/siding/purple, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"hFM" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/machinery/drone_dispenser, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"hFS" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/north{ - name = "Research Desk"; - req_access = list("science") - }, -/obj/item/experi_scanner, -/turf/open/floor/iron/white, -/area/station/science/lab) -"hFW" = ( -/obj/item/stack/sheet/cardboard, -/obj/item/newspaper, -/obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"hGa" = ( -/obj/machinery/light_switch/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"hGj" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/textured_edge{ - dir = 1 - }, -/area/station/medical/chemistry) -"hGp" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood/tile, -/area/station/service/library) -"hGy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"hGz" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/pods/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"hGA" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"hGB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"hGC" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 1 - }, -/obj/effect/spawner/structure/window/hollow/plasma/middle, -/obj/machinery/atmospherics/pipe/smart/simple/purple, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"hGG" = ( -/obj/structure/rack, -/obj/item/stock_parts/micro_laser{ - pixel_y = 7 - }, -/obj/item/stock_parts/power_store/cell/high{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/item/vending_refill/wardrobe/science_wardrobe{ - pixel_y = 18 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lower) -"hGL" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) -"hGP" = ( -/obj/structure/chair/comfy/black, -/obj/structure/sign/departments/botany/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/fore) -"hGQ" = ( -/obj/structure/rack, -/obj/machinery/light/red/dim/directional/east, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"hGW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"hHa" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/maintenance/floor2/starboard/fore) -"hHc" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"hHe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/table/reinforced/rglass, -/obj/machinery/door/window/right/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/structure/desk_bell{ - pixel_y = 1; - pixel_x = -5 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/lobby) -"hHi" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/closet/crate/science{ - name = "Parts crate" - }, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/machinery/light_switch/directional/west, -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"hHn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"hHq" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"hHr" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"hHB" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hHH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"hIb" = ( -/turf/closed/wall, -/area/station/hallway/floor4/fore) -"hIe" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 10 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"hIj" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/exoscanner, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/cargo/drone_bay) -"hIk" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"hIn" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/grass, -/area/station/science/genetics) -"hIp" = ( -/obj/item/skillchip/light_remover, -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"hIB" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/turf/open/floor/iron/large, -/area/station/command/gateway) -"hII" = ( -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"hIQ" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"hIR" = ( -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/prison/garden) -"hJc" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"hJg" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"hJq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"hJy" = ( -/turf/closed/wall, -/area/station/maintenance/floor1/port/fore) -"hJD" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"hJF" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"hJG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"hJJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/keycard_auth/wall_mounted/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"hJK" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"hJQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"hJU" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"hJV" = ( -/obj/structure/stairs/north, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"hKa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"hKg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"hKm" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"hKq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"hKt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/command/gateway) -"hKv" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/syringe/contraband/space_drugs, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"hKw" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"hKx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"hKN" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/qm) -"hKS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"hKU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"hKZ" = ( -/obj/machinery/button/door/directional/south{ - id = "dorms_1_bolts"; - name = "Dorms 1 Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/dorms/room1) -"hLd" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/openspace, -/area/station/service/library) -"hLg" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"hLk" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_corner, -/area/station/engineering/supermatter/room) -"hLo" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"hLq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"hLs" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_half, -/area/station/engineering/storage/tech) -"hLv" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-8"; - location = "2-7" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"hLy" = ( -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"hLz" = ( -/turf/closed/wall, -/area/station/maintenance/floor2/port/fore) -"hLB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"hLL" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"hLP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"hLX" = ( -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"hMd" = ( -/turf/closed/wall, -/area/station/security/prison/visit) -"hMg" = ( -/obj/effect/turf_decal/trimline/blue/warning, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"hMm" = ( -/obj/machinery/vending/cart, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"hMp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"hMr" = ( -/obj/machinery/computer/order_console/bitrunning{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hMs" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"hML" = ( -/obj/structure/railing{ - dir = 9 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"hMU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hMV" = ( -/turf/open/floor/iron/stairs/medium, -/area/station/science/lobby) -"hNf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"hNg" = ( -/obj/machinery/modular_computer/preset/cargochat/cargo{ - dir = 1 - }, -/turf/open/floor/iron/textured_corner, -/area/station/cargo/office) -"hNh" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/bot_white/left, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"hNj" = ( -/obj/machinery/door/poddoor/massdriver_ordnance, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/station/science/ordnance/storage) -"hNr" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/effect/turf_decal/stripes/white/line, -/obj/structure/table, -/turf/open/floor/iron/dark, -/area/station/science/circuits) -"hNz" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hNA" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/machinery/door/window/right/directional/west{ - name = "Containment"; - req_access = list("xenobiology") - }, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"hNB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hNO" = ( -/obj/machinery/door/window/brigdoor/security/cell/left/directional/west{ - id = "cell-3"; - name = "3rd Floor Prisoner Tube" - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/delivery_chute{ - name = "prisoner transport"; - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"hNU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"hNY" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"hOy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 1 - }, -/obj/machinery/meter, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hOF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/command/gateway) -"hOP" = ( -/obj/machinery/incident_display/delam/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hOR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/meter, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"hOV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"hOX" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/siding/yellow{ - dir = 8; - pixel_x = 15 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"hPf" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"hPk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/science/server) -"hPq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"hPA" = ( -/obj/structure/ladder, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"hPK" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"hPL" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"hPX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/table, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/duct, -/obj/item/stack/medical/suture, -/obj/item/stack/medical/mesh, -/obj/item/healthanalyzer, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"hQg" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/cargo/storage) -"hQl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"hQp" = ( -/obj/structure/girder/reinforced, -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/storage/tcomms) -"hQy" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/hfr_room) -"hQA" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-8"; - location = "3-7" - }, -/mob/living/simple_animal/bot/secbot/beepsky/officer{ - name = "Beepsky the Third" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"hQE" = ( -/obj/effect/turf_decal/tile/green/fourcorners, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - id_tag = "virology_airlock_interior"; - name = "Virology Interior Airlock" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/medical/virology, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "viro" - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"hQK" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"hQO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"hQQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"hQT" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"hQX" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/south, -/obj/effect/spawner/random/entertainment/money_small, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"hRd" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"hRg" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"hRm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"hRp" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"hRH" = ( -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"hRI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/prison) -"hRP" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"hRR" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"hSd" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"hSh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"hSl" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"hSo" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"hSt" = ( -/obj/machinery/status_display/ai/directional/north, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"hSD" = ( -/obj/structure/closet/secure_closet/hos, -/obj/machinery/button/door/directional/west{ - id = "hosprivacy"; - name = "Privacy Shutters Control"; - pixel_y = 6 - }, -/obj/machinery/keycard_auth/wall_mounted/directional/west{ - pixel_y = -8 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"hSH" = ( -/obj/machinery/door/airlock{ - id_tag = "CabinS"; - name = "Private Cabin" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron/dark/smooth_edge, -/area/station/hallway/secondary/service) -"hSI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"hSJ" = ( -/obj/structure/rack, -/obj/item/storage/medkit/regular, -/obj/item/clothing/glasses/blindfold, -/obj/item/clothing/mask/muzzle, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/security/medical) -"hSO" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"hSP" = ( -/obj/structure/railing/corner, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"hSQ" = ( -/obj/structure/filingcabinet/employment, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/service/lawoffice) -"hST" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"hTd" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"hTj" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"hTr" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"hTu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"hTz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"hTD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/checkpoint) -"hTJ" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"hTK" = ( -/obj/machinery/medical_kiosk, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"hTP" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/brown/line, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) -"hUc" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"hUe" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"hUj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/courtroom) -"hUk" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"hUA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "viro-outer"; - name = "Virology Outer Shutters" - }, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"hUE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"hUN" = ( -/obj/machinery/mineral/stacking_machine{ - input_dir = 2 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"hUP" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"hUR" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/command{ - name = "Teleporter Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/teleporter, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"hUT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"hUX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/library) -"hUY" = ( -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"hVk" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"hVq" = ( -/obj/machinery/washing_machine, -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"hVt" = ( -/obj/structure/hedge/opaque, -/turf/open/floor/carpet/green, -/area/station/service/kitchen/diner) -"hVB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"hVG" = ( -/obj/structure/sign/directions/engineering/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"hVI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"hVK" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"hVZ" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"hWn" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor3/fore) -"hWp" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"hWr" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/components/unary/passive_vent/layer2, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"hWu" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"hWx" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/aft) -"hWD" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/textured_half, -/area/station/hallway/secondary/entry) -"hWF" = ( -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"hWG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"hWH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"hWN" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"hWS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"hWV" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"hXa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/blue, -/area/station/cargo/miningdock) -"hXm" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/hallway/floor2/fore) -"hXo" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"hXp" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine/hull/reinforced, -/area/station/science/xenobiology) -"hXr" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"hXs" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"hXt" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"hXu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"hXB" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Ration Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"hXI" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"hXQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"hYb" = ( -/obj/machinery/light/small/red/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"hYe" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"hYk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"hYm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"hYo" = ( -/obj/effect/landmark/navigate_destination/dockesc, -/obj/machinery/light/directional/west, -/obj/structure/sign/warning/docking/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"hYN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"hZm" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"hZn" = ( -/obj/effect/spawner/structure/window/hollow/directional, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"hZq" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Chief Medical Officer's Office"; - name = "Chief Medical Officer's Fax Machine" - }, -/obj/machinery/duct, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"hZs" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"hZt" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/requests_console/directional/south{ - department = "Chief Engineer's Desk"; - name = "Chief Engineer's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"hZJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"hZL" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"hZP" = ( -/obj/effect/turf_decal/siding/blue, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"iaf" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/item/knife/shiv, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"iag" = ( -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"iah" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"iaq" = ( -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lab) -"iay" = ( -/obj/effect/spawner/random/trash/bucket, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"iaz" = ( -/obj/effect/turf_decal/arrows/red{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"iaC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"iaF" = ( -/obj/machinery/button/door/directional/south{ - id = "dorms_4_bolts"; - name = "Dorms 4 Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"iaO" = ( -/obj/structure/rack, -/obj/structure/sign/nanotrasen{ - pixel_x = 32 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/riot_armor, -/obj/effect/spawner/random/armory/riot_helmet, -/obj/effect/spawner/random/armory/riot_shield, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"iaS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/chair/sofa/corner/brown, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"ibi" = ( -/obj/effect/turf_decal/loading_area/white{ - color = "#52B4E9" - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/hallway/floor4/fore) -"ibk" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/medbay/aft) -"ibo" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor4/starboard/fore) -"ibs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"ibu" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/tcommsat/server) -"ibw" = ( -/turf/closed/wall, -/area/station/science/genetics) -"ibE" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"ibF" = ( -/obj/structure/table/wood/fancy/green, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"ibJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"ibK" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 13; - name = "port bay 2"; - shuttle_id = "ferry_home"; - width = 5 - }, -/turf/open/space/openspace, -/area/space) -"ibL" = ( -/obj/structure/cable, -/obj/machinery/power/smes/engineering, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) -"ibT" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"ibW" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/sign/departments/medbay/alt/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/aft) -"ica" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) -"ick" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"icn" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/security/prison/garden) -"icp" = ( -/obj/machinery/light_switch/directional/north, -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 13; - pixel_y = 7 - }, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/glass/mug{ - pixel_x = 13; - pixel_y = -1 - }, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -2; - pixel_y = 12 - }, -/obj/item/reagent_containers/cup/glass/ice{ - pixel_x = -4; - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"icq" = ( -/obj/docking_port/stationary{ - dheight = 4; - dwidth = 4; - height = 9; - name = "Aux Base Zone"; - roundstart_template = /datum/map_template/shuttle/aux_base/default; - shuttle_id = "aux_base_zone"; - width = 9 - }, -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"icr" = ( -/obj/structure/ladder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"icE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"icY" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"idn" = ( -/obj/structure/sign/directions/science/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"ido" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/showcase/machinery/tv/broken, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"idr" = ( -/obj/structure/closet/secure_closet/freezer/empty{ - name = "sushi fridge" - }, -/obj/item/food/seaweedsheet, -/obj/item/food/seaweedsheet, -/obj/item/food/seaweedsheet, -/obj/item/food/seaweedsheet, -/obj/item/food/grown/carrot, -/obj/item/food/grown/carrot, -/obj/item/food/grown/potato, -/obj/item/food/grown/potato, -/obj/item/food/grown/onion, -/obj/item/food/grown/onion, -/obj/item/food/grown/chili, -/obj/item/food/grown/chili, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"idu" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"idw" = ( -/obj/structure/table, -/obj/item/clothing/neck/scarf{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/clothing/under/suit/white, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"idy" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"idM" = ( -/obj/structure/table, -/obj/machinery/status_display/evac/directional/north, -/obj/item/papercutter, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"iea" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"ieC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"ieE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"ieI" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"ieM" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"ieP" = ( -/obj/structure/sign/poster/contraband/eat/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"ieX" = ( -/obj/structure/bed/dogbed/lia, -/obj/machinery/requests_console/directional/north{ - department = "Head of Security's Desk"; - name = "Head of Security Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/mob/living/basic/carp/pet/lia, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"iff" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ifh" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"ifk" = ( -/obj/structure/sign/directions/dorms/directional/north{ - dir = 2 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor4/aft) -"ifo" = ( -/obj/structure/tank_holder/emergency_oxygen, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"ift" = ( -/obj/structure/closet/wardrobe/white, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"ifw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/hatch{ - name = "Emergency Ladder Access" - }, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor4/aft) -"ifx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"ifA" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/controller{ - pixel_x = 5; - pixel_y = -3 - }, -/obj/item/controller, -/obj/item/controller{ - pixel_x = -5; - pixel_y = 3 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"ifF" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Briefing Room" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/office) -"ifG" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor2/aft) -"ifS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/gravity_generator) -"ifV" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/comfy{ - dir = 8 - }, -/obj/effect/landmark/start/depsec/medical, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"igd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"igw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"igy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"igA" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"igE" = ( -/turf/closed/wall, -/area/station/science/robotics/mechbay) -"igI" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/obj/effect/turf_decal/caution{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"igQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"igS" = ( -/obj/structure/table, -/obj/item/clothing/neck/tie/red, -/obj/item/clothing/under/suit/black_really/skirt, -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"ihj" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/medical/pharmacy) -"ihm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/closet/l3closet/virology, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"ihn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/skillchip/wine_taster, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"iho" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"ihp" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/vending/drugs, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"ihC" = ( -/obj/item/stack/sheet/iron, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"ihH" = ( -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"ihL" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Hall" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "med_lockdown"; - name = "Medbay Lockdown Shutters" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"ihQ" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"ihV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"iia" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"iid" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"iie" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/science/genetics) -"iil" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"iim" = ( -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"iir" = ( -/turf/open/floor/iron, -/area/station/cargo/lobby) -"iit" = ( -/obj/effect/spawner/random/structure/closet_private{ - dir = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"iiA" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"iiM" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"iiQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/line{ - dir = 6 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"iiR" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"iiW" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"ijd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ijs" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"ijJ" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/railing/corner, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"ijL" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"ijQ" = ( -/obj/machinery/computer/station_alert, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"ijS" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/auxlab) -"ijT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/machinery/requests_console/directional/north{ - department = "Security"; - name = "Security Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"ijV" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/computer/security/telescreen/rd/directional/west, -/obj/machinery/pdapainter/research, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"ijX" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/directional, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"ijZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Private Channel" - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"ikg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"iki" = ( -/obj/structure/table_frame, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"ikn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"iko" = ( -/obj/machinery/shieldgen, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"iky" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron, -/area/station/commons/toilet) -"ikG" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"ikT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"ikV" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/structure/grille, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"ilb" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"ilg" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"ilk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock{ - name = "Vacant Commissary" - }, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"ilq" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"ils" = ( -/obj/machinery/telecomms/receiver/preset_left, -/obj/machinery/telecomms/receiver/preset_right, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"ilx" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/bot/right, -/obj/effect/turf_decal/tile/neutral/full, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"ilA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/blue/end{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"ilG" = ( -/obj/machinery/button/door/directional/north{ - id = "CabinS"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"ilI" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Medbay - Treatment Center"; - name = "medbay camera"; - network = list("ss13","medbay"); - dir = 2 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ilK" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"ilR" = ( -/turf/closed/wall/r_wall, -/area/station/medical/medbay/lobby) -"ilV" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"ilY" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/port/fore) -"img" = ( -/obj/structure/cable, -/obj/structure/girder, -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"imj" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"imm" = ( -/obj/structure/table/wood, -/obj/structure/sign/poster/contraband/pwr_game/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) -"imq" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/closet/crate/hydroponics, -/obj/item/wrench, -/obj/item/secateurs, -/obj/item/shovel/spade, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"ims" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"imt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"imI" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"imJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"imO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half, -/area/station/cargo/warehouse) -"imR" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"imS" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"imY" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/commons/fitness/recreation) -"imZ" = ( -/obj/structure/chair/sofa/bench/right, -/obj/machinery/light/directional/north, -/turf/open/floor/grass, -/area/station/service/library/garden) -"inj" = ( -/obj/machinery/computer/records/security{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"inl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/turretid{ - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = 3; - pixel_y = -23 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"inq" = ( -/turf/closed/wall, -/area/station/security/checkpoint/escape) -"inE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"inJ" = ( -/obj/machinery/washing_machine, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"inK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"inM" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/camera/autoname/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"inR" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"inS" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"iog" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"iom" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"ion" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"iot" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/door/window/left/directional/west{ - name = "Xenocytology Desk"; - req_access = list("xenobiology") - }, -/obj/structure/desk_bell{ - pixel_x = 6; - pixel_y = 10 - }, -/turf/open/floor/iron, -/area/station/science/cytology) -"iow" = ( -/obj/structure/table/wood, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/computer/records/medical/laptop, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"ioG" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"ioL" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"ioM" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate/preopen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"ioP" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/hallway/secondary/exit/escape_pod) -"ioQ" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"ioR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"ipa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"ipn" = ( -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"ipu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"ipv" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/prison) -"ipI" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"ipQ" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"ipV" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/effect/landmark/start/chemist, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"iqa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/engine/atmos) -"iqg" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"iqt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/tcommsat/server) -"iqu" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"iqv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Theater" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"iqx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/multilayer/multiz, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"iqy" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 4 - }, -/obj/machinery/button/door/directional/west{ - id = "hopline"; - name = "Queue Shutters Control"; - pixel_y = -6; - req_access = list("hop") - }, -/obj/machinery/button/door/directional/west{ - id = "hopblast"; - name = "Lockdown Blast Doors"; - pixel_y = 6; - req_access = list("hop") - }, -/obj/machinery/button/flasher{ - id = "hopflash"; - pixel_x = -38; - pixel_y = -7; - req_access = list("hop") - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"iqz" = ( -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"iqC" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/machinery/dna_scannernew, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"iqD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"iqL" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"iqR" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"ira" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/shotgun, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"irb" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/rack, -/obj/item/mop, -/obj/item/reagent_containers/cup/bucket, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/item/storage/box/gloves{ - pixel_x = 5; - pixel_y = -8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"irf" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"irh" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"irk" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Shared Engineering Storage #2"; - dir = 9; - network = list("ss13","engine") - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"irm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/standard_unit, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"irx" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Robotics Lab"; - req_access = list("robotics") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/stairs{ - dir = 1 - }, -/area/station/science/robotics/mechbay) -"irI" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"irK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor1/fore) -"irS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"irV" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"isd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"isg" = ( -/obj/machinery/recharge_station, -/obj/machinery/camera/directional/east{ - c_tag = "Security - EVA" - }, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"isk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"isq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/navigate_destination/dockaux, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"isz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/airlock/hatch{ - name = "Science Maintenance" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"isA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"isG" = ( -/obj/item/storage/medkit/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/medkit/toxin, -/obj/item/storage/medkit/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/medkit/regular, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/door/window/left/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"isK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/sign/warning/docking/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/secondary/exit) -"isO" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"isQ" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"isU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"itc" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/machinery/status_display/door_timer{ - id = "cell-2"; - name = "Floor 2 Cell"; - pixel_x = 32 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"ity" = ( -/obj/structure/mirror/directional/east, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/freezer, -/area/station/service/chapel) -"itC" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table_frame, -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"itP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"itR" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"itT" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"iuk" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"iun" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"iuo" = ( -/turf/closed/wall, -/area/station/commons/dorms/apartment1) -"ius" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"iuu" = ( -/obj/structure/sign/departments/medbay/alt/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"iux" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"iuE" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"iuP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"iuT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"iuW" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, -/turf/open/floor/engine, -/area/station/science/cytology) -"iva" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"ivg" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"ivk" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"ivo" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"ivs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lower) -"ivu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"ivz" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"ivD" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ivE" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/pill/morphine{ - desc = "What could it be?"; - name = "blue pill" - }, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) -"ivL" = ( -/turf/closed/wall, -/area/station/medical/surgery/aft) -"ivQ" = ( -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"ivU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"ivV" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/light_switch/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"ivY" = ( -/obj/structure/chair/office/light, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"iwj" = ( -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) -"iwo" = ( -/turf/closed/wall, -/area/station/science/circuits) -"iwu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"iwD" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"iwH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"iwJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"iwN" = ( -/obj/structure/table/wood, -/obj/item/toy/plush/moth{ - desc = "Unique and incredibly special, just like you, love yourself."; - name = "Unique Moth" - }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"iwP" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"iwU" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"iwZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"ixf" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"ixD" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"ixH" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"ixQ" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"ixZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"iyt" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"iyK" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"iyR" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"iyS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"iyT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"iyU" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"iyZ" = ( -/obj/structure/flora/bush/snow/style_random, -/turf/open/misc/snow/actually_safe{ - icon_state = "snow8" - }, -/area/station/hallway/floor2/fore) -"izj" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/e_gun, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"izl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/qm) -"izm" = ( -/obj/machinery/field/generator, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"izn" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/item/radio/intercom/directional/south{ - broadcasting = 1; - frequency = 1423; - listening = 0; - name = "Interrogation Intercom" - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"izq" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/cargo/storage) -"izt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Hall" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/central) -"izw" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"izy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) -"izz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"izF" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"izI" = ( -/obj/structure/rack, -/obj/item/trash/syndi_cakes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"izN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-10"; - location = "3-9" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"izV" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"izY" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"iAb" = ( -/turf/closed/wall, -/area/station/science/robotics/lab) -"iAe" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating/airless, -/area/station/science/ordnance/storage) -"iAg" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/spawner/random/medical, -/obj/structure/table/glass, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"iAk" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"iAq" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"iAt" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/item/transfer_valve{ - pixel_x = -5 - }, -/obj/item/transfer_valve{ - pixel_x = 5 - }, -/obj/item/transfer_valve{ - pixel_x = -5 - }, -/obj/item/transfer_valve{ - pixel_x = 5 - }, -/obj/item/transfer_valve, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"iAH" = ( -/obj/machinery/power/shuttle_engine/heater{ - icon_state = "router" - }, -/turf/closed/wall, -/area/station/maintenance/floor1/starboard/aft) -"iAQ" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"iAS" = ( -/obj/structure/cable, -/obj/machinery/power/smes/engineering, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) -"iAU" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"iAY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/atmos/office) -"iAZ" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"iBb" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"iBc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"iBj" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"iBl" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"iBn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"iBo" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/folder/white, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"iBq" = ( -/obj/structure/mirror/directional/south, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"iBv" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"iBx" = ( -/obj/structure/closet/wardrobe/black, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"iBB" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/white, -/area/station/cargo/miningoffice) -"iBF" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/structure/sink/directional/south, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"iBI" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"iBL" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"iCg" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"iCh" = ( -/obj/machinery/light/directional/south, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"iCi" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/geneticist, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"iCk" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "radshutnorth" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"iCn" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_half, -/area/station/cargo/warehouse) -"iCD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/toy/beach_ball, -/turf/open/floor/grass, -/area/station/medical/virology) -"iCE" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"iCG" = ( -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"iCH" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"iCJ" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"iCK" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"iCP" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) -"iCQ" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"iCS" = ( -/obj/effect/turf_decal/siding/wood/end, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"iCU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"iDe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/office) -"iDh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"iDk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"iDm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"iDr" = ( -/obj/structure/table/glass, -/obj/machinery/defibrillator_mount/directional/east, -/obj/item/storage/medkit/emergency{ - pixel_y = 4 - }, -/obj/item/stack/medical/suture, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"iDw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"iDP" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"iDZ" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"iEa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"iEg" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"iEl" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/railing/corner/end/flip{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"iEm" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"iEs" = ( -/turf/closed/wall, -/area/station/engineering/storage/tcomms) -"iED" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"iEJ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"iEP" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/engineering/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"iES" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"iEU" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"iEW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"iFi" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"iFo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output, -/obj/effect/turf_decal/trimline/brown/line, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"iFr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"iFu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"iFv" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/canister, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"iFw" = ( -/obj/item/flashlight/lamp/green, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"iFy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"iGd" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"iGh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"iGo" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"iGq" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"iGt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"iGz" = ( -/obj/structure/spider/stickyweb, -/obj/structure/chair/stool, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"iGA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"iGG" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/structure/sign/painting{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"iGI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/chair/sofa/corner/brown{ - dir = 4 - }, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"iGJ" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"iGR" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"iGY" = ( -/obj/machinery/door/airlock/medical{ - name = "Medical Break Room" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"iHk" = ( -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"iHl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"iHm" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor3/starboard) -"iHw" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"iHx" = ( -/obj/structure/table, -/obj/machinery/processor{ - pixel_y = 6 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"iHG" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 6 - }, -/turf/open/floor/iron/telecomms, -/area/station/tcommsat/server) -"iHI" = ( -/obj/effect/landmark/start/roboticist, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"iHL" = ( -/obj/machinery/pdapainter/engineering, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/computer/security/telescreen/engine/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"iHM" = ( -/obj/machinery/vending/wallmed/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"iHN" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"iHZ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/screwdriver, -/obj/effect/decal/cleanable/dirt, -/obj/item/weldingtool/largetank, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"iIm" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"iIn" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"iIp" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"iII" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"iIM" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"iIV" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"iJc" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"iJl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/library/printer) -"iJo" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"iJt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/corner{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"iJz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/floor1/aft) -"iJG" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"iJM" = ( -/obj/machinery/computer/monitor{ - dir = 4; - name = "Bridge power monitoring console" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"iJX" = ( -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "asylum_airlock_exterior"; - idInterior = "asylum_airlock_interior"; - name = "Asylum Access Console"; - pixel_x = 26; - pixel_y = 6; - req_access = list("psychology") - }, -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"iJY" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron/white, -/area/station/security/medical) -"iKb" = ( -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"iKc" = ( -/obj/structure/chair/office, -/obj/effect/landmark/start/lawyer, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"iKw" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"iKz" = ( -/obj/structure/ladder, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"iKB" = ( -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"iKD" = ( -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"iKJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"iKR" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"iKT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"iLy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"iLF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"iLH" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"iLJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/medical/virology, -/obj/machinery/door/airlock/virology/glass{ - name = "Test Subject Cell" - }, -/turf/open/floor/noslip, -/area/station/medical/virology) -"iLM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"iLR" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/mirror/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"iMc" = ( -/obj/item/storage/box/matches, -/obj/item/storage/fancy/cigarettes/cigpack_carp, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"iMe" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"iMu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"iMF" = ( -/obj/structure/bed/medical/anchored{ - dir = 8 - }, -/obj/item/bedsheet/medical{ - dir = 4 - }, -/obj/structure/curtain/cloth, -/obj/machinery/newscaster/directional/north, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/wood/parquet, -/area/station/medical/patients_rooms) -"iMK" = ( -/obj/structure/closet/firecloset, -/obj/machinery/camera/directional/east{ - c_tag = "Science - Aft Entry" - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"iML" = ( -/obj/structure/railing, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"iMM" = ( -/obj/structure/rack, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"iMN" = ( -/turf/closed/wall, -/area/station/service/library) -"iMR" = ( -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/project) -"iMU" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"iMX" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 6 - }, -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"iNp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/sign/departments/psychology/directional/west{ - name = "Asylum Entrance" - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"iNz" = ( -/obj/structure/sign/directions/upload/directional/east, -/obj/structure/sign/directions/medical/directional/east{ - pixel_y = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"iNB" = ( -/obj/machinery/light/directional/north, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/secondary/service) -"iNC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"iNE" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"iNK" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/textured_corner, -/area/station/cargo/sorting) -"iNO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lower) -"iNV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"iNW" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/power/energy_accumulator/grounding_rod/anchored, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible/layer2, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"iOe" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = -9; - pixel_y = 2 - }, -/obj/item/toy/figure/scientist{ - pixel_x = -20; - pixel_y = 9 - }, -/obj/item/disk/tech_disk{ - pixel_x = 24 - }, -/obj/item/disk/tech_disk{ - pixel_x = 17 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/white, -/area/station/science/lab) -"iOh" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4 - }, -/obj/effect/mapping_helpers/mail_sorting/service/bar, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"iOp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lower) -"iOr" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"iOs" = ( -/obj/structure/table/optable, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"iOu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"iOw" = ( -/obj/machinery/power/tracker, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/aft) -"iOA" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor2/starboard) -"iOD" = ( -/obj/machinery/computer/upload/ai, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/camera/directional/north{ - c_tag = "AI Upload Chamber - Fore"; - network = list("aiupload") - }, -/obj/machinery/door/window/right/directional/south{ - name = "Upload Console Window"; - req_access = list("ai_upload") - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"iOL" = ( -/obj/structure/bookcase/random, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"iON" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"iOQ" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"iOV" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/tile/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"iOY" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"iPh" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"iPm" = ( -/obj/machinery/food_cart, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"iPr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"iPs" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"iPG" = ( -/obj/structure/rack, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/item/multitool/circuit{ - pixel_x = 7 - }, -/obj/item/multitool/circuit, -/obj/item/multitool/circuit{ - pixel_x = -8 - }, -/turf/open/floor/iron/dark, -/area/station/science/circuits) -"iPH" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Permabrig - Isolation A"; - network = list("ss13","prison") - }, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/brig) -"iPN" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"iPR" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"iPU" = ( -/obj/machinery/vending/snack/orange, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"iPV" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"iPX" = ( -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"iPY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"iQa" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"iQe" = ( -/obj/structure/secure_safe/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"iQf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/xenobiology/hallway) -"iQi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"iQp" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/green/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"iQy" = ( -/obj/structure/railing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"iQB" = ( -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"iQC" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"iQF" = ( -/obj/machinery/hydroponics/soil, -/obj/item/plant_analyzer, -/turf/open/misc/dirt/jungle, -/area/station/security/prison/garden) -"iQH" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/commons/locker) -"iQR" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/pipe_scrubber, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"iQU" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/library/artgallery) -"iQY" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"iRb" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 8 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"iRc" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/holopad, -/turf/open/floor/wood/large, -/area/station/service/library) -"iRf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium/airless, -/area/space/nearstation) -"iRg" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"iRm" = ( -/obj/machinery/vending/autodrobe, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"iRr" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 10 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"iRD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lab) -"iRF" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/drip, -/obj/structure/sink/directional/west, -/obj/structure/mirror/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"iRK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half, -/area/station/cargo/sorting) -"iRN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"iRY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/item/stack/rods/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"iSs" = ( -/obj/structure/rack, -/obj/item/weldingtool, -/obj/item/clothing/glasses/welding, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"iSt" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) -"iSu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 - }, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"iSD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate/cardboard, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"iSP" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/medical/cryo) -"iSS" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"iST" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/olive, -/turf/open/space/basic, -/area/space/nearstation) -"iSU" = ( -/turf/closed/wall/r_wall, -/area/space/nearstation) -"iTd" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/security/medical) -"iTg" = ( -/turf/closed/wall, -/area/space/nearstation) -"iTk" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"iTu" = ( -/obj/machinery/shieldgen, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"iTw" = ( -/obj/structure/sign/warning/biohazard/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"iTy" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"iTA" = ( -/obj/structure/chair/office, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"iTI" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/library/garden) -"iTJ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "survshop"; - name = "Ancient Workshop" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"iTN" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/obj/machinery/computer/mecha{ - dir = 8 - }, -/obj/machinery/requests_console/directional/east{ - department = "Bridge"; - name = "Bridge Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"iTX" = ( -/obj/machinery/light_switch/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"iUb" = ( -/obj/structure/secure_safe/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"iUP" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"iUQ" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"iUS" = ( -/obj/machinery/modular_computer/preset/id{ - name = "Captain's Computer" - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"iUT" = ( -/obj/machinery/computer/records/security{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"iUV" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"iUZ" = ( -/obj/machinery/light_switch/directional/south{ - pixel_x = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"iVs" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"iVH" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"iVL" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-4"; - location = "1-3" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"iVN" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/robotics/lab) -"iVP" = ( -/obj/structure/closet/emcloset, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"iVY" = ( -/obj/structure/mirror/directional/west, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"iWf" = ( -/obj/machinery/power/smes, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"iWi" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"iWm" = ( -/obj/structure/closet/l3closet/janitor, -/turf/open/floor/iron, -/area/station/service/janitor) -"iWu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"iWB" = ( -/obj/machinery/disposal/bin, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"iWE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/gravity_generator) -"iWF" = ( -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"iWG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor1/aft) -"iWK" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"iWQ" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Mass Driver"; - req_access = list("chapel_office") - }, -/obj/effect/turf_decal/siding/white, -/obj/machinery/computer/pod/old/mass_driver_controller/chapelgun{ - pixel_x = 24 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"iWT" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north, -/obj/structure/detectiveboard/directional/east, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"iWW" = ( -/obj/structure/girder/reinforced, -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"iWZ" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/item/fishing_hook, -/obj/item/food/bait/worm, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"iXa" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"iXe" = ( -/obj/item/restraints/legcuffs/beartrap/prearmed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"iXk" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"iXn" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"iXo" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/computer/arcade/battle{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/prison) -"iXt" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"iXA" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"iXB" = ( -/obj/item/storage/toolbox/mechanical/old, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"iXF" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/security/armory) -"iXK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"iXQ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/arrows{ - dir = 8 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"iXS" = ( -/turf/closed/wall/r_wall, -/area/station/command/gateway) -"iYb" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/white, -/area/station/cargo/miningdock) -"iYA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"iYC" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/brig) -"iYE" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"iYF" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"iYK" = ( -/obj/structure/chair/stool/bar/directional/south, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"iYL" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"iYM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/office) -"iZh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"iZi" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"iZy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"iZA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human{ - name = "dehydrated skeleton" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/item/weaponcrafting/receiver, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"iZD" = ( -/obj/structure/transport/linear/public, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "com_vator"; - pixel_x = 38; - pixel_y = -7 - }, -/obj/machinery/elevator_control_panel/directional/east{ - linked_elevator_id = "com_vator"; - pixel_x = 24; - preset_destination_names = list("2" = "CargEngi", "3" = "Medsci", "4" = "Service", "5" = "Command") - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/fore) -"iZE" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/iron/large, -/area/station/command/gateway) -"iZG" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"iZP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"iZQ" = ( -/obj/effect/decal/cleanable/garbage, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Prison Cafeteria"; - network = list("ss13","prison") - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"iZU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/warden, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"iZV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"jai" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 5 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/atmos) -"jak" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/item/paper/fluff/genpop_instructions, -/obj/structure/table, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"jam" = ( -/obj/effect/turf_decal/trimline/red/filled/end{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/closet/bombcloset/security, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"jas" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"jat" = ( -/obj/machinery/computer/security{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/turf_decal/trimline/red/filled, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"jau" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor1/aft) -"jax" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"jay" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"jaI" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"jaK" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/pink/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"jbc" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"jbg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"jbl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jbr" = ( -/obj/machinery/button/door/directional/south{ - id = "stationawaygate"; - name = "Gateway Shutters"; - req_access = list("gateway") - }, -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 1 - }, -/obj/item/storage/toolbox/mechanical, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"jbt" = ( -/obj/machinery/light/cold/directional/east, -/obj/machinery/newscaster/directional/east, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"jbu" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 4 - }, -/turf/open/floor/iron/textured_corner{ - dir = 8 - }, -/area/station/hallway/secondary/entry) -"jby" = ( -/obj/machinery/light/broken/directional/east, -/turf/open/floor/iron/smooth, -/area/station/construction) -"jbz" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"jbR" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/science/robotics/mechbay) -"jbV" = ( -/turf/open/openspace, -/area/station/maintenance/floor4/port) -"jcf" = ( -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"jcr" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room" - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/engine, -/area/station/engineering/lobby) -"jcN" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_corner{ - dir = 8 - }, -/area/station/hallway/secondary/entry) -"jcS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge_blast"; - name = "Bridge Blast Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"jcU" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room" - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/engine, -/area/station/engineering/lobby) -"jcV" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/sign/poster/contraband/grey_tide/directional/north, -/turf/open/floor/iron/dark/corner, -/area/station/commons/storage/primary) -"jdc" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"jdo" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/structure/table/reinforced, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"jdp" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"jds" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"jdx" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"jdC" = ( -/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"jdD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) -"jdM" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"jdP" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"jdQ" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/trimline/brown/line, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) -"jdR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jdT" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"jdW" = ( -/turf/closed/wall, -/area/station/engineering/atmos) -"jek" = ( -/obj/structure/chair/stool/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"jer" = ( -/obj/structure/foamedmetal, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"jeA" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment1) -"jeF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"jeQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/camera/directional/south{ - c_tag = "Armory - Interior" - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/obj/effect/spawner/random/armory/barrier_grenades, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"jeR" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"jfa" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_x = -7; - pixel_y = 14 - }, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_y = 14 - }, -/obj/item/reagent_containers/cup/glass/waterbottle/large{ - pixel_x = 7; - pixel_y = 14 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"jfd" = ( -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"jfs" = ( -/obj/docking_port/stationary/laborcamp_home/kilo{ - dir = 2 - }, -/turf/open/space/openspace, -/area/space) -"jft" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"jfH" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"jfK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/line, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"jgd" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"jgx" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"jgz" = ( -/obj/machinery/light/red/dim/directional/north, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"jgB" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/bookcase/random/religion, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"jgG" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint) -"jgJ" = ( -/obj/structure/curtain/bounty, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) -"jgK" = ( -/obj/machinery/newscaster/directional/north, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"jgO" = ( -/obj/effect/spawner/random/trash/soap, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"jgT" = ( -/obj/structure/hedge, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/sign/departments/holy/directional/north, -/turf/open/floor/grass, -/area/station/hallway/floor3/aft) -"jgU" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Science Maintenance" - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"jgY" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "Gravgenrear" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"jha" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/closet/firecloset, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"jhk" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/hydroponics/constructable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"jhv" = ( -/obj/structure/table/glass, -/obj/item/radio/intercom/directional/south, -/obj/item/storage/box/bandages{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron/white, -/area/station/security/medical) -"jhw" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"jhx" = ( -/obj/machinery/button/door/directional/west{ - id = "library-private"; - name = "Privacy Lock"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"jhF" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"jhU" = ( -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"jhV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"jib" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"jid" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"jiD" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"jiE" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/structure/closet/emcloset, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"jiL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"jiM" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"jja" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"jjc" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"jjg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"jjj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"jjo" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"jjs" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"jju" = ( -/obj/structure/table/reinforced, -/obj/item/restraints/handcuffs/fake, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"jjA" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/closet/secure_closet/armory2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"jjB" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lantern{ - pixel_y = 7 - }, -/obj/item/radio/intercom/chapel/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel) -"jjC" = ( -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Mental Health Ward" - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"jjF" = ( -/turf/closed/wall, -/area/station/hallway/secondary/service) -"jjG" = ( -/obj/machinery/light/red/dim/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"jjT" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/portable_atmospherics/pump, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"jjU" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/signlang_radio, -/obj/item/mod/module/thermal_regulator, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"jjW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"jko" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/garden) -"jks" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Changing Rooms" - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"jkD" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east{ - cell_type = /obj/item/stock_parts/power_store/battery/hyper - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/tcommsat/server) -"jkH" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"jkM" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"jlr" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/structure/closet/crate/bin, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/lobby) -"jlx" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"jly" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"jlC" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"jlE" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"jlI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/railing/corner/end{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jlJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"jlK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "engine" - }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jlS" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/station/service/library) -"jlW" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/light_switch/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"jmc" = ( -/turf/closed/wall, -/area/station/service/hydroponics/garden) -"jml" = ( -/obj/effect/turf_decal/box/corners, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"jmm" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"jmu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"jmB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/lobby) -"jmH" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate/cardboard, -/obj/effect/spawner/random/maintenance/two, -/obj/item/stack/sheet/cardboard, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"jmR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/machinery/computer/records/medical/laptop{ - dir = 1; - pixel_y = 4 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"jmS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/aft) -"jmU" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"jna" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"jnh" = ( -/turf/open/floor/iron/dark/side, -/area/station/commons/locker) -"jnm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen/diner) -"jnp" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"jnv" = ( -/obj/structure/closet/crate/preopen, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"jnA" = ( -/obj/machinery/light/red/dim/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"jnD" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"jnF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"jnG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"jnV" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lab) -"joh" = ( -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"jom" = ( -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"joA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"joE" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"joH" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"joL" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"joP" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"joT" = ( -/obj/structure/table/reinforced/rglass, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"joU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"joV" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"jpq" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor3/fore) -"jpy" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"jpz" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"jpB" = ( -/obj/machinery/door/airlock/medical{ - name = "Operating Room A" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"jpC" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - elevator_mode = 1; - transport_linked_id = "aft_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"jpH" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/medical/surgery_tool, -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"jpK" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/office) -"jpM" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor1/fore) -"jpQ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/folder/red{ - pixel_x = 2; - pixel_y = -4 - }, -/obj/item/folder/blue{ - pixel_x = -4; - pixel_y = 5 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"jpT" = ( -/obj/machinery/flasher/portable, -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/security/brig) -"jqh" = ( -/obj/machinery/plumbing/bottler, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"jqq" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"jqy" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/fore) -"jqD" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"jqP" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Xenobio - Computers Pens" - }, -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"jqV" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/railing/corner, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"jrl" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"jrr" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"jrv" = ( -/obj/structure/bed{ - dir = 1 - }, -/obj/item/bedsheet/blue{ - dir = 4 - }, -/obj/item/toy/plush/snakeplushie{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/apartment2) -"jrx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/cargo/sorting) -"jry" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/obj/machinery/shower/directional/north, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"jrM" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"jrV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"jrZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/station/maintenance/floor1/starboard/fore) -"jse" = ( -/obj/machinery/door/airlock{ - name = "Bartender's Backroom" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/service/bar, -/turf/open/floor/wood, -/area/station/service/bar) -"jsF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"jsH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/brig) -"jsL" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"jsP" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"jsS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"jsV" = ( -/obj/machinery/telecomms/server/presets/medical, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"jsY" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"jsZ" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"jtb" = ( -/obj/machinery/button/door/directional/east{ - id = "homeguard"; - name = "Home Guard Equipment Shutters"; - req_access = list("armory") - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"jtf" = ( -/obj/item/stack/sheet/mineral/snow{ - amount = 10 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/misc/asteroid/snow/standard_air{ - icon_state = "snow8" - }, -/area/station/maintenance/floor2/port/aft) -"jth" = ( -/obj/machinery/porta_turret/ai, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"jtm" = ( -/obj/machinery/door/airlock/wood{ - name = "Bedroom" - }, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/apartment2) -"jtr" = ( -/obj/effect/turf_decal/siding/wideplating_new/end, -/turf/open/floor/engine/airless, -/area/space/nearstation) -"jtu" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"jtC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"jtJ" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/misc/snow/actually_safe{ - icon_state = "snow9" - }, -/area/station/hallway/floor2/fore) -"jtL" = ( -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"juf" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "radshutsouth" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"juq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"juE" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"juF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/item/reagent_containers/cup/bucket, -/obj/item/mop, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"juI" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/light/small/directional/west, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/engine_smes) -"juW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/window/brigdoor/right/directional/south{ - name = "Courtroom Access"; - req_one_access = list("security","court") - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/courtroom) -"jvf" = ( -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/maintenance/floor4/port/fore) -"jvk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"jvu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"jvv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"jvM" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/captain/private) -"jvQ" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/green/full, -/obj/structure/sign/poster/random/directional/north, -/obj/item/storage/box/mousetraps{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/key/janitor{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/clothing/gloves/color/orange{ - pixel_x = 4; - pixel_y = -2 - }, -/turf/open/floor/iron, -/area/station/service/janitor) -"jvX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"jvY" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"jwi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"jwj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"jwo" = ( -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"jwr" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"jwu" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"jwC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"jwD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"jwG" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/security/brig) -"jwP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"jwS" = ( -/obj/structure/curtain, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"jxa" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"jxc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"jxf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"jxi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/telecomms/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"jxj" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"jxk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/smooth_large, -/area/station/science/robotics/mechbay) -"jxy" = ( -/obj/structure/table, -/obj/item/taperecorder/empty{ - pixel_x = -9 - }, -/obj/item/knife/hunting{ - pixel_y = 8 - }, -/obj/item/wirecutters, -/obj/effect/decal/cleanable/dirt, -/obj/item/lighter{ - pixel_x = 10; - pixel_y = -13 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"jxz" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) -"jxD" = ( -/obj/machinery/door/airlock/virology/glass{ - name = "Test Subject Cell" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/medical/virology, -/obj/structure/cable, -/turf/open/floor/noslip, -/area/station/medical/virology) -"jxF" = ( -/obj/machinery/light/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"jxG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/docking_port/stationary{ - dir = 2; - dwidth = 3; - height = 12; - name = "north star arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/northstar; - shuttle_id = "arrival_stationary"; - width = 7 - }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"jxK" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"jxM" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"jxN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"jxP" = ( -/obj/effect/turf_decal/bot, -/obj/structure/punching_bag, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"jyc" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"jye" = ( -/obj/structure/table, -/obj/item/clothing/glasses/sunglasses{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_y = 7 - }, -/obj/machinery/recharger, -/turf/open/floor/iron/dark, -/area/station/security/range) -"jyp" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Head of Security Office" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/hos, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"jyu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet) -"jyC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jyD" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"jyL" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/structure/sign/directions/dorms/directional/north, -/obj/structure/sign/directions/security/directional/north{ - pixel_y = 40 - }, -/obj/structure/sign/directions/command/directional/north{ - pixel_y = 24 - }, -/obj/structure/rack, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor2/fore) -"jyP" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/aft) -"jyY" = ( -/obj/structure/rack, -/obj/item/clothing/gloves/color/black, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"jzc" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"jzd" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/newscaster/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jze" = ( -/obj/machinery/door/airlock/security{ - name = "Security EVA" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"jzp" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"jzq" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/sign/departments/psychology/directional/east, -/turf/open/floor/iron/white/side, -/area/station/hallway/floor2/fore) -"jzt" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"jzv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/chair/wood/wings{ - dir = 4 - }, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"jzB" = ( -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"jzC" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"jzE" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"jzF" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/detective, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Detective's Office" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"jzH" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/cargo/storage) -"jzL" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"jzN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/iv_drip, -/obj/structure/cable, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"jzP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jzV" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"jAl" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"jAB" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/entry) -"jAF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Arrivals Changing Room" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "arrivalsprivacy"; - name = "Arrivals Privacy Shutters" - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"jAO" = ( -/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"jAR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/mass_driver/ordnance{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"jAU" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"jAX" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"jAZ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"jBa" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"jBf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/bot_assembly/floorbot, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"jBm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"jBu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/assembly/igniter{ - pixel_x = 3; - pixel_y = -7 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"jBx" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"jBR" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"jCi" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"jCz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-16"; - location = "2-15" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"jCA" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/command/storage/eva) -"jCD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"jCK" = ( -/obj/machinery/recharger, -/obj/structure/table, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"jCM" = ( -/obj/machinery/light/broken/directional/south, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"jCU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"jDc" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/folder/white, -/obj/item/taperecorder{ - pixel_x = -9; - pixel_y = 3 - }, -/obj/item/stamp/head/rd{ - pixel_x = 5 - }, -/obj/item/toy/figure/rd{ - pixel_x = 2; - pixel_y = 13 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"jDe" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"jDq" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"jDx" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"jDD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/shovel, -/obj/effect/spawner/random/clothing/gloves, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"jDJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"jDL" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"jEa" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"jEc" = ( -/obj/effect/mapping_helpers/airlock/access/any/supply/mining, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/highsecurity{ - id_tag = "mine_bhz_lock"; - name = "Biohazard Decontamination" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/cargo/miningoffice) -"jEk" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"jEn" = ( -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/cargo/miningdock) -"jEs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"jEt" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"jEO" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"jER" = ( -/obj/machinery/atmospherics/components/binary/valve, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jES" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"jEX" = ( -/obj/effect/turf_decal/trimline/purple/line, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jEY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"jEZ" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/bed/medical/emergency, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"jFh" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"jFi" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"jFr" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jFB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"jFJ" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jFK" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"jFN" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/storage) -"jFO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"jFQ" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"jFT" = ( -/obj/structure/railing/corner, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"jFZ" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"jGe" = ( -/obj/machinery/camera{ - c_tag = "Technical Storage"; - dir = 1; - network = list("ss13","engine") - }, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage/tech) -"jGf" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"jGg" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"jGj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"jGl" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"jGn" = ( -/obj/structure/table/wood/poker, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/item/storage/dice, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"jGz" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"jGF" = ( -/turf/closed/wall, -/area/station/service/kitchen/kitchen_backroom) -"jGI" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"jGN" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/ai_all, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_corner, -/area/station/engineering/storage/tech) -"jHc" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Telecomms Cooling"; - req_access = list("tcomms") - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/holopad, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/iron/telecomms, -/area/station/tcommsat/server) -"jHm" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"jHr" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"jHv" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"jHH" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"jHI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/east, -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"jHJ" = ( -/obj/structure/hedge/opaque, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/green, -/area/station/service/kitchen/diner) -"jHQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"jHR" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"jHS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/checkpoint) -"jHT" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"jHW" = ( -/obj/structure/weightmachine/weightlifter, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/smooth_large, -/area/station/medical/psychology) -"jIc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/multilayer/connected, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"jIe" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/engineering/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"jIi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/siding/blue{ - dir = 4; - pixel_x = -15 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"jIs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/item/storage/box/rxglasses{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"jIy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"jIA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/tile, -/area/station/service/library) -"jIG" = ( -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"jIJ" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"jIP" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 8 - }, -/turf/open/space/basic, -/area/space/nearstation) -"jIT" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"jIV" = ( -/obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/machinery/recharger, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"jIY" = ( -/obj/effect/turf_decal/trimline/green/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"jIZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/checkpoint) -"jJa" = ( -/obj/effect/decal/cleanable/confetti, -/obj/effect/turf_decal/siding/blue/corner, -/obj/machinery/light/blacklight/directional/north, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"jJm" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"jJq" = ( -/obj/effect/landmark/navigate_destination/chemfactory, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"jJu" = ( -/turf/closed/wall, -/area/station/service/kitchen/abandoned) -"jJB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/table, -/obj/item/paper/crumpled, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"jJC" = ( -/obj/item/target/syndicate, -/obj/structure/training_machine, -/turf/open/floor/iron, -/area/station/security/range) -"jJI" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/item/toy/plush/pkplush{ - name = "Hug Emoji" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"jJM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"jJP" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"jJV" = ( -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"jJW" = ( -/obj/structure/foamedmetal, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"jKh" = ( -/obj/structure/closet/cabinet, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"jKi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"jKt" = ( -/turf/closed/wall/r_wall, -/area/station/tcommsat/computer) -"jKB" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 9 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"jKF" = ( -/obj/machinery/holopad, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"jKK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"jKO" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/textured_half, -/area/station/hallway/secondary/entry) -"jKY" = ( -/obj/structure/bookcase/random/adult, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"jLh" = ( -/obj/structure/sign/poster/contraband/lamarr, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"jLi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"jLk" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/food/drug/saturnx, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"jLm" = ( -/obj/structure/bed, -/obj/item/bedsheet/hos, -/obj/effect/landmark/start/head_of_security, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"jLr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"jLt" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"jLF" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"jLI" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"jLQ" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"jLT" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/structure/grille, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"jLX" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"jMn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"jMp" = ( -/obj/item/storage/belt/utility, -/obj/structure/rack, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"jMu" = ( -/obj/machinery/door/airlock{ - name = "Escape Pod C" - }, -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) -"jMv" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"jME" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/shower/directional/east, -/turf/open/floor/noslip, -/area/station/science/lobby) -"jMI" = ( -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/structure/closet/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"jMW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/machinery/shower/directional/east, -/obj/effect/turf_decal/stripes/full, -/turf/open/floor/noslip, -/area/station/engineering/supermatter/room) -"jNa" = ( -/obj/effect/turf_decal/trimline/brown/line, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/mix_input, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"jNb" = ( -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"jNc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"jNg" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"jNl" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"jNr" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"jNt" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"jNu" = ( -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"jNv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"jNE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"jNH" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"jNL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"jNM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"jNP" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"jNQ" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"jOc" = ( -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, -/obj/item/key/security, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"jOj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"jOp" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"jOA" = ( -/obj/structure/closet/l3closet/security, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"jOC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"jON" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/explab) -"jOS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/skill_station, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"jOT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Starboard Quarter Solars" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/structure/railing/corner, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"jOX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"jPd" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/item/watertank/atmos, -/turf/open/floor/iron, -/area/station/maintenance/floor3/port/fore) -"jPg" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"jPh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"jPj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"jPp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/torso, -/obj/effect/decal/cleanable/blood, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"jPr" = ( -/obj/structure/closet/bombcloset, -/obj/machinery/light/cold/no_nightlight/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jPv" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/structure/table, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"jPD" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/arrow_ccw{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"jPG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"jPI" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Disposals" - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/shipping, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"jPR" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"jPW" = ( -/obj/structure/closet{ - name = "Evidence Closet 2" - }, -/obj/effect/spawner/random/clothing/lizardboots, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"jQb" = ( -/obj/machinery/door/airlock/medical{ - name = "Chemical Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/chemistry, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"jQu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"jQw" = ( -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/maintenance/floor1/starboard/aft) -"jQG" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"jQK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"jQS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"jQX" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"jQY" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"jRe" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor3/aft) -"jRi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"jRp" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/machinery/telecomms/processor/preset_four, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"jRq" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"jRt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/storage/primary) -"jRx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/telecomms/alt/directional/south, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"jRB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/built/directional/east, -/obj/item/shard, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"jRI" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/research_director, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"jRJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hydroponics{ - desc = "A very, very old airlock, it barely seems to function."; - name = "G-rd-n" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"jRM" = ( -/obj/effect/spawner/random/engineering/canister, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"jRO" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/floor2/aft) -"jRP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"jRV" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/vending/wardrobe/sec_wardrobe, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"jSj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"jSt" = ( -/obj/machinery/computer/prisoner/gulag_teleporter_computer, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"jSy" = ( -/obj/machinery/smartfridge, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/service/hydroponics) -"jSC" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/north{ - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"jSD" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"jSJ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"jSW" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"jTj" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 6 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"jTo" = ( -/obj/structure/ladder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"jTw" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"jTE" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/medbay/alt/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"jTH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"jTK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"jTM" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/cytology) -"jTO" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/wood, -/area/station/service/bar) -"jTS" = ( -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"jUf" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, -/obj/machinery/door/airlock/hydroponics/glass{ - name = "Hydroponics" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"jUg" = ( -/turf/open/floor/iron/half, -/area/station/command/gateway) -"jUo" = ( -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/engineering/lobby) -"jUu" = ( -/obj/structure/stairs/south, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/fore) -"jUC" = ( -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"jUJ" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"jUP" = ( -/turf/closed/wall, -/area/station/cargo/warehouse) -"jUR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"jVe" = ( -/obj/structure/ladder, -/turf/open/floor/plating/airless, -/area/station/maintenance/floor3/port/aft) -"jVg" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/morgue, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"jVo" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"jVt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/button/elevator/directional/south{ - id = "com_vator" - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "com_vator"; - pixel_y = -36 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"jVu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"jVK" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison) -"jVM" = ( -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"jVN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"jVS" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/cargo/lobby) -"jVT" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"jVW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/pew/right{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"jWi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"jWm" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 - }, -/obj/structure/railing, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"jWn" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"jWv" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/waste) -"jWz" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"jWI" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/stripes/end, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"jWR" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"jWT" = ( -/turf/closed/wall, -/area/station/service/kitchen/diner) -"jXb" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"jXc" = ( -/turf/open/floor/iron/white/smooth_edge, -/area/station/science/robotics/lab) -"jXj" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"jXl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"jXu" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"jXv" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"jXz" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"jXB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"jXE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"jXW" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"jXX" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Holodeck - Fore"; - name = "holodeck camera" - }, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" - }, -/area/station/holodeck/rec_center) -"jXY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"jYe" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/chair/plastic, -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"jYo" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"jYt" = ( -/obj/structure/table/wood/poker, -/obj/item/storage/dice, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"jYy" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"jYz" = ( -/obj/structure/chair/sofa/middle/maroon{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"jYS" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/trimline/white/warning, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"jYY" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"jZa" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"jZe" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"jZj" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"jZk" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit) -"jZm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"jZp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"jZA" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"jZE" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"jZL" = ( -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"jZS" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"jZZ" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"kak" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"kaq" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/machinery/door/airlock{ - name = "Escape Pod A" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"kaw" = ( -/obj/item/construction/plumbing, -/obj/structure/table/reinforced, -/obj/machinery/camera/directional/north, -/obj/machinery/newscaster/directional/north, -/obj/item/gun/syringe, -/obj/item/gun/syringe, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"kaT" = ( -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"kaU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"kaZ" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/clothing/glasses/regular, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/dorms/room1) -"kba" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"kbf" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"kbk" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"kbp" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/security/glass{ - name = "1st Floor Outpost" - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"kbq" = ( -/obj/structure/table/wood, -/obj/item/canvas/nineteen_nineteen, -/obj/item/canvas/thirtysix_twentyfour, -/obj/item/canvas/twentyfour_twentyfour, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"kbu" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/office) -"kbw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"kbx" = ( -/obj/effect/turf_decal/trimline/purple, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"kbE" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"kbI" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"kbL" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/multitool{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/storage/belt/utility/full{ - pixel_x = 4; - pixel_y = -4 - }, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"kbM" = ( -/obj/machinery/door/airlock/highsecurity{ - id_tag = "mine_bhz_lock"; - name = "Biohazard Decontamination" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/mining, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_large, -/area/station/cargo/miningoffice) -"kbN" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"kbO" = ( -/obj/structure/curtain, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/psychology) -"kbR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"kbS" = ( -/obj/machinery/holopad, -/obj/effect/landmark/observer_start, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kbT" = ( -/obj/structure/closet/secure_closet/detective, -/obj/item/switchblade, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"kbZ" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"kca" = ( -/turf/closed/wall/r_wall, -/area/station/service/library/lounge) -"kch" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kcl" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"kcr" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/computer/robotics{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kct" = ( -/obj/structure/closet/firecloset/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"kcv" = ( -/obj/structure/closet{ - name = "Evidence Closet 3" - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"kcw" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 8 - }, -/obj/machinery/button/door/directional/north{ - id = "secmechbay"; - name = "Security Mech Garage Door Controls"; - req_access = list("security") - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"kcy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"kcA" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"kcB" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "radshutnorth" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"kcC" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"kcI" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"kcK" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"kcT" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/departments/exodrone/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kcZ" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "lockers"; - name = "Locker Room Shutters" - }, -/obj/item/storage/crayons{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"kdh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"kdj" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"kdu" = ( -/obj/machinery/light/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/gravity_generator) -"kdw" = ( -/obj/structure/table/wood, -/obj/item/camera_film{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/camera_film{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/camera, -/obj/machinery/light/directional/east, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"kdx" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"kdy" = ( -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"kdA" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/bananalamp{ - pixel_y = 5 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/grimy, -/area/station/science/xenobiology/hallway) -"kdE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"kdK" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"kdQ" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/head/rasta, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"kdU" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"keg" = ( -/obj/machinery/light_switch/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"kes" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet/red, -/area/station/service/library) -"ket" = ( -/obj/machinery/light/warm/directional/south, -/turf/open/floor/iron/white/side{ - dir = 10 - }, -/area/station/hallway/floor2/fore) -"key" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"keA" = ( -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"keE" = ( -/obj/structure/grille/broken, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"keF" = ( -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/departure_lounge) -"keJ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"keL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-11"; - location = "3-10" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"keM" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"keN" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"keP" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/maintenance/floor1/starboard/aft) -"keR" = ( -/obj/structure/table/reinforced, -/obj/item/folder{ - pixel_x = -5 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/item/pen{ - pixel_x = 5 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = -3 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"keW" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"keX" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"kfb" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"kfg" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/layer2{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"kfm" = ( -/obj/effect/turf_decal/trimline/purple, -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"kfo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kfq" = ( -/obj/structure/sign/departments/vault/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"kfF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"kfL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/oven, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"kga" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kgl" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"kgn" = ( -/obj/structure/sign/departments/security/directional/east, -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor4/aft) -"kgK" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kgL" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing/corner/end/flip{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"kgT" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"kgW" = ( -/obj/structure/transit_tube/crossing{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"kgY" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"kgZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"kha" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/wood/fancy/blue, -/obj/item/storage/fancy/cigarettes/cigars/havana, -/obj/item/storage/fancy/cigarettes/cigars/cohiba{ - pixel_y = 3 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"khc" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"khe" = ( -/obj/machinery/door/airlock{ - id_tag = "nsminingdorm1"; - name = "Room 1" - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"khh" = ( -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"khk" = ( -/obj/effect/turf_decal/trimline/red/end{ - dir = 8 - }, -/obj/effect/landmark/navigate_destination/bridge, -/obj/structure/plaque/static_plaque/golden/commission/northstar, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"khl" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) -"khm" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"khn" = ( -/obj/item/storage/box/chemimp{ - pixel_x = 6 - }, -/obj/item/storage/box/trackimp{ - pixel_x = -3 - }, -/obj/item/storage/lockbox/loyalty, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"khr" = ( -/turf/closed/wall, -/area/station/maintenance/disposal/incinerator) -"khs" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Law Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/court, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"khx" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"khK" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/teleporter) -"khP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"khQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"khS" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"khX" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/stripes/box, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"kik" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"kil" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/medical/abandoned) -"kis" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"kiA" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"kiM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"kiO" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/suit_storage_unit/medical, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"kjb" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/machinery/light/small/red/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"kjc" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"kjd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"kjk" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Briefing Room" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"kjo" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/science/glass{ - name = "Genetics Office" - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"kjz" = ( -/obj/machinery/door/airlock/grunge{ - name = "Cell 1" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"kjF" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"kjW" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/light/cold/no_nightlight/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"kkg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"kkw" = ( -/obj/structure/cable, -/obj/machinery/power/floodlight{ - anchored = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"kkA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"kkI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"kkK" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"kkN" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"kkQ" = ( -/obj/structure/punching_bag, -/obj/effect/turf_decal/stripes, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/medical/psychology) -"klc" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"klo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"klw" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"klz" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"klC" = ( -/obj/effect/turf_decal/caution/white{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"klD" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 1 - }, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"klO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"klY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"kmc" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/landmark/start/chaplain, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"kme" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Worship Hall" - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"kmk" = ( -/obj/effect/decal/cleanable/blood/footprints, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"kms" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/service/kitchen/abandoned) -"kmt" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kmG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/navigate_destination/lawyer, -/turf/open/floor/wood/parquet, -/area/station/hallway/floor4/aft) -"kmQ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/supply/disposals, -/obj/structure/disposalpipe/sorting/mail{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/sorting) -"kmR" = ( -/turf/closed/wall, -/area/station/science/lab) -"kmV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"knd" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/aft) -"knf" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"knk" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"knH" = ( -/turf/open/openspace, -/area/station/ai_monitored/turret_protected/aisat/service) -"knM" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"knO" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 10 - }, -/obj/item/kirbyplants/random, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"knP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"knT" = ( -/obj/structure/sink/directional/north, -/obj/effect/turf_decal/trimline/purple/end{ - dir = 1 - }, -/turf/open/floor/noslip{ - icon_state = "textured_dark" - }, -/area/station/science/robotics/lab) -"knW" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"knY" = ( -/obj/structure/showcase/cyborg/old{ - dir = 4; - pixel_x = -9; - pixel_y = 2 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/cable, -/obj/item/radio/intercom/directional/south{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Private Channel" - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"koc" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/south, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"kod" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/smartfridge/organ, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"kok" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"kop" = ( -/turf/open/floor/plating/airless, -/area/station/hallway/secondary/exit) -"kor" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/landmark/start/medical_doctor, -/obj/structure/chair/sofa/left/brown, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"kox" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"koC" = ( -/obj/structure/tank_dispenser, -/obj/effect/turf_decal/bot, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"koJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"koN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"koU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"kpa" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -3 - }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 3 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"kpc" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"kpe" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"kph" = ( -/obj/machinery/telecomms/server/presets/supply, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"kpi" = ( -/obj/structure/sign/poster/official/terragov/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"kpl" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"kpt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"kpx" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"kpz" = ( -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"kpI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"kpR" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"kpT" = ( -/obj/machinery/duct, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"kpU" = ( -/obj/item/shard/plasma, -/obj/structure/foamedmetal, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"kpX" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"kqk" = ( -/obj/structure/chair/pew/right{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"kqp" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"kqy" = ( -/obj/machinery/door_buttons/access_button{ - idDoor = "asylum_airlock_interior"; - name = "Asylum Entry"; - pixel_y = 26; - req_access = list("psychology") - }, -/obj/effect/turf_decal/trimline/white/filled/line{ - dir = 9 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"kqG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"kqP" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/smooth, -/area/station/construction) -"kqW" = ( -/obj/structure/filingcabinet/employment, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"krf" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/item/restraints/handcuffs, -/obj/item/clothing/mask/muzzle, -/obj/item/clothing/mask/muzzle, -/obj/item/clothing/mask/muzzle, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"kri" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"krk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Office" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"kro" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"krq" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"krw" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"kry" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"krF" = ( -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/access/any/science/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard/fore) -"krK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"krT" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"krU" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"ksd" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/clothing/glasses/regular, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"ksk" = ( -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/aft) -"ksn" = ( -/obj/structure/table, -/obj/item/holosign_creator/atmos, -/obj/item/holosign_creator/atmos, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ksr" = ( -/obj/effect/turf_decal/bot, -/obj/structure/table, -/obj/item/plant_analyzer{ - pixel_x = 2 - }, -/obj/item/shovel/spade, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"ksu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"ksv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"ksw" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"ksx" = ( -/obj/structure/closet/emcloset, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ksB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/duct, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"ksH" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"ksJ" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"ksN" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"ksX" = ( -/obj/machinery/door/airlock/research{ - name = "Research Director's Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"ktd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_corner{ - dir = 1 - }, -/area/station/cargo/miningoffice) -"kti" = ( -/obj/item/tank/jetpack/carbondioxide, -/obj/item/tank/jetpack/carbondioxide, -/obj/item/tank/jetpack/carbondioxide, -/obj/structure/rack, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"ktl" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/effect/turf_decal/box, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/office) -"ktu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/medical/psychology) -"ktz" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"ktC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"ktG" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"ktM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock_note_placer{ - note_info = "THIS IS PUBLIC. IT'S MEANT TO BE. PLEASE. GOD. WE KNOW. STOP. TELLING US. - Yours Truly and Forever Faithfully, The Desk Of The Chief Engineer" - }, -/obj/machinery/door/airlock/science/glass{ - name = "Science Hall" - }, -/turf/open/floor/catwalk_floor, -/area/station/science/lower) -"ktN" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"ktV" = ( -/obj/structure/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"ktY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"kub" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"kuh" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"kum" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"kux" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"kuA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced/plasmarglass, -/obj/item/reagent_containers/pill/cyanide{ - desc = "What could it be?"; - name = "red pill" - }, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) -"kuB" = ( -/obj/effect/mapping_helpers/mail_sorting/science/robotics, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"kuW" = ( -/obj/structure/firelock_frame, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"kvi" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/court, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/security{ - name = "Law Office" - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"kvw" = ( -/obj/machinery/igniter/incinerator_ordmix, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"kvB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/science/lower) -"kvE" = ( -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/maintenance/floor2/port/fore) -"kvH" = ( -/obj/machinery/door/poddoor/shutters/window{ - dir = 8; - id = "armory"; - name = "Armoury Shutters" - }, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"kvO" = ( -/obj/item/wrench/medical, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/item/clothing/glasses/hud/health, -/obj/structure/table/glass, -/obj/item/gun/syringe, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"kvR" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"kwc" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Bar Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/bar, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"kwf" = ( -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"kwl" = ( -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor2/fore) -"kwm" = ( -/obj/structure/lattice/catwalk, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"kwn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"kws" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"kwt" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"kwG" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/landmark/start/bartender, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"kwK" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"kwL" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/recharger, -/obj/structure/table, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"kxf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"kxh" = ( -/obj/machinery/vending/sovietsoda, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"kxq" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"kxs" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/gambling, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"kxJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"kxK" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"kxM" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/ai_monitored/command/storage/eva) -"kxP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark/corner, -/area/station/security/brig) -"kxS" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/pen/red, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"kxT" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"kye" = ( -/obj/machinery/door/airlock/security{ - name = "Perma" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "perma-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"kyj" = ( -/obj/effect/turf_decal/loading_area/white{ - color = "#52B4E9"; - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/hallway/floor4/fore) -"kyo" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/layer3, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"kyv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"kyw" = ( -/obj/machinery/gulag_teleporter, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"kyx" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/storage/primary) -"kyM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"kyO" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"kyR" = ( -/turf/closed/wall, -/area/station/hallway/floor1/fore) -"kzn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) -"kzr" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/ethanol{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/carbon{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/chlorine{ - pixel_x = 1 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"kzE" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor1/port) -"kzK" = ( -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"kzP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"kzT" = ( -/obj/item/bedsheet/double, -/obj/structure/bed/double, -/obj/machinery/light/directional/south, -/obj/effect/landmark/start/chaplain, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"kzU" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"kAb" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"kAe" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Science - Equipment Closet" - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"kAm" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/storage/box/masks, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"kAu" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/disposaloutlet{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"kAw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/port) -"kAE" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/turf/open/floor/engine/airless, -/area/space/nearstation) -"kAF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"kAG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"kAI" = ( -/obj/structure/table/reinforced, -/obj/item/storage/fancy/rollingpapers{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/storage/fancy/rollingpapers{ - pixel_x = -6; - pixel_y = -6 - }, -/obj/item/plant_analyzer{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/item/cultivator, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"kAO" = ( -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"kAR" = ( -/obj/machinery/door/airlock/security{ - name = "Perma" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "perma-entrance" - }, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"kAU" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"kAW" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"kAY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"kBa" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/effect/spawner/random/trash/mess, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"kBc" = ( -/obj/structure/table/reinforced, -/obj/machinery/flasher/directional/south{ - id = "virosec_flash" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"kBi" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/computer/atmos_alert{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"kBj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"kBk" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"kBn" = ( -/obj/structure/flora/tree/jungle/small{ - pixel_x = -23 - }, -/turf/open/misc/sandy_dirt, -/area/station/maintenance/floor1/starboard) -"kBs" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/obj/item/rack_parts, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"kBz" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Engine Access" - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/pumproom) -"kBB" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/hallway/floor3/aft) -"kBK" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/orange/visible, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"kBL" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"kBX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"kCi" = ( -/obj/effect/spawner/random/trash/bin, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"kCk" = ( -/obj/structure/railing/corner, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kCA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/medical/office) -"kCR" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Xenobio - Starboard Pens" - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"kDg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"kDh" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/maintenance/disposal/incinerator) -"kDq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"kDz" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/prison/garden) -"kDB" = ( -/turf/closed/wall, -/area/station/commons/dorms/room4) -"kDG" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/camera/motion/directional/east{ - c_tag = "MiniSat - Fore"; - network = list("minisat") - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"kDK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_corner{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"kDN" = ( -/obj/machinery/door/window/left/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"kDQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"kDU" = ( -/obj/structure/table/glass, -/obj/item/beacon{ - enabled = 0 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"kEe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/warning/vacuum/external{ - pixel_y = 32 - }, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"kEf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"kEp" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"kEv" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/arrows, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kEF" = ( -/obj/machinery/computer/rdconsole{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"kEI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"kEN" = ( -/obj/machinery/camera{ - c_tag = "Atmos Tank #1 - N2"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"kET" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/textured_edge{ - dir = 1 - }, -/area/station/medical/chemistry) -"kEU" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"kEY" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"kEZ" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"kFb" = ( -/obj/structure/chair/stool/bar/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"kFd" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"kFi" = ( -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/official/random/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"kFp" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"kFv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"kFy" = ( -/turf/open/openspace, -/area/station/science/ordnance/testlab) -"kFF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"kFJ" = ( -/obj/machinery/photocopier, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kFO" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"kFP" = ( -/turf/open/floor/iron/textured_half, -/area/station/cargo/office) -"kGa" = ( -/obj/structure/table, -/obj/item/key/security, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/item/key/security, -/obj/machinery/button/flasher{ - id = "drunktank"; - name = "Drunk Tank Flasher" - }, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"kGe" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"kGf" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/item/paper_bin, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"kGg" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"kGq" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/structure/closet, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"kGr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"kGv" = ( -/obj/structure/closet/crate/trashcart{ - name = "book bin" - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/textured_large, -/area/station/service/library/printer) -"kGz" = ( -/obj/effect/decal/cleanable/glitter, -/obj/effect/turf_decal/siding/blue{ - dir = 8 - }, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"kGK" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/highsecurity{ - name = "Engine Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/pumproom) -"kGL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/bot, -/obj/structure/tank_holder/extinguisher, -/turf/open/floor/iron, -/area/station/maintenance/floor1/starboard/fore) -"kGZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"kHc" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/right/maroon{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"kHl" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"kHs" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"kHx" = ( -/obj/structure/closet/firecloset/full, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"kHG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/garden) -"kHJ" = ( -/obj/item/clothing/mask/muzzle{ - pixel_y = -5 - }, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/muzzle/breath, -/obj/structure/closet{ - name = "Surgical Supplies" - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/bodybags, -/obj/item/healthanalyzer{ - pixel_y = -3 - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"kHM" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"kHN" = ( -/obj/effect/turf_decal/tile/purple, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/white, -/area/station/cargo/miningdock) -"kHO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/fax{ - fax_name = "Head of Security's Office"; - name = "Head of Security's Fax Machine" - }, -/obj/structure/table/wood, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"kHP" = ( -/obj/machinery/computer/shuttle/mining{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"kHQ" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/cargo_technician, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/drone_bay) -"kHR" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Fore Entrance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"kHS" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/obj/item/clothing/gloves/color/yellow, -/obj/machinery/requests_console/directional/south{ - department = "Engineering"; - name = "Engineering Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/engineering/lobby) -"kHV" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"kIe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"kIu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"kIw" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/trimline/dark_blue/end, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"kIG" = ( -/obj/machinery/button/door/directional/north{ - id = "Secure Storage"; - req_access = list("engineering") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"kII" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"kIO" = ( -/obj/structure/chair, -/obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"kIR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"kJg" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"kJq" = ( -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"kJG" = ( -/obj/structure/closet/athletic_mixed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"kJT" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"kJU" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"kJY" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/fax{ - fax_name = "Psychology Office"; - name = "Psychology Office Fax Machine" - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"kKa" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"kKd" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"kKk" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kKn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/prison) -"kKo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/bar) -"kKr" = ( -/turf/closed/wall, -/area/station/medical/pharmacy) -"kKz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"kKE" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kKG" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"kKO" = ( -/obj/machinery/atmospherics/components/binary/tank_compressor{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"kKQ" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"kKU" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kKX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"kLc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"kLn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"kLz" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"kLE" = ( -/obj/machinery/door/airlock/security{ - name = "Prisoner Transfer" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/armory, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"kLF" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"kLH" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"kLM" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kLN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/medical/abandoned) -"kLY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"kMb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"kMk" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"kMv" = ( -/obj/machinery/plumbing/receiver, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"kMC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"kMN" = ( -/obj/machinery/door/airlock/medical{ - name = "Paramedic Dispatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"kMQ" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"kMX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kNh" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/fluff/paper/stack{ - desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging."; - dir = 5 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"kNn" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"kNA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"kNJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/mecha_part_fabricator{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"kNN" = ( -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"kNO" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/work) -"kNR" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "aft_vator"; - pixel_y = -4 - }, -/obj/machinery/button/elevator/directional/east{ - id = "aft_vator" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"kNT" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"kNZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"kOc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/office) -"kOk" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"kOo" = ( -/turf/open/floor/iron/smooth, -/area/station/construction) -"kOu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/service/bar/atrium) -"kOx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/item/stack/sheet/mineral/coal, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"kOA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"kON" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"kOQ" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"kOR" = ( -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"kOS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"kOU" = ( -/obj/machinery/rnd/production/circuit_imprinter/department/science, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"kPk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) -"kPq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/floor3/fore) -"kPr" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/item/pai_card, -/turf/open/floor/iron/dark, -/area/station/security/office) -"kPy" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"kPW" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"kPX" = ( -/obj/effect/turf_decal/trimline/white, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"kQb" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/commons/storage/primary) -"kQk" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor4/aft) -"kQo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"kQp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/fax{ - fax_name = "Detective's Office"; - name = "Detective's Fax Machine" - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"kQu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/office) -"kQF" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/item/kirbyplants/random, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"kQI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/bag/trash, -/obj/structure/rack, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"kQN" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"kQO" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"kQQ" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/service/lawoffice) -"kQW" = ( -/obj/item/trench_tool, -/obj/effect/decal/cleanable/molten_object/large{ - desc = "The pile looks inert, yet you still hear a faint hum. Standing around this makes you feel funny."; - name = "glob of mess" - }, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"kRg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"kRh" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"kRn" = ( -/obj/structure/mirror/directional/west, -/obj/machinery/light/small/directional/south, -/obj/structure/sink/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"kRo" = ( -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/treatment, -/obj/structure/rack, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"kRw" = ( -/turf/closed/wall, -/area/station/maintenance/floor3/starboard/aft) -"kRF" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/sink/kitchen/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"kRG" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"kRI" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/fore) -"kRM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"kRN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"kRO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"kRR" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kRS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"kSa" = ( -/obj/machinery/announcement_system, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"kSp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"kSr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"kSA" = ( -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/grass, -/area/station/service/chapel) -"kSF" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/ce, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/command/glass{ - name = "Chief Engineer's Office" - }, -/turf/open/floor/iron/dark/side, -/area/station/engineering/engine_smes) -"kSN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"kSR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"kSU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"kSW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"kSX" = ( -/obj/effect/spawner/structure/window/reinforced/shuttle, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"kSZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"kTc" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) -"kTg" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Library Garden" - }, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"kTh" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/effect/turf_decal/tile/red/anticorner, -/obj/item/card/id/advanced/prisoner/six, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/brig) -"kTz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/mob/living/simple_animal/bot/secbot/beepsky/armsky, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"kTI" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"kTL" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"kTV" = ( -/obj/structure/bookcase/random/religion, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"kTZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"kUe" = ( -/obj/structure/holosign/barrier/engineering, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"kUh" = ( -/obj/item/paper_bin, -/obj/structure/table/reinforced/rglass, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"kUk" = ( -/obj/structure/table, -/obj/item/stock_parts/servo{ - pixel_x = 2; - pixel_y = -4 - }, -/obj/item/disk/tech_disk{ - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/white, -/area/station/science/lab) -"kUl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"kUo" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"kUw" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/floor1/aft) -"kUB" = ( -/obj/machinery/vending/wallmed/directional/north, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"kUC" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"kUO" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"kUU" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/camera/directional/north, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"kUW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"kUZ" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"kVm" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/ladder, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"kVp" = ( -/turf/open/floor/engine/hull, -/area/space/nearstation) -"kVu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/cargo/miningoffice) -"kVB" = ( -/obj/machinery/camera{ - c_tag = "Construction Camera #1, North"; - dir = 1; - network = list("ss13","engine") - }, -/obj/structure/table, -/turf/open/floor/iron/smooth, -/area/station/construction) -"kVF" = ( -/obj/structure/chair/sofa/corp, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"kVG" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"kVK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"kVM" = ( -/obj/structure/closet/crate/trashcart/filled, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"kVT" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"kVY" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/table/reinforced, -/obj/item/stack/sheet/iron/twenty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"kVZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/command/glass{ - name = "EVA Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/eva, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"kWa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"kWd" = ( -/obj/effect/decal/cleanable/vomit/old, -/obj/machinery/airalarm/directional/east, -/obj/structure/chair/stool/bar/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit) -"kWf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/third) -"kWo" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"kWr" = ( -/obj/machinery/door/airlock/external{ - name = "Construction Zone" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"kWs" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"kWx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"kWD" = ( -/obj/machinery/keycard_auth/wall_mounted/directional/north{ - pixel_x = -22 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/incident_display/bridge/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"kWJ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"kWM" = ( -/obj/item/stack/tile/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"kWN" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/landmark/start/scientist, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"kWT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"kXc" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"kXj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"kXo" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"kXs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/cable, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"kXt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"kXF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"kXK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) -"kXN" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/pen, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/item/radio/intercom/directional/south{ - frequency = 1423; - name = "Interrogation Intercom" - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"kXP" = ( -/obj/machinery/vending/wardrobe/chef_wardrobe, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"kXW" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine, -/area/station/maintenance/floor1/starboard/fore) -"kXZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lower) -"kYm" = ( -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/effect/turf_decal/trimline/green/end{ - dir = 8 - }, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"kYt" = ( -/obj/structure/chair/comfy/carp, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"kYv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"kYD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"kYH" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"kYM" = ( -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor3/aft) -"kYR" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"kYV" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"kZe" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"kZg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"kZh" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"kZl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"kZp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/clothing/glasses/regular, -/obj/machinery/light/directional/north, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"kZr" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/gps, -/obj/structure/closet/crate/engineering, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"kZv" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"kZG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet, -/area/station/service/abandoned_gambling_den) -"kZH" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"kZS" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"kZV" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"kZZ" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"lad" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"laf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"laj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"lak" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"lao" = ( -/obj/structure/chair/sofa/corp/right, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment1) -"las" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/station/engineering/atmos) -"lax" = ( -/obj/structure/table, -/obj/item/storage/dice, -/obj/effect/turf_decal/tile/red/anticorner, -/obj/machinery/flasher/directional/east{ - name = "drunktank" - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"laC" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment1) -"laJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"laR" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/leather, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"laS" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/engine, -/area/station/maintenance/floor1/starboard/fore) -"laZ" = ( -/turf/open/floor/iron/chapel, -/area/station/maintenance/floor4/port/fore) -"lba" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"lbi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"lbm" = ( -/obj/machinery/camera/preset/ordnance{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"lbp" = ( -/obj/machinery/vending/wardrobe/sec_wardrobe, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"lbq" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/chair/sofa/corner/brown{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"lbr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"lbt" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/effect/turf_decal/tile/red/half, -/obj/item/card/id/advanced/prisoner/four, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"lbu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"lbx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"lbF" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"lbJ" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"lbK" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/decal/cleanable/confetti, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"lbO" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/syringes{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/item/storage/box/beakers{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/item/reagent_containers/dropper, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"lbT" = ( -/obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"lcg" = ( -/obj/effect/decal/cleanable/oil, -/obj/item/mop, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"lci" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/starboard) -"lcr" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"lcs" = ( -/obj/structure/disposalpipe/trunk/multiz/down, -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"lct" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"lcv" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor2/port) -"lcB" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/stock_parts/matter_bin{ - pixel_x = 2; - pixel_y = -5 - }, -/obj/item/stock_parts/matter_bin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Science - R&D Lab" - }, -/obj/machinery/firealarm/directional/north, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"lcF" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - name = "Escape Pod C" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) -"lcJ" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"lcN" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 6 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"lcT" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"lcU" = ( -/obj/effect/landmark/carpspawn, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"lcW" = ( -/obj/structure/rack, -/obj/effect/turf_decal/stripes, -/obj/item/gun/energy/laser/carbine/practice{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/gun/energy/laser/practice{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/gun/energy/laser/practice{ - pixel_x = 2; - pixel_y = 1 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/science/auxlab/firing_range) -"lcZ" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"ldb" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"ldf" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 1; - height = 4; - name = "escape pod loader"; - roundstart_template = /datum/map_template/shuttle/escape_pod/default; - width = 3 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"ldl" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/obj/effect/landmark/navigate_destination/tools, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/engineering/storage/tech) -"ldq" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"ldr" = ( -/obj/machinery/cell_charger, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"ldv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"ldD" = ( -/obj/machinery/door/airlock/engineering{ - name = "Power Generation Experimentation" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"ldI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"ldO" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"ldV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"lem" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"len" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/docking/directional/south, -/obj/machinery/computer/shuttle/mining/common{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/exit) -"leo" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"lep" = ( -/obj/structure/rack, -/obj/effect/turf_decal/trimline/green/line{ - dir = 10 - }, -/obj/effect/spawner/random/entertainment/money_small, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"les" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"leu" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"lew" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"lez" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/research/anomaly_refinery, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"leF" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 10 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"leI" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"leR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"leY" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"lfd" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/turf/open/space/openspace, -/area/space/nearstation) -"lfj" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"lfq" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"lft" = ( -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"lfu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/signlang_radio, -/obj/item/mod/module/thermal_regulator, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"lfw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/morgue{ - name = "Private Study" - }, -/turf/open/floor/iron, -/area/station/service/library/private) -"lfy" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"lfG" = ( -/obj/machinery/light/small/red/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"lfL" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"lfM" = ( -/obj/structure/disposalpipe/segment, -/turf/open/openspace, -/area/station/maintenance/floor4/starboard/fore) -"lfQ" = ( -/obj/structure/table, -/obj/item/toy/cards/deck, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"lfU" = ( -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"lfW" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"lfZ" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"lga" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"lgj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"lgv" = ( -/obj/structure/rack, -/obj/item/book/manual/nuclear, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"lgw" = ( -/obj/effect/decal/cleanable/blood/splatter{ - pixel_x = 14; - pixel_y = -6 - }, -/obj/effect/decal/cleanable/blood/gibs/torso, -/obj/machinery/newscaster/directional/west, -/obj/item/clothing/suit/toggle/labcoat, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"lgz" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"lgD" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"lgO" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/turf_decal/trimline/blue/warning, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"lgX" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/command{ - name = "Teleporter Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/teleporter, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"lgY" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/xenobiology/hallway) -"lgZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/cargo/miningdock) -"lhh" = ( -/obj/structure/closet/radiation, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"lhi" = ( -/obj/machinery/modular_computer/preset/command, -/turf/open/floor/carpet/blue, -/area/station/command/bridge) -"lhl" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/item/storage/belt/utility, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"lhv" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/rack, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/item/wrench, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"lhy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"lhA" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"lhO" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"lhR" = ( -/obj/machinery/computer/operating{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"lhS" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"lhT" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/space/basic, -/area/space/nearstation) -"lhU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"lhW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lower) -"lhZ" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"lia" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/start/hangover, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-19"; - location = "2-18" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"lif" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 5 - }, -/obj/machinery/flasher/directional/east{ - id = "hopflash" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"lij" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"lik" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"liu" = ( -/obj/machinery/atmospherics/components/unary/bluespace_sender, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/project) -"liL" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"liQ" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/hop) -"liT" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"ljf" = ( -/obj/machinery/rnd/production/techfab/department/service, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"ljh" = ( -/obj/machinery/light/dim/directional/west, -/turf/open/floor/grass, -/area/station/maintenance/floor3/starboard) -"ljs" = ( -/obj/machinery/flasher/portable, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Secure Gear Storage" - }, -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/security/brig) -"lju" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"ljx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"ljE" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ljH" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id = "armory"; - name = "Armoury Shutter" - }, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"ljL" = ( -/obj/structure/sign/poster/contraband/moffuchis_pizza, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"lkc" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"lkh" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"lks" = ( -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"lkA" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"lkB" = ( -/obj/machinery/shower/directional/west, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"lkE" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/turf/open/floor/iron/textured_edge{ - dir = 1 - }, -/area/station/medical/chemistry) -"lkI" = ( -/obj/structure/ladder, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor4/aft) -"lkP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"lkV" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"lkX" = ( -/obj/machinery/chem_heater/withbuffer, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"lkY" = ( -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/grass, -/area/station/service/chapel/funeral) -"lkZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"llh" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"llm" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/security{ - name = "The Red Door" - }, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) -"lln" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/storage) -"llo" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Laboratory Door" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"llr" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"llt" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"llv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/maintenance/floor1/starboard/aft) -"llC" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/misc/sandy_dirt, -/area/station/hallway/secondary/entry) -"llN" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"llQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"llR" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"llT" = ( -/obj/item/storage/fancy/donut_box, -/obj/structure/table/glass, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"llX" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"lmb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"lme" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Departures" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"lmk" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"lmu" = ( -/obj/structure/chair/comfy, -/obj/effect/turf_decal/trimline/red/filled/end, -/obj/effect/landmark/start/depsec/science, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"lmv" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/brown/mid_joiner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"lmF" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"lmU" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/entertainment/lighter, -/obj/machinery/camera/directional/north, -/obj/effect/turf_decal/tile/green/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/desk_bell{ - pixel_x = -8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lmW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"lng" = ( -/obj/machinery/teleport/station, -/obj/machinery/status_display/evac/directional/north, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"lnl" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"lnA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"lnG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"lnM" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"lnN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"lnU" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"lnX" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/water/no_planet_atmos{ - desc = "Filthy."; - name = "untreated water" - }, -/area/station/maintenance/floor1/port/aft) -"loa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"loc" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"lof" = ( -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"lok" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/west{ - name = "Order Window"; - req_access = list("service") - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"loA" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "Unfiltered & Air to Mix" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"loF" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/bot, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"loK" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/corner, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"loM" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospheric Substation" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"loN" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"loQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"loS" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"lpc" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"lpe" = ( -/obj/item/storage/bag/plants/portaseeder, -/obj/item/plant_analyzer, -/obj/item/cultivator, -/obj/structure/rack, -/obj/item/vending_refill/hydroseeds, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"lph" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"lpq" = ( -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"lpB" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) -"lpF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"lpH" = ( -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"lpR" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lpV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"lpZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"lqf" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/maintenance/floor2/port/fore) -"lqu" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"lqx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"lqD" = ( -/obj/structure/table, -/obj/item/storage/box/bandages{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 6 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"lqI" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/shower/directional/south, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/freezer, -/area/station/command/heads_quarters/ce) -"lqK" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"lrp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/status_display/ai/directional/west, -/obj/machinery/light/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"lrA" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"lrN" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"lrR" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"lsm" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"lss" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 1 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock{ - name = "Arrivals" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"lsC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/warning{ - pixel_y = 32 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"lsM" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/disposal/bin, -/obj/machinery/status_display/ai/directional/north, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"lsQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"lsT" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Chemistry Lab"; - req_access = list("plumbing") - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"lsV" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"ltb" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/item/paper_bin/carbon{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/item/pen, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"lti" = ( -/obj/machinery/door/airlock/grunge{ - name = "Morgue" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"ltn" = ( -/obj/item/storage/toolbox/mechanical/old, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"ltq" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/floor3/fore) -"ltt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/robotics/lab) -"lty" = ( -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"ltC" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"ltH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/structure/sign/poster/contraband/hacking_guide/directional/north, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"ltI" = ( -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32 - }, -/obj/structure/disposalpipe/broken{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"ltR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"ltU" = ( -/obj/structure/railing, -/obj/effect/turf_decal/siding/white, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/junction/yjunction, -/turf/open/floor/iron/grimy, -/area/station/science/xenobiology/hallway) -"ltZ" = ( -/obj/effect/turf_decal/delivery/white{ - color = "#52B4E9" - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"lua" = ( -/obj/effect/turf_decal/siding/wideplating_new/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 1 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"lui" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"luk" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"lum" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/sustenance, -/obj/effect/turf_decal/tile/green, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/security/prison) -"luo" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/structure/railing, -/obj/effect/decal/cleanable/robot_debris, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) -"luv" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"luw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"luD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"luE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"luG" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"luI" = ( -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"luJ" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"luS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/carpet/red, -/area/station/service/library/artgallery) -"luZ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"lvm" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/assembly/igniter{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -1 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"lvp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"lvC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/corner/maroon{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"lvJ" = ( -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/east{ - name = "Cargo Front Desk"; - req_access = list("cargo") - }, -/turf/open/floor/plating, -/area/station/cargo/lobby) -"lvM" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"lvS" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/turf/open/floor/iron/white, -/area/station/science/lab) -"lvT" = ( -/turf/closed/wall/r_wall, -/area/station/security/evidence) -"lvW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"lvY" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron/textured_large, -/area/station/cargo/office) -"lwc" = ( -/turf/closed/wall, -/area/station/engineering/atmos/project) -"lwg" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"lwl" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/cargo/office) -"lwo" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/security/checkpoint/third) -"lwu" = ( -/obj/structure/closet/secure_closet/engineering_chief, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"lwv" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"lwD" = ( -/obj/item/wheelchair{ - pixel_y = -3 - }, -/obj/item/wheelchair, -/obj/item/wheelchair{ - pixel_y = 3 - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"lwP" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/storage/tools) -"lwU" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/floor2/fore) -"lwW" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"lwY" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"lxc" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"lxr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"lxs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"lxC" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"lxD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"lxG" = ( -/obj/effect/turf_decal/trimline/green/end, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"lxI" = ( -/obj/item/stack/tile/wood, -/obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/c38{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"lxK" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"lxR" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"lxU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/cargo/office) -"lxZ" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"lyd" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lyv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"lyw" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/office) -"lyx" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"lyB" = ( -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/drone_bay) -"lyK" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 6 - }, -/obj/effect/spawner/random/maintenance, -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"lyP" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"lyS" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/item/stack/rods{ - amount = 3 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"lzb" = ( -/obj/effect/turf_decal/siding/wideplating, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/chem_dispenser, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"lzd" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"lzf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"lzp" = ( -/obj/structure/sign/poster/official/wtf_is_co2/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"lzq" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"lzA" = ( -/obj/structure/chair/sofa/corp/right, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"lzI" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"lzX" = ( -/obj/effect/turf_decal/trimline/red/line, -/obj/effect/turf_decal/trimline/white/warning, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrous_output, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"lzZ" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"lAc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/textured_corner{ - dir = 8 - }, -/area/station/cargo/sorting) -"lAh" = ( -/turf/open/openspace, -/area/station/service/kitchen/abandoned) -"lAm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"lAD" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 10 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"lAH" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/stack/rods{ - amount = 3 - }, -/obj/effect/decal/cleanable/glass, -/obj/item/storage/bag/plants/portaseeder, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"lAJ" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"lAU" = ( -/turf/closed/wall, -/area/station/service/library/printer) -"lBo" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lBv" = ( -/obj/effect/spawner/random/structure/table, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"lBB" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/phosphorus{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/potassium{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/sodium{ - pixel_x = 1 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"lBD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"lBG" = ( -/obj/machinery/computer/station_alert{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"lBK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"lBP" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/toilet) -"lBR" = ( -/obj/machinery/shower/directional/east, -/obj/item/bikehorn/rubberducky, -/obj/structure/fluff/shower_drain, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"lCf" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor3/fore) -"lCg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"lCh" = ( -/obj/machinery/vending/cigarette, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"lCo" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"lCs" = ( -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) -"lCz" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/north{ - name = "Research Desk"; - req_access = list("science") - }, -/obj/item/experi_scanner, -/turf/open/floor/iron/white, -/area/station/science/lab) -"lCG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"lCO" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"lCR" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"lCT" = ( -/obj/machinery/light/red/dim/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"lCZ" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/sorting) -"lDb" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"lDi" = ( -/obj/machinery/microwave{ - pixel_x = -1; - pixel_y = 6 - }, -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment2) -"lDj" = ( -/obj/machinery/door/poddoor/shutters{ - id = "survshop"; - name = "Ancient Workshop" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"lDo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"lDs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"lDA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"lDD" = ( -/obj/structure/rack, -/obj/item/chair/plastic, -/obj/item/chair/plastic{ - pixel_y = 4 - }, -/obj/item/chair/plastic{ - pixel_y = 8 - }, -/obj/item/chair/plastic{ - pixel_y = 12 - }, -/obj/effect/turf_decal/trimline/green/warning, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"lDE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"lDF" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/construction) -"lDG" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"lDH" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"lDW" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"lDX" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"lDY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"lEg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"lEo" = ( -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"lEs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"lEu" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"lEy" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/obj/machinery/shower/directional/north, -/obj/effect/decal/cleanable/vomit/old, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"lEz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "dorms_2_bolts"; - name = "Dorms 2 Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"lEI" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"lET" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/air_sensor/engine_chamber, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"lFa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"lFe" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lFg" = ( -/obj/structure/grille/broken, -/turf/open/openspace, -/area/station/security/brig) -"lFj" = ( -/obj/machinery/teleport/hub, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"lFq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"lFw" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"lFz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"lFJ" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"lFL" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lFW" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"lFY" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 4 - }, -/obj/effect/landmark/start/cook, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"lGb" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/freezer, -/area/station/service/chapel) -"lGh" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"lGi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"lGo" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"lGp" = ( -/obj/machinery/computer/crew{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"lGw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"lGJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lGK" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"lGX" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"lHv" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"lHw" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/textured_corner{ - dir = 1 - }, -/area/station/medical/chemistry) -"lHQ" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"lHR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lIe" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"lIh" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/keycard_auth/wall_mounted/directional/east{ - pixel_x = 25; - pixel_y = 16 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Command - Research Director's Office" - }, -/obj/machinery/requests_console/directional/east{ - department = "Research Director's Desk"; - name = "Research Director's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"lIm" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/white/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/secondary/entry) -"lIn" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 8 - }, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"lIt" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/service/theatre, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"lIC" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"lIJ" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp{ - pixel_x = -7; - pixel_y = 5 - }, -/obj/item/book/manual/wiki/robotics_cyborgs{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/machinery/requests_console/directional/west{ - department = "Robotics"; - name = "Robotics Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"lIL" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"lIP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"lIS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"lIU" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/iron/white/side{ - dir = 10 - }, -/area/station/cargo/miningdock) -"lJk" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"lJn" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit) -"lJp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"lJq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side, -/area/station/cargo/miningdock) -"lJu" = ( -/mob/living/carbon/human/species/monkey{ - name = "Kong" - }, -/turf/open/floor/grass, -/area/station/medical/virology) -"lJy" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"lJB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"lJE" = ( -/obj/item/trash/semki/healthy, -/obj/item/trash/spacers_sidekick{ - pixel_x = -2 - }, -/obj/item/trash/syndi_cakes, -/obj/effect/decal/cleanable/ants, -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/food/flour, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"lJN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/medical/psychology) -"lJZ" = ( -/obj/structure/cable/multilayer/multiz, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"lKb" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Fuel Pipe to Filter" - }, -/obj/machinery/atmospherics/components/binary/pump/off/general/visible/layer4{ - dir = 8; - name = "Fuel To Distro" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lKh" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"lKj" = ( -/obj/structure/closet/crate/solarpanel_small, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/plating/airless, -/area/station/maintenance/solars/starboard/aft) -"lKn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"lKo" = ( -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/service/kitchen/abandoned) -"lKp" = ( -/obj/machinery/atmospherics/components/trinary/mixer, -/obj/effect/turf_decal/box, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"lKw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"lKy" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"lKz" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor1/fore) -"lKD" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/security_all, -/obj/effect/turf_decal/tile/red/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"lKE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"lKF" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"lKQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"lLm" = ( -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"lLp" = ( -/obj/machinery/camera/motion/directional/north{ - c_tag = "Minisat - Port" - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"lLt" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/service/chapel) -"lLy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"lLB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"lLC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/start/chemist, -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"lLL" = ( -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/table/glass, -/obj/machinery/fax{ - fax_name = "Research Director's Office"; - name = "Research Director's Fax Machine" - }, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/rd) -"lLO" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"lLW" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"lMj" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw, -/obj/machinery/camera/autoname/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"lMx" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"lMC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"lMG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"lMN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"lMR" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"lNh" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"lNj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"lNm" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"lNs" = ( -/obj/machinery/light/red/dim/directional/east, -/turf/open/openspace, -/area/station/maintenance/floor3/port/fore) -"lNx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnancefreezer" - }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"lNA" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/five, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"lNB" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"lNN" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/paper_bin, -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"lNQ" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"lNW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) -"lNX" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"lOc" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"lOe" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/computer/crew{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"lOg" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/courtroom) -"lOh" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"lOk" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/side, -/area/station/command/teleporter) -"lOp" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"lOq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/vending/clothing, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"lOz" = ( -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/iron/white, -/area/station/security/medical) -"lOA" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"lOB" = ( -/obj/structure/table, -/obj/item/restraints/handcuffs{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/restraints/handcuffs{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/restraints/handcuffs, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"lOI" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/noticeboard/ce{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"lPb" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"lPf" = ( -/obj/structure/closet/bombcloset/security, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"lPj" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"lPl" = ( -/obj/structure/reagent_dispensers/plumbed/fuel, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"lPm" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 5 - }, -/obj/machinery/duct, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"lPt" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison) -"lPz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-9"; - location = "2-8" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"lPA" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"lPR" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"lPX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/five, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"lQa" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"lQb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"lQc" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"lQd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/hobo_squat, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"lQm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"lQo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"lQs" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate/cardboard, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/engineering/material_rare, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"lQt" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/chair/comfy/brown, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/tile, -/area/station/service/library) -"lQv" = ( -/obj/effect/landmark/navigate_destination/engineering, -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"lQI" = ( -/turf/open/openspace, -/area/station/maintenance/floor2/port/fore) -"lQJ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"lQM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Port Quarter Solars" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"lQW" = ( -/obj/effect/turf_decal/siding/wideplating_new, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"lQY" = ( -/obj/machinery/button/elevator/directional/west{ - id = "fore_vator" - }, -/obj/effect/turf_decal/trimline/purple/warning, -/obj/machinery/lift_indicator/directional/west{ - linked_elevator_id = "fore_vator"; - pixel_y = -4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"lRb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"lRc" = ( -/obj/item/reagent_containers/dropper, -/obj/structure/closet/crate/preopen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"lRi" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Experimentation Bay" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/engine, -/area/station/science/explab) -"lRl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"lRu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"lRF" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"lRP" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Electrical Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) -"lRR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/plaque/static_plaque/golden/captain{ - pixel_x = 32 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"lRW" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/aft) -"lRY" = ( -/turf/closed/wall, -/area/station/commons/vacant_room/office) -"lSd" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"lSt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grime, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = 32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"lSw" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"lSE" = ( -/obj/item/radio/intercom/directional/north{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Private Channel" - }, -/obj/effect/decal/cleanable/plastic, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"lSI" = ( -/obj/machinery/computer/upload/borg, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/door/window/left/directional/south{ - name = "Cyborg Upload Console Window"; - req_access = list("ai_upload") - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"lSJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"lSY" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 5 - }, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"lTb" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "HFR" - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/hfr_room) -"lTg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"lTl" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"lTo" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/paper_bin/construction{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/pen, -/obj/item/stamp/head/ce{ - pixel_x = -8 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/heads_quarters/ce) -"lTu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad/secure, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"lTA" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"lTN" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"lTO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "cmoshutter"; - name = "CMO Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) -"lTV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/mineral/ore_redemption, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"lTY" = ( -/obj/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"lTZ" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/footprints, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"lUd" = ( -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"lUo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"lUu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"lUv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/item/storage/crayons{ - pixel_x = 6; - pixel_y = -3 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"lUH" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"lUO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/science/glass{ - name = "Slime Enrichment Center" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"lUS" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Emergency Power" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/fore) -"lUY" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"lUZ" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"lVf" = ( -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"lVi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/spawner/random/structure/grille, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"lVk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"lVq" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"lVE" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"lVR" = ( -/obj/structure/chair/sofa/right{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/medical/psychology) -"lVU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"lVV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"lVW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"lWa" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"lWA" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"lWH" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/qm) -"lWN" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/monkeycubes{ - pixel_x = -5; - pixel_y = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"lWQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"lWY" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/disposaloutlet{ - dir = 1; - name = "Prisoner Dispenser" - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/flasher/directional/west{ - id = "drunktank" - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"lXb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/gym/mirrored{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"lXj" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"lXm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"lXn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"lXq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"lXs" = ( -/obj/effect/turf_decal/trimline/brown/warning, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"lXu" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Gravity Generator Room" - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/engineering/gravity_generator) -"lXx" = ( -/turf/closed/wall, -/area/station/security/lockers) -"lXK" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"lXL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/bar/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/service/bar/atrium) -"lXT" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/bronze, -/area/station/maintenance/floor1/starboard) -"lXU" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/chair/wood{ - dir = 8 - }, -/obj/structure/sign/poster/contraband/random/directional/east, -/obj/effect/landmark/start/bartender, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"lXW" = ( -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/bar, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"lXX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"lYb" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"lYd" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"lYe" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"lYg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"lYr" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"lYt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"lYu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"lYx" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/freezerchamber) -"lYD" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"lYE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"lYL" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"lYP" = ( -/obj/machinery/holopad/secure, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"lYR" = ( -/turf/open/misc/grass, -/area/station/maintenance/floor1/starboard) -"lYU" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/dna_infuser, -/turf/open/floor/iron, -/area/station/science/genetics) -"lYV" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/delivery, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/storage/primary) -"lYX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) -"lYY" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/command/teleporter) -"lZa" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/vest/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"lZl" = ( -/obj/structure/reagent_dispensers/plumbed, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"lZp" = ( -/obj/machinery/door/airlock/vault{ - name = "Power Generation Experimentation" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"lZA" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/experi_scanner, -/obj/item/experi_scanner, -/obj/item/experi_scanner, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"lZH" = ( -/obj/effect/turf_decal/trimline/neutral/filled/end, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"lZS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"maf" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"map" = ( -/obj/structure/door_assembly/door_assembly_med, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"maq" = ( -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"mar" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "qmblast"; - name = "Quartermaster's Blast Door" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) -"mau" = ( -/turf/closed/wall/r_wall, -/area/station/security/lockers) -"maD" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"maK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"maL" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"maQ" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"maS" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/machinery/door/window/right/directional/south{ - name = "Bunny Containment"; - req_access = list("hydroponics") - }, -/turf/open/misc/beach/sand, -/area/station/hallway/secondary/entry) -"maW" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/genetics) -"mbb" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/suit_storage_unit/medical, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"mbe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"mbf" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"mbi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"mbk" = ( -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"mbv" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"mbA" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/airalarm/directional/east, -/obj/structure/closet/bombcloset, -/turf/open/floor/iron/white, -/area/station/science/explab) -"mbB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"mbD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"mbF" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/machinery/newscaster/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"mbJ" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"mbM" = ( -/obj/machinery/fax{ - fax_name = "Service Hallway"; - name = "Service Fax Machine" - }, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/secondary/service) -"mbS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"mbT" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall, -/area/station/maintenance/floor1/starboard) -"mcf" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"mci" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"mcj" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"mcm" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"mcp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/maintenance/floor2/starboard/aft) -"mcq" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"mcr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"mcu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mcA" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"mcB" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"mcD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"mcI" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"mcO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"mcU" = ( -/obj/structure/closet/athletic_mixed, -/obj/effect/landmark/start/hangover/closet, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"mcV" = ( -/obj/structure/bed, -/obj/item/toy/plush/slimeplushie{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/bedsheet/green, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"mcY" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"mdd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/shieldgen, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/corner, -/area/station/cargo/miningdock) -"mdi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"mdl" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"mdp" = ( -/turf/closed/wall, -/area/station/engineering/storage/tech) -"mdr" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"mdB" = ( -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mdC" = ( -/turf/open/misc/snow/actually_safe{ - icon_state = "snow7" - }, -/area/station/hallway/floor2/fore) -"mdE" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"mdJ" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"mdL" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"mdN" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"mdQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"mdR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"mdU" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/flashlight/lamp/green, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"mdZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"med" = ( -/obj/structure/bed/dogbed/renault, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/west, -/obj/structure/cable, -/mob/living/basic/pet/fox/renault, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"meh" = ( -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/aft) -"mek" = ( -/turf/closed/wall, -/area/station/security/prison/shower) -"mel" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/suit/hazardvest, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"mem" = ( -/obj/machinery/shower/directional/east, -/turf/open/floor/noslip, -/area/station/science/lobby) -"mew" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"mex" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"meB" = ( -/obj/item/wrench{ - pixel_x = -10; - pixel_y = 7 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"meD" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"meH" = ( -/obj/machinery/door/airlock/medical{ - name = "CMO Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/cmo, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"meU" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"meV" = ( -/obj/machinery/door/airlock/security{ - name = "Evidence Lockers" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"mfk" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"mfC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) -"mfE" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/structure/table/reinforced, -/obj/item/storage/bag/tray, -/obj/item/reagent_containers/cup/rag, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"mfI" = ( -/obj/structure/table/reinforced, -/obj/item/seeds/cannabis, -/obj/item/seeds/cannabis, -/obj/item/seeds/cannabis, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/spawner/random/contraband/cannabis, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"mfM" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/pai_card, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"mfQ" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/door/window/left/directional/south{ - name = "Storage" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"mfR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/button/door/directional/east{ - id = "qmblast"; - name = "Office Blast Doors"; - req_access = list("qm") - }, -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"mfU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"mge" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"mgf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"mgl" = ( -/obj/structure/sign/directions/evac/directional/west, -/obj/structure/sign/directions/supply/directional/west{ - pixel_y = 8 - }, -/obj/structure/sign/directions/arrival/directional/west{ - pixel_y = -8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"mgo" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"mgq" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"mgA" = ( -/obj/structure/sign/warning/radiation/rad_area, -/turf/closed/wall, -/area/station/maintenance/floor1/port/aft) -"mgG" = ( -/obj/structure/rack, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"mgM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/machinery/door/airlock/engineering{ - name = "Telecommunications" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/tcommsat/computer) -"mgS" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"mgY" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/light/directional/south, -/turf/open/floor/grass, -/area/station/hallway/floor1/aft) -"mha" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/checkpoint/escape) -"mhb" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"mhh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"mhl" = ( -/obj/structure/table, -/obj/structure/cable, -/obj/item/hand_labeler, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"mho" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"mhp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"mhq" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/paper_bin{ - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"mhr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"mhu" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"mhE" = ( -/obj/structure/chair/wood{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"mhO" = ( -/obj/structure/closet/secure_closet/freezer/empty, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"mhQ" = ( -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"mhT" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"mhY" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"mhZ" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"mie" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"mif" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"mil" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/wrench, -/turf/open/floor/iron, -/area/station/science/auxlab) -"mir" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/sorting) -"mis" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"mit" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"miF" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"miH" = ( -/obj/machinery/holopad, -/turf/open/floor/carpet/red, -/area/station/service/library) -"miV" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/security/eva) -"mjg" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"mjr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/item/stack/rods, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"mjv" = ( -/obj/machinery/door/airlock/engineering{ - name = "Telecomms Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/atmos/pumproom) -"mjA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"mjM" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"mjQ" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/caution, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mjZ" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/aft) -"mki" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/circuit/green, -/area/station/science/robotics/mechbay) -"mkk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mkl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"mko" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/ordnance/directional/north, -/obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver, -/obj/structure/table, -/obj/item/binoculars{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"mkE" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/item/wrench, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"mkL" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_y = -32 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat) -"mkO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"mkZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"mlg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"mlh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"mlx" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical{ - pixel_y = 9 - }, -/obj/item/stack/cable_coil, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"mly" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/secondary/exit) -"mlH" = ( -/obj/structure/sign/departments/court{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"mlL" = ( -/obj/structure/table, -/obj/item/wrench, -/obj/item/pen{ - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/white, -/area/station/science/lab) -"mlN" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/armory, -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"mlO" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/station/solars/starboard/aft) -"mlX" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/landmark/start/assistant, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"mme" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/commons/fitness/recreation) -"mmi" = ( -/obj/structure/sign/poster/contraband/clown, -/turf/closed/wall, -/area/station/service/theater) -"mms" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/turf_decal/tile/blue/half, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_edge, -/area/station/medical/abandoned) -"mmv" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Mining & Aux Base" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit) -"mmy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"mmz" = ( -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"mmA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"mmI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"mmL" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"mmR" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"mmY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"mnf" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"mni" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"mnj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"mnk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mnm" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"mnE" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"mnH" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"mnM" = ( -/obj/machinery/door_buttons/access_button{ - idDoor = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_x = -26; - pixel_y = 26; - req_access = list("virology") - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 8 - }, -/obj/structure/sign/warning/biohazard{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"mnQ" = ( -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"mnR" = ( -/turf/open/floor/iron, -/area/station/cargo/storage) -"mnY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"moe" = ( -/obj/structure/table, -/obj/item/pestle, -/obj/item/food/grown/coffee, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"mom" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"moq" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/maintenance/floor4/starboard/aft) -"mor" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) -"mou" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"moB" = ( -/obj/structure/mirror/directional/north, -/obj/structure/closet{ - name = "Outside Clothing Closet" - }, -/turf/open/floor/iron, -/area/station/service/chapel) -"moL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"moO" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/chapel) -"mpe" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"mph" = ( -/obj/structure/closet/secure_closet/injection, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"mpp" = ( -/obj/structure/stairs/south, -/turf/open/floor/wood/parquet, -/area/station/service/library) -"mps" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, -/obj/machinery/door/airlock/mining/glass{ - name = "Bitrunning Den" - }, -/turf/open/floor/pod/dark, -/area/station/cargo/bitrunning/den) -"mpy" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"mpC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side, -/area/station/commons/locker) -"mpF" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"mpK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"mpL" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/effect/turf_decal/trimline/blue/end, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"mpM" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 7 - }, -/obj/item/multitool, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/item/storage/box/smart_metal_foam, -/obj/item/storage/belt/utility, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"mpY" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/garden) -"mpZ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"mqc" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder/reinforced, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "viro-inner"; - name = "Virology Inner Shutters" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"mqd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"mqi" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"mqj" = ( -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"mqt" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"mqw" = ( -/obj/structure/table/wood, -/obj/item/storage/briefcase/secure, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"mqx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"mqy" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"mqB" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"mqG" = ( -/obj/machinery/porta_turret/ai, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"mqI" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"mqL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/curtain/cloth/fancy, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"mqM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/newscaster/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"mra" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool, -/obj/item/screwdriver{ - pixel_y = 5 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"mrd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"mrh" = ( -/obj/structure/chair, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lower) -"mrs" = ( -/obj/structure/grille, -/obj/item/shard, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"mrB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/small/red/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"mrE" = ( -/obj/machinery/door/airlock/grunge{ - name = "Prison Forestry" - }, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"mrG" = ( -/turf/closed/wall/r_wall, -/area/station/medical/break_room) -"mrL" = ( -/obj/structure/transit_tube/diagonal, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"mrM" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"mrS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"mrU" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"mrW" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"mrZ" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Office" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/machinery/door/poddoor/preopen{ - id = "hopblast"; - name = "HoP Blast Door" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"msg" = ( -/obj/effect/turf_decal/trimline/white/line, -/obj/machinery/air_sensor/air_tank, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"msj" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"msl" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"mso" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"msu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"msv" = ( -/obj/structure/railing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"msL" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"mta" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"mte" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/obj/item/flashlight/lantern{ - pixel_y = 7 - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"mtx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/floor3/aft) -"mty" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"mtA" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/commons/locker) -"mtH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"mtI" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/medbay/lobby) -"mtL" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"mtM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"mtV" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Aft Medbay" - }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"mtW" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"mub" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"muh" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "atmoshfr" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"mus" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"muB" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"muI" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"muP" = ( -/obj/structure/closet/firecloset, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"muX" = ( -/obj/machinery/camera/directional/north, -/obj/structure/closet/secure_closet/security, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/requests_console/directional/north{ - department = "Security"; - name = "Security Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"mve" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"mvg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/camera{ - c_tag = "Supermatter Foyer Cam #4"; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"mvs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"mvw" = ( -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/floor4/fore) -"mvK" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"mvM" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"mvN" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"mvO" = ( -/obj/machinery/computer/crew{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"mvS" = ( -/obj/structure/closet/l3closet/virology, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"mwe" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"mwg" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"mwz" = ( -/obj/structure/table, -/obj/item/disk/data{ - pixel_x = 5 - }, -/obj/item/disk/data{ - pixel_x = -6 - }, -/obj/item/disk/data{ - pixel_y = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/genetics) -"mwB" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/camera/directional/south{ - c_tag = "Cytology - Petting Zoo" - }, -/turf/open/misc/sandy_dirt, -/area/station/science/cytology) -"mwD" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/structure/sign/warning/pods/directional/west{ - name = "Escape Pods: Access Via Maint" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"mwK" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"mwL" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"mwN" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 10 - }, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"mwO" = ( -/obj/structure/table/wood, -/obj/item/toy/crayon/spraycan, -/obj/item/toy/crayon/spraycan, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"mwZ" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"mxd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"mxf" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/execution/transfer) -"mxi" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"mxx" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/secondary/exit) -"mxC" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"mxD" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"mxJ" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"mxN" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical3, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"mxO" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"mxP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"mxT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"myd" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "mining" - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"myp" = ( -/obj/effect/turf_decal/tile/red/anticorner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"myr" = ( -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"myO" = ( -/turf/closed/wall, -/area/station/hallway/secondary/exit/escape_pod) -"myQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"myR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/closet/radiation, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #8"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"myS" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/white, -/area/station/science/explab) -"myT" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"myV" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 6 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"myW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"mzb" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"mzf" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"mzg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"mzh" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/machinery/button/door/directional/west{ - id = "med_lockdown"; - name = "Surgery Privacy Shutters"; - req_access = list("medical") - }, -/obj/machinery/light_switch/directional/west{ - pixel_x = -24; - pixel_y = -10 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"mzk" = ( -/obj/structure/sign/warning/no_smoking/directional/east, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) -"mzr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood/tile, -/area/station/service/library) -"mzv" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/trimline/white/filled/line{ - color = "#065C93"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/bridge) -"mzx" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/disposal/bin{ - name = "Book Returns" - }, -/turf/open/floor/iron, -/area/station/service/library) -"mzA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"mzB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/commons/fitness/recreation) -"mzC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"mzI" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"mzW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"mAk" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"mAr" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"mAD" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mAI" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/research_director, -/obj/structure/chair/stool/bar/directional/west, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/rd) -"mAJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/chair/comfy/brown, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"mAZ" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mBg" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/office) -"mBm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"mBt" = ( -/obj/structure/rack, -/obj/item/paper/pamphlet/gateway, -/obj/item/paper/pamphlet/gateway{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"mBF" = ( -/obj/structure/sign/poster/random/directional/east, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"mBM" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/ai_monitored/command/storage/eva) -"mBP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"mBZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/lobby) -"mCo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"mCp" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"mCr" = ( -/obj/machinery/door/airlock/freezer{ - name = "Cold Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"mCt" = ( -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"mCD" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/janitor) -"mCI" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/lower) -"mCJ" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw, -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"mCQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Lower Library" - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"mCU" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"mDe" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/fore) -"mDl" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"mDm" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"mDn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"mDp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"mDq" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"mDr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/garden) -"mDs" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/hydroponics/constructable, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"mDD" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_burn_chamber_input, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"mDI" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"mDL" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"mDV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"mDZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"mEa" = ( -/obj/structure/railing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"mEf" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"mEg" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Library" - }, -/turf/open/floor/iron, -/area/station/service/library) -"mEh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"mEj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/comfy/brown, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/grimy, -/area/station/science/xenobiology/hallway) -"mEA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"mEK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/blobstart, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"mEN" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"mEP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/qm) -"mEQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"mEY" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"mFf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor3/fore) -"mFp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mFv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/botanical_waste, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"mFz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/airlock/public/glass{ - name = "Medbay" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured, -/area/station/medical/medbay/lobby) -"mFB" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/mob/living/basic/chicken, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"mFD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck" - }, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"mFE" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"mFF" = ( -/obj/structure/bed, -/obj/item/bedsheet/red, -/obj/item/toy/plush/slimeplushie{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/apartment1) -"mFJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor4/aft) -"mFP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit) -"mFQ" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"mFV" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"mGd" = ( -/obj/structure/chair, -/obj/machinery/camera/directional/north{ - name = "Science - Public Hall" - }, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lower) -"mGp" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"mGq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mGt" = ( -/obj/structure/chair/sofa/bench/right, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"mGy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/mining, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"mGK" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"mGN" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 1 - }, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"mGP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"mGT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"mGY" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"mHa" = ( -/turf/closed/wall, -/area/station/commons/fitness/recreation/entertainment) -"mHf" = ( -/obj/structure/table/reinforced, -/obj/machinery/ecto_sniffer{ - pixel_x = -5; - pixel_y = -7 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 10; - pixel_y = 10 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 10; - pixel_y = 3 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 7 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 10; - pixel_y = -5 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"mHh" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Anesthetic Storage"; - req_access = list("medical") - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/storage) -"mHk" = ( -/obj/machinery/power/emitter, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"mHl" = ( -/obj/machinery/light_switch/directional/west, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"mHu" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/janitor) -"mHx" = ( -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"mHQ" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/computer/shuttle/labor{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"mHS" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"mHV" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"mIh" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/bot, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mIi" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"mIq" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"mID" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"mII" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"mIK" = ( -/obj/machinery/chem_dispenser, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"mIO" = ( -/obj/structure/ladder, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/aft) -"mIQ" = ( -/obj/machinery/computer{ - desc = "Might have worked twenty years ago."; - dir = 8; - name = "Bluescreened Weapons System" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) -"mIT" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"mIX" = ( -/obj/machinery/ai_slipper{ - uses = 10 - }, -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"mJc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"mJg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"mJr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"mJt" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/smooth, -/area/station/construction) -"mJy" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/pai_card, -/turf/open/floor/wood/tile, -/area/station/service/library) -"mJH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"mJJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"mKf" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/chair/sofa/corner/maroon{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"mKg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/directional/west, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"mKm" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"mKs" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "hopblast"; - name = "HoP Blast Door" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hop) -"mKu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"mKO" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ - name = "Burn Chamber Interior Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/airlock_controller/incinerator_ordmix{ - pixel_x = 24 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"mKT" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"mKY" = ( -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"mKZ" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/rack, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"mLb" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"mLk" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"mLm" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"mLp" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/hallway/secondary/exit/escape_pod) -"mLH" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"mLI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"mLO" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"mLS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"mLY" = ( -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"mLZ" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"mMd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/office) -"mMi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"mMk" = ( -/obj/machinery/door/airlock/command{ - name = "Abandoned Hangar" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/gateway, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"mMm" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/dark_blue/line, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 1 - }, -/obj/item/storage/box/lights/mixed, -/obj/item/electronics/airlock, -/obj/item/electronics/apc, -/obj/item/electronics/firealarm, -/obj/item/electronics/airalarm, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"mMn" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"mMo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"mMq" = ( -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"mMr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mMt" = ( -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"mMu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"mMw" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"mMA" = ( -/obj/item/shard/plasma, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"mMD" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"mMH" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"mMO" = ( -/obj/effect/landmark/blobstart, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"mMS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/red/end{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"mNb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/caution/white{ - dir = 4; - pixel_x = -10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"mNg" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"mNh" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/tcommsat/server) -"mNi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mNr" = ( -/obj/structure/ladder, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"mNI" = ( -/obj/machinery/vending/snack/orange, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"mNT" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lab) -"mNW" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"mNY" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"mOb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"mOe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"mOh" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"mOj" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"mOt" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"mOx" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"mOH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/storage/medkit{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/storage/medkit{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/storage/medkit{ - pixel_x = -4 - }, -/obj/item/stack/sheet/plasteel{ - amount = 15; - pixel_x = 11; - pixel_y = -3 - }, -/obj/item/stack/cable_coil{ - pixel_x = -12; - pixel_y = -5 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/science/robotics/lab) -"mOK" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/service) -"mOO" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/south, -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"mPs" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/computer/monitor, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"mPv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"mPw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"mPE" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"mPH" = ( -/obj/structure/weightmachine, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"mPJ" = ( -/obj/machinery/gibber, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"mPW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"mPY" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"mPZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"mQd" = ( -/obj/item/stack/cable_coil/five, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"mQg" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"mQi" = ( -/obj/machinery/computer/cargo, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"mQl" = ( -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood/tile, -/area/station/service/library) -"mQm" = ( -/obj/effect/turf_decal/tile/red/full, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos) -"mQF" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"mQO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/warning/secure_area{ - desc = "A warning sign which reads 'BOMB RANGE"; - name = "BOMB RANGE" - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"mQW" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/box, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"mRa" = ( -/obj/structure/table, -/obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/rice, -/turf/open/floor/iron, -/area/station/security/prison) -"mRc" = ( -/turf/closed/wall/r_wall, -/area/station/science/breakroom) -"mRm" = ( -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/cargo/sorting) -"mRo" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"mRq" = ( -/turf/open/misc/dirt/jungle, -/area/station/service/hydroponics/garden/abandoned) -"mRt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"mRI" = ( -/obj/effect/spawner/random/structure/grille, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"mRQ" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"mSa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"mSe" = ( -/obj/structure/closet/firecloset, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"mSj" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/lighter, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"mSl" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark{ - dir = 4 - }, -/obj/structure/table/wood/fancy/red, -/obj/machinery/light/small/blacklight/directional/north, -/obj/item/knife/shiv, -/turf/open/floor/iron, -/area/station/maintenance/floor4/port/fore) -"mSm" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"mSG" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"mSJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"mSM" = ( -/obj/effect/turf_decal/siding/wideplating_new, -/obj/structure/railing, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/rack, -/obj/effect/spawner/random/clothing/costume, -/obj/effect/spawner/random/clothing/costume, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mSN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/package_wrap, -/obj/item/radio/intercom/prison/directional/west, -/turf/open/floor/plating, -/area/station/security/prison/work) -"mSR" = ( -/obj/item/bodybag, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"mST" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/bronze/filled, -/area/station/maintenance/floor1/starboard) -"mTg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/item/radio/intercom/directional/west, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"mTh" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/structure/table/reinforced/rglass, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"mTi" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"mTo" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/closet/secure_closet/cytology, -/turf/open/floor/iron, -/area/station/science/cytology) -"mTs" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"mTF" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/warning/vacuum/external/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"mTG" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/service/chapel) -"mTH" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"mTK" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"mTQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"mTU" = ( -/obj/effect/turf_decal/siding/thinplating_new/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"mUa" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/bed, -/obj/item/bedsheet/red, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"mUd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 5 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"mUe" = ( -/obj/structure/railing, -/obj/effect/turf_decal/siding/wideplating_new, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"mUh" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/closet/wardrobe/miner, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/miningoffice) -"mUl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"mUm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"mUs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-5"; - location = "3-4" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"mUw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/camera/autoname/directional/south, -/obj/item/ammo_casing/spent, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"mUA" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"mUE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"mUF" = ( -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"mUJ" = ( -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/stock_parts/capacitor{ - pixel_x = 8; - pixel_y = 7 - }, -/obj/item/stock_parts/scanning_module{ - pixel_x = 3; - pixel_y = 16 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/white, -/area/station/science/lab) -"mUK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"mVf" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "radshutsouth" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"mVh" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"mVj" = ( -/obj/effect/turf_decal/tile/green/half, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"mVp" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"mVy" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"mVC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"mVF" = ( -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"mVL" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/station/cargo/miningoffice) -"mVN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_corner, -/area/station/maintenance/floor1/starboard/aft) -"mVR" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"mVU" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"mVZ" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 5 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"mWc" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"mWd" = ( -/obj/structure/filingcabinet/filingcabinet, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"mWg" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"mWh" = ( -/obj/machinery/porta_turret/ai, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"mWn" = ( -/obj/machinery/door/airlock/vault{ - name = "Vault" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/vault, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) -"mWq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"mWr" = ( -/obj/structure/lattice/catwalk, -/obj/structure/ladder, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"mWH" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"mWJ" = ( -/obj/effect/decal/cleanable/blood, -/obj/structure/spider/stickyweb, -/obj/machinery/light/broken/directional/west, -/obj/effect/spawner/random/engineering/toolbox, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"mWU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/machinery/light_switch/directional/north{ - pixel_x = -7 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"mWW" = ( -/obj/item/stack/sheet/iron, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"mXg" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/effect/landmark/navigate_destination/janitor, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"mXn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"mXq" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/window/reinforced/plasma/spawner/directional/west, -/obj/machinery/power/shuttle_engine/heater{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"mXx" = ( -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/fore) -"mXC" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"mXD" = ( -/obj/structure/tank_holder/emergency_oxygen, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"mXH" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"mXU" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Firing Range" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/office) -"mXY" = ( -/obj/structure/table/glass, -/obj/item/clothing/gloves/latex, -/obj/item/healthanalyzer, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5; - pixel_y = -1 - }, -/turf/open/floor/iron/white, -/area/station/security/medical) -"mYg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"mYh" = ( -/obj/machinery/shower/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/office) -"mYo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"mYp" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/item/radio/intercom/prison/directional/north, -/obj/machinery/computer/arcade/orion_trail, -/turf/open/floor/iron, -/area/station/security/prison) -"mYs" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/station/medical/office) -"mYu" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"mYA" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"mYB" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "disposals" - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"mYC" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/construction) -"mYF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"mYK" = ( -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"mYM" = ( -/obj/structure/transit_tube/curved/flipped{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"mYV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"mZj" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"mZy" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"mZH" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"mZI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"mZJ" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"mZM" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" - }, -/area/station/holodeck/rec_center) -"mZS" = ( -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"mZT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/general/visible{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"mZV" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"mZZ" = ( -/obj/machinery/power/emitter, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"nag" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Engineering Desk"; - req_access = list("engineering") - }, -/obj/item/paper_bin, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"nah" = ( -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"nak" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"naz" = ( -/obj/effect/turf_decal/siding/wideplating_new/corner{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"naI" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"naR" = ( -/obj/structure/frame/computer{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"nba" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"nbc" = ( -/obj/effect/spawner/random/trash/box, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"nbi" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"nbj" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"nbn" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"nbu" = ( -/obj/machinery/button/curtain{ - id = "restaurant_booth_a"; - pixel_x = -26 - }, -/obj/structure/chair/sofa/left/maroon{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"nbN" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"nbP" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/aisat) -"nbT" = ( -/obj/machinery/door/airlock/external{ - name = "Transport Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"nbV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"nca" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/port) -"ncc" = ( -/turf/closed/wall, -/area/station/cargo/sorting) -"nce" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"ncl" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/apartment1) -"ncs" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/red/half, -/obj/item/card/id/advanced/prisoner/five, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"ncu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"ncB" = ( -/turf/closed/wall, -/area/station/maintenance/floor4/port/aft) -"ncC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"ncD" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"ncL" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/spawner/random/trash/mess, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ncX" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/cargo/lobby) -"ndc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"ndd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/floor2/fore) -"ndg" = ( -/obj/machinery/air_sensor/plasma_tank, -/obj/effect/turf_decal/trimline/purple/line, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"ndo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"ndr" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"ndF" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"ndL" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"ndR" = ( -/obj/machinery/door/airlock/engineering{ - name = "Chief Engineer's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/ce, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"ndX" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/item/shard, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"ndY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"nec" = ( -/obj/structure/frame/computer{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"neh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"nej" = ( -/obj/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"nel" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"new" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/cargo/storage) -"neB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/south{ - id = "z1-maint-crates"; - name = "shutters control" - }, -/obj/effect/turf_decal/caution{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"neC" = ( -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"neJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"neL" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"neR" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"neW" = ( -/obj/machinery/door/airlock/medical{ - name = "Mental Health Ward" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"neX" = ( -/obj/machinery/door/airlock/virology{ - id_tag = "viro-iso"; - name = "Virology Isolation" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/medical/virology/isolation) -"neZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"nfm" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/floor1/aft) -"nfn" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/smooth_large, -/area/station/tcommsat/computer) -"nfv" = ( -/turf/closed/wall/r_wall, -/area/station/medical/storage) -"nfw" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"nfx" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/turf/open/space/basic, -/area/space/nearstation) -"nfH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"nfI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/bitrunning/den) -"nfR" = ( -/obj/machinery/shower/directional/west, -/turf/open/floor/noslip, -/area/station/science/genetics) -"nfU" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/end{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"nfY" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor4/fore) -"nfZ" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"nge" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "cmoshutter"; - name = "CMO Privacy Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) -"ngf" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"ngi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - desc = "It has a shield faintly scratched into the access panel."; - name = "Abandoned Armory" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ngk" = ( -/obj/machinery/computer/mecha{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"ngm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"ngr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/tile, -/area/station/service/library) -"ngD" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"ngH" = ( -/obj/machinery/ntnet_relay, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"ngK" = ( -/obj/machinery/microwave{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/structure/table, -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"ngL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ngT" = ( -/obj/structure/dresser, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"ngX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/button/door/directional/south{ - id = "evashutter"; - name = "EVA Shutters" - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"ngY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"nhd" = ( -/obj/machinery/vending/wardrobe/curator_wardrobe, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"nhf" = ( -/obj/structure/table/wood, -/obj/item/instrument/trumpet, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"nhl" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/aft) -"nhm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"nho" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"nhs" = ( -/obj/structure/table/wood, -/obj/item/instrument/accordion, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"nhu" = ( -/turf/closed/wall, -/area/station/commons/storage/primary) -"nhA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-12"; - location = "2-11" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"nhE" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"nhF" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"nhG" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/machinery/vending/cigarette, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nhJ" = ( -/obj/machinery/chem_master, -/obj/structure/noticeboard/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"nhL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/commons/fitness/recreation) -"nhM" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nhU" = ( -/obj/structure/alien/weeds/creature{ - desc = "This is in our water? Gross!"; - name = "algae mass" - }, -/turf/open/water/no_planet_atmos{ - desc = "Filthy."; - name = "untreated water" - }, -/area/station/maintenance/floor1/port/aft) -"nhV" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor4/aft) -"nhX" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"nhZ" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"nih" = ( -/obj/machinery/computer/communications, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - listening = 0; - name = "Captain's Intercom" - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"nik" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"nir" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"niu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "ai_sat" - }, -/obj/machinery/door/airlock/hatch{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"niA" = ( -/obj/effect/turf_decal/trimline/green/corner{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/railing/corner/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"niD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"niE" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"niG" = ( -/obj/effect/decal/cleanable/food/tomato_smudge, -/turf/open/floor/iron, -/area/station/security/prison) -"niK" = ( -/obj/structure/table, -/obj/item/storage/box/monkeycubes{ - pixel_x = 6; - pixel_y = 9 - }, -/obj/item/radio/headset/headset_medsci{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/sequence_scanner{ - pixel_x = -2; - pixel_y = -1 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"niM" = ( -/obj/machinery/light_switch/directional/north, -/obj/effect/landmark/start/assistant, -/obj/item/bedsheet/brown/double, -/obj/structure/bed/double, -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"niP" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"njc" = ( -/obj/structure/stairs/north, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/plating, -/area/station/science/lobby) -"nje" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/table, -/obj/item/toy/cards/deck/wizoff{ - pixel_x = -4; - pixel_y = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"njk" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Cafeteria" - }, -/obj/effect/turf_decal/tile/bar{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/iron/dark/corner, -/area/station/cargo/miningdock) -"njm" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"njq" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"njB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"njC" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"njK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"njQ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"njS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/button/door/directional/east{ - id = "bridge_glass"; - name = "Bridge Shutters Control"; - pixel_y = -5; - req_access = list("command") - }, -/obj/machinery/button/door/directional/east{ - id = "bridge_blast"; - name = "Bridge Blast Door Control"; - pixel_y = 5; - req_access = list("command") - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"njU" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"nkh" = ( -/obj/machinery/power/tracker, -/obj/structure/cable, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) -"nko" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"nkp" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"nkL" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"nkO" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"nla" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"nlc" = ( -/obj/machinery/smartfridge/organ, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"nld" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"nlf" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"nlg" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"nln" = ( -/obj/effect/turf_decal/trimline/red/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"nlu" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"nlv" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"nlw" = ( -/obj/structure/chair/sofa/bench, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"nlG" = ( -/obj/structure/dresser, -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"nlL" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"nlN" = ( -/turf/closed/wall, -/area/station/maintenance/floor2/port/aft) -"nmk" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/blue, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"nmq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"nmB" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/musical_instrument, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"nmF" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"nmK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/shard, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"nmV" = ( -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"nnb" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"nnc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"nnf" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 5 - }, -/obj/effect/spawner/random/engineering/material, -/obj/structure/rack, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"nnj" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"nno" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"nnu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) -"nnJ" = ( -/obj/structure/filingcabinet, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"nnK" = ( -/obj/effect/spawner/random/structure/girder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"nnN" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"nnT" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"nnV" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"nod" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"noe" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/breakroom) -"nof" = ( -/obj/item/seeds/coffee, -/obj/machinery/hydroponics/soil, -/turf/open/misc/sandy_dirt, -/area/station/maintenance/floor3/starboard) -"noh" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"noj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/security/eva) -"non" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/storage) -"nor" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/terminal, -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/plating, -/area/station/tcommsat/computer) -"nou" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 9 - }, -/obj/structure/window/spawner/directional/east, -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"now" = ( -/obj/structure/sign/departments/botany/directional/west, -/turf/open/openspace, -/area/station/hallway/floor3/aft) -"noA" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"noM" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/engineering/atmos) -"noO" = ( -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai_upload) -"noU" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"nph" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"nps" = ( -/obj/structure/rack, -/obj/item/soulstone/anybody/chaplain, -/obj/item/nullrod{ - pixel_x = -6 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"npu" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"npD" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/storage) -"npE" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"npF" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating_new, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"npK" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"npO" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/item/restraints/legcuffs/beartrap/prearmed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"npP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"npR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"npT" = ( -/obj/structure/weightmachine/weightlifter, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"npZ" = ( -/obj/effect/turf_decal/trimline/green/warning, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"nqb" = ( -/obj/machinery/holopad/secure, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai_upload) -"nqc" = ( -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"nqh" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/explab) -"nqi" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"nqj" = ( -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"nqm" = ( -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor3/fore) -"nqr" = ( -/turf/closed/wall, -/area/station/hallway/floor3/aft) -"nqt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"nqx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"nqE" = ( -/obj/machinery/door/airlock/atmos{ - name = "Crystallizer" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/engineering/atmos/hfr_room) -"nqI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"nqJ" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"nqL" = ( -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/qm) -"nqM" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"nqP" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/structure/table/reinforced/plasmarglass, -/obj/item/stock_parts/power_store/cell/lead{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/usb_cable{ - name = "jumper cable"; - pixel_x = -10; - pixel_y = 12 - }, -/obj/item/lead_pipe{ - pixel_x = -5 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"nqU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"nqX" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/table, -/obj/item/modular_computer/laptop/preset/civilian, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"nre" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"nrh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"nrk" = ( -/obj/structure/cable, -/obj/structure/table, -/obj/item/food/energybar, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison) -"nrm" = ( -/turf/closed/wall, -/area/station/medical/medbay/central) -"nrt" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "mailbelt" - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"nrx" = ( -/obj/machinery/computer/holodeck{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"nrB" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"nrC" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/service) -"nrL" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"nrX" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"nse" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/space/nearstation) -"nsh" = ( -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"nsi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"nsn" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"nsp" = ( -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Office" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"nss" = ( -/obj/structure/chair/comfy/shuttle, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"nst" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"nsw" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"nsB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half, -/area/station/cargo/office) -"nsM" = ( -/obj/structure/table, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"ntl" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end, -/turf/open/floor/plating, -/area/station/science/cytology) -"ntn" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Abandoned Ship Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/gateway, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"ntq" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/apartment1) -"ntv" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ntF" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/space/nearstation) -"ntM" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/fore) -"ntO" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"ntR" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"ntS" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/item/food/grown/mushroom/reishi, -/obj/item/food/grown/mushroom/reishi, -/obj/item/food/grown/mushroom/reishi, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"ntU" = ( -/obj/machinery/light/cold/no_nightlight/directional/east, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/requests_console/auto_name/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"ntW" = ( -/obj/structure/altar_of_gods, -/obj/effect/turf_decal/siding/white, -/obj/item/book/bible, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"nun" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/stairs{ - dir = 4 - }, -/area/station/commons/fitness/recreation) -"nus" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"nuv" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/mob/living/basic/pig{ - desc = "The best friend of any cytologist."; - name = "Oug" - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"nuE" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"nuR" = ( -/obj/structure/table, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"nuV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/light/small/directional/north, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"nvh" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"nvj" = ( -/obj/machinery/telecomms/message_server/preset, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"nvk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"nvo" = ( -/obj/effect/spawner/random/mod/maint, -/obj/item/stack/sheet/cardboard, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"nvs" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters{ - id = "evashutter"; - name = "E.V.A. Storage Shutter" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"nvv" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/railing/corner/end/flip{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"nvw" = ( -/obj/machinery/door/poddoor/shutters{ - id = "maint-shut"; - name = "Maintenance Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"nvE" = ( -/obj/machinery/autolathe, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"nvO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"nvT" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1; - name = "killroom vent" - }, -/turf/open/floor/engine/hull/reinforced, -/area/station/science/xenobiology) -"nwa" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"nwc" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/warning/vacuum/external/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"nwf" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"nwh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/commons/storage/primary) -"nwi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"nwx" = ( -/obj/item/wallframe/button, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"nwD" = ( -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"nwL" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"nwR" = ( -/obj/structure/sign/warning{ - pixel_y = -32 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat) -"nwW" = ( -/obj/machinery/camera/directional/south{ - c_tag = "AI Chamber - Port"; - network = list("aicore") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"nxe" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/vending/cytopro, -/turf/open/floor/iron, -/area/station/science/cytology) -"nxm" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"nxy" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/mineral/stacking_unit_console{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"nxC" = ( -/obj/effect/turf_decal/stripes/full, -/obj/machinery/door/airlock{ - name = "Vacant Commissary" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"nxH" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"nxL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"nxN" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"nxU" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 4 - }, -/obj/item/card/id/advanced/prisoner/three, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/brig) -"nxV" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/item/kirbyplants/random/fullysynthetic, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"nya" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/bag/trash, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"nyg" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"nyh" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/air, -/area/station/engineering/atmos) -"nyr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/east, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) -"nys" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/mail_sorting/science/experimentor_lab, -/obj/effect/mapping_helpers/mail_sorting/science/genetics, -/obj/effect/mapping_helpers/mail_sorting/science/ordnance, -/obj/effect/mapping_helpers/mail_sorting/science/rd_office, -/obj/effect/mapping_helpers/mail_sorting/science/research, -/obj/effect/mapping_helpers/mail_sorting/science/xenobiology, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"nyv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"nyE" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"nyG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/blobstart, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"nyL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/kirbyplants/random/dead, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"nyZ" = ( -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"nzb" = ( -/obj/machinery/computer/telecomms/monitor{ - dir = 4; - network = "tcommsat" - }, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"nzd" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/wirecutters, -/obj/item/wrench, -/obj/item/cultivator, -/obj/item/shovel/spade, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"nze" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"nzj" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nzk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"nzm" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"nzq" = ( -/obj/machinery/door/airlock/wood{ - name = "Bedroom" - }, -/turf/open/floor/carpet/purple, -/area/station/commons/dorms/apartment1) -"nzr" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nzw" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"nzJ" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/iron/dark/textured, -/area/station/medical/storage) -"nzK" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/stack/rods{ - amount = 3 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"nzL" = ( -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/cargo/storage) -"nzM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"nzO" = ( -/obj/structure/ladder, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor2/fore) -"nzV" = ( -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/obj/effect/spawner/random/armory/disablers, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"nAb" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool/directional/south, -/turf/open/floor/iron, -/area/station/security/prison) -"nAf" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"nAm" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"nAu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) -"nAC" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"nAD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "aft_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"nAE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"nAF" = ( -/obj/structure/table/reinforced/rglass, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"nAH" = ( -/turf/closed/wall/r_wall, -/area/station/science/xenobiology) -"nAJ" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"nAT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/textured_half, -/area/station/cargo/office) -"nAU" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"nAV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"nBh" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"nBn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"nBr" = ( -/obj/structure/frame/computer, -/turf/open/floor/iron/smooth, -/area/station/construction) -"nBw" = ( -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"nBx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"nBC" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"nBO" = ( -/obj/machinery/door/airlock/command{ - name = "Rusted Airlock" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"nBV" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"nBW" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/departure_lounge) -"nCi" = ( -/obj/structure/sign/departments/security, -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/first) -"nCA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"nCG" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/cmo) -"nCK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"nCL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"nCP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 6 - }, -/turf/open/floor/iron/corner, -/area/station/command/gateway) -"nDf" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/landmark/start/station_engineer, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"nDg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"nDj" = ( -/obj/machinery/door/firedoor, -/obj/machinery/vending/boozeomat, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"nDk" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/port) -"nDn" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"nDp" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/misc/grass, -/area/station/maintenance/floor1/starboard) -"nDr" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"nDu" = ( -/turf/open/openspace, -/area/station/maintenance/floor4/port/fore) -"nDw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"nDx" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"nDK" = ( -/obj/item/chair, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"nDQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/south, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/multitool{ - pixel_x = 7; - pixel_y = 10 - }, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/engineering/lobby) -"nEa" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"nEb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"nEi" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"nEj" = ( -/obj/structure/curtain/cloth, -/turf/open/floor/eighties, -/area/station/service/janitor) -"nEl" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"nEs" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"nED" = ( -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"nEG" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Chapel Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/office) -"nEI" = ( -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"nEM" = ( -/obj/item/fishing_rod, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/three, -/obj/item/cigarette/pipe, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"nEO" = ( -/obj/structure/table, -/obj/item/screwdriver, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"nET" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) -"nEX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nEZ" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/recharge_station, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"nFf" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"nFi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"nFq" = ( -/obj/item/stack/cable_coil/cut, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"nFr" = ( -/obj/machinery/door_buttons/access_button{ - idDoor = "asylum_airlock_exterior"; - name = "Asylum Exit"; - pixel_y = -26; - req_access = list("psychology") - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 1; - pixel_x = -16 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"nFt" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"nFu" = ( -/obj/machinery/newscaster/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/checker, -/area/station/commons/locker) -"nFH" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"nFK" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"nFQ" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lab) -"nFT" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"nGj" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nGl" = ( -/turf/open/openspace, -/area/station/service/chapel) -"nGm" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"nGx" = ( -/obj/structure/grille/broken, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"nGD" = ( -/obj/structure/rack, -/obj/machinery/light/small/directional/west, -/obj/item/book/granter/action/spell/smoke/lesser, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"nGG" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/beebox, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"nGJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"nGL" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"nGQ" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/commons/locker) -"nGS" = ( -/obj/structure/bed, -/obj/item/bedsheet/red, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"nGW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"nHa" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/computer/security{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"nHf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"nHr" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"nHv" = ( -/obj/effect/turf_decal/caution{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/meter, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nHw" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"nHy" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"nHC" = ( -/obj/machinery/door/airlock/virology/glass{ - name = "Monkey Containment" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/virology, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"nHF" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/item/stack/cable_coil/cut, -/obj/item/electronics/airlock, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_edge{ - dir = 4 - }, -/area/station/medical/abandoned) -"nHT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) -"nHW" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"nIh" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"nIk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"nIl" = ( -/obj/structure/table/wood, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"nIr" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/secondary/entry) -"nIt" = ( -/obj/structure/bed/double, -/obj/machinery/light_switch/directional/north, -/obj/effect/landmark/start/assistant, -/obj/item/bedsheet/blue/double, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"nIu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"nIv" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/hydroponics) -"nIw" = ( -/obj/machinery/computer/atmos_alert{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"nIB" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"nII" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"nIJ" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 6 - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"nIN" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"nIO" = ( -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"nIQ" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/smooth_edge{ - dir = 8 - }, -/area/station/science/robotics/mechbay) -"nIT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"nJb" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"nJk" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"nJm" = ( -/obj/machinery/portable_atmospherics/scrubber/huge, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"nJo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"nJt" = ( -/obj/structure/foamedmetal, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"nJC" = ( -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"nJI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"nJK" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"nJR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"nJT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"nJU" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/science/alt/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"nJV" = ( -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/railing/corner/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"nJY" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"nKa" = ( -/mob/living/basic/cow, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"nKc" = ( -/obj/structure/cable, -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"nKn" = ( -/obj/structure/sign/directions/dorms/directional/east, -/obj/structure/sign/directions/evac/directional/east{ - pixel_y = -8 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"nKq" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nKs" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"nKA" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/item/flashlight/glowstick, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/flashlight/flare, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"nKL" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"nKU" = ( -/obj/effect/spawner/structure/window, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/garden) -"nKY" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/white/textured, -/area/station/medical/cryo) -"nLc" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/courtroom) -"nLd" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album/library, -/obj/item/radio/intercom/directional/south, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/carpet/red, -/area/station/service/library) -"nLk" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"nLp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"nLs" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "coffinbelt" - }, -/obj/structure/closet/crate/coffin, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"nLx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"nLL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/turf_decal/weather/dirt{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/garden) -"nLM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"nLY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"nMn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"nMu" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"nMz" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"nMI" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/engineering{ - name = "Telecommunications" - }, -/turf/open/floor/iron/smooth_half, -/area/station/tcommsat/computer) -"nMK" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 6 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"nMU" = ( -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/openspace, -/area/station/maintenance/floor4/starboard/fore) -"nMX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"nNk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"nNq" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nNy" = ( -/obj/structure/table_frame, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"nNE" = ( -/obj/structure/rack, -/obj/effect/spawner/random/medical/surgery_tool, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"nNJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen/diner) -"nNM" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"nNT" = ( -/obj/machinery/door/airlock/public{ - name = "Showers" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"nOa" = ( -/obj/structure/table, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/obj/item/storage/bag/tray/cafeteria, -/turf/open/floor/iron, -/area/station/security/prison) -"nOj" = ( -/obj/vehicle/sealed/mecha/ripley/cargo, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/bot_red, -/turf/open/floor/iron/textured_large, -/area/station/cargo/warehouse) -"nOw" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/machinery/chem_master/condimaster, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"nOB" = ( -/obj/structure/kitchenspike, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"nOH" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"nOO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "chem-lock-f"; - name = "Chemistry Shutters" - }, -/turf/open/floor/plating, -/area/station/hallway/floor2/aft) -"nOR" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/dark/fourcorners, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"nOX" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Law Office" - }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/status_display/ai/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"nOY" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"nOZ" = ( -/obj/structure/rack, -/obj/item/chair/plastic, -/obj/item/chair/plastic{ - pixel_y = 4 - }, -/obj/item/chair/plastic{ - pixel_y = 8 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/fore) -"nPa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"nPb" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/engine_smes) -"nPp" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/yellow, -/obj/item/flashlight/flare/candle, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"nPs" = ( -/obj/effect/spawner/random/entertainment/cigarette_pack, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"nPw" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"nPE" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/starboard) -"nPG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"nPN" = ( -/obj/machinery/computer/message_monitor{ - dir = 4 - }, -/obj/machinery/camera/directional/west{ - name = "Telecomms - Control"; - network = list("ss13","engine") - }, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"nPS" = ( -/obj/structure/mirror/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron/freezer, -/area/station/service/chapel) -"nPZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible/layer2{ - dir = 1 - }, -/obj/machinery/meter/layer2, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"nQj" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"nQl" = ( -/obj/machinery/light/cold/no_nightlight/directional/west, -/obj/machinery/vending/wardrobe/gene_wardrobe, -/turf/open/floor/iron/dark, -/area/station/science/genetics) -"nQo" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/lsd{ - pixel_x = 5 - }, -/obj/structure/sign/poster/contraband/red_rum/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"nQw" = ( -/obj/machinery/light/small/red/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"nQx" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"nQA" = ( -/obj/structure/chair/sofa/bench/right, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"nQO" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"nQQ" = ( -/obj/machinery/shower/directional/west, -/turf/open/floor/noslip, -/area/station/commons/fitness) -"nQR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"nQS" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"nQT" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"nQX" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"nQY" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Fore Entrance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/disposalpipe/segment, -/obj/machinery/scanner_gate/preset_guns, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"nQZ" = ( -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing/corner, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"nRe" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "com_vator" - }, -/obj/effect/abstract/elevator_music_zone{ - linked_elevator_id = "com_vator"; - range = 2 - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/fore) -"nRn" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"nRo" = ( -/obj/machinery/vending/games, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"nRv" = ( -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"nRx" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/table, -/obj/item/paper_bin, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"nRF" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"nRI" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/office) -"nRK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Emergency Ladder Access" - }, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"nRL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"nRP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"nRQ" = ( -/obj/item/storage/medkit/fire{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/medkit/fire, -/obj/item/storage/medkit/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/storage/medkit/regular, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/door/window/right/directional/east{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"nRU" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"nSn" = ( -/obj/machinery/blackbox_recorder, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"nSv" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"nSz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/prison/garden) -"nSC" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"nSS" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"nST" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"nSV" = ( -/obj/structure/table/wood, -/obj/item/storage/lockbox/medal, -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/recharger, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"nTo" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 9 - }, -/obj/machinery/computer/gateway_control{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"nTB" = ( -/obj/structure/fluff/oldturret, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/station/maintenance/floor4/starboard/aft) -"nTC" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"nTI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-6"; - location = "2-5" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"nTJ" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"nTO" = ( -/obj/structure/cable, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"nTP" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/computer/station_alert, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"nTU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"nTZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"nUa" = ( -/turf/closed/wall, -/area/station/medical/storage) -"nUj" = ( -/obj/structure/chair/e_chair, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"nUp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"nUt" = ( -/obj/effect/landmark/start/hangover, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"nUA" = ( -/turf/open/floor/carpet/purple, -/area/station/commons/dorms/apartment1) -"nUL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"nUM" = ( -/turf/open/floor/iron/textured_large, -/area/station/cargo/office) -"nUO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"nUS" = ( -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"nUU" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"nVi" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"nVl" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/structure/table, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/item/stack/sheet/iron/ten, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"nVm" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"nVq" = ( -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/fore) -"nVs" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"nVw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"nVB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"nVE" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 - }, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"nVP" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"nVT" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/computer/records/medical/laptop, -/obj/structure/table, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron, -/area/station/science/genetics) -"nVW" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"nVZ" = ( -/obj/structure/table/wood, -/obj/item/storage/backpack/satchel/leather/withwallet{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/item/paper/fluff/ids_for_dummies, -/obj/machinery/light/directional/north, -/obj/item/storage/crayons{ - pixel_x = 16 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"nWc" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"nWe" = ( -/turf/closed/wall, -/area/station/commons/fitness) -"nWk" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"nWo" = ( -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"nWp" = ( -/obj/structure/table, -/obj/item/stack/arcadeticket, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"nWu" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/medical/psychology) -"nWz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"nWH" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/fore) -"nWI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-19"; - location = "3-18" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nWJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"nWM" = ( -/obj/structure/table, -/obj/item/stack/medical/suture/emergency, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"nWO" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"nWP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/command/gateway) -"nWS" = ( -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"nWW" = ( -/turf/closed/wall, -/area/station/hallway/floor4/aft) -"nXb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/end, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"nXh" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard) -"nXk" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"nXl" = ( -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/siding/thinplating_new/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"nXm" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/pen/red, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"nXq" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"nXs" = ( -/obj/structure/rack, -/obj/item/stack/sheet/leather, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"nXw" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Courtroom - Gallery" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"nXA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"nXJ" = ( -/obj/machinery/photocopier, -/turf/open/floor/iron/white, -/area/station/science/lower) -"nXO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, -/obj/machinery/igniter/incinerator_atmos, -/obj/machinery/atmospherics/pipe/smart/manifold/orange/visible/layer4{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"nXQ" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/aft) -"nXX" = ( -/obj/machinery/light/directional/north, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"nYe" = ( -/obj/machinery/computer/teleporter, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"nYh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"nYo" = ( -/obj/structure/table, -/obj/machinery/light/small/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"nYt" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"nYE" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"nYL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"nYN" = ( -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"nYP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"nYZ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"nZe" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"nZg" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/command{ - name = "Captain's Office" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/command/heads_quarters/captain) -"nZh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"nZm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera{ - c_tag = "Shared Engineering Storage #4"; - network = list("ss13","engine") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"nZq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/soap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"nZu" = ( -/obj/structure/window/reinforced/tinted/fulltile, -/turf/open/floor/plating, -/area/station/service/library) -"nZG" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"nZR" = ( -/obj/machinery/light_switch/directional/north, -/obj/effect/landmark/start/assistant, -/obj/structure/bed/double, -/obj/item/bedsheet/red/double, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"nZV" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/turf_decal/trimline/red/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"nZZ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"oaa" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/table, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/structure/sign/departments/engineering/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"oad" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"oar" = ( -/turf/open/misc/beach/sand, -/area/station/hallway/secondary/entry) -"oaC" = ( -/obj/effect/landmark/blobstart, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/grass/fairy, -/area/station/maintenance/floor2/port/fore) -"oaE" = ( -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"oaS" = ( -/obj/item/toy/crayon/spraycan, -/obj/structure/table, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/aft) -"oaU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"obj" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) -"obs" = ( -/obj/item/stack/tile/iron/white, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"obA" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/engineering/lobby) -"obH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) -"obK" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"obQ" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-8"; - location = "1-7" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"obT" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/security/brig) -"obV" = ( -/obj/machinery/door/airlock/hatch{ - name = "Emergency Ladder Access" - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"obX" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/door/window/brigdoor/right/directional/east{ - name = "Anesthetic Storage"; - req_access = list("medical") - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/storage) -"oce" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) -"ocl" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"ocn" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"oct" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Security - Exterior" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"ocu" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"ocv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ocH" = ( -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"ocO" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/structure/bed/medical/anchored{ - dir = 4 - }, -/obj/item/bedsheet/green, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"ocR" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Fore Entrance" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"ocU" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/fore) -"ocX" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"odk" = ( -/obj/machinery/light/directional/east, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"odp" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"odz" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/button/door/directional/north{ - id = "rdoffice"; - name = "Privacy Control"; - pixel_y = 34; - req_access = list("rd") - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"odH" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"odJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"odK" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/plastic/five, -/obj/item/plunger, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"odP" = ( -/obj/machinery/newscaster/directional/north, -/obj/machinery/fax{ - fax_name = "Law Office"; - name = "Law Office Fax Machine" - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"odS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"odV" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/starboard) -"odY" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/wood{ - name = "Dining Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"oee" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"oet" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-9"; - location = "3-8" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"oeu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing/corner/end/flip, -/obj/structure/railing/corner/end, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"oeQ" = ( -/obj/machinery/shower/directional/east, -/turf/open/floor/noslip, -/area/station/commons/fitness) -"ofa" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ofh" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"ofi" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"ofn" = ( -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ofp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"ofx" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"ofy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/box, -/turf/open/floor/wood, -/area/station/medical/psychology) -"ofD" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/table, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/service/lawoffice) -"ofH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"ogc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/gravity_generator) -"ogg" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"ogh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/floor1/fore) -"ogp" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"ogt" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/bookbinder, -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/red, -/area/station/service/library) -"ogA" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"ogD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"ogJ" = ( -/obj/machinery/conveyor{ - id = "coffinbelt" - }, -/obj/structure/closet/crate/coffin, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"ogM" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"ogT" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"ogW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"ogY" = ( -/obj/machinery/button/door/directional/west{ - id = "atmoshfr"; - name = "Radiation Shutters Control"; - req_access = list("atmospherics") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/engineering/atmos/hfr_room) -"oha" = ( -/obj/machinery/light/cold/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"ohm" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"ohn" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"oho" = ( -/obj/machinery/door/airlock/grunge{ - name = "Courtroom" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"oht" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/lobby) -"ohu" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"ohz" = ( -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"ohF" = ( -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/medical{ - name = "Medical Storage" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"ohO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"oic" = ( -/turf/closed/wall, -/area/station/maintenance/floor1/starboard/fore) -"oig" = ( -/obj/effect/turf_decal/siding/purple, -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"oih" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"oin" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"oiu" = ( -/obj/machinery/computer/security/hos{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"oiw" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/grunge{ - name = "Prison Workshop" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison/work) -"oiA" = ( -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"oiF" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"oiJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"oiO" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) -"oiP" = ( -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"oiU" = ( -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"oiY" = ( -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"ojc" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"ojl" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat) -"ojp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/range) -"ojx" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"ojz" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Library Garden" - }, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"ojM" = ( -/obj/structure/chair/comfy{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"ojU" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) -"ojW" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/item/flashlight/lamp/green, -/turf/open/floor/wood/tile, -/area/station/service/library) -"oke" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"okr" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"okt" = ( -/obj/effect/spawner/random/structure/chair_comfy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"okI" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"okK" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"okL" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/obj/item/multitool, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"okN" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"okT" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"ola" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"olj" = ( -/obj/item/cultivator/rake, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"olt" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"olu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/effect/spawner/random/engineering/material_cheap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"olC" = ( -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"olM" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 9 - }, -/obj/machinery/status_display/ai/directional/east, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"olR" = ( -/obj/machinery/door/airlock/public{ - id_tag = "public_toilets_a"; - name = "Toilet A" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"olS" = ( -/obj/effect/turf_decal/siding/wideplating, -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"olV" = ( -/obj/structure/ladder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"ome" = ( -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"omg" = ( -/obj/structure/safe/floor, -/obj/effect/spawner/random/entertainment/money_large, -/obj/effect/spawner/random/entertainment/money_large, -/obj/effect/spawner/random/entertainment/money_large, -/obj/item/reagent_containers/cup/glass/bottle/lizardwine, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"omh" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"omj" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"omk" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"oml" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - desc = "Etched into the airlock is: SQUATTERZ RIGHTS!"; - name = "Vandalized Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"omq" = ( -/obj/machinery/computer/security/telescreen/vault/directional/east, -/obj/machinery/computer/security{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"omr" = ( -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/hallway/floor4/fore) -"omA" = ( -/obj/effect/spawner/random/structure/table_fancy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"omF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"omG" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/bot, -/obj/machinery/photocopier, -/turf/open/floor/iron/dark/textured_large, -/area/station/service/library/printer) -"omK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"omL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"omP" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron, -/area/station/security/brig) -"omS" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"omT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"onc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"ong" = ( -/obj/machinery/light/directional/west, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"oni" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"onl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"onw" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"onC" = ( -/obj/machinery/light/red/dim/directional/east, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"onE" = ( -/obj/item/paint/anycolor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/paint/anycolor, -/obj/item/paint/anycolor{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"onI" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"onM" = ( -/obj/structure/cable, -/obj/machinery/power/solar, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/aft) -"onT" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Science East" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"onX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ool" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"oon" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"ooy" = ( -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"ooE" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) -"ooF" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"ooN" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"ooP" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/suit_storage_unit/industrial/loader, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"ooQ" = ( -/obj/machinery/light/warm/directional/north, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"ooT" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/item/folder/white{ - pixel_y = 13 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"ooV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/ammo_casing/c38{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"ooY" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"opd" = ( -/obj/item/stack/sheet/cardboard, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"opn" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"opr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/science/robotics/lab) -"opB" = ( -/obj/machinery/space_heater/improvised_chem_heater, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"opC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"opE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"opN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"opP" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/structure/rack, -/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/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/security/prison) -"opR" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/food/grown/poppy{ - pixel_y = 2 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"opZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"oqa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"oqc" = ( -/obj/structure/fluff/shower_drain, -/obj/machinery/shower/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"oqd" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"oqk" = ( -/obj/structure/sign/directions/medical/directional/north{ - dir = 2 - }, -/obj/structure/sign/directions/science/directional/north{ - dir = 2; - pixel_y = 24 - }, -/obj/structure/sign/directions/upload/directional/north{ - dir = 2; - pixel_y = 40 - }, -/obj/structure/ladder, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor3/fore) -"oqq" = ( -/obj/structure/table, -/obj/item/stamp, -/obj/item/stamp/denied{ - pixel_x = 10; - pixel_y = 7 - }, -/obj/structure/cable, -/turf/open/floor/iron/textured_half, -/area/station/cargo/office) -"oqv" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"oqw" = ( -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"oqx" = ( -/obj/structure/disposalpipe/trunk/multiz/down, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"oqA" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/machinery/camera{ - c_tag = "Supermatter Foyer Cam #2"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"oqD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/iron/textured_large, -/area/station/maintenance/solars/starboard/fore) -"oqH" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"oqK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-1"; - location = "3-0" - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"oqO" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"oqQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"oqU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/food/popcorn, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"oqW" = ( -/obj/machinery/conveyor/inverted{ - dir = 9; - id = "mailbelt" - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"orf" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/aft) -"org" = ( -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/turf/open/floor/plating/airless, -/area/station/solars/port/aft) -"ori" = ( -/obj/structure/table/wood, -/obj/item/storage/bag/plants, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"orl" = ( -/obj/machinery/recharger, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"orD" = ( -/obj/effect/turf_decal/trimline/white/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"orN" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"orQ" = ( -/obj/structure/table/wood, -/obj/machinery/computer/records/medical/laptop{ - dir = 1; - pixel_y = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"osk" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"osq" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"osu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 - }, -/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, -/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, -/obj/effect/mapping_helpers/mail_sorting/engineering/general, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"osC" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"osI" = ( -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"osQ" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"osS" = ( -/obj/effect/spawner/structure/window/hollow/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"osX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/restaurant_portal/bar, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"ote" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/circuits) -"otr" = ( -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"otD" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"otJ" = ( -/obj/effect/turf_decal/stripes/box, -/turf/open/floor/iron/dark, -/area/station/security/range) -"otM" = ( -/obj/machinery/door/poddoor/shuttledock{ - checkdir = 1; - turftype = /turf/open/space/openspace - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"otO" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"otQ" = ( -/obj/machinery/power/smes, -/obj/structure/cable, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/maintenance/solars/starboard/fore) -"otR" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Pen 5"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"otX" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/siding/white/end{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/cryo) -"otZ" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"oua" = ( -/obj/effect/turf_decal/trimline/blue/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"oub" = ( -/obj/structure/kitchenspike, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"ouk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/light/directional/east, -/obj/structure/chair, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen/diner) -"ouy" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/computer/security/telescreen/engine_waste/directional/south, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) -"ouD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/paramedic, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"ouF" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"ouR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_edge, -/area/station/maintenance/floor1/starboard/aft) -"ouX" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"ouZ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/south{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") - }, -/obj/structure/desk_bell{ - pixel_x = 6 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"ovB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ovG" = ( -/obj/machinery/conveyor/inverted{ - dir = 5; - id = "mailbelt" - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"ovJ" = ( -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"ovK" = ( -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"ovL" = ( -/obj/structure/sink/directional/south, -/obj/item/reagent_containers/cup/bucket/wooden{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/structure/broken_flooring/pile/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"ovP" = ( -/obj/machinery/newscaster/directional/north, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat) -"ovY" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/box/white, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/item/reagent_containers/dropper, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"ovZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/checkpoint) -"owb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port) -"owh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/checkpoint) -"owo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"owr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/security/mechbay) -"owB" = ( -/turf/open/floor/catwalk_floor, -/area/station/science/xenobiology/hallway) -"owI" = ( -/turf/open/space/basic, -/area/space) -"owK" = ( -/obj/structure/firelock_frame, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"owM" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"owP" = ( -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"owS" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/effect/landmark/start/hangover, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"oxh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"oxm" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/prison/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"oxn" = ( -/turf/closed/wall, -/area/station/medical/office) -"oxo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/fore) -"oxz" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"oxJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"oxO" = ( -/obj/item/storage/toolbox/electrical, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"oxP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"oxQ" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"oxX" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"oyb" = ( -/obj/machinery/computer/exodrone_control_console, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"oyh" = ( -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"oyt" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"oyv" = ( -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/machinery/dna_scannernew, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"oyy" = ( -/obj/machinery/duct, -/obj/machinery/light_switch/directional/south{ - pixel_x = -6 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"oyF" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"oyH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"oyJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"oyO" = ( -/obj/machinery/power/solar_control{ - dir = 1; - id = "starboardsolar"; - name = "Starboard Quarter Solar Control" - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"oyR" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/structure/sign/warning/biohazard/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"oyW" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"oyZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"ozc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/closet/firecloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"ozn" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"ozr" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ozs" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"ozt" = ( -/turf/open/openspace, -/area/station/medical/psychology) -"ozy" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"ozA" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"ozJ" = ( -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"ozL" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/machinery/duct, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/white, -/area/station/medical/office) -"ozM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"ozO" = ( -/turf/closed/wall, -/area/station/security/prison) -"ozS" = ( -/obj/structure/sign/warning/pods/directional/east, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"oAc" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/railing/corner/end/flip, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"oAd" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"oAe" = ( -/turf/closed/wall/r_wall, -/area/station/security/detectives_office) -"oAm" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"oAv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"oAz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"oAA" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"oAH" = ( -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"oAO" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) -"oAZ" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"oBd" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/fore) -"oBj" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 9 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"oBy" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/stripes, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/plating, -/area/station/science/auxlab/firing_range) -"oBB" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, -/area/station/cargo/miningoffice) -"oBD" = ( -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/wood{ - name = "Chaplain Bedroom" - }, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"oBK" = ( -/obj/structure/chair/comfy{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"oBL" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"oBP" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/structure/chair/comfy/beige{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"oBQ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"oCc" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/obj/machinery/flasher/directional/east{ - id = "secentranceflasher" - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"oCe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"oCf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"oCg" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"oCx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"oCF" = ( -/turf/open/openspace, -/area/station/hallway/floor3/aft) -"oCK" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"oCW" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/structure/table/reinforced, -/obj/item/grenade/chem_grenade{ - pixel_x = -4 - }, -/obj/item/grenade/chem_grenade{ - pixel_x = 5 - }, -/obj/item/grenade/chem_grenade, -/obj/item/stack/cable_coil, -/obj/item/screwdriver{ - pixel_y = 10 - }, -/turf/open/floor/iron/textured_edge, -/area/station/medical/chemistry) -"oDd" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/button/door/directional/south{ - id = "armblast"; - name = "Emergency Armory Lockdown"; - req_access = list("armory") - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"oDe" = ( -/obj/structure/stairs/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"oDi" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/dead_body_placer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"oDI" = ( -/obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"oDJ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"oDS" = ( -/obj/machinery/holopad, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"oEh" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"oEk" = ( -/turf/closed/wall, -/area/station/service/library/artgallery) -"oEr" = ( -/obj/machinery/vending/wardrobe/jani_wardrobe, -/obj/effect/turf_decal/tile/green/full, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron, -/area/station/service/janitor) -"oEB" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/closet/crate/hydroponics, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/obj/effect/spawner/random/food_or_drink/seed{ - spawn_all_loot = 1; - spawn_random_offset = 1 - }, -/obj/item/seeds/soya, -/obj/item/seeds/korta_nut, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/prison/garden) -"oEC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"oET" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"oEU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table, -/obj/item/reagent_containers/condiment/cornmeal, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"oFa" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/locker) -"oFi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"oFl" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/ce) -"oFr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"oFs" = ( -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/security/checkpoint) -"oFu" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"oFF" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/machinery/door/airlock/engineering{ - name = "Telecommunications" - }, -/turf/open/floor/iron/smooth_half, -/area/station/tcommsat/server) -"oFH" = ( -/obj/structure/frame/machine{ - anchored = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/circuit, -/area/station/science/cytology) -"oFI" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"oFM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/shower) -"oFS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"oFT" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"oFX" = ( -/obj/item/trash/champagne_cork{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/trash/energybar, -/obj/item/stack/cannonball/trashball{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/trash/cheesie, -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/food/plant_smudge, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"oFY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron, -/area/station/science/lobby) -"oGc" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/obj/structure/railing/corner, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"oGf" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"oGk" = ( -/obj/machinery/atmospherics/components/binary/pump/layer4{ - name = "Distro to External Ports" - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oGo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"oGt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"oGD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"oGF" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/mapping_helpers/airlock/access/all/science/genetics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/science/glass{ - name = "Genetics Office" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"oGL" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"oGM" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"oGQ" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/status_display/ai/directional/north, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"oHp" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"oHr" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard) -"oHs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"oHw" = ( -/turf/open/floor/iron, -/area/station/science/lobby) -"oHx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/obj/machinery/camera/directional/west{ - c_tag = "Gravity Generator Maintenance" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/engineering/gravity_generator) -"oHy" = ( -/obj/structure/broken_flooring/singular/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"oHC" = ( -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel) -"oHL" = ( -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"oHT" = ( -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"oHW" = ( -/obj/machinery/porta_turret/ai, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai) -"oId" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/science/lab) -"oIj" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"oIk" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"oIl" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"oIq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"oIr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"oIy" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/atmos/pumproom) -"oID" = ( -/obj/machinery/door/airlock/vault{ - name = "Vault" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/vault, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) -"oIE" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"oII" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"oIJ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oIN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/cargo/sorting) -"oIS" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"oJf" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"oJk" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"oJl" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"oJo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"oJp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/grass, -/area/station/medical/virology) -"oJr" = ( -/obj/structure/sign/poster/official/terragov/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"oJs" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 8; - id = "cmoshutter"; - name = "CMO Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/cmo) -"oJO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"oJR" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"oKq" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/captain/private) -"oKr" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/tcomms_all, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"oKD" = ( -/obj/machinery/photocopier, -/obj/machinery/requests_console/directional/west{ - department = "Detective"; - name = "Detective Requests Console" - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"oKK" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 6 - }, -/obj/machinery/status_display/ai/directional/west, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"oKL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"oKP" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"oKR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"oKT" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/chair/plastic, -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron, -/area/station/cargo/storage) -"oKY" = ( -/turf/open/floor/grass, -/area/station/hallway/floor4/fore) -"oLk" = ( -/obj/machinery/door/airlock/science{ - name = "Bedroom" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/command/heads_quarters/rd) -"oLn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/obj/structure/table, -/obj/item/storage/belt/utility, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"oLt" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/door/firedoor, -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/north{ - name = "Minikitchen Table"; - req_access = list("bar") - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"oLv" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/miningoffice) -"oLB" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"oLE" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"oLG" = ( -/obj/structure/beebox, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"oLL" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"oMd" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/structure/railing, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"oMm" = ( -/obj/structure/table/reinforced, -/obj/item/food/butter{ - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/drug/space_drugs = 10); - name = "stick of 'medicated' butter"; - pixel_y = 8 - }, -/obj/item/food/butter{ - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/drug/space_drugs = 10); - name = "stick of 'medicated' butter"; - pixel_y = 3 - }, -/obj/item/food/butter{ - food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/drug/space_drugs = 10); - name = "stick of 'medicated' butter"; - pixel_y = -2 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"oMv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"oMz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/directional/west, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/medical/virology) -"oMJ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/arrow_ccw, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"oMP" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"oMV" = ( -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"oMX" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "disposals" - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"oMZ" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/machinery/light/dim/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"oNd" = ( -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/obj/machinery/door/airlock/silver/glass{ - name = "Kitchen" - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"oNf" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"oNn" = ( -/obj/structure/bed/double, -/obj/item/bedsheet/cosmos/double, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"oNI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"oNK" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"oNP" = ( -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor1/fore) -"oNV" = ( -/obj/machinery/shower/directional/west, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"oOa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"oOb" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/ladder, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"oOc" = ( -/obj/effect/turf_decal/bot_white, -/obj/machinery/computer/cargo/request{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/end{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/lobby) -"oOd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"oOg" = ( -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) -"oOi" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/security/medical) -"oOA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"oOE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/grass, -/area/station/science/genetics) -"oOK" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"oON" = ( -/obj/item/storage/medkit/brute{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/medkit/brute, -/obj/item/storage/medkit/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/obj/item/storage/medkit/regular, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/window/right/directional/south{ - name = "First Aid Supplies"; - req_access = list("medical") - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"oOR" = ( -/obj/structure/table/glass, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lower) -"oOW" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"oOY" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/flashlight/flare/candle, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"oPe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/iron/smooth, -/area/station/construction) -"oPg" = ( -/obj/effect/turf_decal/trimline/white/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"oPm" = ( -/obj/effect/landmark/start/prisoner, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"oPA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/security/medical) -"oPC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"oPH" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"oPJ" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tcomms) -"oPM" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"oPU" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/south, -/obj/machinery/status_display/ai/directional/east, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 2; - pixel_y = 4 - }, -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/tile/neutral/full, -/obj/item/stack/sheet/iron/fifty, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"oPX" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"oPY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"oQa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"oQn" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/brig) -"oQu" = ( -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/box, -/obj/machinery/door/poddoor/shutters{ - id = "secmechbay"; - name = "Security Mech Bay Shutters" - }, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"oQv" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/light/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"oQy" = ( -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"oQL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"oQN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"oQO" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"oQS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"oRb" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "fore_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"oRh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ - dir = 4 - }, -/obj/effect/spawner/structure/window/hollow/plasma/middle{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"oRq" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Pen 3"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"oRw" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"oRz" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"oRB" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"oRG" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"oRS" = ( -/obj/machinery/teleport/station, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"oRX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"oRY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"oSb" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"oSg" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"oSi" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"oSj" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/button/door/directional/south{ - id = "mine_bhz_lock"; - name = "Biohazard Lockdown"; - normaldoorcontrol = 1; - pixel_x = -6; - specialfunctions = 4 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, -/area/station/cargo/miningoffice) -"oSt" = ( -/turf/closed/wall, -/area/station/engineering/lobby) -"oSu" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor3/aft) -"oSw" = ( -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"oSx" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"oSz" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"oSA" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"oSL" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"oSQ" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"oSW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/yellow{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"oSZ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"oTc" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"oTg" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"oTo" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/textured_corner{ - dir = 4 - }, -/area/station/hallway/secondary/entry) -"oTq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"oTu" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/rnd_all, -/obj/effect/turf_decal/tile/purple/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"oTx" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"oTA" = ( -/obj/structure/cable/multilayer/connected, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"oTG" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box{ - pixel_x = 4 - }, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_x = -14; - pixel_y = 6 - }, -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"oTK" = ( -/obj/structure/sign/poster/contraband/robust_softdrinks, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"oTQ" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"oTW" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"oTX" = ( -/obj/structure/bed/dogbed{ - name = "pet bed" - }, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"oUl" = ( -/obj/machinery/door/airlock/public{ - name = "Chapel Morgue" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/crematorium, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"oUu" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"oUE" = ( -/obj/machinery/vending/wallmed/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/office) -"oUH" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron, -/area/station/cargo/storage) -"oUW" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"oVa" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"oVg" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/science/robotics/lab) -"oVj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"oVy" = ( -/obj/structure/bed/medical/emergency, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/gym/mirrored/right{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"oVB" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"oVH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"oVP" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"oVY" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"oVZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/departments/medbay/alt/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"oWe" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"oWs" = ( -/obj/item/analyzer{ - pixel_y = 4 - }, -/obj/item/analyzer{ - pixel_y = 4 - }, -/obj/item/pipe_dispenser{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/item/pipe_dispenser{ - pixel_y = -2 - }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted, -/obj/effect/turf_decal/bot, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/neutral/full, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"oWt" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"oWA" = ( -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"oWC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"oWM" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"oWS" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"oWY" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/fore) -"oXa" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/station/service/chapel) -"oXb" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/delivery/white{ - color = "#52B4E9" - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"oXd" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/railing/corner, -/turf/open/space/openspace, -/area/space/nearstation) -"oXp" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"oXE" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron, -/area/station/science/cytology) -"oXN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"oXQ" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"oXV" = ( -/obj/machinery/holopad, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"oXW" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/storage/art) -"oYi" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"oYn" = ( -/obj/machinery/shower/directional/south, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/cargo/miningoffice) -"oYv" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 1 - }, -/turf/open/floor/iron/textured_corner, -/area/station/hallway/secondary/entry) -"oYw" = ( -/obj/machinery/shower/directional/west, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"oYA" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"oYE" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"oYG" = ( -/obj/structure/table/wood, -/obj/effect/landmark/start/hangover, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment1) -"oYI" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"oYL" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"oYT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Astrotelemetry Data Bus" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"oYW" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"oYY" = ( -/obj/structure/closet{ - anchored = 1; - can_be_unanchored = 1; - name = "Cold protection gear" - }, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"oZd" = ( -/obj/machinery/computer/security/telescreen/auxbase/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"oZj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, -/area/station/science/robotics/lab) -"oZk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/obj/machinery/light/cold/directional/north, -/turf/open/misc/asteroid/snow/standard_air, -/area/station/maintenance/floor2/port/aft) -"oZo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"oZp" = ( -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/medical/abandoned) -"oZv" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Science - Experimentor" - }, -/turf/open/floor/engine, -/area/station/science/explab) -"oZx" = ( -/turf/open/openspace, -/area/station/hallway/floor3/fore) -"oZz" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"oZE" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"oZJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"oZV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/smooth_corner, -/area/station/cargo/miningoffice) -"oZW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"oZY" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/decoration/material, -/obj/machinery/light/small/red/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"oZZ" = ( -/obj/machinery/atmospherics/components/tank/air, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"pan" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Storage Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"paA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"pbe" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"pbg" = ( -/obj/machinery/door/airlock{ - id_tag = "dorms_1_bolts"; - name = "Standard Dorm 1" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"pbj" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 9 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"pbk" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/holopad, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/cytology) -"pbm" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"pbt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"pbx" = ( -/obj/effect/landmark/start/prisoner, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"pbF" = ( -/obj/machinery/computer/piratepad_control/civilian, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 6 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/lobby) -"pbG" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"pbJ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/office) -"pbX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"pcf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"pcg" = ( -/obj/structure/rack, -/obj/item/storage/box/lights/tubes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"pch" = ( -/obj/structure/sign/poster/official/moth_hardhat/directional/east, -/obj/structure/rack, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"pcq" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"pcy" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/light/warm/directional/south, -/obj/effect/landmark/start/psychologist, -/obj/structure/chair/sofa/right/brown{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"pcC" = ( -/turf/open/openspace, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"pcO" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"pcR" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"pdd" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/structure/cable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"pdf" = ( -/obj/structure/closet/secure_closet/chief_medical, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"pdh" = ( -/turf/closed/wall/r_wall, -/area/station/science/server) -"pdJ" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"pdK" = ( -/obj/structure/railing, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"pdO" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"pdU" = ( -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"pdW" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/poster/contraband/have_a_puff/directional/north, -/obj/machinery/vending/snack/blue, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"pdY" = ( -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/pdapainter/medbay, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"peg" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"pei" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/sofa/left/brown{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"pen" = ( -/turf/closed/wall, -/area/station/service/abandoned_gambling_den) -"peo" = ( -/obj/effect/spawner/random/vending/colavend, -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"pep" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"per" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"peC" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"pfd" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/optable{ - desc = "A cold, hard place for your final rest."; - name = "Morgue Slab" - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"pfg" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/storage/tech) -"pfi" = ( -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"pfj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/cola/red, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/effect/mapping_helpers/broken_floor, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"pfn" = ( -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"pfC" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"pfL" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_blue, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison/garden) -"pgi" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"pgo" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"pgv" = ( -/obj/machinery/light/floor, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"pgE" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"pgG" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"pgL" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"pgS" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"pgU" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"phd" = ( -/turf/open/misc/sandy_dirt, -/area/station/maintenance/floor3/starboard) -"phj" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"pht" = ( -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"phI" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"phL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos) -"phU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"pie" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"pii" = ( -/turf/open/floor/iron/dark, -/area/station/security/range) -"pik" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"pim" = ( -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/abandoned) -"piq" = ( -/obj/machinery/holopad, -/obj/effect/landmark/start/mime, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"piw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/end, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"pix" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"piz" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Virology Desk"; - req_access = list("virology") - }, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Virology Desk" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "viro-inner"; - name = "Virology Inner Shutters" - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"piA" = ( -/obj/machinery/modular_computer/preset/curator{ - dir = 4 - }, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"piG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) -"piI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"piO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"piR" = ( -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"piT" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/storage/tech) -"pjf" = ( -/turf/open/floor/light/colour_cycle/dancefloor_a, -/area/station/maintenance/floor2/port/fore) -"pjh" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"pjs" = ( -/obj/machinery/vending/hydronutrients, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"pjw" = ( -/obj/machinery/netpod, -/obj/effect/decal/cleanable/vomit/old{ - pixel_x = -12; - pixel_y = -13 - }, -/obj/item/radio/intercom/directional/north, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"pjB" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"pjD" = ( -/obj/structure/table, -/obj/item/dest_tagger{ - pixel_x = 7; - pixel_y = 5 - }, -/turf/open/floor/pod/light, -/area/station/cargo/sorting) -"pjM" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/execution/transfer) -"pjU" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"pjW" = ( -/obj/structure/bed, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"pjX" = ( -/obj/structure/ladder, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"pjZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"pka" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/hallway/secondary/entry) -"pke" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"pkm" = ( -/obj/structure/rack, -/obj/item/toy/crayon/spraycan{ - pixel_x = 4 - }, -/obj/item/toy/crayon/spraycan, -/obj/item/toy/crayon/spraycan{ - pixel_x = -4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"pkr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"pkH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/stripes, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"pkR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/entry) -"pkT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/work) -"pld" = ( -/obj/structure/chair/comfy, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"plf" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/bronze, -/area/station/maintenance/floor1/starboard) -"pll" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/courtroom) -"plz" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"plC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"plI" = ( -/obj/structure/table, -/obj/item/food/pizzaslice/moldy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"plO" = ( -/obj/machinery/icecream_vat, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"plX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/toilet) -"pmd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"pme" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/head/costume/allies, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"pmn" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"pmo" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"pmw" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/holopad, -/turf/open/floor/wood/tile, -/area/station/service/library) -"pmA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"pmB" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"pmC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/shower) -"pmD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"pmO" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"pmS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"pmX" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Treatment Center" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/office) -"pnc" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"pnf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"pnk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"pnm" = ( -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"pno" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"pnr" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"pnw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/security/range) -"pnF" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/warning, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"pnJ" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/security_officer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"pnK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"pnV" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 4; - initialize_directions = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"pog" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"pov" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/grass, -/area/station/science/cytology) -"poD" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"poE" = ( -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"poL" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/machinery/camera/directional/west, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/landmark/start/assistant, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"poR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/yellow/end{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"poY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "visitation"; - name = "Visitation Shutters" - }, -/turf/open/floor/plating, -/area/station/security/prison/visit) -"ppd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"ppe" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"ppf" = ( -/obj/effect/turf_decal/weather/sand/light, -/turf/closed/wall/r_wall, -/area/station/security/execution/education) -"ppi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"ppo" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"ppr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"pps" = ( -/obj/machinery/light/cold/no_nightlight/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"ppN" = ( -/obj/machinery/door/airlock/engineering{ - name = "Tech Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/tech_storage, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"ppO" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"ppQ" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Holodeck - Aft"; - name = "holodeck camera" - }, -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" - }, -/area/station/holodeck/rec_center) -"ppT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"ppX" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"ppZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/port) -"pqd" = ( -/obj/structure/rack, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/science/circuits) -"pqe" = ( -/obj/effect/turf_decal/siding/white, -/obj/item/kirbyplants/random/fullysynthetic, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"pqg" = ( -/obj/machinery/button/door/directional/east{ - id = "mechbay"; - name = "Mech Bay Shutters Control"; - req_access = list("robotics") - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"pqn" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 10 - }, -/obj/structure/reagent_dispensers/plumbed{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"pqo" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"pqt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/love_ian/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"pqy" = ( -/obj/machinery/camera{ - c_tag = "Power Storage"; - dir = 1; - network = list("ss13","engine") - }, -/obj/structure/cable, -/obj/machinery/power/smes/engineering, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) -"pqz" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"pqB" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"pqH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north{ - areastring = "/area/station/science/ordnance/burnchamber" - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"pqO" = ( -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"pqP" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"pqY" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/gibs/bubblegum, -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/item/clothing/suit/toggle/labcoat, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"prd" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"pre" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/fore) -"pri" = ( -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/obj/item/stack/rods{ - amount = 3 - }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/dirt/jungle, -/area/station/service/hydroponics/garden/abandoned) -"pro" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"prt" = ( -/obj/machinery/door/airlock/mining{ - name = "Warehouse" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"prw" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/cargo/lobby) -"prD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"prQ" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Theater" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"prS" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"prZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"psa" = ( -/obj/structure/table/wood, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"psc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"pse" = ( -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/office) -"psh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"psn" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor2/fore) -"psq" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"psF" = ( -/obj/structure/chair/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"psJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"psK" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/vending/coffee, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"ptc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/shard, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"ptd" = ( -/obj/effect/turf_decal/trimline/yellow/corner, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"ptg" = ( -/obj/structure/sign/departments/security/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"ptl" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 4 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"ptu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"ptD" = ( -/obj/machinery/vending/dinnerware, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"ptL" = ( -/obj/machinery/recharge_station, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"ptW" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"pui" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"pum" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/flashlight, -/obj/structure/rack, -/obj/machinery/light/red/dim/directional/west, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"puw" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"pux" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"puB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-17"; - location = "2-16" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"puG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lower) -"puH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"puI" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"puM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"puQ" = ( -/obj/machinery/recharger, -/obj/structure/table/reinforced, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"puY" = ( -/obj/structure/rack, -/obj/item/stack/package_wrap{ - pixel_x = 6 - }, -/obj/item/stack/package_wrap{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/hand_labeler, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"pvm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/pill/iron{ - desc = "What could it be?"; - name = "blue pill" - }, -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) -"pvs" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"pvw" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"pvx" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/aft) -"pvD" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"pvE" = ( -/obj/structure/lattice/catwalk, -/turf/open/openspace, -/area/station/maintenance/floor3/port/aft) -"pvF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/station/commons/storage/primary) -"pvO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"pvX" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"pvZ" = ( -/obj/structure/chair/sofa/bench/left, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"pwf" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"pwv" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"pwA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"pwC" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) -"pwF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"pwH" = ( -/obj/structure/railing/corner, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"pwI" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"pwL" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"pwS" = ( -/obj/machinery/suit_storage_unit/cmo, -/obj/effect/turf_decal/trimline/blue/filled/end{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"pwY" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"pxb" = ( -/obj/machinery/grill, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"pxh" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"pxk" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"pxt" = ( -/obj/item/restraints/handcuffs, -/obj/structure/table/optable, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"pxu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"pxw" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/robot_debris/down, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"pxy" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark{ - dir = 1 - }, -/obj/structure/table/wood/fancy/red, -/obj/machinery/light/small/blacklight/directional/east, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/iron, -/area/station/maintenance/floor4/port/fore) -"pxC" = ( -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"pxF" = ( -/obj/structure/chair/pew{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"pxK" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"pxL" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 9 - }, -/obj/structure/railing/corner/end/flip{ - dir = 1 - }, -/obj/machinery/light/cold/no_nightlight/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"pxQ" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/turf/open/space/basic, -/area/space/nearstation) -"pxX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"pxY" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"pxZ" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pye" = ( -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"pyg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor3/fore) -"pyt" = ( -/obj/effect/spawner/random/structure/table_fancy, -/obj/machinery/door/window/brigdoor/right/directional/north{ - req_access = list("library") - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"pyE" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"pyL" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"pyO" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"pyQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/brig) -"pyR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-11"; - location = "1-10" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"pyS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"pyU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/start/mime, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"pyW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"pzb" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"pzd" = ( -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"pze" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"pzi" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"pzu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/morgue{ - name = "Private Study" - }, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"pzx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/port) -"pzE" = ( -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/plating, -/area/station/construction) -"pzK" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"pzT" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/fore) -"pzU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"pzV" = ( -/obj/structure/mirror/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/sink/directional/east, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"pzY" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/structure/table_frame, -/obj/item/stack/sheet/iron, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"pAb" = ( -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"pAk" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"pAn" = ( -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/obj/machinery/door/airlock/medical{ - name = "Operation Center" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"pAy" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/snow/style_random, -/turf/open/misc/snow/actually_safe{ - icon_state = "snow7" - }, -/area/station/hallway/floor2/fore) -"pAH" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/misc/dirt/jungle, -/area/station/service/hydroponics/garden/abandoned) -"pAK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"pAL" = ( -/obj/machinery/light_switch/directional/east, -/obj/machinery/space_heater, -/obj/effect/turf_decal/bot, -/obj/machinery/camera{ - c_tag = "Atmospherics Office Cam #1"; - dir = 6; - network = list("ss13","engine") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"pAN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"pAV" = ( -/obj/structure/flora/rock/pile/style_2, -/obj/machinery/duct, -/turf/open/misc/sandy_dirt, -/area/station/science/cytology) -"pAY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/stairs{ - dir = 4 - }, -/area/station/service/bar/atrium) -"pBg" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"pBv" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"pBJ" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-7"; - location = "1-6" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"pBQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"pBS" = ( -/obj/machinery/deepfryer, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pBV" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/bridge) -"pBW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "library2" - }, -/obj/machinery/door/airlock/public/glass{ - name = "Lower Library" - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"pBZ" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"pCb" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/white/corner, -/obj/effect/turf_decal/trimline/white/line{ - dir = 9 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"pCc" = ( -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"pCf" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"pCg" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"pCr" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/structure/window/reinforced/tinted/spawner/directional/east, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/spawner/random/bureaucracy, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"pCv" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 1 - }, -/turf/open/floor/carpet/purple, -/area/station/maintenance/floor1/port/aft) -"pCC" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"pCG" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/trimline/white/warning, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"pCH" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"pCS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"pCU" = ( -/obj/structure/table/reinforced/rglass, -/obj/item/stack/sheet/mineral/plasma, -/obj/structure/reagent_dispensers/wall/virusfood/directional/east, -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"pDd" = ( -/obj/structure/table/reinforced/plasmarglass, -/obj/item/reagent_containers/pill/epinephrine{ - desc = "What could it be?"; - name = "red pill" - }, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) -"pDq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"pDv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"pDx" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"pDK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"pDL" = ( -/obj/structure/closet/secure_closet/personal, -/obj/item/clothing/under/misc/assistantformal, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/shoes/winterboots, -/obj/machinery/bluespace_vendor/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/locker) -"pDQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"pDS" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"pDX" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"pEp" = ( -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"pEq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/meter, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"pEs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"pEu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"pEv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"pEx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/hop) -"pEz" = ( -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/light/directional/east, -/turf/open/floor/grass, -/area/station/security/courtroom) -"pEA" = ( -/obj/machinery/door/airlock/medical{ - name = "Patient Containment" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"pEE" = ( -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/holopad, -/obj/machinery/light/small/directional/north, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"pEJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"pEO" = ( -/obj/effect/turf_decal/trimline/blue/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"pEQ" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"pEY" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high/empty, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"pEZ" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/box, -/obj/machinery/camera{ - c_tag = "Atmospherics Office Cam #2"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/office) -"pFb" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) -"pFy" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"pFA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"pFI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/trashcart, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"pFT" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/quantumpad, -/turf/open/floor/iron/smooth, -/area/station/science/robotics/mechbay) -"pFW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"pGb" = ( -/obj/structure/table/glass, -/obj/item/camera_film{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/camera, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"pGf" = ( -/obj/structure/curtain/cloth/fancy, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/obj/machinery/door/airlock/silver{ - name = "Kitchen Backdoor" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/station/service/kitchen/diner) -"pGr" = ( -/obj/structure/rack, -/obj/item/storage/box/lights/mixed, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"pGs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"pGy" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Briefing Room" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"pGz" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"pGG" = ( -/obj/structure/ladder, -/obj/structure/lattice/catwalk, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"pGR" = ( -/obj/effect/spawner/random/engineering/canister, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 5 - }, -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"pGS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"pGW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"pHc" = ( -/obj/structure/filingcabinet/employment, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/teleporter) -"pHe" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"pHf" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/green, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"pHu" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"pHD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"pHI" = ( -/obj/effect/landmark/blobstart, -/obj/structure/railing, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"pHL" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"pHQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"pHT" = ( -/obj/structure/table/wood, -/obj/item/paper/fluff/gateway, -/obj/item/melee/chainofcommand, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"pHU" = ( -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/obj/machinery/door/airlock/silver/glass{ - name = "Kitchen Backdoor" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pIf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"pIj" = ( -/obj/structure/sink/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"pIm" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"pIq" = ( -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"pIu" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"pIv" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"pIG" = ( -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"pIH" = ( -/obj/structure/chair/sofa/left/brown{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"pIS" = ( -/obj/machinery/requests_console/directional/east{ - department = "Captain's Desk"; - name = "Captain's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"pIT" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"pIZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"pJb" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"pJd" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/execution/education) -"pJf" = ( -/turf/open/floor/grass/fairy, -/area/station/maintenance/floor2/port/fore) -"pJg" = ( -/obj/structure/railing, -/obj/item/chair, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"pJj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/window/brigdoor/right/directional/west{ - name = "Shooting Range" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/range) -"pJq" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"pJs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"pJu" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/cobweb, -/obj/item/trash/ready_donk, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"pJv" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"pJz" = ( -/obj/structure/table, -/obj/item/reagent_containers/syringe, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"pJA" = ( -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"pJC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) -"pJG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"pJH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"pJO" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"pJV" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"pKc" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Antechamber" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"pKd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"pKg" = ( -/obj/structure/water_source/puddle, -/obj/structure/flora/bush/reed/style_3{ - pixel_y = 7 - }, -/turf/open/floor/grass, -/area/station/service/library/garden) -"pKp" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"pKA" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/genetics) -"pKD" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"pKE" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pKO" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/corner, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"pLe" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"pLy" = ( -/obj/effect/spawner/random/trash/cigbutt, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"pLI" = ( -/obj/structure/railing/corner/end{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"pLJ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/machinery/rnd/production/protolathe/department/engineering, -/obj/structure/cable, -/obj/machinery/newscaster/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/lobby) -"pLK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"pLO" = ( -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"pLQ" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/airalarm/directional/west, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"pLY" = ( -/obj/machinery/vending/cola/pwr_game, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"pMe" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "roboprivacy"; - name = "Robotics Shutters" - }, -/turf/open/floor/plating, -/area/station/science/robotics/lab) -"pMf" = ( -/obj/structure/closet/secure_closet/medical2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"pMo" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"pMq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"pMu" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"pMx" = ( -/obj/item/ammo_casing/shotgun/beanbag, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"pMy" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"pME" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"pMI" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"pMK" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"pMR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/corner, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"pMW" = ( -/obj/effect/turf_decal/trimline/purple/corner, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/railing/corner/end/flip, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"pMZ" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"pNa" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/scientist, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"pNb" = ( -/obj/machinery/telecomms/processor/preset_three, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"pNc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/north, -/obj/effect/turf_decal/trimline/green/end, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"pNe" = ( -/obj/structure/chair/plastic, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"pNj" = ( -/turf/open/floor/carpet/red, -/area/station/service/library) -"pNs" = ( -/obj/effect/spawner/structure/window/hollow/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"pNA" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/fore) -"pNH" = ( -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"pNI" = ( -/obj/machinery/power/floodlight{ - anchored = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"pNK" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"pNM" = ( -/obj/machinery/door/airlock/silver{ - name = "Bathroom" - }, -/obj/machinery/duct, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"pNN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"pNV" = ( -/obj/machinery/power/shuttle_engine/large{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"pNW" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"pOi" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"pOk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"pOn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"pOv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"pOG" = ( -/turf/closed/wall/r_wall, -/area/station/security/eva) -"pOH" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/suit/apron/overalls, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"pOK" = ( -/obj/machinery/cryo_cell{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"pOQ" = ( -/obj/effect/turf_decal/caution/white{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"pOU" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Research and Development" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"pOY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"pOZ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/sink/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"pPe" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"pPf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"pPh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"pPr" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"pPx" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "aft_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"pPC" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"pPG" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"pPI" = ( -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"pPJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"pPP" = ( -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/iron/smooth, -/area/station/construction) -"pPQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"pPY" = ( -/obj/machinery/light/red/dim/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"pPZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"pQk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"pQm" = ( -/obj/structure/closet{ - name = "Evidence Closet 1" - }, -/obj/item/paperplane, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"pQG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/neutral/end, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"pQH" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"pQP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"pQW" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"pQZ" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"pRa" = ( -/obj/effect/mapping_helpers/airlock/access/all/medical/pharmacy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/medical/glass{ - name = "Pharmacy" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"pRk" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit) -"pRl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"pRq" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"pRs" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/openspace, -/area/space/nearstation) -"pRD" = ( -/obj/machinery/shower/directional/north, -/obj/effect/turf_decal/trimline/green/end{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"pRG" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"pRN" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/item/knife/shiv, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"pRS" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"pRU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"pRY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth, -/area/station/construction) -"pSd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"pSl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"pSn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"pSp" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"pSz" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/status_display/ai/directional/south, -/obj/machinery/photocopier, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"pSE" = ( -/obj/effect/turf_decal/trimline/yellow/corner, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"pSI" = ( -/obj/machinery/button/ignition/incinerator/ordmix{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/machinery/button/door/incinerator_vent_ordmix{ - pixel_x = -8; - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/mixingchamber_access, -/obj/effect/mapping_helpers/airalarm/link{ - chamber_id = "ordnanceburn" - }, -/obj/effect/mapping_helpers/airalarm/tlv_no_checks, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"pSV" = ( -/obj/machinery/griddle, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"pTI" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"pTP" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"pTR" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"pUa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/door/airlock/silver{ - name = "Bathroom" - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"pUe" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"pUl" = ( -/obj/effect/turf_decal/trimline/brown/line, -/obj/machinery/air_sensor/mix_tank, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"pUn" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/ai_monitored/command/storage/eva) -"pUp" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"pUq" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"pUr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"pUB" = ( -/obj/machinery/power/smes/super/full, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"pUC" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"pUD" = ( -/obj/machinery/button/elevator/directional/west{ - id = "fore_vator" - }, -/obj/effect/turf_decal/trimline/green/warning, -/obj/machinery/lift_indicator/directional/west{ - linked_elevator_id = "fore_vator"; - pixel_y = -4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"pUH" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"pUI" = ( -/obj/structure/chair/comfy, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"pUK" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"pUV" = ( -/turf/open/floor/plating/airless, -/area/station/solars/port/aft) -"pUY" = ( -/obj/machinery/quantum_server, -/obj/effect/turf_decal/bot/left, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, -/area/station/cargo/bitrunning/den) -"pVd" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/machinery/vending/coffee, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"pVe" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "mailbelt" - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"pVi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"pVj" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"pVk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"pVr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"pVD" = ( -/obj/structure/chair/sofa/bench, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"pVK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"pVP" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/medbay/central) -"pVZ" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/half, -/area/station/engineering/lobby) -"pWa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"pWf" = ( -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics/garden) -"pWj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"pWr" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"pWA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"pWD" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/item/beacon, -/obj/effect/landmark/navigate_destination/teleporter, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"pWF" = ( -/obj/structure/table, -/obj/item/stack/package_wrap, -/obj/item/stack/package_wrap{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"pWH" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/plasma_input, -/obj/effect/turf_decal/trimline/purple/line, -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"pWQ" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"pXg" = ( -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/machinery/door/airlock/hatch{ - name = "Science Maintenance" - }, -/turf/open/floor/plating, -/area/station/science/cytology) -"pXh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"pXr" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating/airless, -/area/station/solars/port/aft) -"pXG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"pXL" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/dark_blue/filled/corner, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/floor3/aft) -"pXR" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"pXT" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/fore) -"pXU" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Genetics Lab" - }, -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/landmark/start/cook, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"pYf" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"pYg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/port) -"pYj" = ( -/obj/machinery/computer/apc_control, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"pYl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"pYs" = ( -/obj/machinery/computer/atmos_control/nocontrol/master{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"pYw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"pYC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 10 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"pYK" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"pYS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/bot, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"pYU" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/item/kirbyplants/random, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"pZc" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"pZi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Quarters" - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"pZm" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"pZp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/command/bridge) -"pZt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/newscaster/directional/south, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/rag, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"pZB" = ( -/obj/structure/urinal/directional/north, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"pZD" = ( -/obj/effect/decal/cleanable/food/salt, -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/prison) -"pZE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"pZH" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"pZK" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"pZL" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"pZU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"pZV" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"pZW" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/second) -"pZZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"qac" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"qah" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"qaj" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-6"; - location = "1-5" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"qao" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden) -"qas" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/structure/railing/corner/end/flip{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"qat" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"qaE" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/cargo/sorting) -"qaJ" = ( -/obj/machinery/camera/directional/east{ - c_tag = "Security - Cell" - }, -/obj/structure/sign/poster/official/random/directional/east, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"qaS" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"qaV" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"qaW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/auxlab) -"qaY" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"qbh" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/aicard, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"qbl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"qbo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/supermatter/room) -"qbr" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"qbt" = ( -/obj/effect/turf_decal/caution/stand_clear{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"qbw" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"qbz" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/commons/vacant_room/commissary) -"qbG" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"qcd" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"qcj" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 6 - }, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"qck" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"qcp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"qcr" = ( -/obj/structure/fake_stairs/directional/south, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"qct" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"qcA" = ( -/obj/machinery/requests_console/directional/south{ - department = "Bar"; - name = "Bar Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/bar) -"qcD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron/smooth, -/area/station/construction) -"qcH" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"qcI" = ( -/obj/structure/bed/medical/anchored{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"qcP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/weather/dirt{ - dir = 4 - }, -/obj/machinery/hydroponics/constructable{ - anchored = 0 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"qcQ" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"qcR" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"qcS" = ( -/obj/structure/chair/stool/bamboo, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/office) -"qcW" = ( -/obj/machinery/computer/shuttle/mining{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"qcX" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"qcY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/yellow/visible{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"qcZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"qdc" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Research and Development" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"qdm" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"qdz" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 9; - pixel_y = 4 - }, -/obj/item/radio{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/machinery/recharger{ - pixel_y = 3 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"qdB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"qdC" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"qdD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"qdF" = ( -/obj/machinery/bluespace_vendor/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"qdS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"qdV" = ( -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"qdW" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"qdX" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"qdY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"qea" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-0"; - location = "3-19" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"qeb" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"qef" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"qek" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark, -/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/carbon_input, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"qem" = ( -/obj/machinery/door/airlock/wood{ - name = "Bedroom" - }, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"qeu" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/chair/sofa/middle/brown{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"qey" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"qez" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"qeA" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"qeW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"qeX" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"qeY" = ( -/obj/machinery/door/airlock/wood{ - id_tag = "library-private"; - name = "Private Reading Room" - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"qff" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/eighties, -/area/station/commons/dorms/room2) -"qfg" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"qfk" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"qfm" = ( -/obj/machinery/newscaster/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"qfn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"qfr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"qfv" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"qfz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"qfE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 9 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"qfG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"qfK" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"qfR" = ( -/obj/machinery/door/airlock/security{ - name = "High Security" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"qfT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/medical/abandoned) -"qfV" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"qgb" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/hand_labeler, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"qgh" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/painting/library{ - pixel_y = 32 - }, -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"qgr" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"qgw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/nuke, -/turf/open/floor/pod/light, -/area/station/security/execution/education) -"qgE" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"qgQ" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"qgT" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold, -/turf/open/space/basic, -/area/space/nearstation) -"qgU" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"qgV" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"qhp" = ( -/obj/machinery/camera/directional/east{ - c_tag = "MiniSAT Access Staircase" - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"qhC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/photocopier, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"qhE" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/misc/asteroid/snow/standard_air{ - icon_state = "snow12" - }, -/area/station/maintenance/floor2/port/aft) -"qhH" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"qhN" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/aft) -"qhP" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/landmark/start/chemist, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"qhQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"qia" = ( -/obj/structure/railing, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"qiw" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/sign/poster/official/moth_meth/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"qiy" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/departure_lounge) -"qiF" = ( -/obj/item/bedsheet/cmo/double, -/obj/structure/bed/double, -/obj/effect/landmark/start/chief_medical_officer, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/cmo) -"qiJ" = ( -/obj/machinery/vending/games, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"qiR" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/effect/spawner/random/contraband/landmine, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"qiU" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"qjj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/construction, -/turf/open/floor/iron/dark/textured_large, -/area/station/maintenance/floor1/port/aft) -"qjn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"qjq" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"qjr" = ( -/turf/closed/wall/r_wall, -/area/station/security/range) -"qjs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"qju" = ( -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"qjK" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/structure/sign/departments/restroom/directional/west, -/turf/open/openspace, -/area/station/hallway/floor3/aft) -"qkr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"qku" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"qkx" = ( -/obj/machinery/newscaster/directional/east, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron/white, -/area/station/cargo/miningdock) -"qkz" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"qkI" = ( -/obj/machinery/camera/directional/east{ - c_tag = "MiniSAT Access" - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"qkL" = ( -/turf/closed/wall, -/area/station/tcommsat/server) -"qkO" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrogen_input, -/obj/effect/turf_decal/trimline/red/line, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"qkP" = ( -/obj/structure/table, -/obj/item/electropack, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"qkS" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/shower) -"qkU" = ( -/obj/structure/filingcabinet/medical, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/command/teleporter) -"qkZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"qlb" = ( -/obj/structure/mirror/directional/north, -/obj/structure/sink/directional/south, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"qle" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/prison) -"qlf" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"qlh" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"qlo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"qlp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"qlq" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"qlt" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"qly" = ( -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"qmb" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"qmf" = ( -/obj/machinery/vending/security, -/obj/machinery/light/directional/west, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"qmg" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"qmj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"qmu" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"qmC" = ( -/obj/effect/decal/cleanable/confetti, -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"qmG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"qmM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"qmN" = ( -/obj/structure/bed, -/obj/effect/spawner/random/bedsheet/any, -/turf/open/floor/wood, -/area/station/medical/psychology) -"qnc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"qno" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"qnq" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"qnu" = ( -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor2/fore) -"qnv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"qnw" = ( -/obj/structure/table, -/obj/structure/fluff/beach_umbrella{ - pixel_x = -5; - pixel_y = 15 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"qnx" = ( -/obj/machinery/computer/station_alert{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"qnB" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"qnI" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/item/stack/sheet/iron/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"qnN" = ( -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"qnO" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/modular_computer/preset/cargochat/service{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"qnS" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"qoa" = ( -/obj/item/radio/intercom/directional/west, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"qob" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/siding/yellow{ - dir = 8; - pixel_x = 15 - }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"qoq" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"qos" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/engine/atmos) -"qot" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"qov" = ( -/obj/structure/chair/comfy, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"qox" = ( -/turf/open/openspace, -/area/station/maintenance/floor4/starboard/fore) -"qoC" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"qoF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/commons/storage/primary) -"qoG" = ( -/obj/machinery/field/generator, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"qoI" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/machinery/keycard_auth/wall_mounted/directional/north, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"qoJ" = ( -/obj/machinery/telecomms/processor/preset_two, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"qoV" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"qoW" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"qpa" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin/carbon{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/machinery/camera/directional/north, -/obj/machinery/requests_console/directional/north{ - department = "Security"; - name = "Security Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"qpb" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/foamedmetal, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"qpp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) -"qpt" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"qpx" = ( -/obj/machinery/airlock_sensor/incinerator_atmos{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"qpH" = ( -/obj/structure/foamedmetal, -/obj/structure/grille, -/obj/effect/decal/cleanable/molten_object/large{ - desc = "The pile looks inert, yet you still hear a faint hum. Standing around this makes you feel funny."; - name = "glob of mess" - }, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"qqf" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/pump, -/obj/structure/railing, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/floor1/aft) -"qqp" = ( -/obj/structure/toilet/greyscale{ - dir = 4 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"qqu" = ( -/obj/machinery/light/broken/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"qqv" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"qqE" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"qqY" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"qrd" = ( -/turf/closed/wall, -/area/station/maintenance/floor3/starboard) -"qrf" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/effect/turf_decal/bot, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"qrg" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/item/bodypart/chest/mushroom, -/obj/item/surgical_drapes, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"qrt" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark{ - dir = 4 - }, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"qrx" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/circuit, -/area/station/science/cytology) -"qry" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"qrK" = ( -/obj/effect/turf_decal/trimline/blue/warning, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/lift_indicator/directional/east{ - linked_elevator_id = "aft_vator"; - pixel_y = -4 - }, -/obj/machinery/button/elevator/directional/east{ - id = "aft_vator" - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"qrN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"qrZ" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/effect/turf_decal/tile/green/full, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 8 - }, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/storage/box/lights/mixed{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/storage/box/lights/mixed{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/service/janitor) -"qse" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"qsh" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/turf/open/floor/pod, -/area/station/hallway/secondary/entry) -"qsj" = ( -/obj/structure/bed/medical/anchored{ - dir = 1 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qsy" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/commons/storage/primary) -"qsD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"qsF" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"qsH" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"qsL" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"qsP" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/corner, -/area/station/command/teleporter) -"qsR" = ( -/obj/effect/turf_decal/tile/blue/full, -/obj/machinery/power/floodlight, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/textured_large, -/area/station/medical/abandoned) -"qsW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"qtf" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/fore) -"qtj" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/spawner/random/structure/crate_abandoned, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"qtm" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"qtp" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"qtw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"qty" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "chem-lock-a"; - name = "Chemistry Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"qtz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"qtA" = ( -/obj/structure/railing/corner, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"qtH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/filingcabinet/chestdrawer{ - name = "bathroom cabinet" - }, -/obj/item/storage/pill_bottle/mining, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"qtM" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"qtO" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"qtQ" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"qtS" = ( -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"qtV" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"qtW" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/disposal/delivery_chute{ - dir = 8; - name = "Space Chute" - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/sign/warning/vacuum/external/directional/south{ - name = "WARNING: CHUTE LEADS DIRECTLY TO SPACE" - }, -/obj/machinery/light/small/directional/east, -/obj/structure/sign/warning/deathsposal/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"qun" = ( -/turf/closed/wall/r_wall, -/area/station/science/genetics) -"quA" = ( -/obj/structure/railing/corner, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/tile, -/area/station/service/library) -"quB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"quC" = ( -/obj/machinery/door/airlock/medical{ - name = "Operating Room B" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/surgery, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"quE" = ( -/obj/structure/closet/crate/bin{ - name = "biowaste bin" - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"quO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"quV" = ( -/obj/effect/turf_decal/trimline/white/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"quW" = ( -/obj/machinery/button/ignition{ - id = "Xenobio"; - pixel_x = -4; - pixel_y = 24 - }, -/obj/machinery/button/door/directional/north{ - id = "Xenolab"; - name = "Test Chamber Blast Doors"; - pixel_x = 6; - req_access = list("xenobiology") - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"qvc" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/item/stack/arcadeticket, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"qvi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"qvk" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"qvl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"qvn" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"qvv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"qvw" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/textured_half, -/area/station/hallway/secondary/entry) -"qvy" = ( -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"qvA" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/commons/storage/primary) -"qvE" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/textured_corner{ - dir = 8 - }, -/area/station/medical/chemistry) -"qvM" = ( -/obj/structure/table, -/obj/item/dest_tagger{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/folder/yellow, -/obj/item/folder/yellow, -/obj/item/folder/yellow, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"qvN" = ( -/turf/closed/wall/r_wall, -/area/station/medical/treatment_center) -"qwc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"qwg" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"qwj" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"qwu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"qww" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"qwy" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"qwA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"qwC" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-7"; - location = "3-6" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"qwI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/fireaxecabinet/directional/north, -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/engineering/atmos/office) -"qwK" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) -"qwS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos/pumproom) -"qxb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"qxd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"qxh" = ( -/turf/closed/wall/r_wall, -/area/station/science/lower) -"qxr" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"qxy" = ( -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"qxz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"qxE" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/service/library/private) -"qxI" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"qxJ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"qxN" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/oil/streak, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) -"qxQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"qxT" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"qxW" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"qxY" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"qxZ" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/computer/crew, -/turf/open/floor/iron/white, -/area/station/security/medical) -"qyk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"qyo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"qyx" = ( -/turf/open/floor/engine, -/area/station/science/explab) -"qyB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/tcommsat/computer) -"qyD" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"qyE" = ( -/obj/structure/table/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/full, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"qyF" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"qyH" = ( -/obj/machinery/atmospherics/components/binary/pump/off/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"qyJ" = ( -/obj/effect/turf_decal/tile/blue, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/textured_corner, -/area/station/medical/chemistry) -"qyN" = ( -/obj/machinery/atmospherics/components/trinary/filter/critical{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"qyO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/security/prison) -"qyP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/closet/secure_closet/quartermaster, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet/orange, -/area/station/command/heads_quarters/qm) -"qza" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"qzc" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock{ - name = "Escape Pod B" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/escape_pod) -"qzg" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/construction) -"qzh" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/south, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"qzm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_corner, -/area/station/cargo/miningdock) -"qzo" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"qzx" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"qzy" = ( -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"qzE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"qzH" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/courtroom) -"qzK" = ( -/obj/structure/chair/comfy{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"qzQ" = ( -/obj/machinery/newscaster/directional/north, -/obj/structure/water_source/puddle, -/turf/open/misc/dirt/jungle, -/area/station/security/prison/garden) -"qzX" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/machinery/door/airlock/hatch{ - name = "Oxygen Recycling" - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard) -"qAa" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Pen 2"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"qAd" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"qAh" = ( -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"qAk" = ( -/obj/effect/turf_decal/trimline/red/corner, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"qAq" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/hedge, -/obj/machinery/camera/directional/north{ - c_tag = "Science - Break Room" - }, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"qAv" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/fore) -"qAw" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/trimline/red/line{ - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"qAx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"qAF" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"qAG" = ( -/turf/closed/wall, -/area/station/science/lobby) -"qAI" = ( -/obj/structure/chair/comfy, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"qAJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/effect/landmark/navigate_destination/minisat_access_ai, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"qAK" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"qAM" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"qAO" = ( -/turf/closed/wall, -/area/station/commons/storage/tools) -"qAS" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"qAU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"qAY" = ( -/obj/structure/chair/sofa/corp, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment1) -"qBf" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"qBg" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"qBk" = ( -/obj/structure/bed, -/obj/effect/spawner/random/bedsheet, -/turf/open/floor/carpet/black, -/area/station/hallway/secondary/service) -"qBm" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"qBv" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 6 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"qBx" = ( -/turf/closed/wall, -/area/station/service/hydroponics) -"qBJ" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/port) -"qBP" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"qBW" = ( -/obj/structure/table, -/obj/item/ai_module/reset, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/item/radio/intercom/directional/south, -/obj/effect/spawner/random/aimodule/harmless{ - pixel_x = -15 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"qCa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"qCo" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"qCp" = ( -/obj/structure/transport/linear/public, -/obj/machinery/elevator_control_panel/directional/west{ - linked_elevator_id = "fore_vator"; - pixel_x = -24; - preset_destination_names = list("2" = "Supply-Engi Floor", "3" = "Med-Sci Floor", "4" = "Service Floor") - }, -/obj/machinery/lift_indicator/directional/west{ - linked_elevator_id = "fore_vator"; - pixel_x = -38; - pixel_y = -7 - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/fore) -"qCr" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/turf_decal/trimline/red/line{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"qCs" = ( -/obj/structure/grille, -/turf/open/openspace, -/area/station/security/brig) -"qCt" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"qCv" = ( -/obj/effect/spawner/structure/window/hollow/directional, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"qCx" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/departure_lounge) -"qCy" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-16"; - location = "3-15" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"qCH" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor4/aft) -"qCO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"qCZ" = ( -/obj/structure/table/reinforced, -/obj/item/surgical_drapes{ - pixel_x = -4; - pixel_y = -2 - }, -/obj/item/scalpel{ - pixel_y = 16 - }, -/obj/item/hemostat{ - pixel_x = 9 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"qDa" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 1 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"qDt" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"qDu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/tile/bar/half, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/service/bar/atrium) -"qDv" = ( -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/storage/primary) -"qDD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"qDH" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"qDI" = ( -/obj/effect/turf_decal/siding/wideplating_new/end{ - dir = 8 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"qDM" = ( -/obj/machinery/shuttle_manipulator{ - desc = "It's displaying various schematics and maps of the ship."; - name = "Holographic Display" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"qDN" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "engimain" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"qDS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"qEb" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"qEe" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/misc/asteroid/snow/standard_air, -/area/station/maintenance/floor2/port/aft) -"qEh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"qEi" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"qEt" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/courtroom) -"qEw" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"qEy" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"qEB" = ( -/obj/effect/turf_decal/trimline/green/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/railing/corner/end, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"qEE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"qEG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"qEH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"qFa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"qFi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"qFr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"qFu" = ( -/obj/machinery/door/airlock/public{ - name = "Funeral Hall" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/crematorium, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"qFv" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/structure/barricade/wooden/crude, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"qFz" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"qFA" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"qFC" = ( -/obj/machinery/door/airlock/medical{ - name = "Psych" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"qFI" = ( -/turf/closed/wall, -/area/station/security/medical) -"qFL" = ( -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"qFM" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/turf_decal/tile/green/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"qFO" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/general, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"qFX" = ( -/obj/structure/cable, -/obj/structure/firelock_frame/heavy, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"qGa" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"qGb" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "chem-lock-a"; - name = "Chemistry Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) -"qGf" = ( -/obj/machinery/door/poddoor/shutters{ - id = "survhang"; - name = "Ancient Hangars" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"qGk" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"qGm" = ( -/turf/closed/wall/r_wall, -/area/station/hallway/floor2/fore) -"qGp" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood, -/area/station/medical/psychology) -"qGC" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/aft) -"qGF" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/multitool, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"qGV" = ( -/obj/structure/railing, -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"qHf" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"qHi" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"qHo" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/toy/figure/hos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"qHv" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"qHE" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"qHH" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/iron{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/lithium{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/multiver{ - pixel_x = 1 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"qHR" = ( -/obj/machinery/smartfridge, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"qHW" = ( -/turf/closed/wall/r_wall, -/area/station/medical/pharmacy) -"qIf" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/keycard_auth/wall_mounted/directional/south{ - pixel_x = 6 - }, -/obj/effect/landmark/start/chief_engineer, -/obj/machinery/button/door/directional/south{ - id = "ceprivacy"; - name = "Privacy Shutters Control"; - pixel_x = -6 - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"qIv" = ( -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"qIz" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"qIH" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"qIM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"qIT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"qIY" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list("bar") - }, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"qJe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/storage/box/donkpockets, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"qJq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/service/chapel) -"qJA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"qJD" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/railing/corner/end/flip, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"qJT" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/machinery/door/airlock/hatch{ - name = "Oxygen Recycling" - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard) -"qJU" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"qKl" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"qKp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"qKt" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"qKG" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/mod/maint, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"qKI" = ( -/obj/item/stack/sheet/iron, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"qKN" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"qKR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"qLb" = ( -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"qLg" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"qLo" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"qLH" = ( -/obj/machinery/fax{ - fax_name = "Head of Personnel's Office"; - name = "Head of Personnel's Fax Machine" - }, -/obj/structure/table, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"qLI" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"qLP" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"qLS" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"qLW" = ( -/obj/structure/displaycase/captain, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"qMe" = ( -/obj/structure/ladder, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"qMu" = ( -/obj/structure/cable, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/plating, -/area/station/construction) -"qMv" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"qMV" = ( -/obj/machinery/atmospherics/components/unary/portables_connector, -/obj/effect/turf_decal/bot, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"qNe" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock{ - name = "Service Hall" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"qNf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Waste Cooling Gas" - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"qNh" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 10 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"qNu" = ( -/obj/structure/displaycase/trophy, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"qNw" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"qNx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) -"qND" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"qNF" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"qNG" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/modular_computer/preset/civilian, -/obj/machinery/airalarm/directional/west, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/science/genetics) -"qNI" = ( -/obj/machinery/light/floor, -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor4/aft) -"qNK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"qNW" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"qNY" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/machinery/newscaster/directional/east, -/obj/machinery/modular_computer/preset/civilian{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"qOh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"qOp" = ( -/obj/effect/spawner/random/structure/grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"qOq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/machinery/computer/records/medical{ - dir = 8 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"qOs" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/paper_bin, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/room1) -"qOF" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Departures" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"qOH" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"qON" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"qOO" = ( -/obj/machinery/light_switch/directional/west, -/obj/structure/chair/sofa/corp/right{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"qOQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"qOV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"qPi" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/obj/effect/turf_decal/arrows, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"qPl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"qPn" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/janitor) -"qPp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"qPt" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lantern{ - pixel_y = 7 - }, -/obj/item/radio/intercom/chapel/directional/south, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/office) -"qPu" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"qPv" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"qPG" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/port) -"qPM" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/vending/wallmed/directional/west, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"qPQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit) -"qPS" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"qPU" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"qPV" = ( -/obj/item/storage/medkit/emergency, -/obj/item/storage/box/matches{ - name = "creative cautery" - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"qQb" = ( -/obj/structure/mirror/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"qQe" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"qQi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/glass, -/obj/item/bonesetter, -/obj/effect/spawner/random/medical/surgery_tool, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"qQr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/escape_pod) -"qQt" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"qQG" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"qQI" = ( -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"qQM" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"qQN" = ( -/obj/structure/table/wood, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/commons/dorms/room2) -"qQS" = ( -/obj/effect/landmark/start/cyborg, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"qRi" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"qRn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/commons/storage/primary) -"qRx" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"qRy" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"qRz" = ( -/obj/structure/table/wood{ - name = "chopping board" - }, -/obj/item/stack/sheet/animalhide/mothroach, -/obj/item/food/meat/slab/mothroach, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"qRA" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"qRE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"qRF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/iron, -/area/station/maintenance/floor1/starboard/fore) -"qRI" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_ordmix{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/science/ordnance/burnchamber) -"qRS" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"qRW" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"qSf" = ( -/obj/structure/musician/piano/minimoog, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"qSl" = ( -/turf/closed/wall, -/area/station/maintenance/department/engine/atmos) -"qSr" = ( -/obj/structure/ladder, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/aft) -"qSv" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"qSz" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/machinery/camera/directional/south{ - c_tag = "Science Foyer - #2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"qSD" = ( -/obj/structure/aquarium/lawyer, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"qSJ" = ( -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"qSR" = ( -/obj/structure/displaycase/trophy, -/obj/machinery/light/small/directional/north, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"qSW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"qTg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"qTn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"qTp" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"qTw" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"qTA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"qTF" = ( -/obj/structure/disposalpipe/segment, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"qTH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"qTK" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"qTS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"qUo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"qUr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"qUs" = ( -/obj/machinery/reagentgrinder{ - pixel_y = 4 - }, -/obj/structure/table, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"qUC" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/structure/table, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"qUL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"qUO" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"qUV" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/railing/corner, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"qUW" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"qVa" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"qVf" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) -"qVh" = ( -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"qVl" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"qVm" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"qVv" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"qVO" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"qVV" = ( -/obj/machinery/mecha_part_fabricator, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) -"qWc" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-18"; - location = "1-17" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"qWe" = ( -/obj/machinery/vending/wardrobe/chem_wardrobe, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"qWm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"qWn" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"qWo" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"qWp" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"qWv" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Science Foyer - #1" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/research, -/obj/machinery/light/cold/no_nightlight/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"qWJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) -"qWN" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"qWQ" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/duct, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"qWR" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"qWS" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"qXc" = ( -/obj/structure/rack, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/bot, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"qXi" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/corner, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"qXj" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/effect/turf_decal/weather/dirt{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"qXk" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"qXm" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"qXn" = ( -/obj/structure/table, -/obj/item/storage/fancy/cigarettes{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/folder/red{ - pixel_x = -5 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/office) -"qXo" = ( -/obj/docking_port/stationary{ - dwidth = 11; - height = 22; - name = "North Star: Abandoned Hangar"; - shuttle_id = "whiteship_home"; - width = 35 - }, -/turf/open/space/openspace, -/area/space) -"qXp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"qXq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"qXr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"qXs" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"qXv" = ( -/obj/structure/ladder, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"qXw" = ( -/obj/machinery/biogenerator, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"qXy" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/layer3, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat) -"qXE" = ( -/obj/structure/table, -/obj/item/plate, -/obj/item/knife/plastic{ - pixel_x = 16 - }, -/obj/item/food/donkpocket/warm/berry{ - pixel_y = 7 - }, -/turf/open/floor/iron/kitchen, -/area/station/command/heads_quarters/rd) -"qXW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"qXX" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"qYb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"qYi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"qYq" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - name = "Security External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/security/eva) -"qYA" = ( -/obj/structure/railing/corner/end, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"qYJ" = ( -/obj/item/kirbyplants/organic/plant21, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 5 - }, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"qYM" = ( -/obj/structure/dresser, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"qYQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"qYZ" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - name = "Waste Release" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"qZc" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor1/aft) -"qZh" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port) -"qZi" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"qZq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"qZA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lower) -"qZF" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"qZP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/obj/structure/table, -/obj/item/analyzer{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi{ - pixel_x = -5 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"qZR" = ( -/obj/item/storage/box/lights/bulbs, -/obj/structure/table, -/turf/open/floor/iron/smooth, -/area/station/construction) -"qZT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"qZU" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/bitrunning/den) -"rac" = ( -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"rag" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #6"; - dir = 5; - network = list("ss13","engine") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ram" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"rao" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"raq" = ( -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"ras" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Arrivals" - }, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) -"rav" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"raz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"raE" = ( -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hos) -"raN" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/checkpoint) -"raO" = ( -/obj/machinery/vending/cigarette, -/obj/structure/sign/departments/security/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"raP" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible/layer4, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"raW" = ( -/obj/machinery/vending/tool, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/storage/primary) -"raY" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"rbh" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"rbm" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"rbp" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"rbr" = ( -/turf/closed/wall/r_wall, -/area/station/security/execution/transfer) -"rbs" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"rbx" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"rbz" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"rbD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"rbK" = ( -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"rbQ" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/cargo/storage) -"rbR" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"rbT" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"rca" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"rcc" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/smes/full, -/obj/machinery/light/directional/east, -/turf/open/floor/plating, -/area/station/tcommsat/computer) -"rcd" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/lobby) -"rci" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"rcm" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"rcp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/cigbutt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"rcu" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"rcy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/maintenance/floor1/starboard/aft) -"rcO" = ( -/turf/open/floor/plating/airless, -/area/space/nearstation) -"rcT" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/entry) -"rcV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"rdj" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"rdl" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical3, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"rdt" = ( -/obj/effect/spawner/xmastree, -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"rdv" = ( -/obj/structure/rack, -/obj/item/mod/core/standard, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"rdx" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rdy" = ( -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"rdC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"rdF" = ( -/obj/machinery/door/airlock/medical{ - frequency = 1450; - id_tag = "asylum_airlock_interior"; - name = "Asylum Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"rdH" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "viro-outer"; - name = "Virology Outer Shutters" - }, -/turf/open/floor/plating, -/area/station/medical/virology/isolation) -"rdJ" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"rdW" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"rec" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"red" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"ref" = ( -/obj/effect/turf_decal/arrows{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"rej" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"rek" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/corner, -/area/station/security/office) -"rem" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Chapel Office" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/office) -"rep" = ( -/obj/structure/chair/sofa/corp{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/landmark/start/paramedic, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"res" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 1 - }, -/turf/open/space/basic, -/area/space/nearstation) -"ret" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/transit_tube/curved/flipped{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/floor4/aft) -"reD" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"reI" = ( -/obj/structure/table, -/obj/item/folder/red{ - pixel_x = 3 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/restraints/handcuffs, -/obj/item/radio/off, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/requests_console/directional/east{ - department = "Security"; - name = "Security Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"reW" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"rfn" = ( -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"rfo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"rfq" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/aft) -"rfx" = ( -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/medical/abandoned) -"rfz" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/spawner/random/structure/grille, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"rfD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/directional/east{ - id = "maint-shut"; - name = "Shutters Control" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"rfI" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"rfM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"rfT" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"rfU" = ( -/turf/closed/wall, -/area/station/commons/dorms/room3) -"rgc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=4-0"; - location = "4-3" - }, -/mob/living/simple_animal/bot/secbot/beepsky, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"rgi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Atmospherics Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"rgx" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) -"rgy" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/explab) -"rgz" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/library/private) -"rgE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"rgL" = ( -/obj/machinery/door/airlock{ - name = "Minikitchen Access" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/service/bar, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"rgM" = ( -/obj/structure/closet/boxinggloves, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"rgR" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"rgT" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/construction) -"rhi" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/closet/secure_closet/bar, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"rho" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/wiki/chemistry, -/obj/item/hand_labeler, -/obj/effect/turf_decal/siding/wideplating, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"rhs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"rhw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"rhx" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/cargo/lobby) -"rhC" = ( -/obj/machinery/light/cold/no_nightlight/directional/east, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"rhI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/marker_beacon/jade, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"rhJ" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"rhN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/machinery/light/small/blacklight/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"rhO" = ( -/obj/item/kirbyplants/random, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/computer/security/telescreen/interrogation/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"rhR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"rhY" = ( -/obj/item/storage/box/donkpockets{ - pixel_y = 5 - }, -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment1) -"rhZ" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"ric" = ( -/obj/structure/transit_tube/diagonal{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"rif" = ( -/obj/effect/decal/cleanable/robot_debris, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"rim" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"rip" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"ris" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 1 - }, -/obj/structure/table, -/obj/item/aquarium_kit, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"riy" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"riC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"riD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"riE" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/obj/structure/grille, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"riF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"riT" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"rjh" = ( -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/maintenance/floor1/starboard/aft) -"rjm" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/light_switch/directional/south, -/obj/item/kirbyplants/random, -/turf/open/floor/iron, -/area/station/science/genetics) -"rjp" = ( -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/railing/corner/end, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"rjB" = ( -/obj/machinery/light/cold/no_nightlight/directional/east, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"rjD" = ( -/turf/closed/wall, -/area/station/hallway/floor1/aft) -"rkd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"rkf" = ( -/obj/machinery/camera{ - c_tag = "Shared Engineering Storage #3"; - dir = 4; - network = list("ss13","engine") - }, -/obj/machinery/shower/directional/south, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/pumproom) -"rks" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"rkE" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 1 - }, -/obj/structure/railing/corner/end, -/obj/structure/railing/corner/end/flip, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"rkM" = ( -/turf/closed/wall/r_wall, -/area/station/science/cytology) -"rkO" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/bot_white/right, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"rkY" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/vending/wardrobe/sec_wardrobe, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"rkZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) -"rlf" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"rlw" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/structure/closet/crate/freezer, -/obj/effect/spawner/random/medical/memeorgans, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"rlB" = ( -/obj/structure/chair/office/tactical{ - dir = 1 - }, -/obj/effect/landmark/start/coroner, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"rlC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=4-1"; - location = "4-0" - }, -/mob/living/basic/bot/medbot/autopatrol, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor4/fore) -"rlJ" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"rlP" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"rlX" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"rmd" = ( -/obj/effect/turf_decal/siding/white, -/obj/machinery/computer/records/medical, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"rmm" = ( -/obj/structure/table, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/requests_console/directional/north{ - department = "Head of Personnel's Desk"; - name = "Head of Personnel's Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/item/hand_labeler{ - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"rms" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"rmz" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"rmD" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/closet/secure_closet/chemical, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"rmF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"rmT" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"rmZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/ai_monitored/command/storage/eva) -"rnd" = ( -/obj/effect/turf_decal/trimline/white/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"rne" = ( -/obj/structure/falsewall, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"rnl" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"rns" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"rnv" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"rnE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-17"; - location = "3-16" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"rnP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"rnU" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"rnW" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"roa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"roe" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"rof" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"rog" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison) -"roh" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/aft) -"roj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"rom" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/closet/radiation, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"roo" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/aft) -"rov" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard) -"roy" = ( -/obj/item/toy/plush/beeplushie{ - desc = "Maybe hugging this will make you feel better about yourself."; - name = "Therabee" - }, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/structure/table/wood, -/turf/open/floor/iron, -/area/station/security/brig) -"roz" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"roZ" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/commons/locker) -"rpa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"rpj" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"rpp" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"rpr" = ( -/obj/structure/chair/stool/bar/directional/west, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"rpA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"rpD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"rpF" = ( -/obj/structure/railing, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/turf/open/water/beach{ - desc = "Refreshing!"; - name = "treated water" - }, -/area/station/maintenance/floor1/port/aft) -"rpN" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 1 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"rpR" = ( -/turf/open/floor/iron/dark/textured_edge, -/area/station/maintenance/floor1/starboard/aft) -"rpV" = ( -/obj/structure/sign/warning/radiation/rad_area{ - pixel_y = 32 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"rqc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"rqf" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/table, -/obj/item/storage/box/matches{ - name = "creative cautery" - }, -/obj/item/knife/shiv{ - desc = "Not great at stabbing, but handy when it comes to surgery."; - force = 1; - name = "makeshift scalpel"; - tool_behaviour = "scalpel" - }, -/obj/item/pen/red{ - name = "ghetto hemostat" - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"rqi" = ( -/obj/machinery/light/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"rqj" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/light_switch/directional/east, -/obj/item/pinpointer/nuke, -/obj/item/disk/nuclear, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"rqr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/bridge_pipe/cyan/visible, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/white, -/area/station/engineering/atmos) -"rqx" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/machinery/camera/directional/south{ - c_tag = "Auxiliary Base Construction" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"rqK" = ( -/obj/effect/turf_decal/stripes/full, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"rqM" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"rqU" = ( -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/door/window/left/directional/east{ - req_access = list("maint_tunnels") - }, -/turf/open/floor/grass, -/area/station/security/courtroom) -"rqV" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/decoration/carpet, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"rrl" = ( -/obj/effect/spawner/random/engineering/tracking_beacon, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"rrm" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"rrr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"rrs" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/air_sensor/ordnance_freezer_chamber, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"rrD" = ( -/obj/machinery/biogenerator, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/service/hydroponics) -"rrQ" = ( -/obj/structure/table, -/obj/machinery/airalarm/directional/west, -/obj/item/stack/cable_coil/five, -/obj/item/storage/toolbox/mechanical, -/obj/item/multitool, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"rrR" = ( -/turf/open/floor/iron, -/area/station/commons/locker) -"rrW" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"rrX" = ( -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"rsa" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"rsd" = ( -/obj/structure/table, -/obj/item/reagent_containers/pill/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"rsf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"rsh" = ( -/obj/structure/closet{ - name = "Evidence Closet 1" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"rsi" = ( -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"rsz" = ( -/obj/structure/chair/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"rsL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"rsT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{ - dir = 4 - }, -/obj/item/paper{ - default_raw_text = "Once you have gas coming in from the SM to the containment chamber, you'll need to cool it.-
To set up the waste gas cooling loop, follow these steps:
  1. Wrench in the plasma can.
2. Turn on the waste Cooling Gas pump and set the thermomachines to cold.
3. Set up the scrubbers in the chamber using the air alarm.
4. Turn on the filter to the canisters or replace it.
5. Turn on the Supermatter Waste To Port pump.

Once everything on that list is complete, make sure that gas isn't building up inside the chamber or the pipes and you are done."; - name = "HOW TO SET UP THE SM WASTE" - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"rsW" = ( -/turf/open/floor/carpet/blue, -/area/station/maintenance/floor3/port/aft) -"rsY" = ( -/obj/machinery/button/door/directional/north{ - id = "aband_armour"; - name = "Armoury Shutters" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"rtb" = ( -/obj/machinery/conveyor{ - id = "coffinbelt" - }, -/obj/structure/plasticflaps/opaque, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"rtc" = ( -/obj/effect/spawner/structure/window/hollow/end, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"rti" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"rtl" = ( -/turf/closed/wall/r_wall, -/area/station/science/xenobiology/hallway) -"rtm" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"rtv" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"rtB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"rtD" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"rtH" = ( -/obj/machinery/vending/boozeomat, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"rtL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"rtS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"rtV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/entry) -"rua" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"ruo" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"ruU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/poster/random/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"rve" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/cargo/storage) -"rvD" = ( -/obj/structure/sink/directional/south, -/obj/structure/mirror/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"rvL" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor2/port/fore) -"rwc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/moisture_trap, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard) -"rwh" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"rwj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"rwn" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/hallway/secondary/entry) -"rwq" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/grunge{ - name = "Prison Showers" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plastic, -/area/station/security/prison) -"rws" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 - }, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"rwv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"rwG" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "Science - Foyer #4" - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"rwM" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"rwN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"rwY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/modular_computer/preset/civilian{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"rxa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"rxe" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light/red/dim/directional/north, -/obj/item/scalpel, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"rxg" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"rxi" = ( -/obj/item/stack/sheet/animalhide/human, -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"rxn" = ( -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"rxq" = ( -/obj/effect/turf_decal/trimline/white/corner{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"rxz" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"rxJ" = ( -/obj/structure/chair/pew/left{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"rxL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"rxS" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/trash/soap, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"rxZ" = ( -/obj/item/storage/toolbox/maint_kit, -/obj/effect/spawner/random/junk_shell, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"ryh" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"ryi" = ( -/obj/item/shard, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"rym" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/tank_dispenser{ - pixel_x = -1 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"rys" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"ryu" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ryx" = ( -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"ryz" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"ryA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/tcommsat/computer) -"ryE" = ( -/obj/effect/turf_decal/trimline/blue/corner, -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 9 - }, -/obj/machinery/flasher/directional/west{ - id = "hopflash" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"ryQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"ryX" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"rza" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 9 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 6 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"rze" = ( -/turf/closed/wall, -/area/station/cargo/lobby) -"rzg" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/machinery/computer/records/security{ - dir = 1 - }, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"rzu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/command/bridge) -"rzA" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4 - }, -/obj/effect/turf_decal/box, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"rzI" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/chair/stool/bar/directional/east, -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"rzK" = ( -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit) -"rzT" = ( -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"rzW" = ( -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/rd) -"rAe" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"rAm" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"rAu" = ( -/obj/structure/cable, -/obj/machinery/computer/operating{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"rAv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 10 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"rAy" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"rAE" = ( -/obj/machinery/computer/records/security{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"rAP" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"rBm" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/aft) -"rBr" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"rBt" = ( -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"rBB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/entertainment/drugs, -/obj/structure/closet/crate/preopen, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"rBC" = ( -/obj/structure/table/wood/fancy/red, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"rBF" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"rBI" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Laboratory B" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"rBK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/engine/air, -/area/station/engineering/supermatter/waste) -"rBP" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/lobby) -"rBT" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"rBU" = ( -/obj/structure/rack, -/obj/machinery/button/door/directional/south{ - id = "armory"; - name = "Armory Shutters"; - req_access = list("armory") - }, -/obj/item/gun/energy/temperature/security, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"rBW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/cattoy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"rBY" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"rCa" = ( -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"rCc" = ( -/obj/machinery/computer/records/security, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"rCe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/smooth, -/area/station/construction) -"rCj" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/effect/turf_decal/bot, -/obj/structure/sign/warning/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"rCk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/courtroom) -"rCp" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) -"rCq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"rCv" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"rCx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"rCz" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"rCF" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/tile/dark_blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/item/reagent_containers/cup/watering_can, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/security/prison/garden) -"rCK" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"rCM" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/fore) -"rCN" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rCO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/engine_smes) -"rCQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/chapel) -"rCR" = ( -/obj/structure/transit_tube/horizontal{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"rCS" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/construction) -"rCW" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"rDh" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"rDD" = ( -/obj/structure/transit_tube/curved/flipped{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"rDF" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"rDK" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"rDL" = ( -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"rDQ" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"rDR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"rDZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/turf/open/floor/plating, -/area/station/security/brig) -"rEa" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"rEm" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-2"; - location = "1-1" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"rEp" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/siding/white/end{ - dir = 4 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/cryo) -"rES" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"rEU" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"rFg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"rFy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sign/warning/vacuum/external{ - pixel_y = -32 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"rFC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"rFG" = ( -/obj/machinery/light/small/dim/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/floor3/port/fore) -"rFW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"rGb" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Security- Central" - }, -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"rGd" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"rGe" = ( -/obj/machinery/camera{ - c_tag = "Engineering Foyer #3"; - dir = 8; - network = list("ss13","engine") - }, -/obj/structure/chair/sofa/bench/right, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"rGl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"rGv" = ( -/obj/structure/table/wood, -/obj/item/knife, -/obj/machinery/light/directional/east, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"rGC" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/medical/glass{ - name = "Medical Front Desk" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"rGI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"rGL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"rGP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"rGZ" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/recharger, -/turf/open/floor/iron/dark, -/area/station/security/office) -"rHf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"rHg" = ( -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor3/fore) -"rHq" = ( -/obj/machinery/space_heater, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"rHr" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"rHy" = ( -/obj/machinery/vending/wardrobe/atmos_wardrobe, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rHA" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"rHP" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"rHX" = ( -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"rHY" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"rIa" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/duct, -/turf/open/floor/iron/dark/corner, -/area/station/security/brig) -"rIb" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 5 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"rIc" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"rId" = ( -/obj/structure/disposalpipe/junction{ - dir = 2 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"rIo" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/starboard/aft) -"rIp" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rIt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"rIy" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"rIS" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal/incinerator) -"rIU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"rJb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/bodypart/arm/right/mushroom, -/obj/item/bodypart/leg/right/mushroom, -/obj/item/bodypart/head/mushroom, -/obj/structure/closet/crate/freezer, -/obj/item/bodypart/arm/right/alien, -/obj/effect/spawner/random/medical/memeorgans, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"rJv" = ( -/obj/structure/table/glass, -/obj/item/storage/box/rxglasses, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"rJy" = ( -/turf/open/floor/pod, -/area/station/cargo/miningdock) -"rJC" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/science/cytology) -"rJF" = ( -/turf/closed/wall, -/area/station/security/prison/safe) -"rJI" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"rJO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/warning/radiation{ - pixel_y = 32 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"rJR" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"rJU" = ( -/obj/structure/chair/stool/bar/directional/east, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"rKc" = ( -/obj/structure/cable, -/obj/machinery/mining_weather_monitor/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit) -"rKg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"rKk" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/clothing/glasses/sunglasses/big, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"rKB" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/item/toy/seashell, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"rKC" = ( -/obj/machinery/door/airlock/external{ - name = "Security External Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/security/eva) -"rKG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/flashlight/flare, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"rKJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/chapel) -"rKM" = ( -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"rKQ" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"rKV" = ( -/obj/machinery/bluespace_vendor/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"rKX" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/execution/transfer) -"rLb" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/turf_decal/bot, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"rLd" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"rLf" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"rLh" = ( -/obj/machinery/camera/directional/north, -/obj/structure/bookcase/random, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"rLl" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/newscaster/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"rLs" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"rLx" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rLB" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"rLE" = ( -/obj/structure/rack, -/obj/item/stack/sheet/iron/five, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"rLM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"rLR" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"rLU" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"rMc" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"rMo" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/microwave, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"rMq" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"rMu" = ( -/obj/effect/spawner/random/trash/soap{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"rMx" = ( -/obj/machinery/conveyor{ - id = "mailbelt" - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"rMC" = ( -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"rMD" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"rMM" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor3/fore) -"rMR" = ( -/obj/structure/closet/l3closet/virology, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rMX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"rMY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"rNa" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sink/kitchen/directional/west, -/turf/open/floor/iron, -/area/station/service/janitor) -"rNb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"rNg" = ( -/obj/machinery/vending/modularpc, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"rNo" = ( -/turf/closed/wall, -/area/station/service/chapel) -"rNG" = ( -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/textured_corner{ - dir = 8 - }, -/area/station/cargo/office) -"rNL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"rNN" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"rNO" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"rNT" = ( -/obj/structure/table/reinforced, -/obj/item/folder/red, -/obj/item/pen, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"rOj" = ( -/obj/effect/turf_decal/tile/blue/anticorner, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/ai_monitored/turret_protected/ai) -"rOm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"rOB" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/service/chapel) -"rOJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"rOW" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/ai_slipper{ - uses = 10 - }, -/turf/open/floor/iron/dark/side, -/area/station/ai_monitored/turret_protected/ai) -"rPi" = ( -/turf/closed/wall, -/area/station/cargo/office) -"rPr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/start/hangover, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor4/aft) -"rPw" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start/janitor, -/obj/machinery/light_switch/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/janitor) -"rPA" = ( -/obj/effect/spawner/structure/window/hollow/directional, -/obj/machinery/duct, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"rPC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"rPF" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"rPG" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"rPK" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Security - Showers" - }, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"rPV" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"rPX" = ( -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"rPZ" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"rQa" = ( -/obj/item/shard, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"rQc" = ( -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"rQd" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/science/server) -"rQf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"rQh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"rQj" = ( -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"rQl" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"rQx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/pump/on/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"rQG" = ( -/obj/machinery/chem_master{ - name = "CytoMaster 3000" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/science/cytology) -"rQV" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"rRd" = ( -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"rRf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"rRh" = ( -/obj/structure/closet/radiation, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"rRp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"rRu" = ( -/obj/structure/table, -/obj/item/holosign_creator/robot_seat/restaurant{ - pixel_y = -5 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"rRB" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"rRC" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"rRP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"rRS" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"rRU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/checkpoint) -"rRX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"rSc" = ( -/obj/effect/spawner/random/maintenance, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"rSk" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/command_all, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_corner{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"rSu" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"rSw" = ( -/turf/open/misc/asteroid/snow/standard_air{ - icon_state = "snow1" - }, -/area/station/maintenance/floor2/port/aft) -"rSC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/on/supply/visible/layer4{ - name = "Airmix to Distro" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"rSD" = ( -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"rSJ" = ( -/obj/structure/chair/plastic{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"rSK" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"rSN" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"rSS" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/wood{ - name = "Dining Room" - }, -/turf/open/floor/iron/dark, -/area/station/service/kitchen/diner) -"rSU" = ( -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"rSY" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"rTa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"rTg" = ( -/obj/item/paper_bin, -/obj/structure/table/wood/fancy/royalblack, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/carpet/neon/simple/white, -/area/station/commons/dorms/room3) -"rTk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor1/starboard/fore) -"rTt" = ( -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"rTv" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"rTw" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"rTz" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/tank_holder, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"rTB" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"rTE" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/item/radio/intercom/directional/west, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"rTL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"rTV" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen/blue{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/pen/red, -/obj/item/pen/fountain{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"rUh" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"rUi" = ( -/obj/machinery/ai_slipper{ - uses = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"rUD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/white, -/area/station/science/lower) -"rUG" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/any/service/theatre, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"rUH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"rUJ" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/table, -/obj/item/storage/box/monkeycubes{ - pixel_x = 4 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"rUN" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/railing/corner/end/flip, -/obj/structure/railing/corner/end, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"rUW" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"rVi" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/range) -"rVk" = ( -/turf/open/floor/iron, -/area/station/security/courtroom) -"rVo" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"rVy" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"rVI" = ( -/obj/structure/rack, -/obj/item/flashlight, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"rVJ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Ordnance Maintenance" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/science/ordnance_storage, -/obj/machinery/door/firedoor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"rVN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"rVQ" = ( -/turf/closed/wall, -/area/station/service/library/private) -"rVY" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"rWa" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/loading_area{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"rWm" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"rWo" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"rWu" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock{ - name = "Service Hall" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"rWx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/aft) -"rWz" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/flasher/directional/west{ - id = "secentranceflasher" - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"rWT" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/rd) -"rWV" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/pod, -/area/station/hallway/secondary/entry) -"rXg" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"rXp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"rXs" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 3 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -3 - }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"rXx" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/theater) -"rXC" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 6 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"rXH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"rXJ" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"rXL" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"rXY" = ( -/obj/machinery/newscaster/directional/east, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"rYf" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"rYq" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"rYw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/maintenance/solars/starboard/fore) -"rYA" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"rYK" = ( -/obj/machinery/door/airlock/hatch{ - name = "Wine Cellar" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"rYR" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/camera/directional/north{ - c_tag = "AI Upload Foyer"; - network = list("aiupload") - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"rYS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/command/bridge) -"rZb" = ( -/obj/structure/chair/comfy/black, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"rZe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"rZi" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"rZl" = ( -/obj/structure/chair/stool{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"rZn" = ( -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/iron, -/area/station/service/janitor) -"rZC" = ( -/obj/structure/showcase/cyborg/old{ - dir = 4; - pixel_x = -9; - pixel_y = 2 - }, -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/power/terminal, -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"rZS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/table/wood, -/obj/item/clipboard, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"rZV" = ( -/obj/effect/turf_decal/tile/blue/half, -/obj/machinery/light/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/command/teleporter) -"rZX" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 5 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/iron/telecomms, -/area/station/tcommsat/server) -"sab" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"sal" = ( -/obj/structure/cable, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sar" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"sat" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"sav" = ( -/obj/effect/turf_decal/box/corners, -/obj/structure/sign/warning/biohazard/directional/east, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"saA" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/vending/tool, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/dark/textured_corner, -/area/station/engineering/lobby) -"saB" = ( -/obj/effect/turf_decal/tile/red, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"saG" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"saW" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/vacuum, -/area/station/engineering/atmos) -"sbm" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"sbn" = ( -/obj/structure/barricade/sandbags, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"sbw" = ( -/obj/item/storage/toolbox/emergency, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"sby" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/machinery/hydroponics/constructable, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"sbB" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/item/fuel_pellet{ - pixel_x = -4; - pixel_y = -2 - }, -/obj/item/fuel_pellet, -/obj/item/fuel_pellet{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/structure/rack, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/cargo/drone_bay) -"sbI" = ( -/obj/structure/flora/bush/snow/style_random, -/turf/open/misc/snow/actually_safe{ - icon_state = "snow5" - }, -/area/station/hallway/floor2/fore) -"sbK" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"sbU" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/effect/decal/cleanable/glass, -/obj/effect/spawner/random/entertainment/cigarette_pack, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"scc" = ( -/obj/structure/fluff/paper/stack{ - desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging." - }, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"scn" = ( -/obj/machinery/netpod, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"sct" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/west{ - name = "Warden's Desk" - }, -/obj/item/folder/red, -/obj/item/pen, -/obj/structure/cable, -/obj/machinery/door/window/brigdoor/right/directional/east{ - name = "Warden's Desk"; - req_access = list("armory") - }, -/turf/open/floor/plating, -/area/station/security/warden) -"scu" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"scv" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/disposal) -"scx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"scD" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/suit_storage_unit/medical, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"scG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"scH" = ( -/obj/structure/table, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/folder/blue, -/obj/item/folder/blue{ - pixel_y = 2 - }, -/obj/item/clothing/glasses/sunglasses/big, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"scI" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"scK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"sda" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"sdh" = ( -/obj/structure/cable, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"sdi" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"sdo" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/machinery/gravity_generator/main, -/turf/open/floor/iron, -/area/station/engineering/gravity_generator) -"sds" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/newscaster/directional/north, -/obj/item/kirbyplants/random, -/turf/open/floor/wood/parquet, -/area/station/hallway/floor4/aft) -"sdA" = ( -/obj/effect/turf_decal/trimline/white/filled/corner, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"sdB" = ( -/obj/structure/table, -/obj/item/stack/sheet/rglass{ - amount = 50; - pixel_x = 3 - }, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = -5 - }, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = -5 - }, -/obj/item/stack/sheet/rglass{ - amount = 50; - pixel_x = 3 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/grenade/chem_grenade/smart_metal_foam{ - pixel_y = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"sdI" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"sdL" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "engimain" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"sdN" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"sdO" = ( -/obj/item/stack/sheet/iron, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"sdQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/hallway/secondary/entry) -"sdX" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"sdZ" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/siding/white, -/obj/machinery/button/crematorium{ - id = "crematorium_chapel"; - pixel_y = -28 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"see" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"sei" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"sfe" = ( -/obj/structure/chair/comfy/carp, -/obj/effect/decal/cleanable/glitter, -/obj/machinery/light/blacklight/directional/east, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"sff" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) -"sfg" = ( -/obj/docking_port/stationary{ - dwidth = 6; - height = 6; - name = "Cargo Bay"; - shuttle_id = "cargo_home"; - width = 11 - }, -/turf/open/floor/pod, -/area/station/cargo/storage) -"sfk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"sfv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"sfw" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/rack, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"sfz" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"sfB" = ( -/obj/effect/landmark/start/warden, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/security/brig) -"sfG" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"sfM" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/aft) -"sfR" = ( -/obj/machinery/photocopier, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"sfS" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"sfT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair/sofa/middle/brown, -/mob/living/carbon/human/species/monkey/punpun, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"sgc" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/firealarm/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Cytology - Lab" - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"sgm" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"sgF" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical3, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"sgH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/entertainment/drugs, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"sgJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"sgL" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/turf/open/floor/iron/textured_half, -/area/station/hallway/secondary/entry) -"sgR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"sgT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sink/directional/east, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"shd" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"shi" = ( -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"shk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/scientist, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lower) -"shu" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"shy" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"shz" = ( -/obj/machinery/status_display/ai/directional/east, -/turf/open/openspace, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"shB" = ( -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"shE" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"shV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"shW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/service/lawoffice) -"sif" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/lab) -"sih" = ( -/obj/structure/table, -/obj/item/clothing/glasses/welding, -/turf/open/floor/iron/white, -/area/station/science/lower) -"sil" = ( -/obj/item/restraints/legcuffs/beartrap/prearmed, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"sim" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/project) -"siq" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"siu" = ( -/obj/structure/chair/sofa/bench/right, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"siA" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"siB" = ( -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"siK" = ( -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"siT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/security/prison/work) -"siY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"sjc" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"sjf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"sjs" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/ce, -/obj/machinery/door/airlock/engineering{ - name = "Chief Engineer's Desk" - }, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"sjD" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/sorting) -"sjH" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/any/service/theatre, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"sjW" = ( -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/five, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"sjX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"ske" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"skj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"skv" = ( -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"skz" = ( -/obj/structure/chair/sofa/bench/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"skD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"skM" = ( -/obj/structure/table/wood, -/obj/machinery/fax{ - fax_name = "Quartermaster's Office"; - name = "Quartermaster's Fax Machine" - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/command/heads_quarters/qm) -"skQ" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"skU" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"skW" = ( -/obj/effect/decal/cleanable/glass, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"slk" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"sln" = ( -/obj/structure/chair/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"slv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"sly" = ( -/obj/structure/table/reinforced, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/engineering/supermatter/room) -"slz" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood/tile, -/area/station/service/library) -"slC" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/cable, -/mob/living/basic/parrot/poly, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/heads_quarters/ce) -"slI" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"slP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"slQ" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-13"; - location = "2-12" - }, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"smi" = ( -/turf/open/floor/grass, -/area/station/service/hydroponics) -"smq" = ( -/obj/machinery/button/door/directional/south{ - id = "dorms_3_bolts"; - name = "Dorms 3 Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"smv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"smx" = ( -/obj/structure/table, -/obj/item/pai_card{ - pixel_y = 6 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"smJ" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"smU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/science{ - name = "Firing Range" - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"smY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"snd" = ( -/turf/closed/wall, -/area/station/maintenance/solars/starboard/aft) -"sng" = ( -/obj/structure/table, -/obj/machinery/microwave, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sno" = ( -/obj/structure/table/reinforced/rglass, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/item/stack/medical/suture/emergency{ - pixel_y = 5; - pixel_x = -5 - }, -/obj/item/stack/medical/ointment{ - pixel_y = -5; - pixel_x = 5 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/lobby) -"snp" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/courtroom) -"snI" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"snL" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/landmark/start/captain, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"snO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/line, -/obj/effect/turf_decal/trimline/white/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"snU" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"soq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-17"; - location = "1-16" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"sow" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"soz" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 6 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"soI" = ( -/obj/structure/table/wood/poker, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/spawner/random/entertainment/deck, -/obj/machinery/camera/autoname/directional/south, -/obj/item/toy/plush/slimeplushie{ - name = "stress toy" - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"soN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"soP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"soQ" = ( -/obj/machinery/telecomms/hub/preset, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"soZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"spa" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"spb" = ( -/obj/machinery/newscaster/directional/south, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/service/library/private) -"spd" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"sph" = ( -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"spl" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/medical_all, -/obj/effect/turf_decal/tile/blue/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"spr" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/station/maintenance/floor2/starboard/aft) -"spE" = ( -/obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"spF" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"spI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"spT" = ( -/obj/structure/mirror/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/sink/directional/west, -/turf/open/floor/iron, -/area/station/commons/toilet) -"sqi" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/station/service/theater) -"sqj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/east, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"sqv" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/courtroom) -"sqy" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/south{ - name = "Cryo Checkpoint"; - req_access = list("brig") - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) -"sqG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"srf" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/shieldgen, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"srl" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/machinery/door/window/right/directional/north{ - name = "Butterfly Garden"; - req_access = list("hydroponics") - }, -/turf/open/misc/sandy_dirt, -/area/station/hallway/secondary/entry) -"srz" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"srC" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"srK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"srO" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/fore) -"srP" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/iron/smooth, -/area/station/construction) -"srS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen/diner) -"ssa" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"ssi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"ssj" = ( -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"ssm" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"ssr" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/medical/psychology) -"ssw" = ( -/obj/structure/table/glass, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"ssx" = ( -/obj/item/stack/medical/suture/emergency, -/obj/item/stack/medical/gauze/improvised{ - pixel_y = 12 - }, -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"ssy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"ssz" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"ssB" = ( -/obj/structure/table/optable, -/obj/machinery/defibrillator_mount/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"ssL" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Research and Development" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridge" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"ssM" = ( -/obj/machinery/light/red/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"ssP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"ssY" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/trimline/green/arrow_ccw, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"stj" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit) -"stl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/iron/smooth, -/area/station/construction) -"stp" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"stx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"stS" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"stV" = ( -/obj/structure/girder/displaced, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"stZ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/south, -/obj/structure/window/reinforced/tinted/frosted/spawner/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"sua" = ( -/obj/machinery/light/red/dim/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"sui" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"sul" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"sum" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"sup" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"sus" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"sut" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"suu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"suv" = ( -/obj/machinery/processor/slime, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"suB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"suD" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"suM" = ( -/obj/structure/stairs/north, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hop) -"suP" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/theater) -"suR" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"suT" = ( -/obj/machinery/status_display/door_timer{ - id = "cell-3"; - name = "Floor 3 Cell"; - pixel_y = 32 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"suZ" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/structure/window/spawner/directional/east, -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/engineering/lobby) -"svs" = ( -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit) -"svu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"svy" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"svI" = ( -/obj/machinery/door/poddoor/incinerator_ordmix, -/turf/open/openspace, -/area/station/science/ordnance/burnchamber) -"svK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"svR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/plastic{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"svW" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/machinery/computer/security{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"svX" = ( -/turf/closed/wall, -/area/station/commons/locker) -"swk" = ( -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lower) -"swm" = ( -/obj/machinery/air_sensor/nitrogen_tank, -/obj/effect/turf_decal/trimline/red/line, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"swn" = ( -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"sws" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/structure/cable, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"swI" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"swK" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"swM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/freezer, -/obj/item/stack/medical/suture, -/obj/item/stack/medical/gauze/twelve, -/obj/item/stack/medical/bone_gel, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"swT" = ( -/turf/closed/wall/r_wall, -/area/station/science/circuits) -"sxb" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) -"sxe" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/commons/locker) -"sxg" = ( -/obj/machinery/computer/atmos_control/carbon_tank, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) -"sxi" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 10 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"sxl" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/camera/directional/west{ - c_tag = "Science - Circuitry Lab" - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"sxm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/theater) -"sxo" = ( -/turf/closed/wall, -/area/station/service/chapel/office) -"sxt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sxv" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/theater) -"sxw" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/east, -/obj/structure/window/spawner/directional/north, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"sxy" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"sxA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"sxK" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"sxZ" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"syd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"syi" = ( -/obj/effect/turf_decal/siding/wideplating_new/corner, -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 1 - }, -/turf/open/floor/engine/airless, -/area/station/solars/port/aft) -"syt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"syz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"syE" = ( -/obj/machinery/door/airlock/hatch{ - name = "Fighter Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) -"syH" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/effect/turf_decal/siding/wood, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"syP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"syV" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/closet/firecloset, -/obj/machinery/duct, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"szb" = ( -/obj/structure/chair/sofa/corp/right, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"szd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/misc/dirt/jungle, -/area/station/service/hydroponics/garden/abandoned) -"szl" = ( -/obj/machinery/computer/slot_machine, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"szn" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/cups, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"szo" = ( -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"szt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/green/warning, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"szx" = ( -/obj/item/soap, -/obj/machinery/shower/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"szz" = ( -/obj/machinery/telecomms/bus/preset_two, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"szC" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"szD" = ( -/obj/structure/table, -/obj/item/storage/box/evidence{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/item/hand_labeler{ - pixel_x = -8; - pixel_y = 10 - }, -/obj/item/storage/box/evidence{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/item/storage/box/evidence{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/item/storage/box/prisoner{ - pixel_x = 9 - }, -/obj/machinery/recharger{ - pixel_x = -5; - pixel_y = -3 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"szK" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"szS" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"szU" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"sAa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"sAi" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 1 - }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"sAr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"sAv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"sAw" = ( -/obj/machinery/computer/station_alert{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"sAz" = ( -/obj/machinery/light/built/directional/north, -/obj/item/light/tube/broken, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"sAA" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/door/airlock/engineering{ - name = "Power Generation Experimentation" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"sAH" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/waste) -"sAI" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) -"sAJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/door/airlock/grunge{ - name = "Laundry Room" - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"sAK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"sBb" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/east, -/obj/machinery/light/cold/no_nightlight/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"sBp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"sBt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"sBx" = ( -/obj/structure/bonfire, -/obj/structure/cable, -/obj/machinery/light/broken/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"sBy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"sBE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"sBF" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"sBI" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"sBJ" = ( -/obj/structure/sink/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"sBK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/railing/corner/end{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"sBN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"sBT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"sBV" = ( -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/structure/disposalpipe/segment, -/obj/item/stamp/head/hos, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"sCp" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/medical/patients_rooms) -"sCu" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"sCv" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"sCz" = ( -/obj/item/kirbyplants/photosynthetic, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"sCH" = ( -/obj/structure/frame/machine, -/obj/item/circuitboard/machine/telecomms/relay, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"sCO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/cable, -/obj/machinery/photobooth/security, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"sDg" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"sDo" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"sDp" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"sDE" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/recharger, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/turf/open/floor/mineral/plastitanium/red, -/area/station/maintenance/floor4/starboard/aft) -"sDL" = ( -/obj/structure/table, -/obj/item/storage/medkit/emergency, -/obj/item/clothing/mask/breath, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"sDT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"sEd" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"sEk" = ( -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/obj/machinery/flasher/directional/east{ - id = "secentranceflasher" - }, -/obj/machinery/camera/directional/east{ - c_tag = "Security - Aft Entrance" - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"sEl" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"sEt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/stairs/old, -/area/station/service/theater) -"sEA" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"sEE" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/machinery/light/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"sEK" = ( -/obj/item/chair/stool/bar, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"sEL" = ( -/obj/machinery/rnd/production/circuit_imprinter/department/science, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) -"sEP" = ( -/obj/item/toy/plush/bubbleplush, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/fakebasalt, -/area/station/maintenance/floor3/port) -"sEU" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"sFa" = ( -/turf/open/floor/wood, -/area/station/command/meeting_room) -"sFe" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - id = "theater" - }, -/turf/open/floor/wood, -/area/station/service/theater) -"sFf" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - id = "theater" - }, -/turf/open/floor/wood, -/area/station/service/theater) -"sFt" = ( -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sFz" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"sFG" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"sFJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"sFQ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"sFR" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 6 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/airless, -/area/station/science/ordnance/freezerchamber) -"sGb" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/r_wall, -/area/station/command/bridge) -"sGu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"sGw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"sGB" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"sGN" = ( -/obj/item/stack/ducts/fifty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"sGR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"sGU" = ( -/obj/structure/table/wood, -/obj/item/folder{ - pixel_x = -5; - pixel_y = 1 - }, -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"sGW" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"sGZ" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"sHd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/vending/wallmed/directional/north, -/obj/machinery/duct, -/obj/item/stack/medical/gauze, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"sHq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"sHv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"sHB" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"sHG" = ( -/obj/item/stack/sheet/mineral/plasma/thirty, -/obj/item/wrench, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/table, -/obj/machinery/requests_console/directional/south{ - department = "Telecomms Admin"; - name = "Telecomms Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/obj/effect/mapping_helpers/requests_console/information, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/plating, -/area/station/tcommsat/computer) -"sHJ" = ( -/obj/structure/table, -/obj/item/folder/blue{ - pixel_x = -18; - pixel_y = 3 - }, -/obj/item/paper_bin{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 3; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/office) -"sHL" = ( -/obj/structure/table/reinforced, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter) -"sHN" = ( -/obj/structure/sign/directions/medical/directional/north, -/obj/structure/sign/directions/science/directional/north{ - pixel_y = 24 - }, -/obj/structure/sign/directions/upload/directional/north{ - pixel_y = 40 - }, -/obj/structure/ladder, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor1/fore) -"sHP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"sHQ" = ( -/obj/structure/table, -/obj/item/analyzer{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/wrench{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"sHY" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"sId" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/curtain/cloth/fancy/mechanical/start_closed{ - id = "theater" - }, -/turf/open/floor/wood, -/area/station/service/theater) -"sIv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"sIx" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"sIz" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"sIA" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"sIB" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - elevator_mode = 1; - transport_linked_id = "fore_vator" - }, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"sIE" = ( -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"sIH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/break_room) -"sIN" = ( -/obj/structure/curtain, -/turf/open/floor/iron/showroomfloor, -/area/station/command/heads_quarters/qm) -"sIT" = ( -/obj/effect/landmark/start/captain, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/duct, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"sIX" = ( -/obj/structure/barricade/sandbags, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"sJg" = ( -/obj/machinery/button/door/directional/north{ - id = "dorms_lux_1_bolts"; - name = "Luxury Dorm 1 Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 6; - specialfunctions = 4 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"sJm" = ( -/turf/closed/wall/r_wall, -/area/station/science/ordnance/testlab) -"sJn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/medical/virology) -"sJp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"sJt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/official/random/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"sJu" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"sJA" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"sJE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/construction) -"sJK" = ( -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"sJM" = ( -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"sJO" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"sJU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"sKa" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/bed/medical/emergency, -/obj/machinery/iv_drip, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/office) -"sKm" = ( -/turf/closed/wall, -/area/station/medical/virology/isolation) -"sKn" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"sKs" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"sKt" = ( -/turf/closed/wall, -/area/station/maintenance/floor1/starboard/aft) -"sKu" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"sKw" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/vending/wardrobe/medi_wardrobe, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"sKz" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"sKC" = ( -/obj/effect/spawner/structure/window/hollow/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"sKG" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"sKI" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"sKN" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"sKR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"sKX" = ( -/obj/machinery/power/smes, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"sKZ" = ( -/obj/machinery/camera/motion/directional/west{ - c_tag = "Minisat - Aft" - }, -/turf/open/space/openspace, -/area/space/nearstation) -"sLe" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"sLl" = ( -/obj/effect/spawner/structure/window/hollow/end, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"sLm" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Science - Deck 3 Hall" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/sign/warning/xeno_mining/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"sLE" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Entrance" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"sLF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/cargo/miningdock) -"sLI" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"sLX" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"sLY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/rack, -/obj/item/stack/sheet/iron{ - amount = 30 - }, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/item/stack/package_wrap, -/obj/item/flashlight/flare, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"sMb" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"sMg" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"sMk" = ( -/obj/structure/cable, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/commons/fitness/recreation) -"sMm" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"sMp" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"sMw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"sMx" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"sMB" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"sMD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"sMI" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/newscaster/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"sMS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/pdapainter/supply, -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"sMY" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/starboard/aft) -"sNa" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"sNd" = ( -/obj/structure/bed, -/obj/item/bedsheet/rd, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"sNe" = ( -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"sNq" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"sNr" = ( -/obj/machinery/conveyor{ - id = "mailbelt" - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/sorting) -"sNE" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/iron, -/area/station/commons/fitness) -"sNJ" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"sNN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"sOj" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"sOq" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"sOs" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/lobby) -"sOy" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/aisat_interior) -"sOB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"sOD" = ( -/obj/effect/turf_decal/trimline/brown/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"sOI" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"sON" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/office) -"sOO" = ( -/obj/structure/sign/directions/security/directional/north{ - pixel_y = 40 - }, -/obj/structure/sign/directions/command/directional/north{ - pixel_y = 24 - }, -/obj/structure/sign/directions/vault/directional/north, -/obj/structure/chair/comfy/beige, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"sOT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"sOU" = ( -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"sPg" = ( -/obj/structure/cable, -/obj/structure/bed/dogbed/runtime, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/mob/living/basic/pet/cat/runtime, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"sPk" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"sPp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/button/door/directional/west{ - id = "viro-inner"; - name = "Inner Virology Lockdown"; - pixel_y = -8 - }, -/obj/machinery/button/door/directional/west{ - id = "viro-outer"; - name = "Outer Virology Lockdown"; - pixel_y = 8 - }, -/obj/machinery/button/door/directional/west{ - id = "viro-iso"; - name = "Isolation Bolts"; - normaldoorcontrol = 1; - pixel_x = -36; - specialfunctions = 4 - }, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"sPs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/turf/open/floor/plating, -/area/station/ai_monitored/security/armory) -"sPu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"sPJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"sPR" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"sPZ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"sQa" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"sQl" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"sQn" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"sQv" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/openspace, -/area/station/command/heads_quarters/hop) -"sQw" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/machinery/modular_computer/preset/engineering, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"sQD" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/engine_smes) -"sQG" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/structure/sign/directions/evac/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"sQH" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"sQT" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"sRd" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" - }, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"sRf" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/brig) -"sRh" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"sRn" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"sRz" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"sRG" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"sRH" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/vehicle/ridden/secway, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"sRO" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/bridge) -"sRR" = ( -/turf/closed/wall, -/area/station/medical/paramedic) -"sRZ" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"sSl" = ( -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"sSz" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"sSB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"sSK" = ( -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/multitool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"sSO" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/medical/pharmacy) -"sSR" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"sSV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/service/library/lounge) -"sSY" = ( -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"sTq" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"sTr" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"sTs" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"sTD" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"sTE" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"sTG" = ( -/obj/machinery/chem_dispenser/drinks, -/obj/structure/table/glass, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"sTQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/north, -/obj/structure/railing, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"sTT" = ( -/obj/structure/table/glass, -/obj/item/food/grown/carrot, -/obj/item/food/grown/wheat, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"sTU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Lower Library" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/service/library/lounge) -"sUj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"sUp" = ( -/obj/structure/railing/corner/end/flip{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"sUt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/arrows/white{ - dir = 1 - }, -/turf/open/floor/iron/large, -/area/station/command/gateway) -"sUy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"sUC" = ( -/obj/machinery/disposal/delivery_chute{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/corner{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"sUH" = ( -/obj/machinery/door/airlock/command{ - name = "Abandoned Bunks" - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (KEEP OUT)" - }, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"sUI" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"sUP" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/prison) -"sUZ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"sVb" = ( -/obj/machinery/power/floodlight, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/construction) -"sVc" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"sVh" = ( -/obj/structure/chair/comfy/brown, -/obj/machinery/camera/autoname/directional/west, -/obj/effect/landmark/start/assistant, -/obj/structure/sign/warning/yes_smoking/circle/directional/west, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"sVi" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"sVp" = ( -/obj/structure/transit_tube/curved{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"sVr" = ( -/obj/structure/closet/emcloset, -/obj/machinery/camera/directional/west{ - c_tag = "Science - Fore Entry" - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"sVv" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"sVQ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"sVU" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/hydroponics/glass{ - name = "Hydroponics" - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"sVW" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"sVY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"sWf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"sWm" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "hosprivacy"; - name = "Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/security/lockers) -"sWo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/security/range) -"sWp" = ( -/obj/effect/spawner/structure/window/hollow/middle, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"sWs" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/burgundy, -/turf/open/space/openspace, -/area/space/nearstation) -"sWt" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/table, -/obj/machinery/microwave, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"sWw" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"sWC" = ( -/obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/deck, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"sWF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"sWM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"sWP" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/chapel) -"sWQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "z1-maint-crates"; - name = "Abandoned Storage" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"sWW" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"sWZ" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"sXf" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/button/door/directional/north{ - id = "dorms_lux_2_bolts"; - name = "Luxury Dorm 2 Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -6; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"sXp" = ( -/obj/structure/rack, -/obj/item/radio/off{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/radio/off{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/machinery/button/door/directional/south{ - id = "armory"; - name = "Armory Shutters"; - req_access = list("armory") - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"sXE" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-9"; - location = "1-8" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"sXM" = ( -/obj/machinery/recharger, -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"sXR" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"sXV" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"sXX" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/tile, -/area/station/service/library) -"sYa" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"sYb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wideplating, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"sYc" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"sYf" = ( -/turf/open/floor/engine/plasma, -/area/station/engineering/atmos) -"sYh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/science/lobby) -"sYl" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"sYw" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/arrow_ccw{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"sYD" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"sYH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/airalarm/directional/north, -/obj/machinery/status_display/ai/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/engineering/engine_smes) -"sYI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/service/library, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/wood{ - name = "Library Book Returns" - }, -/turf/open/floor/iron/dark, -/area/station/service/library/printer) -"sYK" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"sYN" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"sYP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"sYU" = ( -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"sYX" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"sZb" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/firealarm/directional/north, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/engineering/lobby) -"sZd" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/obj/item/flashlight/lantern{ - pixel_y = 7 - }, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"sZf" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/light/directional/east, -/obj/structure/table/reinforced, -/obj/item/instrument/musicalmoth{ - name = "Congo Ralis" - }, -/obj/item/clothing/head/mothcap, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"sZh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"sZj" = ( -/obj/item/clothing/gloves/boxing, -/obj/structure/rack, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"sZo" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/obj/item/radio/intercom/directional/south{ - broadcasting = 1; - frequency = 1447; - listening = 0; - name = "Private Channel" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"sZy" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/table, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/cable_coil, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"sZD" = ( -/obj/effect/decal/cleanable/confetti, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"sZH" = ( -/obj/structure/mirror/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/sink/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"sZI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"sZL" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) -"sZN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/machinery/airalarm/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/security/mechbay) -"sZO" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"sZX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"sZY" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"tag" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/chair_flipped, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"tal" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"tam" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/chair/plastic, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"tat" = ( -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/aft) -"taD" = ( -/obj/machinery/door/airlock/external/glass, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "Gravgenrear" - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"taM" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"taW" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/musical_instrument, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"tbb" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/security/checkpoint/first) -"tbd" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"tbh" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"tbq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"tbt" = ( -/obj/structure/cable, -/obj/machinery/bouldertech/refinery/smelter, -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"tbu" = ( -/obj/effect/spawner/random/trash/hobo_squat, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"tbw" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/medical/psychology) -"tby" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/barricade/sandbags, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"tbF" = ( -/obj/effect/turf_decal/trimline/green/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"tbG" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/textured_large, -/area/station/engineering/atmos/office) -"tbI" = ( -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"tbX" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/security/brig) -"tch" = ( -/obj/machinery/autolathe, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"tcl" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/science/xenobiology/hallway) -"tcm" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/warden, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"tcs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"tcA" = ( -/obj/machinery/telecomms/server/presets/engineering, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"tcE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled, -/obj/structure/cable, -/obj/machinery/door/airlock/public/glass{ - name = "Tool Storage" - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"tcM" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/toolbox, -/obj/machinery/firealarm/directional/east, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"tcP" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"tda" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/service) -"tdb" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/mime{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"tde" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"tdf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"tdn" = ( -/obj/structure/curtain, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"tdt" = ( -/obj/machinery/light/directional/south, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"tdz" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Theater" - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"tdA" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"tdB" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"tdF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command/glass{ - name = "Council Chambers" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/general, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"tdG" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/station/service/theater) -"tdK" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"tdN" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"tec" = ( -/obj/machinery/door/airlock/public{ - id_tag = "public_toilets_b"; - name = "Toilet B" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/toilet) -"teq" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor1/starboard/aft) -"tev" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron/corner, -/area/station/engineering/atmos/office) -"tez" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"teB" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/machinery/door/airlock/atmos{ - name = "Atmospheric Substation" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"teN" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"teQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"teV" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"teW" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/service/chapel/office) -"tff" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/botanist, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"tfo" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"tfs" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"tfw" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"tfA" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/button/door/directional/east{ - id = "chem-lock-f"; - name = "Chemistry Fore Lockdown"; - pixel_y = 5; - req_access = list("pharmacy") - }, -/obj/machinery/button/door/directional/east{ - id = "chem-lock-a"; - name = "Chemistry Aft Lockdown"; - pixel_y = -4; - req_access = list("pharmacy") - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"tfD" = ( -/obj/structure/cable, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"tfE" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"tfL" = ( -/obj/structure/girder, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"tfR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"tfS" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/trimline/green/line{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"tfX" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"tgc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/station/hallway/floor1/aft) -"tgz" = ( -/obj/effect/landmark/start/prisoner, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"tgA" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/sign/poster/contraband/random/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"tgF" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/obj/item/stack/sheet/glass{ - amount = 30 - }, -/obj/structure/closet/crate/science{ - name = "Chamber Supplies" - }, -/obj/item/stack/ducts/fifty, -/obj/item/storage/toolbox/mechanical, -/obj/item/electronics/airlock, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"tgP" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"tgS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/floor2/starboard/aft) -"tgX" = ( -/obj/machinery/door/airlock/external{ - name = "Transport Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"tha" = ( -/obj/structure/chair{ - dir = 8; - name = "Defense" - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"thd" = ( -/obj/machinery/stasis, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"thi" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"thq" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"thu" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/turf/open/openspace, -/area/station/service/library) -"thw" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"thD" = ( -/obj/structure/table/reinforced, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"thM" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"thU" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 9 - }, -/obj/effect/spawner/random/structure/crate_loot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"tia" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tic" = ( -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"til" = ( -/obj/structure/sign/poster/contraband/grey_tide, -/turf/closed/wall, -/area/station/maintenance/floor3/port/aft) -"tim" = ( -/obj/machinery/telecomms/broadcaster/preset_left, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"tiX" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"tjc" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"tjd" = ( -/obj/structure/closet/secure_closet/freezer/cream_pie, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"tje" = ( -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/maintenance/floor4/port/fore) -"tji" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"tjA" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/structure/rack, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"tjF" = ( -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"tjJ" = ( -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/spawner/random/decoration/glowstick, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"tjM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/microwave, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/kitchen, -/area/station/command/heads_quarters/rd) -"tjN" = ( -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"tjP" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"tjV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/incident_display/delam/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"tkq" = ( -/turf/closed/wall, -/area/station/solars/starboard/aft) -"tkz" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/epinephrine{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/fluorine{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/iodine{ - pixel_x = 1 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"tkB" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor3/starboard) -"tkE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor1/aft) -"tkF" = ( -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"tkJ" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"tkZ" = ( -/obj/structure/cable, -/obj/machinery/conveyor/inverted{ - dir = 6; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"tld" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/mineral/plasma/five, -/obj/item/clothing/glasses/science, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"tlf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 5 - }, -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/button/door/incinerator_vent_atmos_main{ - pixel_x = -24; - pixel_y = -8 - }, -/obj/machinery/button/ignition/incinerator/atmos{ - pixel_y = -24 - }, -/obj/structure/chair/stool, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"tll" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/siding/purple{ - dir = 5 - }, -/obj/machinery/dna_scannernew, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"tlr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"tlt" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"tlJ" = ( -/obj/machinery/camera/autoname/directional/east, -/turf/open/space/openspace, -/area/space/nearstation) -"tlK" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"tlZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"tme" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/lawyer, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"tmk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/openspace, -/area/station/maintenance/floor4/port/aft) -"tml" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/prison) -"tmq" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"tms" = ( -/obj/machinery/modular_computer/preset/civilian{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"tmu" = ( -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"tmH" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"tmM" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"tmU" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/arrow_cw{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"tmW" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"tnj" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/security/general, -/obj/effect/mapping_helpers/mail_sorting/security/hos_office, -/obj/effect/mapping_helpers/mail_sorting/security/detectives_office, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"tnm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/electrified_grille, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"tnn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"tns" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"tnt" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"tnx" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/structure/sign/departments/science/alt/directional/east, -/turf/open/openspace, -/area/station/hallway/floor2/fore) -"tnz" = ( -/obj/effect/turf_decal/trimline/brown/arrow_cw{ - dir = 8 - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/trimline/brown/mid_joiner{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"tnA" = ( -/obj/machinery/light/cold/no_nightlight/directional/south, -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/service) -"tnC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"tnG" = ( -/obj/structure/closet{ - name = "Contraband Locker" - }, -/obj/effect/spawner/random/contraband/prison, -/obj/effect/spawner/random/contraband/prison, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"tnM" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"tnN" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"tnR" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Fore Entrance" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"tnS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/freezer{ - name = "Bathroom" - }, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"tnT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"tnV" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"tnX" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"tod" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"tof" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 8 - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"toh" = ( -/obj/machinery/holopad, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"toy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/range) -"toC" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tcomms) -"toH" = ( -/turf/open/openspace, -/area/station/maintenance/floor3/port/fore) -"toK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"toM" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"toO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/hydro, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"toQ" = ( -/obj/item/stack/arcadeticket, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"toX" = ( -/obj/machinery/door/airlock/grunge{ - name = "Prison Forestry" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/security/prison/garden) -"tpi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"tpw" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/port) -"tpy" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"tpz" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/requests_console/directional/east{ - department = "Cargo"; - name = "Cargo Request Console" - }, -/obj/effect/mapping_helpers/requests_console/announcement, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"tpD" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"tpS" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/book/manual/wiki/barman_recipes{ - pixel_x = -4; - pixel_y = 7 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"tpU" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"tpV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/science/genetics) -"tpW" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"tqi" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"tqj" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"tqr" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"tqu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"tqw" = ( -/turf/open/openspace, -/area/station/maintenance/floor2/starboard/fore) -"tqx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/secondary/exit) -"tqz" = ( -/obj/structure/destructible/cult/item_dispenser/archives/library, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"tqE" = ( -/obj/effect/turf_decal/trimline/white/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"tqK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/mineral/plastitanium/airless, -/area/space/nearstation) -"tqW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"trb" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"trf" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"trq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"trB" = ( -/obj/machinery/ai_slipper{ - uses = 10 - }, -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"trD" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"trE" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-3"; - location = "2-2" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"trF" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/floor1/fore) -"trH" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"trM" = ( -/obj/machinery/door/poddoor/preopen{ - id = "secure-gate"; - name = "Brig Shutters" - }, -/obj/machinery/prisongate, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"trP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/camera/emp_proof/directional/east, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"trV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"tsi" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"tsy" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"tsB" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/railing, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/structure/table/reinforced/rglass, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) -"tsN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/paramedic) -"ttb" = ( -/turf/closed/wall, -/area/station/hallway/floor2/aft) -"tti" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ttk" = ( -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"ttl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"tto" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/secondary/exit/escape_pod) -"ttt" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ttw" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/paper/guides/jobs/hydroponics, -/obj/effect/spawner/random/food_or_drink/seed{ - spawn_all_loot = 1; - spawn_random_offset = 1 - }, -/obj/effect/spawner/random/contraband/prison, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/prison/garden) -"ttE" = ( -/obj/structure/grille/broken, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"ttF" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood, -/area/station/medical/psychology) -"ttG" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"ttI" = ( -/obj/structure/closet/secure_closet/freezer/cream_pie, -/obj/item/radio/intercom/directional/north, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"ttJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"tua" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"tuc" = ( -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/siding/dark_blue, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters/window{ - id = "stationawaygate"; - name = "Gateway Access Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"tud" = ( -/obj/machinery/computer/security/qm{ - dir = 8 - }, -/obj/machinery/keycard_auth/wall_mounted/directional/north, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"tun" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/obj/item/stack/license_plates/empty/fifty, -/turf/open/floor/plating, -/area/station/security/prison/work) -"tup" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/carpet/red, -/area/station/service/library) -"tuv" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/aft) -"tuy" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"tuB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"tuH" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"tuM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/floor, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"tuT" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"tuX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"tve" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/landmark/navigate_destination/dorms, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"tvm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"tvH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/turf/open/floor/iron/textured_large, -/area/station/engineering/atmos/office) -"tvU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"tvW" = ( -/obj/structure/stairs/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor2/fore) -"tvX" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/hallway/floor1/aft) -"tvY" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"tvZ" = ( -/obj/structure/stairs/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"twa" = ( -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard/fore) -"twd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"twg" = ( -/obj/machinery/holopad, -/obj/effect/mapping_helpers/iannewyear, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"twp" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"twq" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"twv" = ( -/obj/machinery/requests_console/directional/east{ - department = "Xenobiology"; - name = "Xenobiology Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/machinery/shower/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/noslip, -/area/station/science/xenobiology) -"twx" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"twy" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"twz" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"twL" = ( -/obj/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"twM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"twO" = ( -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"twP" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"twQ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/table, -/obj/item/phone{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/item/storage/box{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/crowbar/red, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"twS" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"twY" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"twZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"txa" = ( -/turf/closed/wall, -/area/station/security/courtroom) -"txb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"txp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"txu" = ( -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"txv" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) -"txw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/decoration/glowstick, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"txB" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"txC" = ( -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"txF" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"txP" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_corner{ - dir = 4 - }, -/area/station/cargo/office) -"txQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"txR" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"txT" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Science - Firing Range"; - network = list("ss13","sciC") - }, -/obj/item/target/syndicate, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"txU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"tyb" = ( -/obj/machinery/door/airlock{ - name = "Bartender's Backroom" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/service/bar, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/service/bar) -"tyi" = ( -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"tyj" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"tyo" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/south, -/obj/machinery/biogenerator, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"tyu" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/flashlight/flare/candle, -/obj/item/food/grown/poppy{ - pixel_y = 16 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/chapel) -"tyK" = ( -/obj/machinery/door/window/left/directional/east{ - name = "Slime Storage"; - req_access = list("maint_tunnels") - }, -/turf/open/floor/grass, -/area/station/maintenance/floor3/starboard) -"tyP" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/service/library/private) -"tyQ" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/room) -"tyR" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"tzb" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/warning/pods/directional/west{ - name = "Escape Pods: Access Via Maint" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"tzf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grime, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"tzs" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"tzu" = ( -/obj/structure/statue/snow/snowman, -/turf/open/misc/asteroid/snow/standard_air, -/area/station/maintenance/floor2/port/aft) -"tzv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"tzA" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"tzB" = ( -/obj/structure/holosign/barrier, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"tzD" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/hydroponics/constructable{ - anchored = 0 - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"tzF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"tzU" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/space/nearstation) -"tzV" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"tAc" = ( -/obj/machinery/door/poddoor/shutters{ - id = "maint-shut"; - name = "Maintenance Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/furniture_parts, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"tAs" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/landmark/navigate_destination/sec, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"tAz" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"tAE" = ( -/obj/machinery/vending/cola/starkist, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"tAL" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"tAN" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/storage) -"tAW" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/decal/cleanable/ash, -/obj/effect/mob_spawn/corpse/human/charredskeleton, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"tBh" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/turf/closed/wall, -/area/station/engineering/atmos) -"tBj" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"tBk" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/visit) -"tBl" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/newscaster/directional/east, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"tBq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"tBr" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"tBv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"tBy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"tBN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"tBV" = ( -/obj/structure/mop_bucket/janitorialcart, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/service/janitor) -"tBY" = ( -/obj/machinery/chem_dispenser, -/obj/structure/sign/poster/official/periodic_table/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"tCj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/kitchen, -/area/station/command/heads_quarters/rd) -"tCq" = ( -/obj/machinery/light/small/directional/east, -/mob/living/basic/butterfly, -/turf/open/floor/grass, -/area/station/hallway/secondary/entry) -"tCB" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"tCC" = ( -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"tCF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"tCG" = ( -/obj/structure/sign/poster/contraband/lusty_xenomorph/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"tCS" = ( -/obj/effect/landmark/start/hangover, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"tCU" = ( -/obj/item/stack/tile/iron/white, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"tDa" = ( -/obj/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"tDb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"tDf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"tDp" = ( -/obj/structure/bonfire, -/obj/item/melee/moonlight_greatsword, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/stone, -/area/station/maintenance/floor3/starboard/fore) -"tDs" = ( -/turf/open/floor/iron, -/area/station/hallway/floor4/aft) -"tDv" = ( -/obj/structure/rack, -/obj/item/wrench, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"tDw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"tDB" = ( -/obj/structure/table/reinforced, -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"tDE" = ( -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"tDG" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/safe) -"tDH" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 5 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 8 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"tDI" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/grunge, -/turf/open/floor/iron/dark/side, -/area/station/maintenance/floor2/starboard/fore) -"tDK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light_switch/directional/south, -/obj/effect/landmark/start/atmospheric_technician, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/engineering/atmos/office) -"tDO" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"tDV" = ( -/obj/machinery/rnd/production/circuit_imprinter/department/science, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"tDX" = ( -/obj/structure/noticeboard/directional/north, -/obj/item/paper{ - name = "IMPORTANT NOTICE"; - default_raw_text = "Nanotrasen Mark II IV Drip Stands are to be used in the correct Nanotrasen Mark II IV Drip Stand Installation Location. Failure to do so can result in a 100 credit fine. Glory to Nanotrasen." - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tEc" = ( -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"tEe" = ( -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"tEh" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"tEi" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"tEo" = ( -/obj/machinery/atmospherics/components/binary/valve{ - dir = 1; - name = "Atmospherics-Supermatter Connection" - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/pumproom) -"tEv" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"tEG" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"tEI" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/turf/open/floor/pod, -/area/station/hallway/secondary/entry) -"tEK" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"tEW" = ( -/obj/machinery/camera/autoname/directional/west, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/fore) -"tEY" = ( -/obj/effect/spawner/random/trash/mopbucket, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"tFc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/shieldgen, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/cargo/miningdock) -"tFm" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"tFp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/red/corner, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/holopad, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"tFK" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/white/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/white/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"tFO" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"tFR" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"tFS" = ( -/obj/effect/landmark/navigate_destination/kitchen, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"tGa" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/explab) -"tGc" = ( -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"tGk" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/library) -"tGn" = ( -/turf/closed/wall, -/area/station/maintenance/floor3/port) -"tGq" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/project) -"tGv" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"tGz" = ( -/obj/item/storage/box/teargas{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/airalarm/directional/south, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"tGE" = ( -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"tGS" = ( -/obj/machinery/computer/scan_consolenew{ - dir = 8 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 6 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"tGW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/caution/stand_clear/white{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"tHk" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"tHn" = ( -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"tHs" = ( -/obj/structure/sink/kitchen/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"tHw" = ( -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"tHH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"tHL" = ( -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"tHZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/washing_machine, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/security/prison) -"tIc" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"tIe" = ( -/obj/structure/sign/directions/evac/directional/north{ - dir = 2; - pixel_y = 40 - }, -/obj/structure/sign/directions/engineering/directional/north{ - dir = 2 - }, -/obj/structure/sign/directions/supply/directional/north{ - dir = 2; - pixel_y = 24 - }, -/obj/structure/ladder, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor2/fore) -"tIj" = ( -/obj/structure/railing, -/obj/structure/chair, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"tIl" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"tIm" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "chem-lock-a"; - name = "Chemistry Shutters" - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"tIn" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/cargo/miningdock) -"tIu" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/closet/secure_closet/medical3, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"tIx" = ( -/obj/machinery/shower/directional/west, -/turf/open/floor/noslip, -/area/station/science/lobby) -"tIG" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"tIH" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/drinks/beer, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"tIK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"tIR" = ( -/obj/machinery/telecomms/server/presets/common, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"tIT" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"tIV" = ( -/obj/machinery/door/airlock/external{ - name = "Labor Camp Shuttle Airlock"; - shuttledocked = 1 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"tJi" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing/corner/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"tJj" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/structure/chair, -/obj/structure/reagent_dispensers/wall/peppertank/directional/north, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"tJn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"tJE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"tJG" = ( -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"tJL" = ( -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"tJN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/command/gateway) -"tJR" = ( -/obj/machinery/light/red/dim/directional/west, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"tJY" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"tJZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-11"; - location = "2-10" - }, -/mob/living/simple_animal/bot/secbot/beepsky/officer{ - name = "Beepsky the Second" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"tKc" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"tKe" = ( -/obj/machinery/light/directional/west, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor1/fore) -"tKl" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"tKq" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"tKs" = ( -/obj/structure/curtain, -/obj/structure/fans/tiny{ - name = "sink" - }, -/obj/item/soap/deluxe, -/obj/item/bikehorn/rubberducky, -/obj/machinery/shower/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/captain/private) -"tKA" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"tKJ" = ( -/obj/item/storage/toolbox/electrical{ - pixel_y = 10 - }, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/table, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"tKP" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"tKU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"tKY" = ( -/obj/structure/chair/stool/bamboo, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel) -"tLa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"tLb" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"tLf" = ( -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"tLg" = ( -/obj/effect/turf_decal/trimline/green/filled/end, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"tLk" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/hallway/floor4/fore) -"tLq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall, -/area/station/hallway/floor2/aft) -"tLr" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 10 - }, -/obj/effect/spawner/random/vending/snackvend, -/obj/structure/sign/warning/pods/directional/south, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"tLt" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"tLu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"tLF" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"tMd" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/structure/desk_bell{ - pixel_x = 6; - pixel_y = 10 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"tMk" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"tMp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/locker) -"tMK" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"tML" = ( -/obj/machinery/door/airlock/security{ - name = "Arrivals Checkpoint" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/secondary/entry) -"tNd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/half, -/turf/open/floor/iron/dark/side, -/area/station/security/brig) -"tNe" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"tNf" = ( -/obj/machinery/shieldgen, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"tNi" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/cigar, -/obj/effect/spawner/random/entertainment/cigarette_pack, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"tNA" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"tNC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) -"tNG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"tNK" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"tNO" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/delivery_chute{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"tNS" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"tNU" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"tOc" = ( -/obj/structure/table, -/obj/machinery/button/door{ - desc = "A door remote control switch for the exterior brig doors."; - id = "outerbrig"; - name = "Brig Exterior Door Control"; - normaldoorcontrol = 1; - pixel_x = 6; - pixel_y = 7; - req_access = list("armory") - }, -/obj/machinery/button/flasher{ - id = "secentranceflasher"; - name = "Brig Entrance Flasher"; - pixel_y = -3; - req_access = list("armory") - }, -/obj/machinery/button/door{ - desc = "A door remote control switch for the interior brig doors."; - id = "innerbrig"; - name = "Brig Interior Door Control"; - normaldoorcontrol = 1; - pixel_x = -6; - pixel_y = 7; - req_access = list("armory") - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/requests_console/directional/north{ - department = "Security"; - name = "Security Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"tOl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"tOn" = ( -/obj/structure/table, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5 - }, -/obj/item/razor{ - pixel_x = -8; - pixel_y = 3 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/station/security/execution/education) -"tOo" = ( -/obj/machinery/light/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"tOr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"tOE" = ( -/obj/machinery/duct, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"tOP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"tOS" = ( -/obj/effect/mapping_helpers/burnt_floor, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"tOV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"tOW" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light_switch/directional/north{ - pixel_y = 27; - pixel_x = 12 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"tPj" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/table/glass, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/structure/microscope, -/obj/structure/disposalpipe/segment, -/obj/item/biopsy_tool{ - pixel_x = -10; - pixel_y = 3 - }, -/turf/open/floor/iron, -/area/station/science/cytology) -"tPk" = ( -/turf/open/misc/sandy_dirt, -/area/station/maintenance/floor1/starboard) -"tPm" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor2/port/aft) -"tPu" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Bulb Storage" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"tPx" = ( -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"tPy" = ( -/obj/structure/cable, -/obj/machinery/brm, -/obj/machinery/conveyor{ - dir = 4; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"tPB" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/space/basic, -/area/space/nearstation) -"tPG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/blue, -/area/station/command/heads_quarters/hop) -"tPI" = ( -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"tPK" = ( -/obj/structure/sign/warning{ - pixel_y = 32 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"tPL" = ( -/obj/structure/disposalpipe/segment, -/turf/open/openspace, -/area/station/maintenance/floor3/port/aft) -"tPO" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"tQd" = ( -/turf/closed/wall, -/area/station/service/bar/atrium) -"tQf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/side, -/area/station/cargo/miningdock) -"tQk" = ( -/obj/machinery/computer/apc_control, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/command/heads_quarters/ce) -"tQl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"tQF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor3/fore) -"tQJ" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"tQK" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"tQM" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"tQN" = ( -/turf/closed/wall, -/area/station/medical/surgery/fore) -"tQO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"tQS" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/light/red/dim/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"tQT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"tRh" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"tRi" = ( -/obj/structure/filingcabinet, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"tRj" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"tRo" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"tRq" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"tRw" = ( -/obj/machinery/vending/cola, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"tRM" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = -4 - }, -/obj/item/stack/sheet/iron/fifty{ - pixel_x = -1; - pixel_y = -2 - }, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 4; - pixel_y = -1 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"tRT" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"tRU" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"tSf" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate/preopen, -/obj/item/mop, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"tSs" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/textured_corner{ - dir = 4 - }, -/area/station/cargo/sorting) -"tSD" = ( -/obj/structure/closet/mini_fridge{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment1) -"tSK" = ( -/obj/structure/chair/sofa/bench/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"tSU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"tTc" = ( -/obj/structure/cable, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"tTf" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 6 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"tTi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"tTn" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"tTv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"tTw" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"tTy" = ( -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"tTB" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/statue/snow/snowman, -/turf/open/misc/snow/actually_safe, -/area/station/hallway/floor2/fore) -"tTC" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"tTI" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/smart/simple/purple/hidden/layer1, -/obj/machinery/door/airlock/highsecurity{ - name = "Atmos Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/pumproom) -"tTJ" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/security/brig) -"tTS" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"tTV" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/door/airlock/wood{ - name = "Dining Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/general, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"tUa" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/tile/red/anticorner, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"tUc" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"tUg" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Laboratory A" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/science/research, -/turf/open/floor/iron/white, -/area/station/science/lab) -"tUq" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"tUx" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 6 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"tUG" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"tUT" = ( -/obj/structure/railing{ - dir = 10 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"tUW" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Security - Office Fore" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"tVa" = ( -/obj/structure/table, -/obj/item/folder/red{ - pixel_x = 14 - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/office) -"tVc" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"tVi" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/effect/landmark/start/paramedic, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"tVp" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/status_display/ai/directional/east, -/obj/structure/table/reinforced/titaniumglass, -/obj/item/piggy_bank/vault, -/turf/open/floor/circuit, -/area/station/ai_monitored/command/nuke_storage) -"tVq" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"tVz" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/desk_bell{ - pixel_x = 7 - }, -/obj/item/pai_card, -/turf/open/floor/iron/white, -/area/station/science/lab) -"tVB" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"tVC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"tVU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/service/chapel/funeral) -"tWn" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"tWo" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"tWv" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor2/aft) -"tWH" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"tWI" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/sign/departments/custodian/directional/north, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"tWK" = ( -/obj/machinery/computer/operating{ - dir = 1 - }, -/obj/machinery/vending/wallmed/directional/south, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"tWL" = ( -/obj/machinery/light/red/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"tWM" = ( -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"tWR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"tWX" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/hallway/secondary/entry) -"tXe" = ( -/turf/closed/wall, -/area/station/cargo/bitrunning/den) -"tXg" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"tXB" = ( -/obj/effect/turf_decal/siding/white, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"tXF" = ( -/obj/machinery/power/shuttle_engine/propulsion/burst{ - dir = 4 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"tXJ" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/railing/corner/end/flip{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"tXP" = ( -/obj/machinery/door/window/left/directional/north{ - name = "Hydroponics Garden"; - req_access = list("hydroponics") - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/light/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"tXR" = ( -/obj/machinery/button/door/directional/north{ - id = "visitation"; - name = "Visitation Shutters"; - pixel_x = 6; - req_access = list("brig") - }, -/obj/machinery/button/flasher{ - id = "visitorflash"; - pixel_x = -6; - pixel_y = 24 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"tXV" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/wood/tile, -/area/station/service/library) -"tXW" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) -"tYa" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/grass, -/area/station/security/courtroom) -"tYc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"tYg" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/lower) -"tYl" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "radshutnorth" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"tYn" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"tYo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/purple/end{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"tYF" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/decal/cleanable/dirt, -/obj/item/shard, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"tYV" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"tYW" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor4/fore) -"tZq" = ( -/obj/structure/chair/stool/directional/south, -/obj/effect/turf_decal/stripes, -/obj/machinery/newscaster/directional/north, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/textured_large, -/area/station/maintenance/disposal) -"tZz" = ( -/obj/machinery/door/airlock{ - id_tag = "dorms_2_bolts"; - name = "Standard Dorm 2" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room2) -"tZD" = ( -/turf/closed/wall, -/area/station/engineering/atmos/pumproom) -"tZF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"tZJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/gibs/core, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"tZO" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/cable, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"tZX" = ( -/obj/machinery/door/airlock/security{ - name = "Permabrig Visitation" - }, -/turf/open/floor/iron, -/area/station/security/prison) -"tZY" = ( -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"tZZ" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/bed/medical/anchored, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"uae" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/medical_kiosk, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"uaC" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"uaD" = ( -/obj/structure/hedge, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/sign/departments/holy/directional/north, -/turf/open/floor/grass, -/area/station/hallway/floor3/aft) -"uaE" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"uaG" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"uaJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"uaK" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/iron/white, -/area/station/science/server) -"uaV" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"uaX" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lower) -"uba" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"ubi" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"ubt" = ( -/obj/structure/chair/comfy{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"ubu" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"ubP" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"ubR" = ( -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"ubW" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ubZ" = ( -/obj/effect/turf_decal/trimline/brown/arrow_ccw{ - dir = 10 - }, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/cargo/lobby) -"ucf" = ( -/obj/effect/turf_decal/tile/blue/anticorner, -/turf/open/floor/iron/textured_corner{ - dir = 1 - }, -/area/station/medical/chemistry) -"ucm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/camera/directional/south{ - c_tag = "Genetics Lab" - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"uco" = ( -/obj/effect/turf_decal/siding/white{ - dir = 5 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"ucA" = ( -/turf/open/space/openspace, -/area/space) -"ucB" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"ucN" = ( -/obj/machinery/door/poddoor/massdriver_chapel, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"ucS" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"ucY" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"udb" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"udn" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"udq" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"udw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Science Maintenance" - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"udx" = ( -/obj/machinery/light/small/directional/west, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"udy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/mineral/wood, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"udC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"udE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"udF" = ( -/obj/effect/turf_decal/tile/green/anticorner{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/secondary/exit/escape_pod) -"udU" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/maintenance/disposal/incinerator) -"udZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"uek" = ( -/obj/structure/flora/bush/fullgrass/style_random, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/floor/grass, -/area/station/hallway/secondary/service) -"uep" = ( -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"ueu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"uex" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmos Emergency Supplies" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/floor3/port/fore) -"ueA" = ( -/obj/machinery/camera/autoname/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"ueC" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"ueG" = ( -/obj/item/healthanalyzer{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/epinephrine{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/syringe, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"ueJ" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"ueO" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/white, -/area/station/science/lower) -"ueS" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"ueW" = ( -/obj/machinery/newscaster/directional/south, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"ueX" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"ufl" = ( -/turf/closed/wall, -/area/station/commons/storage/art) -"ufm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/maintenance/floor1/starboard/aft) -"ufs" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"ufL" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"ufN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"ufW" = ( -/obj/item/stack/sheet/paperframes/fifty, -/obj/structure/table/wood, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"ugb" = ( -/obj/structure/marker_beacon/burgundy, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 6 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"ugn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"ugp" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"ugs" = ( -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor2/fore) -"ugv" = ( -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/punching_bag, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"ugD" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"ugP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"ugU" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/cargo/storage) -"ugV" = ( -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/aft) -"ugW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/theater) -"uhg" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"uhj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 8 - }, -/obj/item/storage/toolbox/emergency, -/obj/machinery/bluespace_vendor/directional/south, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"uhl" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"uhr" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/science/xenobiology/hallway) -"uhu" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/spawner/random/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/assembly/signaler{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/screwdriver{ - pixel_y = -3 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"uhw" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"uhx" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"uhB" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"uhC" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"uhF" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"uhG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"uhK" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"uhU" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"uif" = ( -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"uik" = ( -/obj/structure/mirror/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"uim" = ( -/obj/structure/closet/crate/mod, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"uiv" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/brig) -"uiE" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"uiF" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/table/reinforced, -/obj/structure/cable, -/obj/item/phone{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"uiM" = ( -/obj/structure/table/wood, -/obj/item/lighter, -/obj/effect/turf_decal/trimline/blue/end, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"uiR" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"uiS" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/courtroom) -"uiT" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 10 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/telecomms, -/area/station/tcommsat/server) -"uiY" = ( -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/trimline/white/filled/line{ - color = "#065C93"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/command/bridge) -"ujc" = ( -/obj/structure/stairs/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"ujd" = ( -/obj/item/surgery_tray/full{ - pixel_y = 13 - }, -/obj/item/reagent_containers/medigel/sterilizine{ - pixel_x = 1 - }, -/obj/item/reagent_containers/syringe{ - pixel_x = -7 - }, -/obj/item/stack/medical/bone_gel{ - pixel_x = 10 - }, -/obj/effect/turf_decal/box/white, -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"ujl" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer4{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"ujr" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"ujs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"ujt" = ( -/obj/item/kirbyplants/organic/plant10, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/office) -"ujv" = ( -/obj/docking_port/stationary/mining_home/common/northstar{ - dir = 2 - }, -/turf/open/floor/plating/airless, -/area/station/hallway/secondary/exit) -"ujC" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured, -/area/station/cargo/storage) -"ujI" = ( -/obj/structure/railing, -/turf/open/space/openspace, -/area/space/nearstation) -"ujQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance/storage) -"ujT" = ( -/obj/item/cigbutt/cigarbutt, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"ukd" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"ukf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 10 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"ukC" = ( -/obj/structure/grille, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"ukI" = ( -/obj/structure/flora/tree/jungle/small/style_2, -/turf/open/floor/grass, -/area/station/science/genetics) -"ukK" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"ukR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ukT" = ( -/obj/structure/table, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 1 - }, -/area/station/medical/abandoned) -"ulh" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigpack_uplift{ - pixel_x = 6 - }, -/obj/item/storage/fancy/cigarettes/cigpack_carp{ - pixel_x = -3 - }, -/obj/item/lighter, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ulo" = ( -/obj/structure/closet/emcloset, -/obj/effect/landmark/start/hangover/closet, -/turf/open/floor/iron, -/area/station/commons/fitness) -"ulp" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"uls" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"ulu" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/duct, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"ulv" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/mining/glass{ - name = "Mail Sorting" - }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/effect/mapping_helpers/airlock/access/any/supply/mining, -/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"ulB" = ( -/obj/structure/hedge, -/turf/open/floor/carpet/green, -/area/station/service/kitchen/diner) -"ulN" = ( -/obj/structure/chair/pew{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"ulU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"ulW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/trimline/neutral/end{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"umb" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Pen 6"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"umg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"umo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/weather/dirt{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/service/library/garden) -"umw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"umC" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"umG" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"umQ" = ( -/obj/machinery/door/airlock/hatch{ - name = "External Path Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"umT" = ( -/obj/machinery/atmospherics/pipe/bridge_pipe/dark/visible/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"umZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/displaycase/forsale/kitchen, -/obj/structure/table/reinforced, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"una" = ( -/obj/effect/turf_decal/siding/wideplating_new/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating_new/corner{ - dir = 1 - }, -/obj/machinery/light/cold/no_nightlight/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"unb" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/primary) -"unf" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"unh" = ( -/obj/structure/mirror/directional/west, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/table/wood, -/obj/item/toy/figure/clown, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"unm" = ( -/obj/effect/landmark/start/clown, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/chair/wood{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"uns" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"unv" = ( -/obj/structure/bed, -/obj/effect/decal/cleanable/dirt, -/obj/item/bedsheet/patriot, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"unC" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"unE" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/scientist, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"unQ" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"unV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/siding/wideplating, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"unW" = ( -/obj/machinery/firealarm/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"uov" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"uoS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood/tile, -/area/station/service/library/printer) -"upc" = ( -/obj/machinery/atmospherics/components/trinary/filter/critical{ - dir = 4 - }, -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"uph" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"upo" = ( -/obj/structure/table/wood, -/obj/item/canvas/twentyfour_twentyfour, -/obj/item/canvas/twentyfour_twentyfour, -/obj/item/canvas/twentyfour_twentyfour, -/obj/item/canvas/twentyfour_twentyfour, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"upx" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"upG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"upP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"upS" = ( -/obj/item/chair/plastic, -/obj/structure/sign/poster/contraband/random/directional/north, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"upT" = ( -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"uqc" = ( -/turf/closed/wall/r_wall, -/area/station/command/teleporter) -"uqd" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"uqi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"uqt" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/hos) -"uqu" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"uqv" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"uqz" = ( -/obj/structure/rack, -/obj/effect/spawner/random/techstorage/service_all, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"uqA" = ( -/obj/structure/dresser, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/apartment2) -"uqC" = ( -/obj/structure/table, -/obj/machinery/vending/wallmed/directional/west, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/fore) -"uqT" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"ure" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"urf" = ( -/obj/effect/turf_decal/tile/blue/anticorner{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/ai_monitored/turret_protected/ai) -"urv" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Xenobio - Holding Pen" - }, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"urO" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"urS" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"usa" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/camera/directional/west{ - c_tag = "Command - Research Director's Quarters #1" - }, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/obj/machinery/newscaster/directional/west, -/obj/item/kirbyplants/random/dead/research_director, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/rd) -"use" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"usf" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/obj/machinery/duct, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"usj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Storage Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"usl" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"usp" = ( -/obj/effect/turf_decal/trimline/blue/filled/end{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/office) -"usq" = ( -/obj/structure/bed, -/obj/item/toy/talking/griffin, -/obj/item/bedsheet/orange, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) -"ust" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"usB" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/iron/textured_corner{ - dir = 4 - }, -/area/station/hallway/secondary/entry) -"usF" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/bot_white/right, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"usI" = ( -/obj/structure/chair/pew/right{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"usK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"usN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"usS" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"usV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"usX" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"utl" = ( -/obj/structure/closet/secure_closet/medical1, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/noticeboard/directional/north, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"utm" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/engine_smes) -"utu" = ( -/obj/machinery/disposal/delivery_chute{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"utw" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/small/directional/south, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/funeral) -"utE" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"utJ" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/court, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/service/lawyer, -/obj/machinery/door/airlock/security{ - name = "Law Hall" - }, -/turf/open/floor/iron/dark, -/area/station/service/lawoffice) -"utT" = ( -/obj/structure/hedge/opaque, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/grass, -/area/station/service/library/private) -"utU" = ( -/obj/effect/landmark/start/mime, -/obj/structure/chair/wood{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"utV" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-2"; - location = "2-1" - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/fore) -"uuh" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"uuu" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/prison) -"uuz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"uuF" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"uuG" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"uuH" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"uuM" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"uuO" = ( -/turf/open/floor/iron/white/smooth_corner, -/area/station/commons/fitness/recreation) -"uuU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"uvv" = ( -/obj/effect/turf_decal/stripes, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/cargo/storage) -"uvD" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uvE" = ( -/obj/structure/sign/departments/medbay/alt/directional/east, -/turf/open/openspace, -/area/station/hallway/floor2/fore) -"uvG" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"uvJ" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"uvQ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"uwa" = ( -/obj/machinery/oven/range, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"uwf" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"uwl" = ( -/obj/machinery/computer/slot_machine, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"uwm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"uwr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"uws" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/engineering/atmos) -"uwA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark/corner, -/area/station/security/brig) -"uwG" = ( -/obj/item/stack/sheet/iron/five, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"uwP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"uwQ" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 5 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"uxf" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/execution/transfer) -"uxj" = ( -/obj/structure/mirror/directional/north{ - pixel_y = 29 - }, -/obj/structure/sink/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"uxl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"uxt" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_y = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"uxw" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"uxD" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"uxF" = ( -/obj/machinery/status_display/ai/directional/west, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"uxI" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"uxQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"uxR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"uxT" = ( -/turf/closed/wall, -/area/station/tcommsat/computer) -"uxW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"uxX" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/structure/window/spawner/directional/west, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"uxZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"uyf" = ( -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"uyg" = ( -/obj/effect/spawner/random/structure/grille, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"uyh" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"uym" = ( -/obj/machinery/door/airlock/grunge{ - name = "Cell 2" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"uyu" = ( -/obj/machinery/computer/station_alert{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/office) -"uyD" = ( -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter) -"uyH" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/structure/reagent_dispensers/wall/peppertank/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"uyK" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 6 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"uyL" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"uyQ" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"uyX" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"uza" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"uzn" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"uzq" = ( -/obj/effect/spawner/random/engineering/material, -/obj/structure/closet, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"uzB" = ( -/obj/structure/table/reinforced, -/obj/item/screwdriver, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"uzE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"uzH" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"uzK" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"uzN" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"uzP" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/south, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"uzZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"uAc" = ( -/obj/structure/mirror/directional/east, -/obj/structure/table/wood, -/obj/item/toy/figure/mime, -/obj/item/food/baguette, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"uAe" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"uAf" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"uAg" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin/carbon{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/pen, -/obj/effect/turf_decal/trimline/red/filled, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/third) -"uAi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"uAo" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"uAW" = ( -/obj/structure/closet/secure_closet/medical2, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"uBi" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"uBr" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"uBE" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/dark/small, -/area/station/science/xenobiology) -"uBG" = ( -/obj/structure/rack, -/obj/item/soap, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/miningoffice) -"uBN" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/trimline/white/filled/line{ - color = "#065C93"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/bridge) -"uBR" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/plasteel/fifty{ - pixel_x = -11 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uCb" = ( -/obj/effect/turf_decal/trimline/green/corner, -/obj/structure/sign/poster/official/random/directional/west, -/obj/machinery/light_switch/directional/north, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"uCe" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4; - filter_type = list(/datum/gas/nitrogen) - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"uCl" = ( -/obj/machinery/door/airlock/external{ - name = "Common Mining Dock" - }, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit) -"uCm" = ( -/obj/machinery/door/poddoor/incinerator_atmos_main, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"uCn" = ( -/obj/structure/window/spawner/directional/south, -/obj/machinery/suit_storage_unit/rd, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"uCo" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/station/command/heads_quarters/qm) -"uCv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"uCw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"uCC" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"uCP" = ( -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"uCU" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"uCV" = ( -/obj/effect/landmark/start/medical_doctor, -/obj/structure/chair/sofa/right/brown, -/turf/open/floor/carpet/royalblue, -/area/station/medical/break_room) -"uCW" = ( -/obj/structure/curtain/cloth/fancy/mechanical{ - id = "restaurant_booth_a"; - name = "Booth A" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"uDb" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"uDc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"uDr" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"uDA" = ( -/obj/structure/chair/sofa/corp{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"uDB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"uDD" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 4 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"uDE" = ( -/turf/open/openspace, -/area/station/maintenance/floor4/starboard) -"uDH" = ( -/obj/machinery/door/airlock/hatch{ - name = "Escape Pods" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/escape_pod) -"uDL" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/south, -/obj/machinery/suit_storage_unit/hos, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"uDN" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Engine" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"uDP" = ( -/obj/structure/cable, -/obj/machinery/power/solar_control, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/turf/open/floor/iron/corner, -/area/station/maintenance/solars/starboard/fore) -"uDR" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/power/smes/super/full, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"uDZ" = ( -/obj/machinery/light/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"uEb" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"uEo" = ( -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/station/maintenance/solars/port/aft) -"uEu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 9 - }, -/obj/machinery/camera/preset/ordnance{ - c_tag = "Supermatter Waste"; - light_range = 0; - network = list("waste","engine") - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"uED" = ( -/obj/effect/turf_decal/tile/yellow/half, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/edge, -/area/station/engineering/atmos) -"uEF" = ( -/turf/closed/wall, -/area/station/security/prison/work) -"uEG" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"uEK" = ( -/obj/effect/decal/cleanable/blood/tracks, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"uEL" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/storage) -"uEO" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"uET" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/cyan/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uEY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"uFc" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"uFh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"uFk" = ( -/obj/structure/table/optable, -/obj/machinery/defibrillator_mount/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"uFw" = ( -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) -"uFI" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"uFO" = ( -/obj/structure/window/spawner/directional/south, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"uFQ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"uFR" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"uFU" = ( -/obj/item/rack_parts, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"uGc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"uGe" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/item/flashlight/lamp/green, -/turf/open/floor/wood/tile, -/area/station/service/library) -"uGt" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"uGO" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/south{ - name = "Access Queue" - }, -/obj/machinery/door/poddoor/preopen{ - id = "hopblast"; - name = "HoP Blast Door" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Access Desk"; - req_access = list("hop") - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/hop) -"uGP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"uGQ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/vending/coffee, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"uGS" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/obj/machinery/bluespace_vendor/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"uHa" = ( -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"uHe" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/circuit/telecomms, -/area/station/science/server) -"uHf" = ( -/obj/structure/mirror/directional/north, -/obj/structure/sink/directional/south, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/white, -/area/station/science/lower) -"uHq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"uHu" = ( -/obj/effect/turf_decal/trimline/white/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"uHv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"uHx" = ( -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"uHE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-15"; - location = "3-14" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"uHI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"uHQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"uHR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/modular_computer/preset/cargochat/science{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"uHT" = ( -/obj/structure/chair/office/light, -/obj/structure/sink/directional/west, -/turf/open/floor/iron/white, -/area/station/security/medical) -"uHV" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"uHZ" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"uIh" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"uIi" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/portable_atmospherics/pump, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uIk" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"uIm" = ( -/obj/machinery/door/airlock/hatch{ - name = "Storage Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"uIn" = ( -/obj/structure/bed/double{ - dir = 4 - }, -/obj/item/bedsheet/ce/double{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/ce) -"uIp" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"uIq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/yellow/end{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"uIr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"uIw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"uIx" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/port/fore) -"uIy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"uIz" = ( -/obj/machinery/computer/bank_machine{ - dir = 1 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/blue/full, -/turf/open/floor/iron/textured_large, -/area/station/ai_monitored/command/nuke_storage) -"uID" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"uIL" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"uIM" = ( -/obj/machinery/light/red/dim/directional/west, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"uIN" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/third) -"uIP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"uIQ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/science/xenobiology/hallway) -"uJa" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"uJb" = ( -/obj/structure/grille, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"uJi" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"uJn" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"uJo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"uJq" = ( -/obj/machinery/vatgrower{ - dir = 4 - }, -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/machinery/status_display/ai/directional/north, -/turf/open/misc/dirt/jungle, -/area/station/science/cytology) -"uJr" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/grass/fairy, -/area/station/maintenance/floor2/port/fore) -"uJs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/aft) -"uJA" = ( -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"uJD" = ( -/obj/structure/table/wood, -/obj/item/food/grown/banana/bunch, -/turf/open/floor/grass, -/area/station/science/genetics) -"uJE" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/structure/water_source/puddle{ - pixel_y = 3 - }, -/obj/effect/landmark/start/hangover, -/obj/machinery/light/small/directional/west, -/turf/open/misc/beach/sand, -/area/station/hallway/secondary/entry) -"uJG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/silver{ - name = "Bathroom" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"uJM" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uJN" = ( -/obj/machinery/computer/records/medical/laptop{ - dir = 1; - pixel_y = 4 - }, -/obj/structure/table/glass, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/iron/white, -/area/station/security/medical) -"uJR" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"uJW" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"uJX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"uKl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"uKn" = ( -/obj/structure/stairs/north, -/turf/open/floor/plating, -/area/station/science/lobby) -"uKs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/office) -"uKt" = ( -/obj/structure/cable/multilayer/multiz, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/fore) -"uKz" = ( -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"uKC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"uKD" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"uKE" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/glass, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"uKL" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 5 - }, -/turf/open/floor/iron/corner{ - dir = 8 - }, -/area/station/engineering/lobby) -"uKO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"uKR" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"uKT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"uKW" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"uLj" = ( -/obj/structure/railing/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"uLk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"uLB" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - initialize_directions = 8; - volume_rate = 200 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 8 - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"uLH" = ( -/obj/structure/table/wood, -/obj/item/modular_computer/laptop/preset/civilian, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/room4) -"uLO" = ( -/obj/structure/showcase/cyborg/old{ - dir = 4; - pixel_x = -9; - pixel_y = 2 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat/service) -"uLQ" = ( -/obj/structure/chair/pew/left{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"uLR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"uMb" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"uMk" = ( -/obj/effect/spawner/random/entertainment/deck, -/obj/structure/table, -/obj/machinery/light/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit) -"uMl" = ( -/obj/structure/window/spawner/directional/west, -/obj/machinery/vending/wardrobe/engi_wardrobe, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"uMu" = ( -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor3/fore) -"uMz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"uMK" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"uMP" = ( -/obj/machinery/fax{ - fax_name = "Chief Engineer's Office"; - name = "Chief Engineer's Fax Machine" - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/ce) -"uMR" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/ladder, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"uMS" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"uMU" = ( -/obj/structure/chair/sofa/bench{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"uMW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"uNb" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room4) -"uNd" = ( -/obj/structure/table, -/obj/item/stack/arcadeticket, -/obj/item/stack/arcadeticket, -/obj/machinery/light_switch/directional/west, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"uNl" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/iron/white, -/area/station/security/medical) -"uNm" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/status_display/ai/directional/west, -/obj/structure/table/reinforced/titaniumglass, -/obj/item/maneki_neko{ - pixel_y = 4 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/command/nuke_storage) -"uNp" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"uNq" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"uNx" = ( -/obj/effect/turf_decal/trimline/green/corner, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"uNC" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"uNF" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"uNL" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"uNU" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ - dir = 8 - }, -/turf/open/misc/grass, -/area/station/maintenance/floor1/starboard) -"uNZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"uOc" = ( -/obj/effect/turf_decal/tile/neutral/full, -/obj/machinery/portable_atmospherics/pipe_scrubber, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/science/ordnance/testlab) -"uOd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/courtroom) -"uOe" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/dresser, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"uOh" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"uOl" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"uOo" = ( -/obj/structure/table, -/obj/machinery/light/small/directional/east, -/obj/item/clipboard, -/obj/item/folder/yellow, -/obj/item/electronics/firealarm, -/obj/item/stack/sheet/glass, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"uOs" = ( -/obj/structure/transport/linear/public, -/obj/effect/landmark/transport/transport_id{ - specific_transport_id = "fore_vator" - }, -/obj/effect/abstract/elevator_music_zone{ - linked_elevator_id = "fore_vator"; - range = 2 - }, -/turf/open/floor/plating/elevatorshaft, -/area/station/hallway/floor1/fore) -"uOx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/checkpoint/first) -"uOL" = ( -/obj/structure/sign/painting{ - pixel_x = 32 - }, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/brig) -"uOM" = ( -/obj/machinery/computer/atmos_alert{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"uOS" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/yellow, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/item/pen, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"uOT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"uOV" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"uOW" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"uOY" = ( -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/grass, -/area/station/science/cytology) -"uPc" = ( -/obj/structure/bed/medical/anchored{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/sign/poster/official/random/directional/east, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"uPd" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/service) -"uPj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"uPm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/moisture_trap{ - pixel_y = 12 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"uPA" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"uPL" = ( -/obj/item/stack/sheet/iron, -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"uPM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"uPQ" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"uPT" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"uPU" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"uPY" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port) -"uQe" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"uQf" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"uQA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat) -"uQD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"uQE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"uQI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"uQK" = ( -/obj/structure/bed{ - dir = 4 - }, -/obj/item/bedsheet/hop{ - dir = 4 - }, -/obj/effect/landmark/start/head_of_personnel, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"uQL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"uQN" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"uQS" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"uRb" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"uRg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"uRn" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"uRy" = ( -/obj/machinery/hydroponics/soil, -/obj/item/radio/intercom/prison/directional/west, -/turf/open/misc/dirt/jungle, -/area/station/security/prison/garden) -"uRE" = ( -/obj/machinery/door/airlock/engineering{ - name = "Auxiliary Base Supplies" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/effect/mapping_helpers/airlock/access/all/engineering/aux_base, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"uRO" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"uRQ" = ( -/obj/structure/table/wood, -/obj/structure/sign/poster/official/random/directional/east, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"uSm" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/blue, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/landmark/start/cyborg, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"uSw" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"uSC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/bouldertech/refinery, -/obj/machinery/conveyor{ - dir = 8; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"uSL" = ( -/obj/effect/turf_decal/bot, -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) -"uSN" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"uSW" = ( -/obj/machinery/ticket_machine/directional/north, -/obj/effect/landmark/navigate_destination/hop, -/turf/open/floor/iron/dark/smooth_half, -/area/station/hallway/floor4/fore) -"uTb" = ( -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"uTc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron, -/area/station/security/prison) -"uTh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"uTk" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"uTx" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"uTB" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/command/teleporter) -"uTG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/chem_master/condimaster, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"uTH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"uTI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet, -/area/station/hallway/secondary/entry) -"uTL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"uTP" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"uTW" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/carpet/royalblue, -/area/station/commons/dorms/apartment2) -"uTX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/office) -"uUg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/grass, -/area/station/science/genetics) -"uUh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"uUj" = ( -/obj/structure/transit_tube/curved{ - dir = 8 - }, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"uUw" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"uUE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/brig) -"uUF" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor2/aft) -"uUG" = ( -/obj/machinery/door/airlock/engineering{ - name = "Science Substation" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/maintenance/solars/starboard/fore) -"uUU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Theater Backroom" - }, -/obj/effect/turf_decal/siding/wideplating/corner{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/any/service/theatre, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"uUV" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"uVh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/security/checkpoint) -"uVj" = ( -/turf/open/floor/catwalk_floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"uVk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"uVz" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 1 - }, -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"uVI" = ( -/obj/structure/closet/secure_closet/freezer/kitchen{ - req_access = list("bar") - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"uVK" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"uVL" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 9 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"uVM" = ( -/mob/living/basic/pet/penguin/emperor{ - desc = "Spaghetti."; - name = "Spaghetti" - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uVN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/science/robotics/lab) -"uVR" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/aft) -"uVU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/fore) -"uVV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"uVY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/tcommsat/computer) -"uWi" = ( -/obj/machinery/chem_master{ - name = "Hydroanalysis Device" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"uWl" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"uWm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 9 - }, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8 - }, -/obj/effect/mapping_helpers/mail_sorting/engineering/general, -/obj/effect/mapping_helpers/mail_sorting/engineering/ce_office, -/obj/effect/mapping_helpers/mail_sorting/engineering/atmospherics, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"uWn" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/transit_tube/curved{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat) -"uWx" = ( -/obj/item/multitool, -/obj/effect/turf_decal/delivery, -/obj/structure/table, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"uWy" = ( -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"uWC" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/disposal) -"uWM" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"uWU" = ( -/obj/structure/falsewall, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"uXf" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/wood, -/area/station/medical/psychology) -"uXi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"uXl" = ( -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/robotics/lab) -"uXo" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/turf/open/floor/plating, -/area/station/ai_monitored/security/armory) -"uXw" = ( -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/obj/item/stack/rods{ - amount = 3 - }, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/aft) -"uXA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"uXG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"uXL" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"uXM" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 9 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark/corner, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"uXR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/mapping_helpers/ianbirthday, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"uXU" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/mob/living/basic/mouse/brown/tom, -/turf/open/floor/iron, -/area/station/security/prison) -"uXX" = ( -/turf/closed/wall, -/area/station/commons/toilet) -"uYe" = ( -/obj/effect/turf_decal/trimline/red/corner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/lobby) -"uYg" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"uYl" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/emergency_shield/regenerating, -/turf/open/floor/plating, -/area/station/cargo/drone_bay) -"uYB" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"uYI" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"uYM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"uZc" = ( -/turf/closed/wall, -/area/station/medical/abandoned) -"uZf" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"uZg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"uZk" = ( -/turf/closed/wall/mineral/silver{ - name = "padded wall" - }, -/area/station/medical/psychology) -"uZm" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"uZo" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"uZr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/red/dim/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"uZF" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor2/starboard/aft) -"uZY" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"vae" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"vaf" = ( -/obj/machinery/telecomms/processor/preset_one, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"vag" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"val" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Fore Outpost" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"vap" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/power/energy_accumulator/tesla_coil/anchored, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible/layer2, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"vau" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"vay" = ( -/obj/machinery/chem_master{ - name = "Hydroanalysis Device" - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron/white, -/area/station/cargo/miningdock) -"vaz" = ( -/obj/structure/bed/double, -/obj/effect/spawner/random/bedsheet/double, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/landmark/start/shaft_miner, -/turf/open/floor/carpet/green, -/area/station/cargo/miningdock) -"vaA" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/middle/brown{ - dir = 8 - }, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"vaB" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "hosprivacy"; - name = "Privacy Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/hos) -"vaC" = ( -/obj/effect/turf_decal/trimline/green/warning, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"vaD" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"vaG" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"vaH" = ( -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/cigar, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"vaN" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "coffinbelt" - }, -/obj/structure/closet/crate/coffin, -/obj/machinery/light/directional/north, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"vaR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"vaW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4, -/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"vbg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"vbB" = ( -/obj/effect/turf_decal/tile/green/opposingcorners{ - dir = 8 - }, -/obj/effect/turf_decal/box, -/obj/machinery/holopad, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"vbD" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/table, -/obj/item/dest_tagger{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/folder/yellow, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/smooth, -/area/station/cargo/office) -"vbP" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/science/genetics) -"vbQ" = ( -/obj/machinery/door/airlock/science{ - name = "Xenocytology" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/xenobio, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/science/cytology) -"vbT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"vcd" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"vce" = ( -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 2 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"vcg" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"vcr" = ( -/turf/closed/wall, -/area/station/maintenance/floor1/port/aft) -"vcu" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"vcy" = ( -/obj/structure/sign/poster/contraband/random/directional/south, -/obj/machinery/door/window/brigdoor/security/cell/left/directional/north{ - id = "cell-1"; - name = "1st Floor Prisoner Tube" - }, -/obj/machinery/disposal/delivery_chute{ - dir = 1; - name = "prisoner transport" - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"vcM" = ( -/obj/machinery/duct, -/obj/structure/sink/kitchen/directional/west, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/cargo/miningdock) -"vcT" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/white/arrow_ccw{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"vcY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"vdb" = ( -/obj/effect/turf_decal/trimline/white/arrow_cw{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"vdc" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) -"vdd" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/trimline/red, -/turf/open/floor/engine/n2, -/area/station/engineering/atmos) -"vdf" = ( -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/aft) -"vdn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"vds" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen{ - pixel_y = 2 - }, -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron, -/area/station/science/auxlab) -"vdt" = ( -/obj/machinery/vending/assist, -/turf/open/floor/iron/dark/smooth_large, -/area/station/commons/storage/primary) -"vdP" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vdQ" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"vdU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"ved" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"veA" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"veB" = ( -/obj/effect/landmark/start/hangover, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"veF" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/railing/corner, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"veG" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/fore) -"veI" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"veQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"veT" = ( -/obj/machinery/power/supermatter_crystal/engine, -/obj/effect/turf_decal/stripes/full, -/obj/effect/turf_decal/stripes/red/full, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"vfa" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/flashlight/flare/candle, -/obj/item/food/grown/poppy{ - pixel_x = -16; - pixel_y = 2 - }, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"vfc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"vfi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"vfG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) -"vfI" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/holopad, -/turf/open/floor/iron/white, -/area/station/science/lab) -"vfV" = ( -/obj/item/radio/intercom/directional/east, -/obj/item/stack/sheet/iron/fifty, -/obj/structure/rack, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"vfY" = ( -/obj/structure/table/reinforced, -/obj/item/plate{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/knife/butcher, -/obj/structure/sign/poster/official/cleanliness/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vga" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"vgb" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"vgm" = ( -/obj/structure/reagent_dispensers/fueltank/large, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vgo" = ( -/obj/machinery/vending/wardrobe/science_wardrobe, -/turf/open/floor/iron/white, -/area/station/science/lower) -"vgx" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"vgH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/holosign/barrier/engineering, -/turf/open/floor/iron/smooth, -/area/station/construction) -"vgX" = ( -/obj/effect/turf_decal/trimline/red/line, -/obj/effect/turf_decal/trimline/white/warning, -/obj/machinery/air_sensor/nitrous_tank, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"vgZ" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"vhd" = ( -/obj/machinery/smartfridge, -/obj/machinery/door/firedoor, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/service/kitchen) -"vhj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"vhq" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"vhr" = ( -/obj/structure/bed, -/obj/item/bedsheet/ian, -/obj/item/binoculars, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"vhy" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"vhL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/research_director, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/rd) -"vhN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"vhP" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 8 - }, -/obj/structure/tank_holder/emergency_oxygen, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white/smooth_edge{ - dir = 8 - }, -/area/station/medical/abandoned) -"vhS" = ( -/obj/machinery/light/red/dim/directional/south, -/turf/open/openspace, -/area/station/maintenance/floor4/port) -"vhV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/filled, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"vio" = ( -/obj/structure/chair/stool/bar/directional/north, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"vip" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/iron, -/area/station/commons/fitness) -"viv" = ( -/obj/structure/table/reinforced, -/obj/item/food/cake/chocolate{ - food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/drug/space_drugs = 10); - name = "large pot brownie" - }, -/obj/item/food/cake/chocolate{ - food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/drug/space_drugs = 10); - name = "large pot brownie"; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"viA" = ( -/obj/machinery/door/morgue{ - name = "Confession Booth" - }, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel/office) -"viG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/railing/corner/end/flip{ - dir = 8 - }, -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"viL" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"viS" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/machinery/firealarm/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"viX" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"viZ" = ( -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor3/fore) -"vjc" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plating/reinforced{ - initial_gas_mix = "TEMP=2.7" - }, -/area/station/science/ordnance/bomb) -"vjl" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"vjm" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"vjp" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"vju" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"vjv" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit) -"vjC" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/glass, -/obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"vjJ" = ( -/obj/machinery/door/airlock/wood{ - name = "Bedroom" - }, -/turf/open/floor/carpet/red, -/area/station/commons/dorms/apartment1) -"vjK" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"vjQ" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/yellow{ - dir = 5 - }, -/obj/item/flashlight/flare/candle, -/turf/open/floor/carpet/orange, -/area/station/service/chapel/office) -"vjT" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"vjX" = ( -/obj/effect/turf_decal/trimline/purple/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"vkb" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"vko" = ( -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/office) -"vkr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"vkz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 6 - }, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"vkO" = ( -/obj/structure/closet/firecloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vkW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"vkZ" = ( -/obj/structure/closet/secure_closet/warden, -/obj/item/gun/energy/laser, -/obj/item/radio/intercom/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"vlb" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"vlf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/prison) -"vlh" = ( -/obj/structure/fluff/shower_drain, -/obj/effect/turf_decal/trimline/neutral, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/freezer, -/area/station/hallway/secondary/service) -"vlm" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "workshop-sci"; - name = "Workshop Shutters" - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"vlo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"vlq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"vlD" = ( -/obj/machinery/light/directional/east, -/obj/effect/landmark/start/hangover, -/turf/open/floor/grass, -/area/station/hallway/floor4/fore) -"vlP" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"vlQ" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"vlV" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 9 - }, -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"vlX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/carpet/red, -/area/station/maintenance/floor3/port/aft) -"vlY" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"vmc" = ( -/obj/machinery/door/airlock{ - id_tag = "nsminingdorm3"; - name = "Room 3" - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"vmr" = ( -/turf/closed/wall, -/area/station/engineering/atmos/hfr_room) -"vmA" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 6 - }, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"vmH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"vmM" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vmX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/structure/rack, -/obj/item/circuitboard/machine/processor{ - pixel_y = 10 - }, -/obj/item/circuitboard/machine/oven, -/obj/item/circuitboard/machine/microwave{ - pixel_y = -10 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"vnd" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"vnp" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"vnt" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"vnv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/starboard) -"vnz" = ( -/obj/structure/closet/firecloset, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"vnE" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"vnG" = ( -/obj/effect/turf_decal/siding/white/corner, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"vnI" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) -"vnK" = ( -/turf/closed/wall, -/area/station/maintenance/floor2/starboard) -"vnM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 6 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"vnR" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"vnX" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vnY" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"vog" = ( -/obj/structure/bed/maint{ - pixel_y = 14 - }, -/obj/effect/mob_spawn/corpse/human/skeleton{ - pixel_y = 14 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/innards{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/cigbutt/cigarbutt{ - desc = "A manky old cigar butt. This one is used as a sort of calling card among Last Edict agents, to mark their victims."; - name = "liberation brand cigar"; - pixel_x = -17; - pixel_y = 13 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"voj" = ( -/obj/item/kirbyplants/random, -/obj/structure/sign/departments/evac/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"vok" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/effect/spawner/random/trash/garbage{ - spawn_scatter_radius = 1 - }, -/obj/item/pen/survival, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"vom" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"voA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"voB" = ( -/obj/item/radio/intercom/directional/north, -/obj/structure/table/reinforced/rglass, -/obj/item/storage/medkit/emergency{ - pixel_x = -4 - }, -/obj/item/storage/medkit/emergency, -/obj/item/storage/medkit/emergency{ - pixel_x = 4 - }, -/obj/effect/turf_decal/siding/white, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"voG" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"voH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/maintenance/floor1/starboard/aft) -"voO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"voT" = ( -/turf/closed/wall, -/area/station/maintenance/floor4/port/fore) -"voX" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"vpa" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"vpb" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/fore) -"vph" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"vpj" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"vpn" = ( -/obj/machinery/biogenerator, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard) -"vpp" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"vpy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/shower/directional/west, -/turf/open/floor/noslip, -/area/station/science/lobby) -"vpA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"vpD" = ( -/obj/structure/table, -/obj/item/restraints/legcuffs/beartrap{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/restraints/legcuffs/beartrap{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/janitor) -"vpE" = ( -/obj/structure/table, -/obj/item/folder/blue{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark, -/area/station/security/office) -"vqb" = ( -/obj/structure/bed{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"vqd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"vqe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/contraband/landmine, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"vqp" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"vqv" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"vqx" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing/corner, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"vqz" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/directional/east{ - c_tag = "Science - Containment Lab" - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plating, -/area/station/science/auxlab/firing_range) -"vqB" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/service/library/private) -"vqC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"vqF" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Airmix to Distro" - }, -/turf/open/floor/iron/white, -/area/station/engineering/atmos) -"vqN" = ( -/obj/effect/spawner/random/trash/grime, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"vqQ" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/supply/visible, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"vqS" = ( -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/decal/cleanable/dirt, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"vrh" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/commons/storage/primary) -"vrk" = ( -/obj/structure/table, -/obj/machinery/newscaster/directional/east, -/obj/machinery/camera/directional/south{ - c_tag = "Departure Lounge - Security Post" - }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/taperecorder{ - pixel_x = 4 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/tile/red/diagonal_edge, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"vrn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"vrs" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/detectives_office/private_investigators_office) -"vrt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/mob/living/simple_animal/bot/secbot/pingsky, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/aisat_interior) -"vrw" = ( -/obj/effect/spawner/random/trash/bin, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"vrA" = ( -/turf/closed/wall, -/area/station/medical/morgue) -"vrJ" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/teleporter) -"vrM" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"vrN" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"vrU" = ( -/obj/effect/spawner/random/structure/closet_empty, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"vrX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"vse" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"vsg" = ( -/obj/structure/table/wood, -/obj/item/folder/yellow{ - pixel_x = -6 - }, -/obj/item/stamp/head/qm{ - pixel_x = -6 - }, -/obj/structure/cable, -/obj/item/flashlight/lamp/green{ - pixel_x = 6; - pixel_y = 15 - }, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"vsj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/effect/landmark/navigate_destination/dockesc, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"vsk" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"vsn" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"vsv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"vsx" = ( -/turf/closed/wall, -/area/station/security/detectives_office/private_investigators_office) -"vsy" = ( -/obj/machinery/camera/directional/west, -/obj/structure/chair/sofa/corner/brown{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"vsK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"vsL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vsM" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"vsN" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"vsO" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"vsP" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"vsU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"vsY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"vtj" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/item/folder/yellow, -/obj/item/wrench, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"vtt" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"vtH" = ( -/obj/effect/turf_decal/trimline/white/filled/corner{ - color = "#065C93"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/command/bridge) -"vtO" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"vtS" = ( -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/machinery/computer/atmos_control/mix_tank, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vtW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"vud" = ( -/obj/machinery/firealarm/directional/west, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #4"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vuf" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/contraband/cannabis, -/obj/effect/spawner/random/contraband/narcotics, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/effect/spawner/random/contraband/armory, -/obj/effect/spawner/random/contraband, -/obj/structure/closet/secure_closet{ - name = "contraband locker"; - req_access = list("armory") - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"vuk" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"vuo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"vuq" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"vuB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"vuD" = ( -/obj/effect/turf_decal/trimline/white/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"vuG" = ( -/obj/machinery/camera/autoname/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"vuI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"vuN" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"vuU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"vuW" = ( -/obj/effect/spawner/random/structure/crate, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vuZ" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2o{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/cafeteria, -/area/station/engineering/atmos) -"vva" = ( -/obj/structure/sign/poster/random/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"vvb" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/service/library/garden) -"vvm" = ( -/obj/structure/closet{ - name = "janitorial supplies" - }, -/obj/item/pushbroom, -/obj/item/mop, -/obj/item/reagent_containers/cup/bucket, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"vvs" = ( -/obj/machinery/duct, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/structure/closet/radiation, -/turf/open/floor/plating, -/area/station/science/genetics) -"vvx" = ( -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hydroponics/glass, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"vvC" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/stripes/white/box, -/turf/open/floor/plating/airless, -/area/station/solars/port/aft) -"vvJ" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/north, -/turf/open/floor/wood, -/area/station/maintenance/floor1/port/aft) -"vvK" = ( -/obj/machinery/vending/engivend, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/engineering/lobby) -"vvX" = ( -/obj/machinery/door_buttons/access_button{ - idDoor = "virology_airlock_exterior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_y = 24; - req_access = list("virology") - }, -/obj/effect/turf_decal/trimline/green/filled/arrow_cw{ - dir = 9 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"vvY" = ( -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/south, -/obj/structure/sign/departments/aisat/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor4/aft) -"vwc" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"vwd" = ( -/obj/structure/railing{ - dir = 1 - }, -/mob/living/basic/crab, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"vwn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vwB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"vwD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"vwJ" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"vwN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/valve/layer4{ - dir = 8; - name = "distro access" - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"vwQ" = ( -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"vwW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/office) -"vxn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/security/eva) -"vxq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"vxx" = ( -/turf/open/floor/iron/dark/textured_edge{ - dir = 1 - }, -/area/station/maintenance/floor1/starboard/aft) -"vxy" = ( -/turf/closed/wall, -/area/station/service/lawoffice) -"vxz" = ( -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/purple/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"vxG" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port) -"vxH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, -/area/station/cargo/miningdock) -"vxK" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/science/explab) -"vxT" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-14"; - location = "3-13" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"vxU" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"vxY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-10"; - location = "1-9" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"vyc" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 10 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/airless, -/area/station/science/ordnance/freezerchamber) -"vym" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/fore) -"vyn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"vyu" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" - }, -/obj/machinery/duct, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"vyz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"vyA" = ( -/obj/effect/turf_decal/trimline/green/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"vyF" = ( -/obj/item/chair, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"vyH" = ( -/obj/machinery/biogenerator, -/obj/machinery/camera/directional/south{ - c_tag = "Genetics Lab" - }, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"vyK" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"vyL" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"vyN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"vyQ" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark/corner{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Atmos Tank #4 - CO2"; - dir = 1; - network = list("ss13","engine") - }, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"vyR" = ( -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/ai) -"vyW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"vyZ" = ( -/obj/effect/turf_decal/trimline/brown/arrow_ccw, -/turf/open/floor/iron/dark/side, -/area/station/cargo/lobby) -"vzo" = ( -/obj/machinery/netpod, -/obj/structure/railing, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) -"vzu" = ( -/obj/effect/landmark/start/psychologist, -/obj/structure/sign/poster/official/random/directional/south, -/obj/structure/chair/sofa/left/brown{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"vzv" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"vzw" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"vzx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"vzM" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"vzN" = ( -/obj/structure/chair/sofa/middle/brown{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"vzO" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"vzP" = ( -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 8 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"vzS" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"vzY" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"vzZ" = ( -/turf/open/misc/dirt/jungle, -/area/station/science/cytology) -"vAd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/item/kirbyplants/photosynthetic{ - pixel_y = 10 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"vAe" = ( -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"vAg" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"vAp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/blue/line, -/obj/structure/cable, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"vAs" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/light_switch/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"vAy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"vAA" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"vAB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/wrapping, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"vAS" = ( -/obj/effect/mapping_helpers/airlock/access/any/supply/mining, -/obj/machinery/door/airlock/multi_tile/public/glass{ - name = "Xenoflora" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"vAU" = ( -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"vAW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"vBa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"vBd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/crayon{ - icon_state = "body" - }, -/obj/effect/decal/cleanable/chem_pile, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/service/abandoned_gambling_den) -"vBw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"vBA" = ( -/obj/machinery/door/airlock/medical{ - name = "Safe Habitation B" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/medical/psychology) -"vBB" = ( -/obj/machinery/light/small/red/directional/west, -/turf/open/openspace, -/area/station/service/library/private) -"vBI" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"vBN" = ( -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/shoes/magboots, -/obj/structure/rack, -/obj/structure/window/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) -"vBP" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/engineering/tool, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/maintenance/floor2/starboard/fore) -"vBS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit) -"vCy" = ( -/obj/effect/spawner/random/structure/table_fancy, -/obj/structure/sign/painting/large/library_private{ - pixel_y = -30 - }, -/obj/machinery/door/window/brigdoor/left/directional/north{ - name = "Secure Art Storage"; - req_access = list("library") - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"vCG" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/grille/broken, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"vCH" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/restroom/directional/south, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"vCI" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/machinery/door/window/right/directional/west, -/turf/open/floor/grass, -/area/station/security/courtroom) -"vCP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/security/brig) -"vDf" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"vDg" = ( -/obj/structure/window/plasma/spawner/directional/south, -/obj/machinery/rnd/server, -/turf/open/floor/circuit/telecomms, -/area/station/science/server) -"vDo" = ( -/turf/open/floor/plating/foam, -/area/station/maintenance/floor3/starboard/fore) -"vDu" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/side, -/area/station/engineering/atmos) -"vDw" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) -"vDC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"vDJ" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/vending/wardrobe/det_wardrobe, -/turf/open/floor/iron/grimy, -/area/station/security/detectives_office) -"vDL" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"vDN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/vending/coffee, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"vDV" = ( -/obj/machinery/door/window/right/directional/south{ - name = "Lights Access"; - req_access = list("bar") - }, -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/floor/grass, -/area/station/service/bar/atrium) -"vEa" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/port) -"vEg" = ( -/obj/effect/mapping_helpers/airlock/access/any/security/court, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/security{ - name = "Law Hall" - }, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"vEr" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 10 - }, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"vEt" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/spawner/random/structure/grille, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"vEx" = ( -/turf/open/floor/iron/textured_corner{ - dir = 1 - }, -/area/station/cargo/sorting) -"vED" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"vEN" = ( -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/project) -"vER" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"vES" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"vFw" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"vFC" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/cargo/miningdock) -"vFE" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"vFJ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"vFS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"vFV" = ( -/obj/effect/turf_decal/trimline/blue/end, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/machinery/door/airlock/command/glass{ - name = "Queue Access" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopline"; - name = "Queue Shutters" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"vGi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"vGk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"vGt" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing/corner/end{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"vGv" = ( -/obj/machinery/vending/boozeomat, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/bar) -"vGy" = ( -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"vGO" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/obj/item/knife/plastic, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"vGT" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"vHa" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"vHd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"vHi" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"vHm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white, -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/grimy, -/area/station/science/xenobiology/hallway) -"vHq" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 8 - }, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"vHz" = ( -/obj/machinery/field/generator, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"vHC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal/incinerator) -"vHI" = ( -/obj/effect/spawner/random/trash/mess, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"vHN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit) -"vHQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/modular_computer/preset/engineering{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"vHX" = ( -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"vIa" = ( -/obj/effect/turf_decal/trimline/purple/corner, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"vIb" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 8 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/turf_decal/trimline/white/mid_joiner{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"vIh" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"vIn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"vIo" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/office) -"vIp" = ( -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) -"vIr" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/security/detectives_office) -"vIx" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/floor/grass, -/area/station/hallway/floor1/fore) -"vIC" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/integrated_circuit/loaded/speech_relay, -/obj/item/integrated_circuit/loaded/hello_world{ - pixel_x = -3; - pixel_y = 15 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"vIE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"vIF" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/item/radio/off{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/radio/off{ - pixel_x = -6; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"vIO" = ( -/obj/effect/decal/cleanable/glitter, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"vIS" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"vIZ" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"vJf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"vJk" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/cultivator/rake, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"vJs" = ( -/obj/machinery/light/red/dim/directional/north, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"vJu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"vJC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"vJE" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"vJF" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/computer/records/medical/laptop{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"vJH" = ( -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"vJS" = ( -/obj/machinery/requests_console/directional/north{ - department = "Law Office"; - name = "Lawyer Requests Console" - }, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"vKe" = ( -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/grass, -/area/station/service/chapel) -"vKf" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"vKp" = ( -/obj/machinery/telecomms/server/presets/service, -/turf/open/floor/circuit/telecomms, -/area/station/tcommsat/server) -"vKs" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"vKv" = ( -/obj/item/stack/ducts/fifty, -/obj/structure/rack, -/turf/open/floor/iron/textured_large, -/area/station/medical/chemistry) -"vKz" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/sign/departments/psychology/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"vKA" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"vKB" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"vKY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Lower Library" - }, -/turf/open/floor/iron, -/area/station/service/library/lounge) -"vLa" = ( -/obj/machinery/power/turbine/turbine_outlet{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/maintenance/disposal/incinerator) -"vLb" = ( -/obj/structure/table, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"vLd" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/decal/cleanable/xenoblood, -/turf/open/floor/engine, -/area/station/science/cytology) -"vLv" = ( -/obj/structure/hedge, -/turf/open/floor/iron/dark, -/area/station/science/genetics) -"vLx" = ( -/obj/machinery/ai_slipper{ - uses = 8 - }, -/turf/open/floor/circuit, -/area/station/ai_monitored/turret_protected/ai_upload) -"vLz" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"vLJ" = ( -/obj/effect/decal/cleanable/ash, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"vLL" = ( -/obj/structure/dresser, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"vLM" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/mercury{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/nitrogen{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/oxygen{ - pixel_x = 1 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"vLP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"vLW" = ( -/turf/closed/wall/r_wall, -/area/station/command/heads_quarters/captain) -"vLX" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"vMg" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor4/aft) -"vMh" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"vMk" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/rack, -/obj/item/pushbroom, -/obj/item/mop, -/obj/item/reagent_containers/cup/bucket, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"vMm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"vMF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"vNa" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/maintenance/floor4/port/fore) -"vNj" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/dark/full, -/turf/open/floor/iron/dark/smooth_large, -/area/station/engineering/storage/tech) -"vNo" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/landmark/start/medical_doctor, -/obj/structure/chair/office/light, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"vNq" = ( -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"vNr" = ( -/obj/effect/decal/cleanable/glitter, -/obj/effect/turf_decal/siding/blue/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"vNM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"vNN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"vNO" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/solars/starboard/fore) -"vNP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"vNR" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/mob/living/basic/goat/pete, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"vNS" = ( -/obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/turf_decal/tile/dark_blue{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/prison/garden) -"vNV" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"vNY" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"vNZ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/cargo/warehouse) -"vOf" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/wood/large, -/area/station/service/kitchen/kitchen_backroom) -"vOn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"vOo" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"vOs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/science/auxlab) -"vOt" = ( -/obj/machinery/door/airlock/hatch{ - name = "Robotics Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"vOv" = ( -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"vOx" = ( -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 5 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"vOy" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, -/obj/structure/window/spawner/directional/east, -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"vOE" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"vOK" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"vOM" = ( -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"vON" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"vOW" = ( -/obj/structure/disposaloutlet{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"vOZ" = ( -/obj/machinery/iv_drip, -/obj/structure/mirror/directional/south, -/obj/structure/sign/poster/official/cleanliness/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"vPg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"vPj" = ( -/obj/machinery/light_switch/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"vPu" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port) -"vPA" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional, -/turf/open/floor/plating, -/area/station/service/chapel/office) -"vPE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/warning, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"vPH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark/textured_corner, -/area/station/hallway/floor1/aft) -"vPN" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/structure/table/reinforced/rglass, -/obj/item/paper_bin, -/obj/item/stamp/head/cmo, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"vPP" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/ordnance_freezer_chamber_input{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"vQb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/theater) -"vQd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/machinery/computer/atmos_control/nitrous_tank, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/cafeteria, -/area/station/engineering/atmos) -"vQf" = ( -/obj/structure/table, -/obj/item/ai_module/reset/purge, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/spawner/random/aimodule/neutral{ - pixel_x = 15 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"vQg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/yellow/line, -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"vQi" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"vQs" = ( -/obj/effect/turf_decal/siding/white/corner, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/large, -/area/station/command/heads_quarters/rd) -"vQt" = ( -/obj/structure/table/bronze, -/obj/item/food/grown/poppy{ - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/station/service/chapel) -"vQx" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/window/spawner/directional/south, -/obj/structure/window/spawner/directional/north, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/grass, -/area/station/hallway/secondary/exit/departure_lounge) -"vQR" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/ai_monitored/command/nuke_storage) -"vQY" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/effect/turf_decal/tile/brown/opposingcorners, -/obj/effect/turf_decal/stripes/white/line, -/obj/machinery/component_printer, -/turf/open/floor/iron/dark, -/area/station/science/circuits) -"vQZ" = ( -/obj/machinery/door/airlock{ - id_tag = "dorms_lux_2_bolts"; - name = "Luxury Dorm 2" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment2) -"vRa" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/light/red/dim/directional/west, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"vRj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"vRm" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"vRn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"vRq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port/fore) -"vRv" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"vRC" = ( -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"vRF" = ( -/obj/vehicle/sealed/mecha/ripley/paddy/preset, -/turf/open/floor/iron/recharge_floor, -/area/station/security/mechbay) -"vRO" = ( -/turf/open/openspace, -/area/station/hallway/floor4/aft) -"vRQ" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/construction) -"vRR" = ( -/obj/machinery/newscaster/directional/east, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/checker, -/area/station/commons/vacant_room/commissary) -"vSa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"vSg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/navigate_destination/cargo, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"vSA" = ( -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"vSB" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/aft) -"vSE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 4 - }, -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"vSG" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron{ - amount = 10 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"vSQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"vSW" = ( -/obj/structure/sign/poster/official/moth_hardhat/directional/east, -/obj/structure/rack, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/escape_pod) -"vSX" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/kitchen/diner) -"vTf" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"vTj" = ( -/obj/structure/closet/secure_closet/brig/genpop, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/obj/item/card/id/advanced/prisoner/one, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/brig) -"vTk" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/effect/mapping_helpers/airlock/access/any/service/kitchen, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/silver/glass{ - name = "Kitchen" - }, -/turf/open/floor/iron/dark, -/area/station/service/kitchen) -"vTo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/dorms/room1) -"vTt" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/drone_bay) -"vTL" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/station/commons/fitness/recreation) -"vTN" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"vTS" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"vTV" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/structure/sign/warning/gas_mask/directional/east, -/turf/open/floor/engine/xenobio, -/area/station/science/xenobiology) -"vTY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"vUc" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"vUd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"vUt" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vUv" = ( -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/west, -/obj/structure/sign/departments/security/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"vUG" = ( -/obj/structure/easel, -/obj/item/canvas/twentyfour_twentyfour, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor3/aft) -"vUK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/half, -/area/station/engineering/atmos/hfr_room) -"vUQ" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/structure/window/spawner/directional/east, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"vUS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/sofa/right/brown{ - dir = 4 - }, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"vVf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/commons/storage/primary) -"vVo" = ( -/obj/structure/window/plasma/spawner/directional/south, -/obj/machinery/rnd/server/master, -/turf/open/floor/circuit/telecomms, -/area/station/science/server) -"vVu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor4/aft) -"vVB" = ( -/obj/structure/chair{ - dir = 4; - name = "Prosecution" - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"vVD" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"vVG" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"vVH" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen/abandoned) -"vVJ" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"vVR" = ( -/obj/structure/table/reinforced/rglass, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/airalarm/directional/north, -/obj/item/food/pizzaslice/mothic_five_cheese, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_y = 7; - pixel_x = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/lobby) -"vVT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/service/chapel) -"vVW" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"vWa" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"vWg" = ( -/obj/machinery/computer/scan_consolenew{ - dir = 8 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 5 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"vWj" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"vWn" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/item/radio/intercom/prison/directional/north, -/obj/item/toy/cards/deck/wizoff{ - pixel_x = -7 - }, -/obj/item/toy/cards/deck/kotahi{ - pixel_x = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"vWp" = ( -/obj/effect/turf_decal/tile/brown/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"vWw" = ( -/turf/closed/wall/r_wall, -/area/station/security/office) -"vWz" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"vWD" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"vWE" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/security/interrogation) -"vWF" = ( -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/fore) -"vWG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/entry) -"vWP" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/power_store/cell/high, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) -"vWQ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"vWS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"vWX" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/mortar, -/obj/item/pestle, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"vXc" = ( -/obj/structure/grille/broken, -/obj/effect/turf_decal/trimline/red/line{ - dir = 5 - }, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"vXh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/green/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"vXm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/holopad, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"vXn" = ( -/obj/machinery/button/door/directional/south{ - id = "survhang"; - name = "Hangar Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 10 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"vXv" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing/corner, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"vXx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/light/small/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"vXH" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"vXM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"vXP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/item/radio/intercom/directional/west, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"vXT" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"vXY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"vYl" = ( -/obj/effect/turf_decal/siding/wideplating, -/obj/machinery/chem_heater/withbuffer, -/obj/machinery/requests_console/directional/west{ - department = "Pharmacy"; - name = "Pharmacy Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/ore_update, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron/dark/textured, -/area/station/medical/pharmacy) -"vYw" = ( -/obj/effect/turf_decal/trimline/neutral/warning, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"vYD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"vYE" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"vYH" = ( -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer1{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/yellow/visible/layer2, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"vYJ" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "AI Chamber entrance shutters"; - name = "AI Chamber Entrance Shutters" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/command/ai_upload, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"vYV" = ( -/obj/item/radio/intercom/directional/west, -/obj/machinery/doppler_array{ - dir = 6 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"vYX" = ( -/obj/item/radio/intercom/directional/west{ - freerange = 1; - listening = 0; - name = "Common Channel"; - pixel_y = 4 - }, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - listening = 0; - name = "Custom Channel" - }, -/obj/item/radio/intercom/directional/east{ - freerange = 1; - listening = 0; - name = "Common Channel"; - pixel_y = 4 - }, -/obj/effect/landmark/start/ai, -/turf/open/floor/circuit/red, -/area/station/ai_monitored/turret_protected/ai) -"vZb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"vZg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen/diner) -"vZi" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/item/storage/medkit/regular, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"vZl" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"vZn" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 - }, -/turf/open/water/beach{ - desc = "Refreshing!"; - name = "treated water" - }, -/area/station/maintenance/floor1/port/aft) -"vZq" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"vZw" = ( -/obj/structure/closet/crate/engineering, -/obj/effect/turf_decal/bot, -/obj/item/storage/box/lights/mixed{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/lights/mixed, -/obj/item/flashlight, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"vZC" = ( -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/fore) -"vZF" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"vZJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/sign/directions/evac/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"vZK" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"vZU" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"wat" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"wau" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"waI" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/binary/pump/off{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"waJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison/visit) -"waV" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/security/prison/safe) -"waX" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"waY" = ( -/obj/effect/decal/cleanable/glass, -/obj/item/reagent_containers/cup/glass/drinkingglass/filled/soda{ - pixel_x = 5; - pixel_y = -3 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/department/engine/atmos) -"wba" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/structure/sink/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"wbf" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"wbg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"wbk" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/commons/dorms/room1) -"wbo" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"wbp" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"wbr" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"wbx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/stripes, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"wbR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/closet/radiation, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"wbS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lower) -"wbT" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"wci" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/restaurant_portal/bar, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"wcm" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/start/security_officer, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/office) -"wcn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"wcs" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/light/warm/directional/west, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"wcA" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/glass, -/obj/item/paper_bin, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/pen/red{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/pen/blue{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"wcC" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"wcF" = ( -/obj/structure/closet/crate, -/obj/item/food/breadslice/plain, -/obj/item/food/breadslice/plain, -/obj/item/food/breadslice/plain, -/obj/item/food/grown/potato, -/obj/item/food/grown/potato, -/obj/item/food/grown/onion, -/obj/item/food/grown/onion, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/effect/turf_decal/tile/green/half/contrasted, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"wcG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"wcH" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"wcL" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"wcQ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 4 - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"wcR" = ( -/obj/structure/closet/crate/preopen, -/obj/effect/spawner/random/engineering/material_cheap, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"wcT" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/science/robotics/lab) -"wcW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/prison) -"wcX" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"wdb" = ( -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"wdd" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/bed/medical/anchored, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"wdj" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/medical/virology/isolation) -"wdq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/disposal) -"wdw" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"wdA" = ( -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"wdC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"wdL" = ( -/turf/closed/wall/r_wall, -/area/station/security/checkpoint/first) -"wdP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"wdS" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"wdX" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/spawner/random/contraband/prison, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"wdZ" = ( -/obj/machinery/conveyor{ - dir = 6; - id = "coffinbelt" - }, -/obj/structure/closet/crate/coffin, -/turf/open/floor/plating, -/area/station/service/chapel/funeral) -"weg" = ( -/obj/structure/sign/poster/official/random/directional/east, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/arrows, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/library) -"wet" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-18"; - location = "3-17" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"weB" = ( -/obj/effect/turf_decal/trimline/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor{ - elevator_mode = 1; - transport_linked_id = "com_vator" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"weO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"weQ" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood/parquet, -/area/station/service/lawoffice) -"weY" = ( -/obj/effect/turf_decal/trimline/purple/arrow_ccw, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron/textured_large, -/area/station/cargo/miningdock) -"wfb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"wfe" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"wff" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Holodeck Door" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "holodeck" - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"wfl" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wfx" = ( -/obj/machinery/door/window/brigdoor/left/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"wfy" = ( -/obj/structure/closet, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/neck/fake_heretic_amulet, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"wfD" = ( -/obj/machinery/light/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/bridge) -"wfI" = ( -/obj/machinery/light_switch/directional/west, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"wfR" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/commons/dorms/apartment2) -"wfT" = ( -/turf/closed/wall, -/area/station/engineering/atmos/office) -"wfW" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/white/line, -/obj/effect/turf_decal/trimline/white/line{ - dir = 1 - }, -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"wgn" = ( -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark/smooth_half, -/area/station/engineering/storage/tech) -"wgr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"wgu" = ( -/obj/structure/cable, -/obj/machinery/conveyor{ - dir = 9; - id = "mining" - }, -/turf/open/floor/iron/checker, -/area/station/cargo/miningdock) -"wgO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/command/meeting_room) -"wha" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"whb" = ( -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/siding/dark_blue, -/obj/effect/turf_decal/siding/dark_blue{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters/window{ - id = "stationawaygate"; - name = "Gateway Access Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"whf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"whj" = ( -/obj/machinery/door/window/brigdoor/left/directional/south, -/turf/open/misc/sandy_dirt, -/area/station/maintenance/floor1/starboard) -"whw" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/misc/dirt/jungle, -/area/station/science/cytology) -"whF" = ( -/obj/machinery/shower/directional/east, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/engineering/atmos/pumproom) -"whI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"whJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/cable/layer3, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"whL" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"whM" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"whR" = ( -/turf/closed/wall, -/area/station/service/bar) -"whU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/mirror/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/sink/directional/south, -/turf/open/floor/wood/large, -/area/station/maintenance/floor4/starboard/aft) -"whV" = ( -/turf/closed/wall, -/area/station/maintenance/floor1/starboard) -"wic" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"win" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"wir" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"wis" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"wit" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/prison) -"wiu" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/service/chapel/office) -"wiv" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/sofa/right/brown{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"wiB" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/fore) -"wiC" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"wiF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wiJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/assembly/mousetrap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"wiL" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/machinery/newscaster/directional/south, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"wiN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wiR" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/item/crowbar, -/obj/item/crowbar{ - pixel_x = -1; - pixel_y = 3 - }, -/obj/item/crowbar{ - pixel_x = -1; - pixel_y = 6 - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"wiT" = ( -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/warden) -"wjj" = ( -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain/private) -"wjm" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/wood/tile, -/area/station/service/library) -"wjt" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/fore) -"wjx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"wjy" = ( -/obj/structure/rack, -/obj/item/clothing/head/helmet/old, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"wkf" = ( -/obj/structure/chair/comfy/brown, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/psychologist, -/obj/machinery/holopad, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"wkn" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"wkr" = ( -/obj/item/storage/box/lights/bulbs, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"wkv" = ( -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"wkw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"wkF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor4/port/fore) -"wkH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"wkL" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/escape_pod) -"wkP" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/reagent_containers/condiment/peppermill{ - desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; - pixel_x = -8; - pixel_y = 2 - }, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 9; - pixel_y = 3 - }, -/obj/item/book/manual/chef_recipes, -/turf/open/floor/iron, -/area/station/security/prison) -"wkX" = ( -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor2/fore) -"wll" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/science/alt/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"wlo" = ( -/obj/structure/bed/medical/anchored{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/white/textured, -/area/station/medical/office) -"wlq" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"wlu" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/machinery/camera/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"wlA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"wlF" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"wlK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/sign/departments/vault/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/command/bridge) -"wlP" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Atmospherics-Supermatter Connection" - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wlX" = ( -/obj/structure/bookcase/random/religion, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"wlZ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"wmj" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) -"wmo" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"wmp" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output, -/turf/open/floor/engine/o2, -/area/station/engineering/atmos) -"wmr" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "brig-entrance-aft" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig Aft Entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/entrance, -/turf/open/floor/iron, -/area/station/security/brig) -"wms" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/fishing_portal_generator, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"wmt" = ( -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"wmw" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"wmx" = ( -/obj/effect/turf_decal/caution{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"wmz" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"wmC" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"wmD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/toy/figure/syndie, -/turf/open/floor/pod/light, -/area/station/security/execution/education) -"wmG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port) -"wmI" = ( -/obj/machinery/door/airlock/security{ - name = "Isolation" - }, -/obj/effect/mapping_helpers/airlock/access/any/security/brig, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"wmN" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/north, -/obj/structure/mannequin/skeleton, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"wmQ" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/fore) -"wmS" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"wmU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"wmW" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"wmX" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"wnq" = ( -/obj/effect/baseturf_helper/reinforced_plating/ceiling, -/obj/machinery/light_switch/directional/south, -/obj/machinery/light/cold/directional/south, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"wns" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"wnI" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"wnJ" = ( -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/aft) -"wnN" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/item/storage/pill_bottle/happinesspsych{ - pixel_x = -5 - }, -/obj/item/storage/pill_bottle/psicodine{ - pixel_x = 5 - }, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"wnO" = ( -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"wnP" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"woa" = ( -/obj/structure/girder/reinforced, -/obj/effect/spawner/structure/window/hollow/reinforced/plasma/middle{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "atmoshfr" - }, -/turf/open/floor/plating, -/area/station/engineering/atmos/hfr_room) -"won" = ( -/obj/machinery/light/broken/directional/north, -/obj/effect/decal/cleanable/ash, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"woq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/engine/atmos) -"wor" = ( -/obj/machinery/light/red/dim/directional/south, -/turf/open/water/no_planet_atmos{ - desc = "Filthy."; - name = "untreated water" - }, -/area/station/maintenance/floor1/port/aft) -"wot" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/machinery/atmospherics/components/binary/pump/layer2, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"woE" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/paramedic) -"woH" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"woK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"woP" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"wpa" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"wpt" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"wpE" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/item/radio/intercom/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"wpI" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) -"wpJ" = ( -/turf/open/floor/iron/half, -/area/station/engineering/atmos/hfr_room) -"wpP" = ( -/obj/effect/turf_decal/trimline/white/warning, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"wpY" = ( -/obj/machinery/light/red/dim/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"wqg" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 9 - }, -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/iron/corner, -/area/station/hallway/floor1/aft) -"wqi" = ( -/obj/structure/cable, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-15"; - location = "1-14" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"wqk" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/corner/brown{ - dir = 8 - }, -/turf/open/floor/carpet/green, -/area/station/service/bar/atrium) -"wqx" = ( -/obj/effect/turf_decal/stripes/full, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/railing{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general, -/obj/machinery/door/poddoor/preopen{ - id = "Xenolab"; - name = "Test Chamber Blast Door" - }, -/turf/open/floor/engine, -/area/station/science/cytology) -"wqD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"wqF" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/cargo_gauntlet, -/obj/item/clothing/gloves/cargo_gauntlet, -/obj/item/clothing/gloves/cargo_gauntlet, -/turf/open/floor/iron, -/area/station/cargo/warehouse) -"wqN" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor1/aft) -"wqP" = ( -/obj/machinery/computer/accounting{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"wqQ" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/machinery/modular_computer/preset/civilian{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"wqW" = ( -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"wrb" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/hallway/floor2/aft) -"wrh" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"wri" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet/blue, -/area/station/command/bridge) -"wrj" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "secure-gate"; - name = "Brig Shutters" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/holding_cell) -"wrq" = ( -/obj/structure/chair/stool/directional/west, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"wrJ" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"wrU" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"wsb" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"wsh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"wsj" = ( -/obj/structure/table, -/obj/item/stock_parts/scanning_module{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"wsl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"wss" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"wsw" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"wsy" = ( -/obj/structure/closet/wardrobe/black, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"wsA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/fore) -"wsE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/red/directional/south, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"wsG" = ( -/obj/machinery/light/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"wsH" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/maintenance/floor2/starboard) -"wsO" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/carpet/red, -/area/station/service/library) -"wsS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/passive_vent, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"wsY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet/red, -/area/station/service/library/lounge) -"wsZ" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard/fore) -"wtg" = ( -/obj/machinery/light/floor, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"wth" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/small/directional/west, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"wtl" = ( -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/any/engineering/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"wtm" = ( -/obj/structure/foamedmetal, -/obj/structure/grille, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"wtp" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/safe) -"wtr" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"wtt" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen/fourcolor, -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"wtu" = ( -/obj/structure/chair/sofa/corp/left{ - desc = "Looks like someone threw it out. Covered in donut crumbs."; - name = "couch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment2) -"wtw" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 9 - }, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"wtC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"wtF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"wtL" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port) -"wtM" = ( -/obj/machinery/door/airlock/grunge{ - name = "Courtroom" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"wtR" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"wtX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"wuc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"wug" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard) -"wul" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"wus" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"wuu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"wuA" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"wuC" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"wuJ" = ( -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"wuL" = ( -/turf/closed/wall, -/area/station/commons/dorms/apartment2) -"wuZ" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"wva" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/floor2/fore) -"wvd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"wve" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"wvg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"wvp" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"wvq" = ( -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"wvv" = ( -/obj/effect/turf_decal/trimline/purple/corner, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light/cold/no_nightlight/directional/west, -/obj/machinery/disposal/bin/tagger, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"wvw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"wvA" = ( -/obj/effect/turf_decal/trimline/white/filled/corner{ - color = "#065C93"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/command/bridge) -"wvR" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"wwe" = ( -/obj/structure/closet/crate/wooden, -/obj/item/food/pie/cream, -/obj/item/megaphone/clown, -/obj/item/pneumatic_cannon/pie, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wwi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"wwk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"wwp" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/structure/chair/stool/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/abandoned_gambling_den) -"wwu" = ( -/turf/closed/wall, -/area/station/maintenance/floor2/starboard/fore) -"wwz" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/hatch{ - name = "Storage Room" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"wwE" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 6 - }, -/obj/structure/window/spawner/directional/west, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) -"wwL" = ( -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"wwN" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sink/directional/south, -/turf/open/floor/plating, -/area/station/cargo/sorting) -"wwQ" = ( -/obj/machinery/space_heater, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"wwT" = ( -/obj/effect/turf_decal/trimline/blue/arrow_ccw{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/blue/arrow_cw{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/fore) -"wwU" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/left/directional/east{ - name = "Medication Pick-up" - }, -/obj/machinery/door/window/left/directional/west{ - name = "Medication Drop-off"; - req_access = list("psychology") - }, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"wwW" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/camera/emp_proof/directional/east, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"wxb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/west, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"wxc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/security/prison/safe) -"wxd" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port) -"wxi" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"wxw" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/hallway/floor4/aft) -"wxx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"wxE" = ( -/obj/effect/turf_decal/trimline/white/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"wxF" = ( -/obj/item/kirbyplants/organic/plant21, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/fore) -"wxH" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit) -"wxM" = ( -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"wxQ" = ( -/obj/structure/sign/departments/chemistry, -/turf/closed/wall/r_wall, -/area/station/maintenance/floor1/port) -"wxW" = ( -/obj/docking_port/stationary/mining_home/northstar{ - dir = 4 - }, -/turf/open/floor/pod, -/area/station/cargo/miningdock) -"wxY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"wye" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/bananalamp, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wyf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/west, -/obj/effect/spawner/random/structure/closet_maintenance, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"wym" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table/wood, -/obj/item/radio/intercom, -/obj/item/toy/plush/lizard_plushie/space/green{ - desc = "As long as I have you by my side, I know I'll get better!"; - name = "Cures-The-Sniffles" - }, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"wyp" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/fitness/recreation) -"wys" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"wyv" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/security/range) -"wyE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"wyJ" = ( -/obj/structure/chair/wood{ - dir = 8 - }, -/obj/structure/sign/poster/random/directional/south, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wyU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"wyY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/machinery/computer/crew{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"wza" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/port/aft) -"wze" = ( -/obj/structure/table, -/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 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"wzk" = ( -/obj/structure/table/wood, -/obj/item/camera, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/camera_film, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"wzm" = ( -/obj/effect/turf_decal/trimline/brown/warning, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"wzp" = ( -/obj/structure/table, -/obj/item/toy/cards/deck/wizoff, -/obj/effect/turf_decal/tile/red/half{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"wzt" = ( -/obj/effect/spawner/random/structure/twelve_percent_spirit_board, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel/office) -"wzB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/red/dim/directional/south, -/obj/structure/closet/crate/trashcart/filled, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"wzJ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"wzO" = ( -/obj/structure/statue/silver/sec{ - desc = "Dedicated to those who died in the First Contact."; - name = "statue of a militia member" - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"wzS" = ( -/obj/structure/table, -/obj/machinery/door/window/left/directional/north{ - name = "Upload Boards"; - req_access = list("ai_upload") - }, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/aimodule/harmful, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload_foyer) -"wzY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grime, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"wAa" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"wAb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"wAe" = ( -/obj/structure/rack, -/obj/item/reagent_containers/cup/bottle/acidic_buffer{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/basic_buffer{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/bottle/formaldehyde{ - pixel_x = 1 - }, -/obj/structure/sign/warning/chem_diamond/directional/north, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"wAz" = ( -/obj/machinery/vending/autodrobe, -/obj/machinery/light_switch/directional/east, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wAH" = ( -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"wAJ" = ( -/obj/item/storage/box/donkpockets{ - pixel_y = 5 - }, -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment2) -"wAM" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner, -/area/station/hallway/floor3/fore) -"wAO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wBg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/robot_debris/up, -/obj/item/assembly/prox_sensor, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/aft) -"wBq" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"wBB" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"wBF" = ( -/obj/structure/closet/secure_closet/courtroom, -/turf/open/floor/iron, -/area/station/security/courtroom) -"wBG" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"wBO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"wBR" = ( -/turf/closed/wall, -/area/station/construction/mining/aux_base) -"wBU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/service/chapel) -"wCc" = ( -/obj/structure/stairs/north, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"wCk" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"wCl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"wCn" = ( -/turf/closed/wall/r_wall, -/area/station/medical/chemistry) -"wCu" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter) -"wCC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/aft) -"wCG" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor2/aft) -"wCH" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/red/line, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"wCR" = ( -/obj/machinery/chem_master, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/station/medical/chemistry) -"wCT" = ( -/obj/structure/chair/stool/directional/north, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/maintenance/solars/starboard/fore) -"wDa" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/obj/machinery/button/door/directional/west{ - id = "surg_b_privacy"; - name = "Surgery Privacy Shutters"; - req_access = list("medical") - }, -/obj/machinery/light_switch/directional/west{ - pixel_x = -24; - pixel_y = -10 - }, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"wDb" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"wDc" = ( -/obj/machinery/microwave{ - pixel_x = -1; - pixel_y = 6 - }, -/obj/structure/table, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment1) -"wDf" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/turf/open/floor/iron/white/textured, -/area/station/medical/break_room) -"wDh" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"wDr" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"wDy" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/aft) -"wDz" = ( -/turf/open/openspace, -/area/station/science/xenobiology/hallway) -"wDC" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"wDE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron, -/area/station/security/range) -"wDF" = ( -/obj/structure/table, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/south, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"wDS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor3/port/aft) -"wEE" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"wEN" = ( -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/door/airlock/mining/glass{ - name = "Mail Sorting" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/effect/mapping_helpers/airlock/access/any/supply/mining, -/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, -/turf/open/floor/iron/smooth, -/area/station/cargo/storage) -"wEQ" = ( -/obj/structure/stairs/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"wES" = ( -/obj/item/stack/arcadeticket, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"wEY" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"wFa" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible, -/turf/closed/wall/r_wall, -/area/station/science/ordnance/burnchamber) -"wFb" = ( -/obj/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"wFq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor2/aft) -"wFy" = ( -/obj/machinery/computer/cargo, -/obj/structure/sign/poster/random/directional/north, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"wFA" = ( -/obj/effect/turf_decal/trimline/blue/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"wFB" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/cargo/storage) -"wFC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/effect/turf_decal/stripes, -/obj/machinery/door/window/right/directional/south{ - name = "containment Exterior"; - req_access = list("xenobiology") - }, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"wFK" = ( -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/wood{ - name = "Gallery" - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"wFM" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 5 - }, -/obj/structure/sign/warning{ - pixel_y = 32 - }, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/virology) -"wFT" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/machinery/computer/crew{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"wFW" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"wFY" = ( -/turf/open/floor/wood, -/area/station/hallway/floor3/fore) -"wGb" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor4/fore) -"wGg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"wGl" = ( -/turf/open/openspace, -/area/station/maintenance/floor2/starboard) -"wGq" = ( -/obj/effect/decal/cleanable/blood/tracks, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"wGz" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/railing/corner/end, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"wGA" = ( -/obj/structure/window/spawner/directional/north, -/obj/structure/table/reinforced, -/obj/item/shell/drone, -/obj/item/stack/cable_coil/cut, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/floor1/aft) -"wGK" = ( -/obj/structure/fluff/paper/stack{ - desc = "A stack of various papers, absolutely unreadable due to scorch marks and aging." - }, -/obj/structure/table_frame, -/obj/item/shard, -/turf/open/floor/iron, -/area/station/maintenance/floor4/starboard) -"wGL" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Changing Rooms" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/mineral/silver, -/area/station/service/chapel) -"wGN" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"wGR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"wGX" = ( -/turf/open/floor/iron/dark, -/area/station/security/warden) -"wGY" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"wHa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/textured_large, -/area/station/engineering/lobby) -"wHj" = ( -/obj/structure/table, -/obj/item/hfr_box/body/waste_output, -/obj/item/hfr_box/body/moderator_input, -/obj/item/hfr_box/body/fuel_input, -/obj/item/hfr_box/body/interface, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"wHq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/reinforced/rglass, -/obj/item/storage/medkit/surgery, -/obj/item/storage/medkit/advanced, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"wHr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/garbage{ - spawn_loot_count = 3; - spawn_scatter_radius = 1 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"wHs" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"wHu" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"wHw" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/side, -/area/station/security/prison) -"wHP" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"wHR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor2/aft) -"wHU" = ( -/obj/effect/landmark/start/warden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"wHV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/item/stack/cable_coil/cut, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor2/port/aft) -"wIe" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/aft) -"wIn" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/paint_palette, -/obj/effect/turf_decal/tile/dark_red/fourcorners, -/turf/open/floor/iron, -/area/station/security/brig) -"wIp" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/openspace, -/area/space) -"wIr" = ( -/obj/structure/railing/corner, -/turf/open/floor/iron/textured_large, -/area/station/cargo/storage) -"wIw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/department/engine/atmos) -"wIz" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/structure/closet/secure_closet/exile, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"wIA" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/any/command/minisat, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"wIC" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"wID" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green/full, -/turf/open/floor/iron, -/area/station/service/janitor) -"wIG" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"wIJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "rdoffice"; - name = "Research Director's Shutters" - }, -/turf/open/floor/plating, -/area/station/command/heads_quarters/rd) -"wIN" = ( -/turf/open/openspace, -/area/station/command/heads_quarters/rd) -"wIP" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/obj/machinery/portable_atmospherics/canister/hydrogen, -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark, -/area/station/science/cytology) -"wIQ" = ( -/obj/structure/closet/firecloset, -/obj/machinery/light/directional/west, -/obj/effect/landmark/start/hangover/closet, -/turf/open/floor/iron, -/area/station/commons/fitness) -"wIU" = ( -/obj/machinery/door/airlock/science/glass{ - name = "Laboratory C" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/explab) -"wIW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/firealarm/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"wIX" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency{ - pixel_y = 12 - }, -/obj/item/stack/cable_coil/cut{ - pixel_y = 7 - }, -/obj/item/stock_parts/power_store/cell/lead{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/wirecutters, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"wJf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"wJj" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"wJl" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"wJp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/holosign/barrier/engineering, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"wJq" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"wJt" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/command/heads_quarters/captain) -"wJy" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/box/white, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"wJB" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"wJG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"wJH" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"wJI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"wJR" = ( -/obj/structure/table, -/obj/item/plate{ - pixel_y = -3 - }, -/obj/item/plate, -/obj/item/plate{ - pixel_y = 3 - }, -/obj/item/knife/plastic{ - pixel_x = 14 - }, -/obj/item/knife/plastic{ - pixel_x = 14; - pixel_y = -3 - }, -/obj/item/knife/plastic{ - pixel_x = 14; - pixel_y = 3 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = -12; - pixel_y = 3 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = -12; - pixel_y = -3 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = -12 - }, -/turf/open/floor/iron/checker, -/area/station/commons/dorms/apartment2) -"wJS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/wood/large, -/area/station/service/library) -"wJT" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor4/fore) -"wKa" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/machinery/computer/atmos_control/air_tank, -/obj/structure/window/reinforced/spawner/directional/north, -/turf/open/floor/iron/white, -/area/station/engineering/atmos) -"wKd" = ( -/obj/effect/turf_decal/trimline/green/arrow_ccw, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"wKg" = ( -/turf/open/floor/iron/dark/telecomms, -/area/station/tcommsat/server) -"wKi" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"wKj" = ( -/obj/structure/chair/sofa/corp/left{ - desc = "Looks like someone threw it out. Covered in donut crumbs."; - name = "couch" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/green, -/area/station/commons/dorms/apartment1) -"wKk" = ( -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"wKr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"wKz" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - name = "External Airlock" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"wKE" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wKL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"wKT" = ( -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/machinery/fax{ - fax_name = "Engineering Lobby"; - name = "Engineering Lobby Fax Machine" - }, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"wLd" = ( -/obj/structure/flora/bush/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"wLg" = ( -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"wLj" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/food_or_drink/condiment, -/obj/item/flashlight, -/obj/machinery/light/small/red/directional/west, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"wLl" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/plating/airless, -/area/station/solars/starboard/aft) -"wLo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/effect/spawner/random/entertainment/lighter, -/obj/item/storage/crayons{ - pixel_x = 6; - pixel_y = -3 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"wLp" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/science/auxlab) -"wLC" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/obj/machinery/holopad, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"wLD" = ( -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron/kitchen, -/area/station/command/heads_quarters/rd) -"wLK" = ( -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine, -/area/station/science/auxlab/firing_range) -"wLP" = ( -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/prison) -"wLV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"wMf" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/obj/machinery/computer/scan_consolenew, -/turf/open/floor/iron/showroomfloor{ - name = "lab floor" - }, -/area/station/science/genetics) -"wMr" = ( -/obj/machinery/door/airlock{ - id_tag = "dorms_3_bolts"; - name = "Standard Dorm 3" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"wMw" = ( -/obj/item/radio/intercom/directional/west, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"wMy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/engineering/atmos) -"wMF" = ( -/turf/closed/wall/r_wall, -/area/station/security/prison/garden) -"wMH" = ( -/obj/effect/turf_decal/tile/red/half, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2, -/obj/machinery/recharge_station, -/turf/open/floor/iron/edge, -/area/station/engineering/atmos) -"wMM" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) -"wMN" = ( -/obj/effect/turf_decal/siding/white, -/obj/machinery/computer/crew, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/dark/textured, -/area/station/medical/paramedic) -"wMQ" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"wMR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"wMU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"wMX" = ( -/obj/structure/frame/computer{ - dir = 4 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"wNb" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"wNd" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/closet/crate/bin, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"wNh" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"wNt" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"wNu" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/rnd/production/techfab/department/medical, -/turf/open/floor/iron/white/textured, -/area/station/medical/storage) -"wNx" = ( -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/storage) -"wNH" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"wNL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/commons/dorms/room3) -"wNR" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/rack, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/storage/box/trackimp, -/obj/item/storage/lockbox/loyalty, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/security/brig) -"wOd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/tank_holder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"wOg" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/storage) -"wOm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"wOn" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor1/fore) -"wOt" = ( -/obj/machinery/door/morgue{ - name = "Confession Booth" - }, -/turf/open/floor/iron/dark/small, -/area/station/service/chapel) -"wOu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"wOv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"wOy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/closet/toolcloset, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"wOE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"wOJ" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/station/service/chapel/funeral) -"wPn" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"wPs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"wPw" = ( -/obj/structure/chair/comfy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"wPF" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"wPG" = ( -/obj/structure/rack, -/obj/structure/secure_safe/directional/east, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/bulletproof_armor, -/obj/effect/spawner/random/armory/bulletproof_helmet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"wPK" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/ore_silo, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood/large, -/area/station/command/heads_quarters/qm) -"wPP" = ( -/obj/structure/frame/computer{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"wPS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/station/medical/office) -"wPW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"wPX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"wQe" = ( -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"wQh" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/sign/flag/nanotrasen/directional/south, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"wQo" = ( -/turf/closed/wall, -/area/station/security/prison/garden) -"wQu" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/effect/turf_decal/trimline/blue, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"wQA" = ( -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("maint_tunnels") - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"wQC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"wQN" = ( -/obj/structure/hedge/opaque, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/grass, -/area/station/service/chapel/office) -"wQR" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"wQX" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"wQY" = ( -/obj/machinery/duct, -/turf/open/floor/iron/dark/side, -/area/station/security/office) -"wRc" = ( -/turf/closed/wall/r_wall, -/area/station/medical/virology/isolation) -"wRe" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) -"wRn" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"wRp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/science/robotics/lab) -"wRD" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/structure/table/reinforced/rglass, -/obj/machinery/computer/records/medical/laptop{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"wRE" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/fore) -"wRJ" = ( -/turf/closed/wall, -/area/station/maintenance/floor3/starboard/fore) -"wRL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/blobstart, -/turf/open/floor/engine/cult, -/area/station/service/library/private) -"wRM" = ( -/obj/structure/sign/warning/radiation/rad_area, -/turf/closed/wall/r_wall, -/area/station/maintenance/floor1/port/aft) -"wRN" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted/spawner/directional/north, -/obj/structure/closet/masks, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"wRS" = ( -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port/aft) -"wRT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) -"wSb" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/machinery/fax{ - fax_name = "Security Office"; - name = "Security Office Fax Machine" - }, -/turf/open/floor/iron/dark, -/area/station/security/office) -"wSc" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 4 - }, -/obj/effect/landmark/navigate_destination/incinerator, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"wSm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/light/floor, -/turf/open/floor/iron/textured_large, -/area/station/engineering/engine_smes) -"wSw" = ( -/obj/structure/closet/secure_closet/brig{ - name = "Prisoner Locker" - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"wSz" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"wSG" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"wSP" = ( -/obj/machinery/door/airlock{ - name = "Escape Pod A" - }, -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"wSR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"wSW" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/public/glass{ - name = "Bar" - }, -/turf/open/floor/iron/dark, -/area/station/service/bar/atrium) -"wTg" = ( -/obj/structure/rack, -/obj/item/clothing/under/trek/q, -/obj/item/clothing/under/trek/command/ent, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/command/teleporter) -"wTi" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"wTj" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"wTp" = ( -/obj/structure/ladder, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"wTq" = ( -/turf/open/openspace, -/area/station/hallway/secondary/service) -"wTw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"wTB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/aft) -"wTC" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/item/compact_remote{ - pixel_x = 6 - }, -/obj/item/compact_remote{ - pixel_y = 5 - }, -/obj/item/compact_remote{ - pixel_x = -6; - pixel_y = 12 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"wTO" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/genetics) -"wTS" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"wTU" = ( -/obj/machinery/computer/slot_machine, -/obj/structure/sign/poster/contraband/random/directional/west, -/turf/open/floor/carpet/green, -/area/station/service/abandoned_gambling_den) -"wTV" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"wTW" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/commons/dorms/apartment1) -"wUu" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"wUy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/green/half{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"wUB" = ( -/obj/item/book/manual/wiki/tcomms, -/obj/item/radio/off{ - pixel_y = 4 - }, -/obj/structure/table, -/obj/item/multitool, -/obj/item/storage/toolbox/electrical, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"wUF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"wUH" = ( -/obj/effect/turf_decal/tile/red/diagonal_edge, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/security/checkpoint/escape) -"wUK" = ( -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"wUL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor1/aft) -"wUS" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Science - Server" - }, -/obj/machinery/computer/rdservercontrol{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/server) -"wUU" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Command - Research Director's Lab" - }, -/turf/open/floor/engine, -/area/station/command/heads_quarters/rd) -"wVm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/tile/bar, -/turf/open/floor/iron/dark/corner, -/area/station/service/bar/atrium) -"wVn" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"wVr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) -"wVu" = ( -/obj/structure/cable, -/obj/machinery/light/small/directional/north, -/obj/structure/rack, -/obj/item/wrench, -/obj/item/wirecutters, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/starboard/aft) -"wVz" = ( -/obj/machinery/newscaster/directional/east, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"wVJ" = ( -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/five, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/iron, -/area/station/maintenance/floor1/port/aft) -"wVN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/station/engineering/atmos) -"wVO" = ( -/obj/machinery/light/red/dim/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"wVQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=1-12"; - location = "1-11" - }, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"wVS" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 6 - }, -/obj/effect/turf_decal/box, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"wVT" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/aft) -"wVX" = ( -/obj/structure/hedge, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/grass, -/area/station/service/chapel) -"wVY" = ( -/turf/closed/wall, -/area/station/medical/break_room) -"wWf" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Hatch" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/maintenance/floor2/port/aft) -"wWk" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"wWm" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"wWo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/white, -/area/station/maintenance/floor3/starboard/aft) -"wWw" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wWE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"wWJ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 5 - }, -/obj/item/radio/intercom/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"wWX" = ( -/obj/structure/table, -/obj/item/storage/briefcase/secure, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"wWY" = ( -/obj/effect/spawner/structure/window/hollow/plasma/middle{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/freezerchamber) -"wXc" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"wXg" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor4/aft) -"wXi" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/fore) -"wXk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"wXq" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-12"; - location = "3-11" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"wXs" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"wXC" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/lab) -"wXD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/service/kitchen/abandoned) -"wXE" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white/small, -/area/station/medical/chemistry) -"wXH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"wXI" = ( -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard) -"wXL" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/dark/side, -/area/station/commons/storage/primary) -"wXU" = ( -/obj/structure/cable, -/turf/open/floor/iron/smooth_large, -/area/station/maintenance/disposal) -"wYd" = ( -/obj/effect/turf_decal/tile/blue/anticorner{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/station/ai_monitored/turret_protected/ai) -"wYj" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 9 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Custodial Closet" - }, -/obj/item/radio/intercom/directional/west, -/mob/living/basic/lizard{ - name = "Allad Minsa" - }, -/turf/open/floor/iron, -/area/station/service/janitor) -"wYp" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/cold/no_nightlight/directional/north, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"wYs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"wYB" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"wYG" = ( -/obj/structure/ladder, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/aft) -"wYH" = ( -/obj/structure/cable, -/obj/machinery/power/solar, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) -"wYM" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port) -"wYR" = ( -/obj/machinery/holopad/secure, -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/carpet, -/area/station/command/heads_quarters/captain) -"wYW" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/red/half{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/security/brig) -"wZu" = ( -/obj/machinery/computer/exoscanner_control, -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"wZD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/maintenance/floor1/starboard/fore) -"wZH" = ( -/obj/effect/turf_decal/caution{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"wZS" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"wZU" = ( -/obj/effect/turf_decal/trimline/white/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/hallway/secondary/entry) -"xad" = ( -/obj/machinery/door/airlock/research{ - name = "Research Director's Office" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/rd) -"xak" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"xap" = ( -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"xat" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"xaG" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"xaN" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xaW" = ( -/obj/machinery/hydroponics/soil, -/obj/item/cultivator, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/misc/dirt/jungle, -/area/station/security/prison/garden) -"xbr" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"xbt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"xbx" = ( -/obj/structure/table/wood, -/obj/item/storage/wallet/random, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/station/commons/vacant_room/office) -"xby" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"xbA" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xbF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/marker_beacon/burgundy, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"xbK" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"xbN" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"xbO" = ( -/obj/machinery/power/energy_accumulator/tesla_coil, -/turf/open/floor/engine, -/area/station/maintenance/floor1/port/aft) -"xbP" = ( -/obj/structure/chair/sofa/bench/right, -/obj/effect/landmark/start/lawyer, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"xbV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xbZ" = ( -/obj/structure/statue/gold/cmo{ - desc = "Dedicated to those who cured the plague of 2709." - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/royalblack, -/area/station/service/library) -"xcg" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/public/glass{ - name = "Departures" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/exit/departure_lounge) -"xcw" = ( -/obj/machinery/shieldgen, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/aft) -"xcA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"xcG" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"xcN" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"xcP" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"xcQ" = ( -/obj/structure/rack, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"xcT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard/aft) -"xcV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname/directional/south, -/obj/machinery/status_display/ai/directional/south, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/hallway/floor1/aft) -"xcW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=2-15"; - location = "2-14" - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"xcY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"xdc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet) -"xdm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"xdy" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"xdC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/checkpoint) -"xdE" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes/end{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"xdJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/turf/open/floor/iron/white, -/area/station/science/lab) -"xdK" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"xdN" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"xdU" = ( -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"xdV" = ( -/obj/machinery/vending/coffee, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"xel" = ( -/obj/item/folder/blue, -/obj/item/paper/monitorkey, -/obj/effect/spawner/random/bureaucracy/pen, -/obj/structure/table, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"xen" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/folder/blue, -/obj/item/folder/blue, -/obj/item/folder/blue, -/obj/item/stamp/law, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/station/service/lawoffice) -"xep" = ( -/obj/structure/holosign/barrier/engineering, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"xeu" = ( -/obj/structure/railing, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/station/cargo/storage) -"xeE" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/sign/departments/rndserver/directional/west, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"xeF" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/holding_cell) -"xeM" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"xeO" = ( -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xeQ" = ( -/obj/machinery/mass_driver/chapelgun{ - dir = 4 - }, -/obj/item/gps, -/turf/open/floor/mineral/silver, -/area/station/service/chapel/funeral) -"xeR" = ( -/obj/effect/spawner/random/structure/crate_abandoned, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"xeT" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/botany/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"xeZ" = ( -/obj/structure/sign/poster/official/random/directional/north, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"xfv" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 1; - name = "External Ports to Waste" - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xfD" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/reagentgrinder{ - pixel_x = -1; - pixel_y = 8 - }, -/obj/structure/table/reinforced, -/obj/item/radio/intercom/directional/west, -/obj/item/clothing/glasses/science, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"xfE" = ( -/obj/structure/cable, -/obj/machinery/power/tracker, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/port/aft) -"xfI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/public/glass{ - name = "Snack Stand" - }, -/turf/open/floor/wood, -/area/station/service/theater) -"xfT" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"xgb" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"xgd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/station/service/kitchen/abandoned) -"xgg" = ( -/obj/effect/turf_decal/trimline/green/filled/warning{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/station/service/library/lounge) -"xgm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/shower/directional/south, -/obj/effect/turf_decal/trimline/blue/end, -/turf/open/floor/noslip{ - icon_state = "textured_dark" - }, -/area/station/medical/office) -"xgC" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/service/library/private) -"xgD" = ( -/obj/machinery/photocopier, -/turf/open/floor/iron/half{ - dir = 1 - }, -/area/station/engineering/lobby) -"xgH" = ( -/turf/closed/wall, -/area/station/maintenance/floor1/port) -"xgN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"xgV" = ( -/obj/effect/turf_decal/trimline/green/corner{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/iron/white/small, -/area/station/commons/fitness/recreation) -"xgW" = ( -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"xhc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/machinery/camera/autoname/directional/south, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xhd" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/chair/stool{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"xhf" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"xhg" = ( -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"xhh" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"xhk" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"xhp" = ( -/obj/machinery/computer/security{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"xht" = ( -/obj/effect/turf_decal/trimline/blue/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/command/teleporter) -"xhx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"xhz" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard/fore) -"xhA" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"xhC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard/aft) -"xhJ" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/parquet, -/area/station/command/heads_quarters/cmo) -"xhU" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"xhX" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/hfr_room) -"xih" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer4{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/engine_access, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/waste) -"xit" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"xiz" = ( -/obj/effect/turf_decal/tile/blue/half{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_edge{ - dir = 4 - }, -/area/station/medical/chemistry) -"xiA" = ( -/obj/effect/spawner/structure/window/reinforced/tinted, -/turf/open/floor/plating, -/area/station/service/chapel/office) -"xiC" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 8 - }, -/obj/structure/closet/firecloset, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"xiK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/port/aft) -"xiM" = ( -/turf/open/openspace, -/area/station/science/xenobiology) -"xiO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/pumproom) -"xiS" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Permabrig Visitation" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/prison/visit) -"xiU" = ( -/obj/effect/spawner/random/structure/girder, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"xiW" = ( -/obj/effect/spawner/structure/electrified_grille, -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"xjc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/security/brig) -"xje" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/explab) -"xjh" = ( -/obj/structure/closet/secure_closet/hop, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"xjo" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/security/courtroom) -"xjr" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, -/obj/item/wrench{ - pixel_x = -2; - pixel_y = 5 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"xjs" = ( -/turf/open/floor/iron/dark/textured_half, -/area/station/engineering/supermatter/room) -"xjI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 4 - }, -/area/station/service/chapel) -"xjL" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/passive_vent, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"xjQ" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/fore) -"xjS" = ( -/obj/machinery/vending/wardrobe/sec_wardrobe, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"xjW" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"xjX" = ( -/obj/structure/rack, -/obj/item/paint/paint_remover, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"xjZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/station/engineering/supermatter/waste) -"xko" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"xkq" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/hallway/secondary/entry) -"xkw" = ( -/obj/machinery/door/airlock/security{ - name = "Prison Wing" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "Brig Lockdown" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/opposingcorners{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"xkC" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner{ - dir = 8 - }, -/obj/structure/railing/corner, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"xkN" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/item/hatchet, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"xkR" = ( -/obj/structure/table/wood, -/obj/item/gavelhammer, -/turf/open/floor/iron/dark, -/area/station/security/courtroom) -"xkT" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"xkU" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron, -/area/station/commons/toilet) -"xkY" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/item/radio/intercom/directional/north, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/station/cargo/miningdock) -"xlj" = ( -/obj/machinery/computer{ - desc = "You'd think someone had left it in saltwater."; - dir = 8; - name = "Rusting Console" - }, -/obj/machinery/light/red/dim/directional/east, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"xlk" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"xln" = ( -/obj/machinery/power/shuttle_engine/huge{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"xlu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xlD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"xlE" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"xlH" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/kitchen/abandoned) -"xlK" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/light/small/directional/west, -/turf/open/misc/grass, -/area/station/maintenance/floor1/starboard) -"xmh" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/hallway/floor2/aft) -"xmi" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/hangover, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor3/fore) -"xmk" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/wood/tile, -/area/station/service/library) -"xmM" = ( -/obj/effect/turf_decal/trimline/green/filled/end{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xmQ" = ( -/turf/open/openspace, -/area/station/hallway/floor2/aft) -"xna" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"xng" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"xni" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/aft) -"xnr" = ( -/obj/effect/turf_decal/trimline/yellow/line, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"xns" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Bulkhead" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard/fore) -"xnC" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/mob/living/basic/sloth/paperwork, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xnL" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/science/xenobiology/hallway) -"xnY" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/half, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"xob" = ( -/obj/structure/frame/computer{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"xoj" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 6 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"xot" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/hallway/floor4/aft) -"xoF" = ( -/obj/effect/turf_decal/trimline/purple/line, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"xoM" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/brigdoor/left/directional/west{ - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/obj/machinery/door/window/left/directional/east{ - name = "Pharmacy Desk" - }, -/obj/item/paper_bin, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "chem-lock-a"; - name = "Chemistry Shutters" - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"xoN" = ( -/obj/structure/closet/crate, -/obj/item/food/cheese/wheel, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"xoX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) -"xpi" = ( -/obj/structure/table/wood, -/obj/structure/sign/poster/official/random/directional/east, -/obj/item/storage/fancy/donut_box, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"xpk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/status_display/ai/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"xpt" = ( -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard/aft) -"xpv" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/structure/flora/bush/lavendergrass/style_random, -/obj/item/reagent_containers/cup/bucket/wooden{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden/abandoned) -"xpw" = ( -/turf/open/space/basic, -/area/space/nearstation) -"xpA" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"xpH" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner, -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"xpI" = ( -/turf/closed/wall, -/area/station/maintenance/solars/starboard/fore) -"xpL" = ( -/obj/machinery/door/airlock/research/glass/incinerator/ordmix_exterior{ - name = "Burn Chamber Exterior Airlock" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, -/turf/open/floor/engine/vacuum, -/area/station/science/ordnance/burnchamber) -"xpM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/corner, -/obj/structure/disposalpipe/segment, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xpO" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/item/seeds/apple, -/obj/machinery/hydroponics/constructable, -/turf/open/floor/grass, -/area/station/service/library/garden) -"xpQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"xpR" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/closet/crate{ - name = "Box O' Bees" - }, -/obj/item/honey_frame, -/obj/item/honey_frame, -/obj/item/honey_frame, -/obj/item/clothing/suit/utility/beekeeper_suit, -/obj/item/clothing/suit/hooded/bee_costume, -/obj/item/clothing/head/utility/beekeeper_head, -/obj/item/clothing/head/hooded/bee_hood, -/obj/item/melee/flyswatter, -/obj/item/queen_bee/bought, -/turf/open/floor/grass, -/area/station/service/hydroponics) -"xqr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"xqs" = ( -/obj/structure/closet/crate, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/analyzer, -/turf/open/floor/circuit/green/telecomms, -/area/station/tcommsat/server) -"xqv" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/flora/bush/sunny/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"xqB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/dark/visible{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"xqL" = ( -/obj/effect/turf_decal/loading_area/white{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"xqR" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) -"xqV" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw, -/obj/effect/turf_decal/trimline/red/corner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"xqY" = ( -/obj/machinery/door/airlock/public{ - name = "Showers" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"xqZ" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Medbay - Treatment Center"; - name = "medbay camera"; - network = list("ss13","medbay") - }, -/obj/machinery/shower/directional/south, -/obj/structure/fluff/shower_drain, -/turf/open/floor/catwalk_floor/iron_white, -/area/station/medical/treatment_center) -"xrh" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/station/command/teleporter) -"xrj" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/solars/port/aft) -"xrq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/station/maintenance/floor4/starboard/aft) -"xrB" = ( -/obj/structure/cable/multilayer/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"xrK" = ( -/obj/machinery/door/window/brigdoor/left/directional/east{ - name = "Holding Cell"; - req_access = list("armory") - }, -/obj/machinery/door/window/brigdoor/left/directional/west{ - name = "Holding Cell"; - req_access = list("armory") - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/execution/education) -"xrY" = ( -/obj/machinery/button/door/directional/north{ - id = "survshop"; - name = "Workshop Shutters" - }, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"xsf" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/floor2/starboard/fore) -"xsg" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xsi" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/white/side{ - dir = 8 - }, -/area/station/medical/pharmacy) -"xsm" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"xst" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/aft) -"xsA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/tank/internals/plasma, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port) -"xsC" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"xsG" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"xsH" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/turf/open/space/basic, -/area/space/nearstation) -"xsL" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xsP" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/aft) -"xsQ" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xsR" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"xsX" = ( -/obj/structure/railing/corner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"xtd" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/hallway/secondary/entry) -"xtp" = ( -/obj/effect/turf_decal/siding/thinplating_new, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"xtC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"xtF" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 4 - }, -/obj/effect/spawner/random/structure/table_or_rack, -/obj/effect/spawner/random/engineering/tool, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"xtG" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"xtI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor3/fore) -"xtP" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "arrivalsprivacy"; - name = "Arrivals Privacy Shutters" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/hallway/secondary/entry) -"xtR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/maintenance/floor2/starboard/aft) -"xtX" = ( -/obj/machinery/door/airlock/medical{ - name = "Storage" - }, -/obj/effect/mapping_helpers/airlock/access/any/medical/psychology, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"xtY" = ( -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/fore) -"xtZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 6 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"xue" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wideplating, -/obj/effect/turf_decal/siding/wideplating{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/textured, -/area/station/medical/medbay/central) -"xug" = ( -/obj/effect/turf_decal/trimline/blue/filled/line, -/obj/structure/table/reinforced/rglass, -/obj/item/folder/blue{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/folder/white, -/obj/item/pen/fountain, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"xuh" = ( -/obj/structure/lattice, -/turf/open/space/openspace, -/area/space/nearstation) -"xui" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/aft) -"xuv" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor2/starboard/fore) -"xuW" = ( -/obj/effect/turf_decal/trimline/red/line, -/obj/effect/turf_decal/trimline/white/warning, -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/nitrous_input, -/turf/open/floor/engine/n2o, -/area/station/engineering/atmos) -"xuX" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/cargo/lobby) -"xvk" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/station/command/heads_quarters/hop) -"xvo" = ( -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/fore) -"xvr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/command/gateway) -"xvz" = ( -/obj/structure/grille, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"xvA" = ( -/obj/effect/turf_decal/tile/green/full, -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/iron/smooth_large, -/area/station/hallway/secondary/entry) -"xvL" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/storage) -"xvN" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/beaker{ - pixel_x = 5 - }, -/obj/item/reagent_containers/condiment/enzyme, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xvO" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod, -/area/station/maintenance/floor4/starboard/aft) -"xvW" = ( -/obj/structure/cable, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/storage/tech) -"xwa" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/starboard) -"xwg" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"xwi" = ( -/obj/machinery/vending/hydronutrients, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/turf/open/floor/iron/white/side{ - dir = 6 - }, -/area/station/cargo/miningdock) -"xwo" = ( -/obj/machinery/meter/monitored/distro_loop, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xwx" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 5 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"xwI" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/fore) -"xwJ" = ( -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/unres, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"xwL" = ( -/obj/structure/closet/bombcloset/white, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"xwM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/wood/parquet, -/area/station/medical/psychology) -"xwN" = ( -/obj/structure/kitchenspike, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) -"xwX" = ( -/obj/structure/easel, -/turf/open/floor/bamboo/tatami/black, -/area/station/commons/storage/art) -"xwZ" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white{ - color = "#74b2d3" - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"xxh" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"xxw" = ( -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xxx" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/trimline/green/arrow_cw{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green, -/turf/open/floor/iron, -/area/station/cargo/miningdock) -"xxy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock{ - name = "Vacant Office" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/commons/vacant_room/office) -"xxA" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"xxC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"xxF" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"xxO" = ( -/obj/effect/turf_decal/stripes/white/line, -/turf/open/floor/iron/dark/side, -/area/station/engineering/storage/tech) -"xxQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) -"xxS" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"xyb" = ( -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/supermatter) -"xyc" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"xyd" = ( -/obj/machinery/vending/wardrobe/viro_wardrobe, -/obj/machinery/door_buttons/airlock_controller{ - idExterior = "virology_airlock_exterior"; - idInterior = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Console"; - pixel_x = 24; - req_access = list("virology") - }, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"xyi" = ( -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"xyw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"xyz" = ( -/obj/effect/spawner/random/engineering/atmospherics_portable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"xyA" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/computer/security{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"xyC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard) -"xyD" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/iron/textured_corner{ - dir = 4 - }, -/area/station/medical/chemistry) -"xyM" = ( -/obj/effect/turf_decal/trimline/green/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"xyO" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/wrapping, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/fore) -"xyU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/picket_sign, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"xza" = ( -/obj/effect/landmark/blobstart, -/turf/open/floor/mineral/plastitanium, -/area/station/maintenance/floor2/starboard/aft) -"xzd" = ( -/obj/structure/table/reinforced, -/obj/item/folder, -/obj/structure/noticeboard/directional/west, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) -"xze" = ( -/obj/structure/table, -/obj/item/storage/medkit/emergency, -/obj/effect/decal/cleanable/blood/old, -/obj/machinery/vending/wallmed/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/iron/dark/textured, -/area/station/commons/fitness) -"xzr" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/aft) -"xzA" = ( -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"xzH" = ( -/obj/effect/turf_decal/trimline/yellow/warning, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/aft) -"xzP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/ash, -/obj/effect/spawner/random/trash/graffiti{ - pixel_x = -32 - }, -/obj/effect/spawner/random/trash/graffiti{ - pixel_y = -32 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"xzS" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"xzT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"xAk" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"xAl" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"xAn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"xAo" = ( -/obj/effect/mapping_helpers/airlock/access/any/science/ordnance, -/obj/machinery/door/airlock/research/glass{ - name = "Ordnance Stairway" - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"xAq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/middle/maroon{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"xAu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai_upload) -"xAH" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "arrivalsprivacy"; - name = "Arrivals Privacy Shutters" - }, -/obj/machinery/door/airlock{ - name = "Arrivals Changing Room" - }, -/turf/open/floor/iron/smooth_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"xAL" = ( -/obj/effect/spawner/random/trash/mess, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"xAO" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"xBd" = ( -/obj/effect/turf_decal/trimline/neutral/filled/end, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"xBe" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/lobby) -"xBi" = ( -/obj/item/surgery_tray/full{ - pixel_y = 13 - }, -/obj/item/reagent_containers/medigel/sterilizine{ - pixel_x = 1 - }, -/obj/item/reagent_containers/syringe{ - pixel_x = -7 - }, -/obj/item/stack/medical/bone_gel{ - pixel_x = 10 - }, -/obj/effect/turf_decal/box/white, -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"xBl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"xBt" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/closet/l3closet/scientist, -/turf/open/floor/iron/dark, -/area/station/command/gateway) -"xBB" = ( -/obj/machinery/door/airlock/public{ - id_tag = "theater_toilets"; - name = "Theater Toilet" - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"xBC" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/emitter/welded{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"xCg" = ( -/obj/structure/curtain, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"xCl" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/sign/departments/aisat/directional/north, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"xCw" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #1"; - dir = 8; - network = list("ss13","engine") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xCy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/fore) -"xCC" = ( -/turf/open/floor/iron/dark, -/area/station/medical/psychology) -"xCJ" = ( -/obj/effect/turf_decal/trimline/dark_blue/line{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"xCM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"xCR" = ( -/obj/structure/table/reinforced, -/obj/structure/sign/poster/official/random/directional/south, -/obj/effect/turf_decal/tile/red/fourcorners, -/obj/effect/spawner/random/armory/rubbershot, -/obj/effect/spawner/random/armory/rubbershot, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"xCS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"xCU" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/flashlight/glowstick, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/lobby) -"xCX" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/landmark/start/hangover/closet, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/fitness) -"xDl" = ( -/obj/effect/turf_decal/trimline/blue/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/office) -"xDm" = ( -/obj/machinery/button/door/directional/south{ - id = "theater_toilets"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/service/theater) -"xDw" = ( -/obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/contraband/prison, -/obj/effect/spawner/random/trash/garbage, -/obj/effect/spawner/random/trash/garbage, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/security/prison) -"xDx" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white, -/area/station/science/circuits) -"xDy" = ( -/obj/machinery/nuclearbomb/selfdestruct, -/obj/machinery/camera/motion/directional/south{ - c_tag = "Vault"; - network = list("vault") - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/circuit, -/area/station/ai_monitored/command/nuke_storage) -"xDC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/door/airlock/command{ - name = "Research Division Server Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/rd, -/turf/open/floor/iron/white, -/area/station/science/server) -"xDG" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"xDK" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"xDM" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/crowbar, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"xDQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/turf/open/floor/plating, -/area/station/maintenance/department/engine/atmos) -"xDS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/service/kitchen/diner) -"xDV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet/green, -/area/station/cargo/miningdock) -"xDX" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/green/filled/corner, -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 4 - }, -/obj/machinery/requests_console/directional/west{ - department = "Hydroponics"; - name = "Hydroponics Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"xDZ" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/engineering/storage/tech) -"xEh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/aft) -"xEi" = ( -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"xEj" = ( -/obj/effect/turf_decal/tile/green/opposingcorners, -/obj/machinery/iv_drip, -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"xEl" = ( -/obj/machinery/computer/records/security, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hos) -"xEn" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark/half/contrasted{ - dir = 4 - }, -/obj/item/wrench, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"xEo" = ( -/obj/effect/spawner/structure/window/hollow/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor2/starboard/fore) -"xEp" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "mailbelt"; - name = "disposals conveyor switch"; - pixel_x = -8 - }, -/obj/effect/turf_decal/siding/thinplating_new/corner, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"xEv" = ( -/obj/machinery/keycard_auth/wall_mounted/directional/north{ - pixel_x = 9 - }, -/obj/machinery/button/door/directional/north{ - name = "CMO Privacy Shutters"; - id = "cmoshutter"; - req_access = list("cmo"); - pixel_y = 25; - pixel_x = -5 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"xEw" = ( -/obj/machinery/computer/camera_advanced/base_construction/aux{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) -"xEB" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"xEJ" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"xEK" = ( -/obj/machinery/button/door/directional/south{ - id = "nsminingdorm2"; - normaldoorcontrol = 1; - specialfunctions = 4 - }, -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/turf/open/floor/carpet/green, -/area/station/cargo/miningdock) -"xEL" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/station/service/kitchen/diner) -"xEN" = ( -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/service) -"xEP" = ( -/turf/closed/wall/r_wall, -/area/station/security/warden) -"xEY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/secondary/exit) -"xEZ" = ( -/obj/machinery/camera/directional/north{ - c_tag = "AI Chamber - Starboard"; - network = list("aicore") - }, -/obj/machinery/button/door/directional/north{ - id = "AI Chamber entrance shutters"; - name = "AI Chamber Lockdown"; - pixel_x = 6; - req_access = list("ai_upload") - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/ai) -"xFf" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"xFg" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment2) -"xFl" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"xFo" = ( -/obj/machinery/computer/monitor{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/structure/cable, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"xFp" = ( -/obj/machinery/flasher/directional/south{ - id = "brigflashdoor"; - pixel_x = -26 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint) -"xFH" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar{ - pixel_x = 5; - pixel_y = 16 - }, -/obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel{ - pixel_y = 16 - }, -/obj/item/reagent_containers/cup/rag, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = -3; - pixel_y = 9 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/station/hallway/secondary/entry) -"xFJ" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/yellow/visible, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xFN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"xFR" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/iron/dark/textured_corner, -/area/station/engineering/lobby) -"xGl" = ( -/turf/open/floor/plating/foam, -/area/station/maintenance/floor1/port/aft) -"xGu" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"xGx" = ( -/turf/open/floor/plating, -/area/station/medical/abandoned) -"xGI" = ( -/turf/closed/wall, -/area/station/command/heads_quarters/ce) -"xGO" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/arrow_ccw{ - dir = 8 - }, -/obj/effect/landmark/start/hangover, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"xGR" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/command{ - name = "Quartermaster's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/supply/qm, -/turf/open/floor/iron/textured, -/area/station/command/heads_quarters/qm) -"xGU" = ( -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 4 - }, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) -"xHe" = ( -/turf/closed/wall, -/area/station/maintenance/floor4/starboard/fore) -"xHg" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/turf/open/floor/engine/hull/reinforced, -/area/space/nearstation) -"xHr" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/aft) -"xHv" = ( -/turf/open/floor/iron/dark/side, -/area/station/security/courtroom) -"xHw" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/arrow_ccw{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"xHA" = ( -/turf/closed/wall, -/area/station/maintenance/disposal) -"xHK" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"xHR" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port/aft) -"xHT" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"xIh" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/station/medical/psychology) -"xIk" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xIr" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer4{ - dir = 5 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xIs" = ( -/obj/effect/spawner/random/structure/tank_holder, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard/fore) -"xIx" = ( -/obj/structure/bed/double, -/obj/effect/spawner/random/bedsheet/double, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/shaft_miner, -/turf/open/floor/carpet/blue, -/area/station/cargo/miningdock) -"xID" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/surgery/aft) -"xIE" = ( -/obj/structure/table_frame, -/obj/item/stack/sheet/plastitaniumglass, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"xIF" = ( -/obj/effect/spawner/structure/window/hollow/directional{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port) -"xIL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"xIP" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/machinery/door/window/brigdoor/left/directional/south{ - name = "Armory Desk"; - req_access = list("armory") - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "armblast"; - name = "Armory Blast Door" - }, -/turf/open/floor/plating, -/area/station/security/brig) -"xIR" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"xIV" = ( -/turf/open/space/openspace, -/area/space/nearstation) -"xJk" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/tile/green/full, -/obj/machinery/light/directional/south, -/turf/open/floor/iron/dark, -/area/station/service/hydroponics) -"xJo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"xJp" = ( -/obj/item/canvas/twentyfour_twentyfour, -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"xJs" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor2/fore) -"xJv" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/reagent_containers/cup/bucket, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/aft) -"xJx" = ( -/obj/machinery/computer/atmos_control/ordnancemix{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"xJz" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"xJC" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark, -/obj/effect/turf_decal/trimline/brown/warning{ - dir = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"xJH" = ( -/obj/structure/transit_tube/horizontal{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"xJL" = ( -/obj/effect/turf_decal/bot/left, -/turf/open/floor/engine, -/area/station/engineering/atmos/hfr_room) -"xJM" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/stairs{ - dir = 1 - }, -/area/station/maintenance/floor3/starboard/aft) -"xJT" = ( -/obj/effect/turf_decal/trimline/blue/warning{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/canister, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"xJW" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor3/port) -"xJX" = ( -/obj/structure/table, -/obj/item/cigarette/candy{ - pixel_x = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/hallway/floor1/aft) -"xKa" = ( -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/iron/dark/corner, -/area/station/engineering/storage/tech) -"xKd" = ( -/obj/effect/spawner/random/entertainment/arcade{ - dir = 1 - }, -/obj/machinery/light/blacklight/directional/south, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"xKj" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/science/cytology) -"xKq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/white, -/area/station/medical/medbay/central) -"xKs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/security/evidence) -"xKt" = ( -/obj/structure/railing/corner, -/turf/open/space/openspace, -/area/space/nearstation) -"xKy" = ( -/obj/machinery/modular_computer/preset/id{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/cmo) -"xKZ" = ( -/obj/machinery/light_switch/directional/north, -/obj/machinery/shower/directional/west, -/turf/open/floor/plastic, -/area/station/security/prison/shower) -"xLb" = ( -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" - }, -/area/station/holodeck/rec_center) -"xLc" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/science/lobby) -"xLd" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/service/theater) -"xLe" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/sign/departments/botany/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/aft) -"xLo" = ( -/obj/machinery/atmospherics/components/trinary/filter, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/ordnance/testlab) -"xLs" = ( -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"xLw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/duct, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/station/service/chapel) -"xLy" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/assembly/flash, -/obj/item/restraints/handcuffs, -/obj/machinery/camera/directional/east{ - name = "Checkpoint - Engineering Deck" - }, -/obj/machinery/recharger, -/obj/machinery/light/small/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"xLG" = ( -/obj/machinery/door/airlock/hatch{ - name = "Elevator Shaft Access" - }, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, -/turf/open/floor/plating, -/area/station/hallway/floor3/fore) -"xLJ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) -"xLO" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/floor3/starboard/aft) -"xLU" = ( -/obj/effect/turf_decal/tile/purple/fourcorners, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/hallway/floor2/fore) -"xLZ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"xMd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/fore) -"xMk" = ( -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"xMu" = ( -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/south, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 1 - }, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/signlang_radio, -/obj/item/mod/module/thermal_regulator, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/engineering/lobby) -"xMF" = ( -/obj/effect/turf_decal/tile/blue/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"xMH" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/unres, -/obj/effect/mapping_helpers/airlock/access/any/medical/maintenance, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"xMJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/floor3/aft) -"xMV" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/power_store/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) -"xMW" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor3/aft) -"xMX" = ( -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/engineering/atmos/hfr_room) -"xMY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port/aft) -"xNd" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/siding/blue, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/medbay/lobby) -"xNf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/hangover, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"xNi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/engineering/atmos/office) -"xNx" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/cargo/storage) -"xNy" = ( -/obj/machinery/airalarm/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/tile/green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/medical/virology) -"xNC" = ( -/obj/structure/ladder, -/turf/open/floor/iron/smooth, -/area/station/hallway/floor3/fore) -"xND" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"xNE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard/aft) -"xNH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) -"xNK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/effect/spawner/random/entertainment/money_small, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"xNL" = ( -/obj/structure/chair/stool/directional/west, -/obj/effect/landmark/start/hangover, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/landmark/start/clown, -/turf/open/floor/wood, -/area/station/service/theater) -"xNT" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/corner{ - dir = 1 - }, -/area/station/engineering/lobby) -"xNX" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"xOe" = ( -/obj/machinery/light/cold/no_nightlight/directional/north, -/turf/open/floor/engine, -/area/station/science/explab) -"xOr" = ( -/obj/structure/closet/secure_closet/security, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"xOs" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/spawner/random/structure/grille, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"xOC" = ( -/obj/structure/table/reinforced, -/obj/item/modular_computer/laptop, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/maintenance/floor2/starboard/aft) -"xOF" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark, -/area/station/security/prison) -"xOI" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/duct, -/obj/machinery/door/poddoor/shutters{ - id = "secmechbay"; - name = "Security Mech Bay Shutters" - }, -/obj/effect/turf_decal/caution/stand_clear, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/station/security/mechbay) -"xOY" = ( -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) -"xPr" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"xPs" = ( -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/sorting) -"xPu" = ( -/turf/open/floor/grass, -/area/station/service/library/garden) -"xPv" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"xPw" = ( -/obj/machinery/light_switch/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark, -/area/station/security/warden) -"xPB" = ( -/obj/item/radio/intercom/directional/north, -/obj/machinery/piratepad/civilian, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding/thinplating_new{ - dir = 10 - }, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/lobby) -"xPE" = ( -/obj/item/bikehorn/rubberducky, -/obj/machinery/light/directional/north, -/obj/machinery/duct, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"xPI" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"xPL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/contraband/random/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"xPW" = ( -/obj/structure/railing, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/aft) -"xPX" = ( -/obj/machinery/light/red/dim/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/aft) -"xPZ" = ( -/obj/structure/disposalpipe/trunk/multiz{ - dir = 4 - }, -/turf/open/openspace, -/area/station/maintenance/floor3/port) -"xQg" = ( -/obj/machinery/portable_atmospherics/canister/plasma, -/obj/effect/turf_decal/bot, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/iron/dark/textured, -/area/station/science/ordnance/storage) -"xQk" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/commons/storage/primary) -"xQo" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/parquet, -/area/station/medical/break_room) -"xQp" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"xQq" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"xQv" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/storage/bag/tray, -/turf/open/floor/iron/kitchen, -/area/station/service/kitchen) -"xQC" = ( -/obj/structure/ladder, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/port/aft) -"xQG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"xQL" = ( -/obj/structure/closet/emcloset/anchored, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/station/engineering/atmos/project) -"xRf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/camera/autoname/directional/east, -/turf/open/floor/wood/tile, -/area/station/service/chapel/office) -"xRk" = ( -/obj/structure/frame/computer{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"xRo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/maintenance/floor2/port/aft) -"xRs" = ( -/obj/structure/rack, -/obj/item/reagent_containers/spray/cleaner{ - pixel_y = -5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) -"xRB" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/space/openspace, -/area/space/nearstation) -"xRH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/science/genetics) -"xRJ" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/screwdriver, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"xRM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor3/starboard) -"xRQ" = ( -/obj/machinery/camera/motion/directional/east{ - c_tag = "MiniSat Foyer"; - network = list("minisat") - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/obj/machinery/computer/teleporter{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat) -"xRR" = ( -/obj/machinery/light/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/dark, -/area/station/hallway/floor4/aft) -"xRU" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron, -/area/station/cargo/lobby) -"xSb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/service) -"xSi" = ( -/obj/effect/turf_decal/tile/dark/half/contrasted, -/obj/effect/turf_decal/tile/dark/half/contrasted, -/turf/open/floor/iron/white, -/area/station/science/xenobiology/hallway) -"xSl" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"xSn" = ( -/obj/structure/table/reinforced, -/obj/item/restraints/handcuffs/cable/zipties/used, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"xSr" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/port/fore) -"xSB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/security/eva) -"xSK" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/service/library) -"xSM" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/wood, -/area/station/command/meeting_room) -"xSQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/wood, -/area/station/security/detectives_office) -"xSW" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/monkeycubes{ - pixel_x = -5 - }, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes{ - pixel_x = 5 - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/circuit, -/area/station/science/xenobiology) -"xTa" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aband_armour"; - name = "Armoury Shutters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/aft) -"xTw" = ( -/obj/machinery/door/airlock/security{ - name = "Monitoring" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/security/general, -/turf/open/floor/iron/dark, -/area/station/security/interrogation) -"xTG" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/stripes{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/white, -/area/station/science/ordnance/testlab) -"xTH" = ( -/obj/structure/table/wood, -/obj/item/instrument/violin, -/obj/machinery/light/directional/west, -/turf/open/floor/wood/tile, -/area/station/commons/fitness/recreation) -"xTI" = ( -/obj/structure/transit_tube/curved/flipped, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat) -"xTW" = ( -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/maintenance/floor3/starboard/aft) -"xUc" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer4{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/maintenance/disposal/incinerator) -"xUk" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/space/openspace, -/area/space/nearstation) -"xUB" = ( -/obj/machinery/light/floor, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/fore) -"xUI" = ( -/obj/structure/cable, -/obj/structure/chair/sofa/bench/left, -/obj/effect/turf_decal/tile/green/half/contrasted, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/security/prison) -"xUQ" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/station/hallway/floor4/fore) -"xUS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/chair/plastic{ - dir = 8 - }, -/obj/item/toy/plush/lizard_plushie/space/green{ - name = "Warns-The-Fool"; - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"xUT" = ( -/obj/machinery/computer/security, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/red/fourcorners, -/turf/open/floor/iron/dark/textured, -/area/station/security/checkpoint/second) -"xUU" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/iron/dark, -/area/station/science/breakroom) -"xVa" = ( -/obj/machinery/light/directional/north, -/obj/machinery/camera{ - c_tag = "Atmospherics Cam #3"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xVn" = ( -/obj/effect/decal/cleanable/garbage, -/obj/effect/decal/cleanable/vomit/old, -/obj/effect/turf_decal/trimline/purple/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"xVo" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/obj/structure/girder, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port) -"xVp" = ( -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/barricade/wooden/crude, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"xVt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"xVC" = ( -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"xVF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white/textured_large, -/area/station/service/chapel) -"xVR" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/cable, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) -"xVS" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/station/maintenance/floor1/starboard/aft) -"xVV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light/red/dim/directional/north, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor4/starboard) -"xVX" = ( -/obj/effect/turf_decal/trimline/white/arrow_ccw, -/obj/effect/turf_decal/trimline/red/warning, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/entry) -"xWe" = ( -/turf/closed/wall/r_wall, -/area/station/science/auxlab) -"xWf" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard/fore) -"xWl" = ( -/obj/machinery/computer/telecomms/server{ - dir = 4; - network = "tcommsat" - }, -/turf/open/floor/iron/smooth, -/area/station/tcommsat/computer) -"xWm" = ( -/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible/layer2{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"xWn" = ( -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"xWq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/shower/directional/west, -/turf/open/floor/iron/showroomfloor{ - name = "bathroom tiles" - }, -/area/station/security/lockers) -"xWr" = ( -/obj/effect/turf_decal/trimline/green/filled/arrow_cw, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/trimline/green/filled/mid_joiner, -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"xWv" = ( -/obj/effect/decal/cleanable/blood, -/obj/item/knife/shiv, -/turf/open/floor/plating, -/area/station/maintenance/floor1/port/aft) -"xWx" = ( -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"xWy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark, -/area/station/medical/morgue) -"xWF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/aft) -"xWM" = ( -/turf/open/floor/iron/dark, -/area/station/security/eva) -"xWO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/bluespace_vendor/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor1/fore) -"xWV" = ( -/obj/effect/turf_decal/tile/green/half, -/obj/effect/landmark/navigate_destination/dockescpod, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark/side, -/area/station/hallway/secondary/exit/escape_pod) -"xXd" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/iron/dark/side{ - dir = 6 - }, -/area/station/security/prison) -"xXe" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"xXg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/storage/box/pinpointer_pairs, -/turf/open/floor/iron/dark, -/area/station/maintenance/floor1/port) -"xXi" = ( -/obj/machinery/door/airlock/medical{ - name = "Safe Habitation A" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood, -/area/station/medical/psychology) -"xXm" = ( -/obj/machinery/space_heater, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard) -"xXo" = ( -/obj/docking_port/stationary{ - dheight = 1; - dir = 8; - dwidth = 12; - height = 17; - name = "northwest of station"; - shuttle_id = "syndicate_nw"; - width = 23 - }, -/turf/open/space/openspace, -/area/space) -"xXp" = ( -/obj/machinery/griddle, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar) -"xXq" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/dark/side, -/area/station/service/library/private) -"xXv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/light/colour_cycle/dancefloor_b, -/area/station/maintenance/floor2/port/fore) -"xXB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/station/commons/vacant_room/office) -"xXF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/starboard) -"xXK" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"xXU" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"xYb" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port/fore) -"xYd" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"xYg" = ( -/turf/open/floor/iron/dark, -/area/station/maintenance/floor2/starboard/fore) -"xYo" = ( -/turf/closed/wall, -/area/station/hallway/secondary/exit/departure_lounge) -"xYr" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"xYB" = ( -/obj/effect/spawner/random/engineering/tank, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/port) -"xYC" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/carpet/neon/simple/pink/nodots, -/area/station/maintenance/floor2/port/fore) -"xYE" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/white/small{ - name = "padded floor" - }, -/area/station/medical/psychology) -"xYK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port/fore) -"xYL" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"xYM" = ( -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"xYN" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/multiz/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/multiz/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/hallway/floor1/aft) -"xYQ" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/landmark/blobstart, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/starboard) -"xYS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/blue/line{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/station/command/meeting_room) -"xYU" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"xZb" = ( -/obj/structure/chair/comfy{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) -"xZg" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/station/hallway/secondary/exit/departure_lounge) -"xZl" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/warning, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/starboard) -"xZu" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor4/starboard) -"xZv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet/green, -/area/station/cargo/miningdock) -"xZB" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/medical/break_room) -"xZL" = ( -/turf/closed/wall, -/area/station/security/brig) -"xZM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat_interior) -"xZX" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/light/cold/no_nightlight/directional/west, -/obj/structure/rack, -/obj/item/soap/nanotrasen, -/turf/open/floor/iron, -/area/station/science/cytology) -"yae" = ( -/obj/effect/spawner/random/trash/grime, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/turf/open/floor/plating, -/area/station/medical/abandoned) -"yag" = ( -/obj/effect/turf_decal/tile/green/half{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/entry) -"yal" = ( -/obj/structure/window/reinforced/spawner/directional/east, -/obj/structure/curtain/cloth, -/obj/structure/closet/secure_closet/personal/patient, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/wood/parquet, -/area/station/medical/patients_rooms) -"yaq" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 10 - }, -/obj/effect/turf_decal/siding/white/corner{ - dir = 4 - }, -/obj/machinery/light/cold/no_nightlight/directional/west, -/turf/open/floor/iron/white, -/area/station/science/cytology) -"yaK" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron, -/area/station/hallway/secondary/exit/escape_pod) -"yaR" = ( -/obj/structure/sign/poster/official/random/directional/south, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) -"yaW" = ( -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/trimline/green/filled/end{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/commons/vacant_room/commissary) -"yaX" = ( -/obj/item/toy/beach_ball, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/misc/beach/sand, -/area/station/hallway/floor2/fore) -"yba" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) -"ybe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/command/heads_quarters/cmo) -"ybi" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/library/garden) -"ybm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor2/aft) -"ybn" = ( -/obj/machinery/pdapainter, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/hop) -"ybp" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/textured_half{ - dir = 1 - }, -/area/station/cargo/sorting) -"ybB" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/second) -"ybE" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"ybF" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"ybG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"ybH" = ( -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/execution/transfer) -"ybK" = ( -/obj/structure/curtain, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"ybL" = ( -/turf/open/floor/plating/airless, -/area/station/maintenance/disposal) -"ybQ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/iron/dark, -/area/station/hallway/floor3/fore) -"ybY" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"ycg" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/circuit/telecomms, -/area/station/science/server) -"ych" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/moisture_trap, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/aft) -"ycq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/chapel{ - dir = 8 - }, -/area/station/service/chapel) -"ycu" = ( -/obj/machinery/vending/snack/green, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/iron/cafeteria, -/area/station/service/theater) -"ycx" = ( -/obj/structure/table, -/obj/item/gun/energy/laser/practice{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/gun/energy/laser/carbine/practice, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/dark, -/area/station/security/range) -"ycy" = ( -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"ycM" = ( -/turf/closed/wall/r_wall, -/area/station/maintenance/floor4/port/aft) -"ycW" = ( -/obj/structure/table/reinforced, -/turf/open/floor/iron/kitchen/herringbone, -/area/station/service/kitchen) -"ydi" = ( -/obj/machinery/firealarm/directional/south, -/obj/effect/landmark/navigate_destination/chapel, -/turf/open/floor/iron/chapel, -/area/station/service/chapel) -"ydm" = ( -/turf/open/floor/plating, -/area/station/construction/mining/aux_base) -"ydn" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/effect/turf_decal/siding/white, -/obj/structure/cable, -/obj/structure/table/reinforced/rglass, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/pill_bottle/mannitol, -/obj/item/reagent_containers/cup/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/wrench/medical, -/turf/open/floor/iron/dark/textured, -/area/station/medical/cryo) -"ydt" = ( -/turf/closed/wall/r_wall, -/area/station/cargo/miningoffice) -"ydG" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/bodycontainer/morgue/beeper_off{ - dir = 1 - }, -/obj/machinery/light/cold/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/medical/morgue) -"ydL" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" - }, -/obj/machinery/duct, -/turf/open/floor/plating, -/area/station/maintenance/floor4/starboard/aft) -"ydS" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor2/port) -"ydX" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/floor/grass, -/area/station/security/courtroom) -"yee" = ( -/obj/structure/chair/office, -/obj/effect/turf_decal/tile/red/half/contrasted, -/obj/machinery/light/floor, -/turf/open/floor/iron/dark, -/area/station/hallway/secondary/entry) -"yef" = ( -/obj/structure/railing, -/obj/effect/turf_decal/stripes, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/drone_bay) -"yek" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/red/corner, -/turf/open/floor/mineral/plastitanium{ - desc = "cushioned to protect from rough landings"; - name = "boxing ring" - }, -/area/station/commons/fitness) -"yeq" = ( -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/dark/side{ - dir = 1 - }, -/area/station/hallway/floor4/fore) -"yew" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/access/all/engineering/external, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/station/maintenance/floor3/starboard) -"yex" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/hallway/floor2/fore) -"yey" = ( -/obj/structure/window/fulltile, -/turf/open/floor/plating, -/area/station/service/hydroponics/garden/abandoned) -"yeB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor2/port) -"yeR" = ( -/obj/structure/chair/sofa/bench/left, -/obj/effect/landmark/start/janitor, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/checker, -/area/station/service/bar/atrium) -"yeU" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/station/security/prison/garden) -"yfh" = ( -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/cut, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/starboard) -"yfi" = ( -/obj/structure/railing, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard) -"yfm" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"yfn" = ( -/obj/structure/table/wood, -/obj/item/pen, -/obj/item/paper_bin/carbon, -/obj/item/pen, -/obj/item/toy/figure/detective, -/turf/open/floor/carpet, -/area/station/security/detectives_office) -"yfq" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/security/brig) -"yfr" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/station/security/prison/garden) -"yft" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 8 - }, -/obj/item/wrench, -/turf/open/floor/iron/dark/textured_corner, -/area/station/engineering/supermatter) -"yfx" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/iron, -/area/station/security/courtroom) -"yfA" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/directional{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/security/prison) -"yfN" = ( -/obj/item/stack/arcadeticket, -/obj/effect/decal/cleanable/confetti, -/turf/open/floor/eighties, -/area/station/commons/fitness/recreation/entertainment) -"yfT" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/button/curtain{ - id = "theater"; - pixel_x = -26 - }, -/turf/open/floor/wood, -/area/station/service/theater) -"yfU" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/right/directional/north{ - name = "Security Desk"; - req_access = list("security") - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/security/checkpoint/second) -"yfY" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/turf/open/floor/pod, -/area/station/maintenance/floor3/starboard) -"ygc" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) -"ygd" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/engine, -/area/station/maintenance/floor1/starboard/fore) -"ygn" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"ygq" = ( -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 9 - }, -/obj/effect/turf_decal/tile/brown/fourcorners, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron, -/area/station/engineering/atmos) -"ygw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/first) -"ygH" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/machinery/light/floor, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"ygI" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/station/security/lockers) -"ygT" = ( -/turf/open/floor/wood, -/area/station/service/bar/atrium) -"ygU" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/science/xenobiology) -"yhr" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/hallway/floor1/aft) -"yhv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/comfy/brown, -/turf/open/floor/wood/large, -/area/station/medical/virology/isolation) -"yhz" = ( -/obj/effect/turf_decal/trimline/green/filled/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/filled/line, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/service/hydroponics) -"yhM" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/hallway) -"yhO" = ( -/obj/machinery/suit_storage_unit/engine, -/obj/structure/window/spawner/directional/east, -/obj/machinery/incident_display/delam/directional/south, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/station/engineering/lobby) -"yhP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/hobo_squat, -/turf/open/floor/pod/light, -/area/station/maintenance/floor2/port/fore) -"yhT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/station/science/xenobiology) -"yhX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/hallway/secondary/exit/escape_pod) -"yhZ" = ( -/turf/open/floor/iron/dark/smooth_large, -/area/station/service/library/printer) -"yil" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/iron, -/area/station/engineering/atmos/project) -"yim" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron, -/area/station/cargo/miningdock) -"yiw" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/miningdock) -"yix" = ( -/obj/effect/turf_decal/trimline/green/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured, -/area/station/hallway/floor2/aft) -"yiB" = ( -/obj/machinery/status_display/ai/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/fore) -"yiI" = ( -/obj/item/canvas/twentyfour_twentyfour, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"yiK" = ( -/obj/effect/spawner/random/structure/table_fancy, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/structure/sign/painting/library_secure{ - pixel_y = -32 - }, -/turf/open/floor/wood/large, -/area/station/service/library/artgallery) -"yiZ" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) -"yjJ" = ( -/obj/effect/turf_decal/siding/wideplating_new/dark/corner, -/turf/open/floor/engine/co2, -/area/station/engineering/atmos) -"yjN" = ( -/obj/structure/closet/crate/trashcart/filled, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/starboard/fore) -"yjR" = ( -/obj/effect/turf_decal/siding/wideplating_new{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_corner{ - dir = 4 - }, -/area/station/commons/fitness/recreation) -"yjU" = ( -/turf/open/floor/grass, -/area/station/maintenance/floor3/starboard) -"yjX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/port/aft) -"yka" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/medbay/alt/directional/south, -/obj/effect/turf_decal/trimline/blue/filled/line, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor2/aft) -"ykb" = ( -/turf/open/floor/wood, -/area/station/commons/dorms/apartment1) -"yke" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/pod/light, -/area/station/maintenance/floor4/port/fore) -"ykn" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 - }, -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/psychology) -"yko" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/port) -"ykr" = ( -/obj/effect/spawner/random/structure/table_or_rack, -/obj/item/reagent_containers/pill/maintenance, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) -"ykt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/hallway/floor3/aft) -"ykw" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Public Airlock" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/side, -/area/station/hallway/floor4/fore) -"ykC" = ( -/obj/structure/closet/crate/internals, -/obj/effect/turf_decal/trimline/dark_blue/end{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) -"ykL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/textured_large, -/area/station/hallway/secondary/exit/escape_pod) -"ykP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/atmos/pumproom) -"ykS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/iron/dark/textured, -/area/station/medical/surgery/aft) -"ykU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/engineering/lobby) -"ykV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/turret_protected/aisat/service) -"ykZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/station/commons/dorms/apartment1) -"ylb" = ( -/turf/open/floor/iron/dark, -/area/station/hallway/floor1/aft) -"ylf" = ( -/obj/structure/mirror/directional/north, -/obj/structure/closet{ - name = "Robe Closet" - }, -/obj/item/clothing/suit/chaplainsuit/whiterobe, -/obj/item/clothing/suit/chaplainsuit/whiterobe, -/obj/item/clothing/suit/chaplainsuit/whiterobe, -/obj/item/clothing/suit/chaplainsuit/whiterobe, -/obj/item/clothing/suit/chaplainsuit/whiterobe, -/obj/item/clothing/suit/chaplainsuit/whiterobe, -/turf/open/floor/iron, -/area/station/service/chapel) -"ylg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/weather/dirt, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden/abandoned) -"yli" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"ylj" = ( -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 8 - }, -/turf/open/openspace, -/area/station/maintenance/floor2/port/aft) -"yll" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/effect/turf_decal/trimline/brown/filled/mid_joiner, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/carpet/red, -/area/station/service/theater) -"yls" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/storage) -"ylD" = ( -/obj/effect/spawner/structure/window/hollow/middle{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor3/port/aft) -"ylE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/textured_large, -/area/station/hallway/secondary/exit/departure_lounge) -"ylG" = ( -/obj/machinery/modular_computer/preset/cargochat/engineering, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/machinery/light/small/directional/east, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/lobby) -"ylK" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=3-4"; - location = "3-3" - }, -/turf/open/floor/iron, -/area/station/hallway/floor3/fore) -"ylR" = ( -/turf/closed/wall, -/area/station/medical/cryo) -"ylV" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/white/herringbone, -/area/station/medical/patients_rooms) - -(1,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(2,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(3,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(4,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(5,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(6,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(7,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(8,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(9,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(10,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(11,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(12,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(13,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(14,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(15,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(16,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(17,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(18,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(19,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(20,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(21,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(22,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(23,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(24,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(25,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(26,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(27,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(28,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(29,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(30,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(31,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(32,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(33,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(34,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(35,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(36,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(37,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(38,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(39,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(40,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(41,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(42,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(43,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(44,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(45,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(46,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(47,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(48,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(49,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(50,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(51,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dmx -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(52,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dcG -dMr -dcG -dMr -dcG -owI -owI -owI -dcG -dMr -dcG -dMr -dcG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(53,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dcG -qbt -dcG -qbt -dcG -owI -owI -owI -dcG -qbt -dcG -qbt -dcG -owI -pRk -dbc -pRk -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(54,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -hpI -imY -hpI -imY -hpI -imY -hpI -xYo -dcG -eSx -dcG -dRY -dcG -dcG -xYo -dcG -dcG -dRY -dcG -eSx -dcG -hhx -pRk -vjv -pRk -hhx -hhx -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(55,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -hpI -hpI -hpI -hpI -hpI -imY -hpI -imY -hpI -imY -hpI -xYo -bUq -ref -wZH -ref -sAa -fsv -hYo -fsv -qUo -ref -wZH -ref -swK -hhx -pRk -aEH -pRk -hhx -hhx -hhx -hhx -hhx -hhx -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(56,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -hpI -hpI -hpI -hpI -hpI -hpI -hpI -hpI -xTH -nqj -oQy -qSf -sGB -nqj -nmB -xYo -oQO -xZg -xZg -xZg -mFE -oMP -oMP -oMP -myT -oMP -oMP -xPr -eZu -hhx -mxx -stj -jZk -hhx -hhx -hhx -hhx -hhx -hhx -hhx -hhx -hhx -hhx -hhx -aux -iST -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(57,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -hpI -hpI -hpI -hpI -hpI -pLY -mFp -fGP -mSM -nhf -nqj -oWe -rpr -tCS -nqj -taW -xYo -bIG -ycy -vQx -siu -ncu -epv -bkz -cqu -aYa -pvw -eSX -ylE -qiy -hhx -rKc -bfX -tqx -svs -lJn -wxH -hpn -len -hhx -kop -kop -kop -kop -kop -kop -aux -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(58,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -imY -imY -lBR -hpI -jZE -jSj -mdB -qmg -mGq -mMr -mUe -nhs -nun -oWM -nqj -nqj -nun -taW -xYo -oGQ -oVB -cSY -nlw -ncu -qVl -gXG -mmR -tlr -hII -gls -dgb -qCx -mmv -qPQ -uLR -nDg -xJz -lQm -lQm -aRS -hFa -pRk -kop -kop -kop -kop -kop -kop -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(59,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -aaV -hpI -ceL -uuO -mhQ -sMk -mGP -mhQ -naz -nhE -nwa -nhE -nhE -nhE -yjR -gJI -xYo -bTq -ycy -byi -nlw -cCu -lUu -ltR -lUu -vhj -hII -byi -ycy -faw -hhx -glp -vHN -kWd -uMk -apk -mly -bje -fiO -pRk -pRk -kop -kop -kop -kop -kop -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(60,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -arE -aVk -kws -kDK -mzB -mme -mme -mme -mme -nhL -nhL -nhL -nhL -nhL -ciK -tzF -xYo -psK -ycy -oAd -nlw -wwk -gsN -uZf -qDt -npR -hII -gls -ycy -nBW -hhx -hhx -hhx -hhx -hhx -hhx -vBS -onw -rzK -eQG -uCl -ujv -kop -kop -kop -kop -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(61,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -jwS -hpI -kUB -lRb -mdB -mdB -nrx -bag -mdB -mMr -mdB -pgo -rqM -wyp -lgj -mdB -xYo -viS -vnE -sxw -xWx -mit -epv -bkz -cqu -npR -nph -ocn -ycy -nBW -wBR -xEw -jzc -ePV -xCS -uRE -mFP -isq -rzK -pRk -pRk -kop -kop -kop -kop -kop -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(62,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -imY -imY -aSI -hpI -vTL -vTL -vTL -wff -vTL -vTL -wff -vTL -vTL -vTL -hpI -hpI -mFD -hpI -xYo -ciq -xFf -red -pqz -mnm -uuG -omj -omj -wtr -rgR -omj -omj -fbC -wBR -euS -jvY -jvY -rqx -wBR -xEY -xlD -rzK -pRk -kop -kop -kop -kop -kop -kop -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(63,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hpI -hpI -hpI -hpI -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -hpI -uCb -aKc -aLz -xYo -xYo -aDl -nYP -daf -lDs -sHP -sHP -mDZ -xYo -inq -mha -cIo -ehR -wBR -dbe -gbU -gLK -ciH -wBR -dzs -ast -isK -hhx -kop -kop -kop -kop -kop -kop -aux -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(64,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -aUT -oic -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -imY -ubu -fRA -aXN -xYo -dyQ -cbG -pPJ -wIC -vsj -tAz -nQT -lPR -iUP -inq -qsF -wUH -hyN -wBR -pTR -oZd -wBR -wBR -wBR -amK -amK -kWr -wBR -wBR -wBR -wBR -wBR -hJy -aux -iST -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(65,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -twL -oic -xLb -xLb -mZM -xLb -xLb -xLb -xLb -xLb -xLb -xLb -imY -wKd -fRA -jry -xYo -qWR -cVD -nzk -cVD -nHT -fRo -gdr -jLI -keF -inq -cFF -pqP -oRw -wBR -luG -qZF -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(66,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -nnV -oic -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -imY -wKd -fRA -oJl -xYo -bor -dby -bJo -wbg -mxT -feR -dby -dby -eYa -inq -tJj -reI -vrk -wBR -bdN -wRn -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -vuq -sPJ -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(67,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -nnV -oic -jXX -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -ppQ -imY -wKd -fRA -twp -xYo -xYo -xYo -xcg -elI -qNx -lme -qOF -xYo -xYo -inq -inq -inq -inq -wBR -wBR -wBR -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(68,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -oic -qFv -oic -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -imY -snI -hDy -lEy -hpI -voj -axe -qxz -fvr -sZI -nVw -vZC -tKe -voj -sPJ -xtY -oWA -xtY -xtY -qxr -sWM -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(69,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -oic -wPP -pzU -oic -xLb -xLb -xLb -xLb -xLb -xLb -xLb -mZM -xLb -xLb -imY -ssY -fRA -pQH -hpI -fGX -bXv -vLP -grg -lnG -grg -grg -qaj -gVw -sPJ -xtY -xtY -iDP -boY -eGQ -hOV -wBR -ydm -ydm -ydm -ydm -icq -ydm -ydm -ydm -cUt -wBR -hJy -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(70,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -oic -oic -wrq -cus -oic -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -hpI -xgV -rwM -hbs -hpI -dRs -ohO -nQZ -vWa -fRJ -mPY -nJV -aEj -ejE -hJy -hJy -sPJ -hJy -hJy -hJy -hOV -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -bgH -hJy -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(71,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -oic -tPO -oic -ebO -vDf -oic -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -xLb -oic -kyR -mFD -kyR -kyR -gVw -rpj -nWO -fXD -iyK -iIp -aYd -nBn -rUH -rUH -uGS -rNO -tSK -hJy -hOV -hOV -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -hJy -hJy -hJy -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(72,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -oic -wWE -uaJ -oic -oic -mZj -oic -oic -oic -oic -aDk -oic -oic -mvK -oic -oic -oic -oic -xyO -ayv -oiF -umg -uFh -qwA -aQR -nFK -nFK -nFK -tJi -mMt -vZC -sZI -vZC -oNP -cYZ -hJy -ofp -hJy -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -gnL -oNI -ebm -kAY -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(73,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -dSI -dSI -dSI -oic -nnV -ygc -oic -oPH -xob -wnP -nnV -oic -rVo -ala -ala -ala -gCH -dtU -pRl -pJO -fnT -oQL -vsP -iVL -oKP -eWV -arG -vpb -udq -pBJ -grg -lnG -obQ -xVC -mIi -hJy -hOV -fTb -wBR -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -ydm -wBR -giC -ciW -hJy -kAY -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(74,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -oic -oic -qTp -qTp -qTp -oic -iTk -vga -eFe -rXL -nDK -dwG -jek -oic -nkp -qRF -tNS -wRT -jxa -oic -rLs -aUJ -vWF -pxu -tTy -grg -mrU -cim -vpb -fGc -pPe -uPT -tTy -hyD -vWF -crO -rLs -hJy -aLP -hJy -wBR -wBR -wBR -wBR -wBR -wBR -wBR -wBR -dbH -wBR -wBR -bqu -xEn -hJy -kAY -sPJ -sPJ -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(75,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -rRf -rRf -rRf -lfG -rRf -vga -oic -uKE -njm -iQY -xGU -oic -nkp -ikg -tNS -kGL -jxa -oic -kyR -kyR -qRi -bMo -kyR -kyR -kyR -kyR -kyR -kyR -kyR -kyR -kyR -lKy -qRi -kyR -hJy -hJy -sui -sui -olt -hJy -dEa -qez -hJy -qez -qez -qez -cgi -qez -hJy -hJy -hJy -hJy -kAY -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(76,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -ppo -kKd -vga -oic -tVq -osq -oic -twL -uzN -aaC -twL -oic -djX -cWX -tNS -ybF -hxN -rRf -kyR -lWA -vZC -lVW -ieI -kyR -uKt -mXx -qCp -mXx -ssm -kyR -mMD -sZI -vAy -inR -hJy -ciW -xtY -xtY -xYb -hJy -hJy -qez -hJy -stV -hJy -mNi -cgi -cgi -omF -qSW -omF -omF -kAY -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(77,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -tAL -kBa -vga -rtD -jhF -hYm -oic -ygd -skW -kXW -eey -oic -oic -dFZ -tNS -uNL -iKz -rhZ -kyR -blK -hoF -aJT -eai -eee -bFD -mXx -uOs -mXx -tNK -ogh -ebY -lnG -bBx -eoQ -hJy -tns -ciW -oeu -uID -eiM -srO -eiM -hJy -wiJ -xoN -hJy -hJy -ijs -kAY -hJy -hJy -uIm -hJy -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(78,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -vga -hNf -pYS -pnF -lpV -vHI -oic -drp -laS -btP -bxf -oic -rVo -wsw -tNS -thq -mVp -vga -kyR -sVQ -vWF -pxu -fhr -kyR -hPA -mXx -mXx -mXx -iHk -kyR -wjt -hyD -rbx -uyK -hJy -vLX -tmW -xtY -lPb -hJy -hJy -eiM -hJy -aJk -rBW -gxW -hJy -hJy -xPL -hJy -aGJ -dRb -tWn -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(79,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -vga -oic -oic -oic -mID -exL -oic -oic -oic -oic -oic -oic -nkp -rTk -tNS -jrZ -aWe -oic -kyR -kyR -qRi -bMo -kyR -kyR -kyR -cDj -eZA -iEP -kyR -kyR -kyR -lKy -qRi -kyR -hJy -hJy -vZl -pxY -agt -hJy -jMI -eiM -hJy -hJy -hJy -hJy -hJy -dXr -izz -hJy -qZP -hJq -jxN -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(80,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -vga -vga -aHA -vga -rRf -rRf -rRf -rRf -rRf -lfG -rRf -rRf -nkp -ikg -wZD -ikg -aWe -oic -cdq -bjI -btV -pxX -fNy -lfj -kyR -sIB -sIB -sIB -kyR -lNQ -oKK -sZI -pSE -kLH -vIx -hJy -wwz -hJy -hJy -hJy -hJy -iGt -dYj -izz -izz -izz -izz -izz -izz -hJy -wnI -mkk -gHp -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(81,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -eea -hdj -nir -loc -hIk -oic -oic -oic -oic -oic -sBT -qLI -djX -lIe -lIe -joP -tQJ -oic -buP -gVw -ohO -aJT -grg -grg -fey -eZA -eZA -eZA -vON -grg -grg -lnG -uYI -kLH -cmj -hJy -cay -cWw -qez -mIh -hJy -iGt -sPJ -cgi -hJy -sPJ -hJy -cgi -hJy -hJy -hJy -mRI -hJy -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(82,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -nBw -knf -aua -nBw -iYE -oic -dLj -rwY -oic -nMK -sBT -oic -hpj -gOf -iQa -mRo -iQa -oic -dSe -gVw -rEm -aJT -iyS -iyS -riy -fna -poR -vxY -rlf -lnG -lnG -lnG -sXE -kLH -vIx -hJy -rXp -oZW -xMd -ifx -hJy -htg -hJy -cgi -hvF -cgi -cgi -cgi -hJy -xtY -fDq -foK -jAO -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(83,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -gwl -beG -kBs -gTF -cEu -oic -uNF -uaJ -oic -sBT -sBT -oic -oic -oic -fHM -dIz -nJY -oic -rLs -gVw -rpj -vLP -grg -grg -qaS -jXY -gqU -iIV -fzL -qww -jax -hqv -ejS -kLH -cmj -hJy -iSs -kDQ -sDT -vZw -hJy -dIO -hJy -hJy -hJy -hJy -mAZ -bvU -hJy -upS -plI -mcu -iuP -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(84,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -oic -oic -oic -oic -oic -oic -hhw -oic -rJR -sBT -oic -oic -fJz -oic -oic -hmn -oic -oic -kyR -iDZ -geY -lkh -dQg -hgE -gKG -btV -kyv -jpM -hJy -hJy -dxu -hJy -hJy -hJy -hJy -hJy -dXh -ppr -oIr -luk -hJy -eaI -xtY -oWA -xtY -hJy -hJy -hJy -hJy -xtY -jJB -svR -gxb -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(85,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -nUj -uNF -vnp -jdc -jdc -jdc -jdc -jdc -jdc -sBT -oic -gdt -uNF -uaJ -oic -jrx -ncc -ncc -rze -rze -rhx -rhx -xBe -rze -gVw -rpj -gqU -uOT -hJy -fTb -jWi -dnx -nRP -sIv -plC -hJy -qXc -sSK -hJy -hrB -hJy -eaI -xtY -xtY -xtY -ePp -eiM -eiM -usj -dac -fQm -fQm -qez -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(86,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -wIX -laR -oic -jdc -oic -oic -oic -oic -oic -sBT -vnp -tag -uaJ -rdy -oic -jrx -ncc -xPB -ncX -xuX -ami -hem -ubZ -xBe -gVw -rpj -gqU -xWO -hJy -fZZ -qAK -wTi -qAK -hJy -qAK -hJy -hJy -hJy -hJy -iXn -hJy -eaI -xtY -xtY -xtY -xLZ -lcg -glI -hJy -hJy -jJV -rTz -fmE -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(87,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -oic -oic -eUT -osC -stZ -fpW -oic -ekj -ekj -ekj -oic -sBT -oic -ccA -bCW -oic -oic -jrx -ncc -pbF -iir -pxk -iir -fbO -vyZ -rhx -gVw -rpj -gqU -asF -hJy -hwt -fqx -qIM -ffD -hJy -lMG -qIM -qIM -qIM -qIM -mAr -hJy -eaI -xtY -xtY -xtY -xLZ -mAD -ajB -jJV -hJy -hJy -hJy -hJy -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(88,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -tXe -tXe -bCR -tXe -tXe -rxS -nXs -oic -oic -oic -oic -bff -oic -oic -oic -oic -vOW -jrx -ncc -mdJ -iir -mJH -jmB -vSg -gmW -jVS -rUH -hVB -gqU -kAG -hJy -huk -hJy -hJy -hJy -hJy -hJy -hJy -hJy -hJy -eqK -iGt -udE -fAU -fqg -fqg -fqg -nzm -iGt -iGt -iGt -gRj -iGt -hTJ -rBB -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(89,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -tXe -tXe -dPx -pUY -tXe -tXe -nfI -tXe -gUS -nOj -dzo -bUC -yiZ -unC -wMQ -ncc -nYh -jrx -ncc -xRU -iir -nqJ -oOc -bCz -prw -rze -rLs -rpj -gqU -vsv -hJy -hwt -hwt -hwt -hJy -icp -xFH -inM -pIH -eTr -hJy -vwB -hJy -mAZ -fZZ -hJy -sYU -dmG -hJy -ato -gOz -hJy -hut -hJy -gBK -hJy -hJy -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(90,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -tXe -tXe -iCP -nnu -hnb -jdQ -qxN -tXe -eps -yiZ -yiZ -bUC -mwZ -rCK -lUY -ncc -itC -jrx -ncc -rze -xBe -lvJ -xBe -rze -nsp -rze -kyR -jZA -gqU -gjy -hJy -hFW -nej -hwt -hJy -gQU -cnj -pka -cnj -vzN -hJy -hJy -hJy -sPJ -sPJ -hJy -sPJ -sPJ -hJy -sPJ -sPJ -hJy -hJy -hJy -hJy -hJy -hJy -aux -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(91,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -tXe -tXe -cOT -sxb -luo -hTP -lNW -qZU -dQo -qWJ -qWJ -imO -vfG -vNZ -eYY -ncc -nYh -jrx -cpz -rPi -mQi -lvY -hNg -dny -txP -nqX -rPi -rpj -gqU -lXX -hJy -bvU -hwt -hwt -hJy -aLA -cpe -uTI -cnj -fjD -brj -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -qlt -lCo -tWX -cHX -iST -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(92,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -tXe -tXe -pjw -scn -vzo -dqM -bED -qZU -rYA -eEB -lUY -bUC -rYA -yiZ -mMH -ncc -utu -jrx -pjD -rPi -tpz -lwl -oqq -mMd -nsB -nRx -fgN -ohO -gqU -kRg -hJy -hJy -suR -hJy -hJy -cUu -gUp -apy -eqa -flk -brj -qsh -qsh -qsh -qsh -qsh -qsh -qsh -qsh -qsh -qsh -qsh -ePY -qsh -qsh -lCo -tWX -owI -cHX -aux -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(93,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -tXe -tXe -tXe -tXe -tXe -mps -qZU -tXe -srf -fve -aSL -iCn -ooP -jUP -jUP -ncc -ncc -oIN -ncc -rPi -rPi -nUM -nAT -mMd -kFP -vbD -rPi -rpj -gqU -imJ -iWK -brj -fJT -uPU -bDm -pPh -hse -pMu -xtd -nIr -bsu -jxG -ejb -ejb -ejb -ejb -ejb -ejb -ejb -ejb -ejb -ejb -ejb -ejb -ejb -lCo -tWX -owI -owI -aux -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(94,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -uYl -pFb -gHw -yef -oyb -kHQ -hIj -aQK -vtj -tLt -iHZ -lSJ -wqF -jUP -gVm -kYR -rIy -jzP -sAI -bXB -npD -nUM -kFP -mMd -dVQ -jPv -fgN -rpj -gqU -imJ -kHs -brj -juE -bun -mzb -gMZ -jNL -cTk -myr -dmU -bsu -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -sdQ -lCo -tWX -owI -owI -aux -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(95,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -uYl -pFb -lyB -yef -wZu -vTt -hai -aQK -uhw -rhs -eaW -lSJ -mxC -jUP -etb -myW -kga -uTH -bRM -bRM -krk -lxU -nsB -mMd -kFP -ehg -rPi -wOn -gqU -imJ -gVw -brj -cCd -lIm -vcT -aiF -dvF -rwn -pkR -xhA -brj -tEI -tEI -tEI -tEI -tEI -tEI -tEI -tEI -tEI -tEI -tEI -rWV -tEI -tEI -lCo -tWX -owI -cHX -aux -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(96,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -uYl -pFb -gHw -hDa -fyg -xxQ -sbB -aQK -jUP -prt -jUP -bkx -gcj -jUP -gWv -new -jbl -nzL -xnC -oUH -npD -lyw -rNG -dny -gPr -lju -fgN -rpj -gqU -fhZ -jQS -brj -btN -bvG -brj -bWH -mor -rcT -jAB -fYi -brj -uzn -uzn -xkq -xhg -xhg -xhg -xhg -qAk -uzn -uzn -uzn -uzn -uzn -uzn -lCo -tWX -cHX -iST -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(97,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -aQK -aQK -aQK -gfn -aQK -fuJ -aQK -aQK -cfO -uwm -hMr -mnk -mnR -aHb -myW -mnR -jyC -jzd -cUL -cUL -cUL -rPi -rPi -bmx -nvE -nXl -rPi -rpj -gqU -imJ -gVw -brj -hFi -aln -brj -brj -brj -lss -bsu -gmF -brj -brj -brj -fnO -jlx -jDL -oGc -jlx -rXC -brj -xgH -xgH -xgH -xgH -bUP -xgH -xgH -aux -cHX -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(98,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -cUL -cUL -oKT -xsL -vDw -dty -kcT -eOz -eOz -onX -jlI -myW -myW -myW -myW -dkf -bvf -pxh -cUL -ovG -rMx -oqW -rPi -rPi -fgN -rPi -rPi -kEZ -gqU -imJ -qvy -brj -qGk -srC -fpD -oar -uJE -oYv -oYA -xsC -oTo -bsu -qPM -ixQ -ixQ -xvA -eGr -ixQ -ixQ -fMY -xgH -eUW -hAT -fRH -iqx -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(99,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -uEL -qnq -ozs -qnq -qnq -qnq -ozs -kOQ -vzv -xNx -ugU -xNx -bwx -mnR -bvf -pxh -cUL -pVe -xEp -nrt -sNr -sNr -sNr -sUC -ncc -jZA -gqU -imJ -gVw -bsu -qGk -srC -cez -clb -maS -jbu -usB -rtV -jcN -erR -edS -edS -edS -edS -edS -jGI -aPM -gdA -xgH -wVn -wVn -igd -igd -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(100,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -fgr -cJt -jfa -lqD -cMA -mnR -bvf -pxh -jzH -kAu -asl -iNK -aqP -ybp -tSs -epb -apC -rpj -gqU -imJ -gVw -bsu -qGk -lMj -brj -brj -brj -brj -hWD -rtV -eAr -dMA -dWi -dUW -dUW -mrM -uDD -uDD -uDD -gsP -xgH -qmj -xgH -xgH -wcR -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(101,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -fgr -wNx -cUL -cUL -cMA -mnR -bvf -pxh -tAN -kxf -xtp -aKQ -pWF -qvM -aKQ -aaP -qEi -rpj -gqU -imJ -gVw -bsu -qGk -xqV -brj -fqJ -dDz -bsu -sgL -vWG -rMD -bsu -dAB -dXY -emg -eqN -eHW -fVq -emg -eSc -xgH -wVn -vkO -xgH -xgH -xgH -xgH -aux -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(102,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -qkr -cJt -kdy -gXl -cMA -mnR -acv -hNz -wEN -nlu -aAZ -iRK -mhl -mhq -aKQ -aaP -lTV -oqa -gqU -imJ -jFZ -brj -oXp -xVX -tML -wQe -yee -sqy -jKO -sNN -acj -brj -brj -xtP -xtP -brj -brj -brj -brj -brj -xgH -wVn -eVk -ofn -kdj -hqh -cVG -iST -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(103,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -sWf -non -anU -non -hNB -myW -bRM -pxh -rve -cow -xtp -lAc -qaE -mRm -vEx -xPs -dxz -rpj -gqU -wxE -nTC -brj -wZU -gyu -brj -vTN -ciQ -bsu -qvw -rtV -rMD -duu -dDs -edm -emU -euA -xgH -nGx -wVn -wVn -wVn -wVn -xgH -xgH -xgH -xgH -xgH -aux -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(104,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -gjR -izq -iJG -izq -abU -hQg -wOg -jFN -wFB -hWN -egG -sjD -mir -lCZ -kmQ -mTU -apC -rpj -gqU -cBk -rUH -eHX -qGk -oPg -brj -brj -brj -brj -gSk -rtV -nrB -jAF -nVm -vdb -cMi -vIb -xgH -apX -rLU -xgH -xcA -xcA -fmb -fmb -fmb -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(105,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -bZr -uIh -tHL -nAm -hLP -nAm -tHL -tHL -cUL -ggO -ulv -ncc -jhV -pAb -wCl -din -ncc -kzU -gqU -wpP -iXA -ras -wLg -rnd -llC -clb -cuS -hnX -jbu -yag -mOt -xAH -pNK -kpc -cxx -bTW -xgH -cfC -ksu -xgH -fmb -uZk -uZk -uZk -uZk -uZk -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(106,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -sfg -oCK -wcX -hBw -bcZ -hBw -hLP -hBw -tHL -kOS -hDf -wha -tHL -ncc -jPI -ncc -wwN -vMk -ncc -rpj -gqU -tqE -tfo -brj -hVZ -rxq -srl -owS -tCq -bKp -xiC -rbs -jiE -duu -dFj -ehQ -sZf -ezw -xgH -oJO -dJO -xgH -fmb -uZk -ebN -gQI -xxh -uZk -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(107,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -bZr -nAm -nTZ -iyU -aat -nPa -ssa -uxR -htW -htW -tHL -xHA -kWJ -xHA -wdq -xHA -xHA -uKC -gqU -pBQ -wdL -wdL -wdL -wdL -wdL -wdL -wdL -wdL -xgH -xgH -xgH -xgH -xgH -xgH -xgH -xgH -xgH -apX -uFQ -xgH -fmb -uZk -xYE -haj -gyI -uZk -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(108,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -bZr -hBw -tHL -aJE -hLP -hBw -tHL -oIq -mxi -vgZ -rmz -xHA -lrR -tNO -gNi -pye -xHA -bzw -gqU -imJ -cQm -nCi -svW -luJ -faA -pBg -lem -wdL -nik -nik -nik -fBJ -xgH -hnz -dyS -oMV -wVn -wVn -wVn -xgH -fmb -uZk -kXo -dNA -kxK -uZk -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(109,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -mjQ -rbT -ijL -rbT -hLP -ydt -mVL -kbM -ydt -ydt -scv -xHA -uWC -oMX -mYB -pdU -xHA -jZA -gqU -kro -qvl -kbp -tpD -nMu -qot -pwY -bnN -wdL -xfT -xfT -xfT -xSl -dyS -dyS -dyS -xgH -wVn -xgH -xgH -xgH -xgH -uZk -uZk -pEA -uZk -uZk -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(110,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -gHs -dOs -dOs -dOs -dOs -dOs -dOs -oCK -bZr -hBw -tHL -hBw -jwC -ydt -oYn -kVu -oLv -uBG -scv -tZq -gdZ -oMX -cqT -jNb -xHA -tOo -gqU -imJ -bwS -uOx -rPG -jxf -qIH -pwY -xjS -wdL -ema -ema -ema -asU -xgH -pLe -dyS -xgH -wVn -xgH -fJA -apw -jjC -nAV -icE -oAH -mty -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(111,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rbQ -uvv -jHH -qgr -gCE -qgr -qgr -qgr -gCE -gcE -fXm -mqt -uKO -mqt -aat -ydt -oYn -oZV -aOD -mUh -scv -eqs -wXU -hUN -mYB -tFR -xHA -rpj -gqU -imJ -wdL -wdL -mTK -mJr -ygw -cGn -wBG -wdL -dyS -wDr -hjs -vwn -xgH -hjs -uJo -xgH -wVn -xgH -fJA -iwJ -neW -flf -aYv -eGp -oIE -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(112,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hKN -hKN -hKN -hKN -hKN -xbV -xbV -xbV -xbV -xbV -iEl -kwK -tHL -aJE -hLP -ydt -oYn -ktd -oSj -scv -scv -xHA -hbX -nxy -mYB -jNb -xHA -rpj -gqU -uOT -wdL -jam -uyH -bSU -xLy -epz -vcy -wdL -dyS -xgH -xgH -xgH -xgH -dyS -dyS -xgH -wVn -xgH -cmG -xtX -cmG -cmG -wwU -bgg -cmG -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(113,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -hKN -lWH -oLL -oqc -hKN -hKN -mar -mar -mar -hKN -hKN -rbT -tHL -rbT -hLP -ydt -iBB -dUQ -oBB -sxA -esz -eTR -ghv -xHA -bhW -xHA -xHA -lKz -vkr -irK -wdL -wdL -wdL -tbb -wdL -wdL -wdL -wdL -dyS -dyS -dyS -dyS -dyS -dyS -xgH -xgH -wVn -xVo -krf -vUd -cmG -frV -huh -auc -lbT -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(114,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hKN -lWH -sIN -lWH -lWH -wFy -bFd -tJG -irS -wPK -hKN -wIr -ugp -hLP -hLP -ydt -ydt -jEc -ydt -scv -ybL -xHA -gCv -hiD -qtW -xHA -vOK -vOK -dtY -pRG -vOK -xgH -mNr -qsW -jwD -jwD -jwD -jwD -jwD -uyg -ljx -dxS -xgH -xgH -xgH -sYP -wVn -xgH -ykn -fae -cmG -jHW -jLr -ipa -iOL -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(115,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hKN -lWH -qlb -qyP -lWH -gNU -pZU -vsg -cmT -sMS -mar -xeu -ann -dpH -dpH -dpH -ehG -jEn -lgZ -scv -scv -xHA -ucY -clv -xHA -xHA -kyR -oOK -dJV -gpZ -kyR -kyR -kyR -kyR -kyR -kyR -kyR -xgH -xgH -onC -vIn -nEb -dyS -dyS -dyS -wVn -xgH -xgH -ctT -wnN -cmG -kkQ -hST -niD -vyn -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(116,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -uCo -khl -nqL -mEP -izl -umw -umw -aGz -jdT -tGE -mar -jmm -mCp -dpH -has -kLn -ehG -llR -pEv -iKb -dpH -sHN -fhX -nIO -kyR -vOK -mgl -grg -jnp -vLP -oNK -iQC -rpj -mXx -mXx -mXx -kyR -rTt -xgH -xgH -vIn -xgH -xgH -xgH -xgH -nrh -yko -xgH -cmG -cmG -cmG -cmG -mQW -nze -jGn -ssr -tbw -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(117,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hKN -lWH -aaI -fFI -lWH -tud -kHP -skM -jdT -mfR -xGR -tuM -ujC -dpH -anf -hXa -vmc -qly -pEv -hWF -dpH -nRF -mnQ -nIO -obV -pyL -qIz -jYY -ptd -cbT -qgU -okN -qgU -mXx -nRe -mXx -kyR -eVk -twx -twx -vIn -xgH -vfY -qRz -xgH -xgH -wVn -xgH -kbO -nWu -avt -hjK -hST -nze -soI -ssr -tbw -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(118,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -dpH -xIx -eAY -ehG -sYa -pGW -dts -dpH -ihQ -fhX -rMq -kyR -bSE -hVG -bBx -jnp -vLP -tmH -iQC -rpj -mXx -iZD -mXx -kyR -tCB -twx -twx -vIn -xgH -bvi -eVk -bGV -xgH -wVn -xgH -uXf -ofy -gPt -xXi -lMC -ipa -oPC -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(119,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -akk -aug -brN -mdd -uPM -sJt -nsi -oQa -uPM -tIK -nsi -uPM -fqP -sLF -ehG -ehG -ehG -ehG -eXR -hUk -weY -dpH -dpH -dpH -dpH -dpH -dpH -kyR -iHw -dJV -nwi -kyR -kyR -trF -kyR -kyR -kyR -kyR -eVk -twx -twx -vIn -uls -twx -eky -xgH -xgH -wVn -xgH -ttF -qmN -lJN -cmG -sWt -eGp -wNd -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(120,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dpH -ehG -vxU -tKU -tKU -lBD -tKU -tKU -tKU -lBD -tKU -tKU -tXJ -ehG -wMw -kLn -ehG -llR -pGW -oqO -yiw -lIU -iYb -flN -eNN -dpH -vOK -vOK -dtY -pRG -vOK -byc -sFJ -mdi -sFJ -cHb -kyR -kOx -xgH -xgH -vIn -xgH -pxb -cuf -enB -xgH -wVn -xgH -xgH -xgH -xgH -cmG -cmG -vBA -hjK -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(121,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -gHk -lhZ -lhZ -lhZ -lhZ -lhZ -lhZ -lhZ -ghg -vkW -ehG -xDV -xZv -cwG -qly -pEv -pnr -vAS -tQf -qzm -gtX -gUO -dpH -rjD -gRf -lLy -jau -rjD -kzE -pZV -kzE -xgH -xgH -xgH -xgH -xgH -qOp -vIn -xgH -xgH -xgH -xgH -xgH -wVn -wVn -wVn -wdA -xgH -kbO -nWu -gPt -eUX -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(122,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -hee -rJy -rJy -rJy -wxW -rJy -rJy -rJy -aWr -vkW -ehG -vaz -xEK -ehG -mMn -pEv -dsl -bgO -lJq -fdx -hah -vay -dpH -jYS -cax -cKC -mhr -xgH -dgU -wVn -wVn -yko -wVn -wVn -wVn -wVn -wVn -wgr -aHW -aHW -aHW -aHW -aHW -aHW -vuW -fkW -lYE -xgH -uXf -ofy -gPt -ktu -ssr -tbw -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(123,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -hee -rJy -rJy -rJy -rJy -rJy -rJy -rJy -aWr -sWF -ehG -ehG -ehG -ehG -nUS -pGW -jfd -yiw -xwi -qkx -vcM -kHN -dpH -pCG -cax -cKC -kSN -xgH -wVn -xgH -xgH -vmM -xgH -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -lUo -nRL -xgH -qGp -qmN -lVR -eQm -cmG -cmG -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(124,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -hee -rJy -rJy -rJy -rJy -rJy -rJy -rJy -aWr -dgp -lmv -ggQ -kFi -tnz -khh -pEv -htc -ehG -ehG -ehG -ehG -dpH -dpH -rjD -dVB -cKC -hGW -xgH -wVn -xgH -uPm -eVk -jxy -kzE -clP -lkX -mew -vAA -kOR -eXp -kOR -kOR -kOR -kOR -kzE -dQi -nRL -xgH -xgH -xgH -xgH -xgH -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(125,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -hee -rJy -rJy -rJy -rJy -rJy -rJy -rJy -aWr -wdP -pwf -mRt -hpi -pwf -mRt -bAL -vOx -yiw -jqV -pLI -qUW -vWp -cIt -rjD -cax -cKC -kSN -xgH -wVn -xgH -vog -tYc -jnG -kzE -nQx -qyJ -xiz -ipV -lUH -lUH -lUH -lUH -cUb -xyD -kzE -tCB -nRL -xsX -hIQ -hIQ -hIQ -pME -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(126,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -hee -rJy -rJy -rJy -rJy -rJy -rJy -rJy -aWr -bDg -ehG -ehG -ehG -ehG -bLt -qeW -rim -njk -viG -cGM -wgu -tPy -jXW -jwr -sAK -cKC -bfC -xgH -wVn -xgH -xgH -kzE -kzE -wxQ -mIK -oCW -kLc -hLX -hLX -hLX -hLX -hLX -hLX -lkE -kzE -lJk -rHr -pdK -haM -gsh -wsb -njQ -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(127,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -hee -rJy -rJy -rJy -rJy -rJy -rJy -rJy -aWr -wdP -ehG -xkY -kLn -ehG -apM -quB -myd -ehG -sQH -vHa -uSC -vHa -nVs -rjD -fFT -cKC -mkO -xgH -wVn -bMz -eXi -kzE -cgT -pUH -lUH -ucf -kLc -hLX -hLX -hLX -iSS -qDH -qpt -lkE -kzE -bMz -eOY -mEa -xfT -xrB -jEa -njQ -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(128,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -eFc -fWE -uaC -glo -vFC -vFC -vFC -vFC -vFC -vFC -vFC -jTj -bvO -ehG -cms -vxH -khe -oCf -quB -mRt -dAc -sBK -tbt -tkZ -nKc -qas -jwr -cax -cKC -kSN -xgH -wVn -awf -xiU -kzE -fCc -lsT -jJq -hLX -oXQ -dTm -vAU -iTy -uRn -uRn -ola -kET -kzE -jXz -eVk -mEa -xfT -xfT -xfT -njQ -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(129,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dpH -ehG -vau -gAT -gAT -mmy -gAT -gAT -gAT -mmy -gAT -gAT -csT -ehG -eSP -cui -ehG -bBV -wBB -xxx -yiw -eCD -sUp -mBF -qYA -mUw -rjD -dMO -cqY -lxr -cuc -wVn -aDM -kGq -kzE -fCc -fji -hLX -hLX -wXE -dcO -joV -dTm -uRn -qhP -ola -hGj -kzE -uhl -twx -asf -uhg -uhg -uhg -sat -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(130,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -dpH -ehG -tFc -yim -bgw -cCC -tTv -bdo -vyN -qJe -xUS -qcW -tIn -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -cax -cKC -kSN -xgH -wVn -cAu -mgf -kzE -okL -byk -lfL -bOB -kLc -hLX -hLX -hLX -uEO -jsP -fQQ -lkE -kzE -kzE -kzE -kzE -rSc -tCB -twx -gXM -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(131,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -bMD -trb -bMD -xlK -axS -whV -nJm -whV -clp -clp -bel -gRh -tRj -osQ -pPZ -whV -mie -cKC -kSN -xgH -wVn -xgH -xgH -kzE -kzE -wxQ -odK -fPf -kLc -eVV -hLX -hLX -hLX -hLX -hLX -lkE -wCn -opB -wCR -kzE -kzE -ulh -eVk -wVn -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(132,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -plf -cNA -lXT -dui -usI -agU -whV -jJm -jft -whV -uNU -kBn -whj -axS -qzX -gNN -qJT -erU -erU -erU -erU -erU -erU -erU -dGE -jrV -cKC -mhr -xgH -wVn -xgH -hpV -hnU -dNH -kzE -kaw -qvE -rBr -kbE -kbE -kbE -kbE -kbE -hjd -lHw -jQb -hzV -vLM -lBB -kzE -pLe -lJk -wVn -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(133,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -cdU -cnI -bdC -ddv -mST -dui -gSn -cXI -xVp -uxQ -wsE -whV -lYR -tPk -nDp -axS -whV -xbK -whV -erU -xAl -fmN -fOw -unf -unf -dPT -whV -dRn -cKC -kSN -xgH -wVn -xgH -fkE -oHy -aHM -kzE -qWe -jom -eRe -vKv -vKv -vfV -mrW -kOR -kOR -kOR -wCn -fKC -ssi -tkz -kzE -dxS -twx -wVn -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(134,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -plf -mST -lXT -dui -rxJ -jVW -whV -uxQ -jFT -whV -whV -whV -whV -whV -whV -whV -whV -erU -whV -whV -whV -whV -whV -whV -whV -uGc -cKC -hUE -xgH -wVn -xgH -bCX -twx -nwx -kzE -kzE -kzE -iun -xgH -kzE -kzE -kzE -kzE -kzE -kzE -kzE -wAe -mYo -kzr -kzE -wVn -wVn -wVn -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(135,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -whV -whV -whV -whV -whV -whV -whV -uxQ -yfi -wJB -eFY -cmk -fbd -erU -erU -erU -erU -erU -whV -xKa -xDZ -alj -wpE -gYt -mdp -lHv -cKC -kSN -xgH -wVn -xgH -sWQ -sWQ -sWQ -xgH -sgH -eyB -wVn -rTt -xgH -aki -kbk -xgH -ljE -jCU -xMH -trP -dpC -qHH -kzE -oBQ -xgH -xgH -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(136,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -fuq -hys -whV -mWJ -qKt -whV -mOx -jQG -eFY -qfr -cmk -whV -cvW -whV -bMD -bMD -bMD -bMD -jGe -gni -dQU -hSd -uqz -mdp -irf -cKC -kSN -xgH -wVn -xiU -pIq -wmx -neB -xgH -wVn -wVn -wVn -wVn -tod -dJO -dJO -tIG -vag -vag -kzE -kzE -kzE -kzE -kzE -dJO -nJI -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(137,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -eUM -hAc -nho -qKt -aqd -whV -uxQ -yfi -vqN -eFY -cmk -whV -tRj -pjB -bMD -jGN -rSk -dOI -xxO -oTu -spl -hSd -lKD -mdp -cax -cKC -kSN -xgH -lnN -wVn -wVn -wVn -wVn -wVn -wVn -iXe -trD -jdp -xgH -hqh -wmG -xgH -trD -lWQ -xgH -ljE -mdl -trD -xgH -cXo -qHi -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(138,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -eWb -whV -whV -whV -whV -whV -uxQ -bCT -nSv -vWS -xyC -crj -nLk -efr -bMD -wgn -hLs -fXV -xvW -fkG -fkG -ldl -oKr -mdp -cax -cKC -lYu -xgH -xgH -xgH -xgH -xgH -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -eKk -lWQ -xgH -rsd -mdl -trD -xgH -dJO -grI -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(139,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -foI -iGz -nnN -whV -spa -bcK -bcK -kSp -kSp -kSp -kSp -whV -cUY -rZl -bMD -gfQ -fIv -dOI -tKJ -uWx -vDC -gSw -vNj -mdp -cax -cKC -kSN -xgH -fmb -fmb -fmb -fmb -kzE -xqs -pCb -ess -ess -cWO -ess -tFK -nvj -kzE -jXz -lWQ -xgH -ljE -mdl -utE -xgH -euW -xgH -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(140,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -whV -whV -fBX -kjb -foI -pyE -uSN -eFY -wJB -bMD -bMD -bMD -wuu -bMD -bMD -bMD -bMD -dOI -dOI -dOI -mdp -mdp -bza -piT -pfg -mdp -bsQ -cKC -rUW -kzE -kzE -kzE -kzE -kzE -kzE -soQ -snO -tim -ils -wKg -jsV -snO -nSn -kzE -tCB -lWQ -xgH -xYB -mdl -oTc -xgH -lWQ -trD -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(141,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -aux -whV -whV -whV -mbT -whV -whV -wHs -oOb -wXI -bMD -nBr -oPe -vgH -fcC -bNu -rCe -stl -pRY -nhu -lYV -aPg -mdp -mdp -ppN -mdp -mdp -cax -cKC -mhr -jKt -bMI -xWl -nPN -nzb -mNh -ngH -snO -vaf -gGe -wKg -tcA -snO -kSa -kzE -jXz -hdA -xgH -xgH -vmM -xgH -xgH -hdA -eKk -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(142,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -aux -nXh -gNN -cjX -jJm -nQw -jJm -kSp -waX -vwJ -bMD -aut -aYS -pPP -kOo -eqQ -kOo -kOo -pRY -nhu -eyY -qDv -xQk -bcR -ezi -vdt -bbo -sAK -cKC -jRx -jKt -xel -uVY -nfn -dRE -mNh -wKg -snO -wKg -wKg -wKg -aQZ -snO -kzE -kzE -kzE -eVh -hdA -hdA -hdA -hdA -vhN -hdA -xYB -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(143,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -aux -rIS -rIS -rIS -rIS -rIS -rIS -rIS -rIS -rIS -asL -srP -kOo -vRQ -qzg -evR -qzg -afe -pRY -nhu -jcV -nAu -kPk -kQb -kyx -raW -bbo -cax -cKC -kSN -jKt -llt -uVY -dqB -wUB -mNh -ejZ -snO -qoJ -szz -wKg -dTX -snO -cYx -uiT -kzE -kzE -kzE -kzE -kzE -ngi -kzE -hdA -hdA -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(144,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -uCm -vLa -aRP -dhE -bKv -nXO -raP -gTW -rIS -kVB -kOo -kOo -aHn -cpr -sVb -cpr -pzE -pRY -qvA -bqx -glr -ajt -vVf -unb -bbo -bbo -cax -cKC -kbw -mgM -ryA -bmT -oYY -uxT -qkL -qkL -snO -wKg -wKg -wKg -vKp -wfW -jHc -aQA -kzE -tDw -xXg -kzE -mWU -cWu -kzE -kzE -hdA -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(145,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -rIS -aSg -rIS -fRS -bXD -eCj -qpx -oVj -goy -kOo -kOo -aHn -cpr -qMu -rCS -lDF -sJE -chs -qoF -hCT -hma -vVf -pvF -bbo -ylb -cax -cKC -kSN -jKt -mZV -gzT -jIG -nMI -evB -oFF -snO -pNb -cXP -wKg -kph -snO -rZX -iHG -kzE -uDr -mtH -pan -tqj -sXV -xzT -kzE -eVh -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(146,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -khr -lyP -rIS -crW -crW -ckX -cRY -aKi -rIS -qZR -kOo -aHn -cpr -cpr -cpr -pzE -cjx -nhu -azI -hCs -oLn -bPv -qRn -wmj -oRX -gSj -cKC -jxi -jKt -gwH -gzT -mVC -qyB -iqt -ibu -snO -wKg -wKg -wKg -asw -snO -kzE -kzE -kzE -nNE -wuZ -kzE -uHQ -eSw -fho -kzE -hdA -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(147,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -khr -udU -rIS -mEQ -tQT -gRw -dbU -tlf -rIS -cEP -kOo -rgT -bij -bij -bij -mYC -qcD -nhu -btL -jRt -jRt -nwh -wXL -qXm -bJg -hke -bAk -qRW -jKt -nor -rcc -sHG -uxT -jkD -qkL -snO -jRp -fax -wKg -wKg -snO -kzE -ukC -kzE -kzE -kzE -kzE -con -con -kzE -kzE -hdA -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(148,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -fXy -ihH -gok -fFt -kxq -nJK -nBx -wSc -rIS -cEP -kqP -kOo -jby -mJt -bxG -dMm -cjx -nhu -ica -vdc -sZL -vrh -qsy -nhu -fkf -cax -cKC -kSN -kzE -kzE -kzE -kzE -kzE -kzE -kzE -snO -eKn -fKU -wKg -tIR -snO -kzE -ukC -xgH -trD -hdA -hdA -hdA -hdA -hdA -hdA -hdA -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(149,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -aRF -gtt -lyP -lyP -cdS -siA -xUc -sMm -rIS -hkq -hkq -hkq -hkq -hkq -hkq -gFk -xDQ -nhu -atT -aKq -nhu -aKq -atT -nhu -lfq -cax -vQg -hmJ -xgH -aIV -aIV -aIV -aIV -aIV -kzE -gzO -ess -ess -dsB -ess -trf -kzE -ukC -xgH -eKk -hdA -uLj -bQV -bQV -gaH -qvn -rfz -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(150,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -kDh -lyP -eAm -khr -vgx -khr -ukf -aWy -bpu -uXL -vDu -mxD -mxD -mxD -hkq -hic -iqa -qSl -aBd -aBd -rjD -aBd -aBd -rjD -rjD -iWG -cKC -xcV -xgH -xgH -xgH -xgH -xgH -xgH -kzE -kzE -kzE -kzE -kzE -kzE -kzE -kzE -xgH -xgH -dxr -hdA -tIj -lBv -upP -upP -xfT -vEt -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(151,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -ezH -hhz -aBh -khr -vHC -khr -khr -gpg -khr -sVW -noM -fGi -fGi -fGi -hkq -tDa -iqa -qSl -xQp -uQe -wnJ -nvh -nvh -hJc -xzH -bJg -bAk -iII -hbk -ibE -ibE -qTF -woP -aBd -tvX -xgH -hdA -hdA -hYN -hdA -hdA -hdA -hdA -hdA -hdA -hdA -tIj -upP -ltn -vnt -uHx -vEt -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(152,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rIS -rIS -sfz -sfz -rIS -dLT -rIS -ukR -ttl -xCw -cDv -noM -iAU -iAU -iAU -hkq -kaT -iqa -qSl -fkf -ylb -bsC -kfF -kfF -cNl -pZc -esG -uIq -pyR -bIx -eeQ -yhr -yhr -wVQ -aBd -cMB -xgH -eVh -xgH -xgH -xgH -xgH -xgH -xgH -xgH -xgH -eVh -pJg -bsG -sph -vyF -uHx -vEt -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(153,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iuT -aux -cHX -aux -xjL -lkV -hkq -kGg -jpy -xeO -cTB -noM -pno -pno -pno -hkq -hiF -iqa -qSl -inS -ylb -siY -kfF -rxn -rxn -fBf -ybE -ybE -ybE -oYE -rxn -avm -yhr -cLX -aBd -mgY -xgH -hdA -xgH -lyS -vsN -oQv -pAH -lmF -cJB -xgH -hdA -lzZ -oxO -xfT -xfT -uHx -vEt -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(154,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -wsS -hXQ -qYZ -bFI -wbf -sAv -eQZ -fnS -jai -cPR -hkq -ilq -iqa -qSl -iWB -agi -dUr -mUl -olM -qZc -rjD -jpC -jpC -jpC -rjD -lxc -qNh -wUL -rcV -aBd -cMB -xgH -hdA -xgH -lGX -vJk -lwW -mRq -enX -tyo -xgH -hdA -dOQ -ncL -goJ -xOs -xOs -vdP -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(155,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -oaE -oaE -qkO -wVN -ayB -peC -oIJ -aPA -bKa -phL -tti -lKb -dBh -uBR -hkq -hkq -iqa -qSl -qSl -rjD -jCi -qTS -rjD -rjD -rjD -fjN -ybE -jIe -rjD -rjD -rjD -jIT -jCi -rjD -rjD -xgH -vNY -xgH -jZZ -lwW -xpv -wlq -szd -mRq -xgH -hdA -hdA -hdA -oyJ -hdA -hdA -bpE -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(156,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -mzf -vdd -swm -uAf -aux -ugD -xeO -fjG -bKa -aQJ -tti -vUt -dBh -xeO -rHy -hkq -iqa -uFU -qSl -tCF -bSs -mUK -rAv -rjD -tuv -meh -meh -meh -vdf -rjD -cXs -uRg -phU -wqN -rDh -usS -tkE -rjD -mRq -mRq -lwW -lwW -rsa -pHe -xgH -xgH -xgH -xgH -xgH -xgH -eVh -vwn -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(157,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -kEN -oaE -ewM -klD -beB -wMy -xFJ -ams -fbt -uVM -lBo -pyS -gdg -udC -xIr -hkq -woq -wIw -rRd -imj -nTO -kfF -ePT -iNE -gWA -meh -cca -meh -xYN -cpx -cyx -mCo -cse -osu -iNV -fWr -ddW -jRJ -oTg -wNt -szd -rsa -jfH -lwW -yey -bPx -pPC -xgH -hdA -hdA -hdA -eVN -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(158,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -rLx -cYR -qXk -gsV -uIi -tti -txU -dWh -pYC -rgi -qos -waY -qSl -eeP -fGn -mUl -lTl -rjD -wYG -meh -cVy -meh -eTd -rjD -lJy -jvX -rcV -gvX -pKp -fGn -dmS -rjD -qac -ylg -mRq -lwW -lwW -lwW -yey -lwW -gwN -xgH -hdA -olu -eVk -fPo -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(159,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -dxd -dxd -cLg -wVN -ayB -peC -oIJ -hRR -qXk -hHB -iQR -gmw -hOy -lHR -mQm -hkq -gNc -gFk -qSl -rjD -wJl -qTS -rjD -rjD -rjD -rjD -rjD -rjD -rjD -rjD -rjD -qgE -jCi -rjD -rjD -xgH -maL -xgH -qcP -fVf -mRq -lAH -lwW -pgi -pri -lwW -qLg -xgH -hdA -xgH -xgH -xgH -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(160,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -uMb -pht -dZQ -uAf -aux -ugD -xeO -bRd -qXk -bKa -bKa -gmw -rdx -aAB -cuk -hkq -gFk -gFk -kUw -aOI -fyQ -kfF -eIr -oyH -xnr -fvO -xJX -oaa -uYB -tLa -pbX -qdD -cLX -wGA -gIh -xgH -wxx -xgH -xgH -xgH -xgH -tzD -xkN -nzK -yey -pgi -imq -xgH -hdA -iCH -jZj -lJk -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(161,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hvD -dxd -wmp -klD -beB -wMy -xFJ -cPg -aDC -dtO -dtO -umT -ezX -xfv -wMH -mbS -qef -fps -vPH -njB -fyQ -rxn -rxn -yhr -qJD -aOV -wvp -oBK -uYB -eTa -rxn -cLX -cLX -wqg -kfb -xgH -mrB -uPj -uPj -bSH -xgH -xgH -xgH -xgH -xgH -xgH -xgH -xgH -eVh -xgH -iKB -lTY -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(162,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -xeO -cYR -qXk -eyO -eyO -gmw -isd -oGk -anq -vaW -tgc -qMv -rwj -tOr -qWc -rxn -kAF -soq -eEp -pcR -pcR -tvZ -sWZ -bRR -fNh -mdQ -gLA -dED -cOI -xgH -xgH -xgH -xgH -nst -uPj -uPj -bSH -hdA -hdA -hdA -hdA -hdA -hdA -iCH -jZj -pLe -xgH -xgH -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(163,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -gUs -gUs -cOE -rRS -nfx -leu -hct -rqr -kZg -cDv -xeO -gmw -sws -wfT -wfT -kbu -kbu -kbu -cNb -qqf -eyo -avm -aUb -yhr -eEp -pcR -pcR -tvZ -ndF -bnz -kYH -ibE -kkN -dHf -dHf -xgH -fmb -fmb -xgH -trD -atX -uWy -wxx -eVk -rFW -xgH -xdN -gBu -aKt -dEc -dEc -dEc -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(164,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -nyh -kPX -msg -uAf -aux -ugD -xeO -wKa -bVG -dHg -ksn -gmw -gmC -wfT -sON -mYh -pEZ -kbu -kbu -kbu -kbu -kbu -kbu -yhr -rjp -nHw -nbn -nbn -ufL -vtW -sQD -sQD -sQD -lRP -sQD -kzE -kzE -kzE -kzE -kzE -xgH -xgH -afE -lUo -dEc -dEc -dEc -dEc -dEc -dEc -xbO -ocl -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(165,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -emv -gUs -eHK -rRS -nfx -leu -uET -vqF -dkk -xwo -gaY -rSC -aik -wfT -tev -fHz -xNi -wfT -bxd -bJU -pYs -uyu -kbu -ozM -eeQ -mdR -gpf -igQ -fJy -fOq -sQD -ibL -juI -mfC -sQD -lOI -sjs -oFr -iHL -kzE -fmb -xgH -wxx -xdN -dEc -hhk -ano -nJt -owK -bwZ -dNL -dNL -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(166,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -xVa -cYR -bVG -xeO -bSq -soN -urO -jpK -uVV -tvH -uVV -srz -uVV -uVV -ukd -fXF -fXM -hzJ -rxn -iJz -dHf -nfm -tmu -wqi -utm -iAS -nPb -rCO -cjc -aRI -slC -bgs -hZt -kzE -fmb -xgH -bMd -vcr -dEc -nJt -ciZ -qpb -iXB -ioL -bYu -dNL -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(167,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iuT -aux -cHX -aux -iuT -oyh -hkq -jdW -tBh -uws -rCa -cjE -tWH -jdW -wfT -qwI -vwW -tDK -wfT -rHq -awD -twQ -nIw -iAY -gTd -rxn -qdD -lQv -pIT -rxn -lfZ -sQD -pqy -nPb -wSm -kSF -cpE -lTo -qIf -xGI -kzE -kzE -kzE -yjX -dtx -dEc -nJt -kQW -ogT -hhk -bwZ -vcr -vcr -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(168,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -vud -cYR -bVG -bSq -xWm -tdf -hCD -wfT -tbG -esx -ktl -wfT -pAL -uVV -rym -wfT -kbu -rBP -rBP -dNx -vED -sdL -rBP -nag -rBP -oSt -sYH -tNC -sQD -uMP -tQk -qFa -ndR -nvk -uIn -dEc -xpQ -xsR -dEc -kpU -kAW -hhk -mMA -kuW -vFE -cxQ -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(169,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -yjJ -qrt -qek -wVN -ayB -peC -oIJ -jzC -bVG -ktC -dqV -tdf -wrU -kbu -kbu -kbu -kbu -kbu -kbu -vtt -wfT -wfT -wRe -wmU -jlr -nDw -bhp -jPh -wmU -emj -afg -oSt -oSt -fzB -rBP -rBP -oFl -xGI -xGI -coI -lwu -dEc -kGZ -buB -dEc -nJt -nJt -ioL -vFE -bwZ -xGl -ixD -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(170,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -gzt -jEt -dWF -uAf -aux -ugD -xeO -sxg -bVG -bbv -xeO -izY -vgm -rBP -tNf -bWd -izm -gkI -rBP -dnT -jUo -dFT -hur -wmU -ylG -nDw -obA -jPh -wmU -pVZ -uKL -rGe -nDQ -wWw -xFR -gPc -oFl -lqI -pUa -mEA -eBT -dEc -bMd -vcr -dEc -nJt -nJt -nJt -xGl -ttE -wCk -rQa -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(171,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -vyQ -cJu -dQM -pAN -pxQ -awb -xFJ -mqI -kIe -fxo -uvD -ocv -kfg -rBP -iTu -iko -vHz -qoG -rBP -cJh -xND -uYe -suZ -rBP -rBP -qDN -vED -sdL -rBP -gBX -pUp -tof -xMu -wWw -eEA -nDf -dEc -dEc -dEc -dEc -dEc -dEc -ulU -ggX -dEc -nJt -nJt -nJt -bJW -mrs -riT -iWF -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(172,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -rLx -cYR -blI -gkx -xeO -vsL -nJb -rBP -fxd -haK -gHV -haK -art -jUR -qXq -fFA -rcd -dWn -oYi -hKU -wiN -qIT -ygH -mLZ -rcd -pgE -tNA -rcd -cQB -yhO -dEc -fGt -hca -hca -hca -hca -koJ -dEc -dEc -vcr -vcr -wtm -qpH -vcr -gvc -oxz -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(173,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -sYf -sYf -pWH -wVN -ayB -peC -oIJ -cmi -blI -pJG -kDg -vsL -kDg -rBP -kZr -ykU -mMO -tCC -art -hKq -psJ -nln -hAn -loN -dej -rpA -dDv -mLI -dej -oII -hAn -ejF -loN -bXe -saA -vvK -dEc -ulU -vcr -uhx -msL -vcr -xep -dEc -ags -nJt -vcr -owK -xGl -dou -klo -cll -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(174,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -oAZ -afs -ndg -uAf -aux -ugD -xeO -aKZ -bVG -rCN -kDg -vsL -kDg -rBP -kjF -dcp -wHa -dcp -rBP -kIG -uxX -rBP -kNN -cFc -rBP -fXd -pLJ -eLQ -rBP -xgD -wKT -rBP -uMl -oOd -otD -gnY -dEc -gqO -vcr -pzY -ssx -vcr -xep -ldD -qFX -jJW -lZp -jJP -cll -jJP -rQa -ndr -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(175,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -bos -sYf -fmq -pAN -pxQ -awb -xFJ -wot -vnX -pJG -bZg -vsL -kDg -rBP -dFR -mHk -mZZ -tDE -rBP -wYB -xNT -rBP -hjz -hjz -rBP -rBP -rBP -rBP -rBP -hjz -hjz -rBP -sZb -xYU -fYg -kHS -dEc -bhb -vcr -eCr -cWZ -vcr -kUe -wRM -nJt -nJt -mgA -aMA -nNy -xRk -nec -owK -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(176,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -xeO -cYR -bVG -uJM -xeO -qoV -xeO -rBP -rBP -rBP -rBP -rBP -rBP -jcr -rBP -rBP -xgW -xgW -xgW -xgW -dpR -xgW -xgW -xgW -mVF -rBP -rBP -jcU -rBP -rBP -dEc -sTQ -pRN -ccK -mWg -vFE -khQ -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(177,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -wwL -wwL -xuW -wVN -ayB -peC -oIJ -vuZ -bVG -gZQ -qAS -bkO -dAI -aCz -dSS -tEo -bvT -dSS -rRh -nLY -jMW -oqA -wlP -klY -klY -jlK -nHv -cAf -klY -klY -klY -bUO -gqp -wOm -hZm -lrN -dEc -tKc -pvs -dfi -gDO -ixD -khQ -uov -uov -uov -uov -uov -uov -uov -uov -ecN -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(178,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -vhy -bQA -vgX -uAf -aux -ugD -xeO -vQd -bVG -avp -xeO -lYt -wwW -uED -oIy -oIy -bIW -oIy -oIy -tjV -xgW -mVF -hLk -eCQ -uyD -uyD -uDN -uyD -uyD -yft -iXt -mVF -wOm -xgW -rav -pLK -aOJ -tKc -mWg -ixD -sup -ixD -khQ -deF -vcr -vcr -vcr -vcr -vcr -vcr -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(179,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -fcS -wwL -lzX -pAN -pxQ -awb -xFJ -las -vYH -cQL -xeO -oIy -oIy -oIy -oIy -gtQ -bRZ -whF -oIy -aDf -xgW -mVF -wmC -sly -uyD -aFJ -mMq -gSd -uyD -sHL -ddT -mVF -wOm -wOm -hZm -fWc -dEc -tKc -dAU -dAU -ixD -vFE -khQ -wss -vcr -bGf -rpF -cgx -aSj -nhU -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(180,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hkq -rLx -cYR -jAX -oIy -oIy -oIy -irk -nDr -kBz -gTZ -bwl -wlA -kGK -hAI -uwQ -fnq -uyD -uyD -uyD -uyD -bXw -uyD -uyD -uyD -uyD -fws -wOm -unW -dEc -dEc -dEc -vbg -rpN -ixD -vFE -xWv -khQ -qwj -vcr -aHX -rpF -grD -aSj -wor -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(181,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -luI -luI -jNa -wVN -ayB -peC -loA -ygq -avg -oIy -aof -tZD -iMe -xIL -sAH -sAH -fWf -sAH -sAH -uDZ -jSD -iyT -tYl -qLb -fJE -iGJ -ueu -hds -esV -qLb -mVf -mVF -wOm -bAx -dEc -mSe -uov -wWm -bwL -bwL -bwL -bwL -xzr -wzB -vcr -vZn -bkG -kzn -cPQ -lnX -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(182,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -saW -buJ -pUl -uAf -aux -ugD -xeO -vtS -cIL -tTI -itP -gnx -nnb -bZE -sAH -nIJ -uLB -rAm -sAH -jWI -jSD -fcp -iCk -xyb -aIB -gTp -veT -mrd -iNW -xyb -aVM -pEq -wOm -hOP -dEc -wus -uov -vcr -vcr -vcr -vcr -vcr -uov -qju -vcr -txv -wRS -pJC -pJC -txv -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(183,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -geZ -luI -iFo -oxh -xsH -wtR -rag -qBf -kIe -oIy -rkf -tZD -jHQ -kTc -sAH -qEw -qEw -qEw -sAH -rKV -kfo -iZP -kcB -ppO -fJE -jxc -lET -wCu -vap -kBK -juf -wOm -kfo -wfl -dEc -lhl -uov -vcr -ovL -oMZ -mfI -vcr -uov -afa -vcr -vcr -iJc -lzI -lIP -xjr -vcr -iZy -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(184,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -hkq -hkq -hkq -hkq -hkq -mMu -hQy -hQy -hQy -oPM -hQy -vmr -vmr -skj -ouy -sAH -hhb -gGt -qEw -sAH -gJl -jSD -ppd -uyD -uyD -uyD -uyD -gBG -uyD -uyD -uyD -uyD -upc -kfo -mvg -dEc -lEI -uov -vcr -brA -khc -viv -vcr -uov -uov -iZy -vcr -hoy -lCT -lIP -uWi -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(185,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iuT -aux -cHX -aux -iuT -oyh -hQy -eIt -hQy -woa -hQy -eIt -vmr -jsZ -fLn -sAH -hep -xjZ -uEu -sAH -bQz -uCe -iZP -xgW -pIZ -qbo -jBx -eGb -eeB -qbo -lYg -jER -wOm -rpD -tyQ -dEc -dEc -rJO -vcr -eAl -khc -oMm -vcr -vcr -vcr -uov -vcr -vcr -vcr -cKf -vcr -vcr -uov -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(186,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -css -abA -hQy -hQy -hQy -hQy -hqG -ogY -csY -cQS -eQe -vmr -wul -fKH -sAH -jWv -rBK -eLF -sAH -oIy -hsG -hOR -jER -pIZ -cir -jWm -xjs -lPX -ajg -irm -xgW -pEq -wiF -qnS -wth -fjS -sJp -vcr -wVJ -tYF -kAI -vcr -uov -uov -uov -uov -uov -uov -uov -uov -uov -ecN -vcr -vcr -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(187,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -css -xQL -qzy -fYz -lTb -kZh -aDx -ekI -ekI -ekI -aDx -xMX -vmr -ykP -npP -tZD -xih -iLF -xiO -fKL -oIy -tyQ -mVU -tyQ -tyQ -tyQ -xqR -xqR -xqR -tyQ -tyQ -tyQ -fJl -tyQ -tyQ -lhh -dEc -fAy -vcr -kdQ -khc -anO -aGW -uov -vcr -vNN -vcr -vcr -vcr -vcr -vcr -vcr -tPu -vcr -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(188,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -lwc -dQI -vmr -vmr -aDx -eWI -omL -wNh -omL -lLB -xFN -vmr -obH -npP -fJw -rsT -qyN -mPE -cYF -oIy -mVy -bSa -tyQ -kVp -oyh -oyh -oyh -oyh -oyh -kVp -tyQ -nuV -mVy -dEc -dEc -dEc -uov -vcr -vWX -qHf -cxO -vcr -uov -eAP -uov -vcr -pJu -ekk -izI -vcr -wkr -aHt -pGr -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(189,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -css -lwc -sim -tGq -vmr -gKu -wpJ -gIs -cNR -pLO -xJL -arI -abs -fSv -jdD -cau -vxz -csf -buQ -nPZ -uhC -oIy -tyQ -iPN -tyQ -oyh -oyh -ecI -wqD -nYL -oyh -oyh -tyQ -pRq -tyQ -dEc -jnA -aHt -uov -vcr -vcr -vcr -vcr -vcr -vcr -vcr -uov -hXB -lJE -aXO -oFX -vcr -pcg -oSz -pGr -vcr -dEc -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(190,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -liu -vEN -tGq -vmr -bVZ -wpJ -fHf -aos -lFW -hpc -arI -vUK -vmr -qwS -xIL -eNk -qNf -jaK -aLh -ujl -oIy -yli -jCD -iFu -aux -aux -caC -teQ -mdr -tPB -tPB -kVK -qZT -yli -dEc -aUG -aHt -klO -klO -uov -kmV -qdB -uov -uov -uov -uov -vcr -izI -fGK -ekk -vcr -wkr -jRB -pGr -vcr -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(191,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -vEN -vEN -tGq -vmr -fWZ -wpJ -gIs -xJL -eKg -cNR -arI -bWu -vmr -pHD -nZm -tZD -tZD -tZD -mjv -tZD -oIy -owI -bOk -owI -cHX -owI -caC -bNL -biH -owI -cHX -owI -bOk -owI -dEc -xMY -aHt -rfo -ueA -vcr -vcr -vcr -vcr -gKy -vcr -uov -vcr -vcr -vcr -dEc -dEc -dEc -dEc -dEc -vcr -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(192,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -css -lwc -pnV -xtG -ndY -vmr -vKf -aDx -wfb -vqC -cdo -vqC -cxl -jQX -vmr -ykP -qYi -vHQ -hQp -toC -dlp -kRo -fmg -cHX -res -jIP -jIP -hjE -qct -ayW -qct -hjE -jIP -jIP -qgT -cHX -dEc -dEc -dEc -wfy -aHt -vcr -vvJ -eyk -fTE -fTE -vcr -uov -qwj -lEI -aVc -dEc -dFq -fbl -oHx -dEc -vYD -vYD -dEc -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(193,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -rDK -hio -mNg -fYR -nqE -cNx -gTA -sTD -hyL -hyL -hyL -sTD -nxH -vmr -neZ -uUh -uOM -iEs -spE -oPJ -gxT -fmg -owI -jkM -bOk -jkM -owI -caC -wqD -mdr -owI -jkM -bOk -jkM -owI -oyh -kVp -dEc -eBu -aHt -vcr -ido -odS -hAO -mGN -vcr -fAy -uov -uov -wQC -qjj -fqe -ifS -iWE -dEc -dEc -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(194,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -ehL -wVS -bQU -wTV -vmr -ggH -ngm -oni -myR -wbR -cXG -xhX -wHj -vmr -jxM -uUh -qnx -teq -teq -teq -teq -teq -owI -jkM -bOk -jkM -owI -caC -wqD -mdr -owI -jkM -bOk -jkM -owI -oyh -kVp -dEc -jVM -oSz -vcr -duw -odS -aXk -pCv -vcr -deF -mKY -mGp -aHt -dEc -fyT -fHy -fSS -fIK -dEc -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(195,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -css -lwc -sQl -ekY -ckn -qCo -teq -teq -muh -teq -teq -teq -teq -teq -teq -teq -teq -uwr -teq -teq -tjA -dBu -byl -gIz -cHX -oAO -oAO -oAO -cHX -bgA -geH -mdr -cHX -oAO -oAO -oAO -cHX -oyh -oyh -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -nlv -dEc -frL -fFY -bHw -fFY -dEc -vYD -vcr -dEc -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(196,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -css -lwc -iMR -iMR -iMR -iMR -teq -guQ -guQ -guQ -sKt -dSH -dil -dSH -dSH -dSH -dSH -jmS -hhf -sKt -iiR -mbf -vYw -gIz -cHX -oAO -oAO -oAO -cHX -bgQ -wqD -mdr -cHX -oAO -oAO -oAO -cHX -oyh -kVp -kVp -kVp -kVp -oyh -kVp -kVp -oyh -kVp -kVp -kVp -kVp -dEc -fBu -dEc -fCG -fHb -fXU -gyz -dEc -vYD -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(197,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -yil -rFC -wJp -rFC -wJp -sKt -mYA -sKt -sKt -sKt -dSH -sKt -kJG -dSH -wbp -dla -xqr -hhf -sKt -sKt -sPZ -sKt -teq -owI -jkM -bOk -jkM -owI -caC -wqD -mdr -owI -jkM -bOk -jkM -owI -oyh -kVp -kVp -kVp -kVp -oyh -kVp -kVp -oyh -kVp -kVp -kVp -kVp -dgs -fBu -dEc -rHX -cIT -bKP -ogc -dEc -vYD -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(198,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iEJ -mEf -tOS -qzy -gHJ -pui -opn -sKt -xJv -ajp -xqr -dSH -dSH -sKt -sKt -ppe -sKt -sKt -vDL -hhf -ugV -ugV -ugV -xqr -gIz -owI -jkM -bOk -jkM -owI -caC -wqD -mdr -owI -jkM -bOk -jkM -owI -oyh -kVp -kVp -kVp -kVp -eYj -fPW -eYj -eYj -kVp -kVp -kVp -kVp -dgs -fBu -dEc -rpV -fKi -sdo -kdu -dEc -vYD -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(199,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iEJ -mEf -pui -pui -qzy -tOS -aoq -sKt -iHN -xqr -dSH -dSH -sKt -sKt -ieM -jLi -ieM -sKt -xqr -ugV -xqr -qGC -iay -xqr -gIz -cHX -lhT -rCp -rCp -hjE -qct -ayW -qct -hjE -rCp -rCp -aho -cHX -oyh -kVp -kVp -kVp -fPW -eYj -kVp -kVp -fPW -eYj -eYj -kVp -kVp -dEc -fBu -dEc -pzd -ksN -fDT -gKg -dEc -vYD -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(200,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -pui -dYl -opn -ctX -hvv -tmM -dSH -dSH -dSH -sKt -sKt -bgr -rjh -bxT -voH -sKt -sKt -sPZ -sKt -sKt -xqr -kbf -teq -owI -owI -owI -owI -owI -caC -wqD -mdr -owI -owI -owI -owI -owI -oyh -kVp -kVp -eYj -eYj -kVp -kVp -kVp -kVp -kVp -fPW -eYj -kVp -dEc -bOq -dEc -lXu -fNK -gdM -gdM -dEc -vYD -vYD -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(201,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -css -lwc -lwc -lwc -lwc -lwc -lwc -sKt -sPZ -sKt -sKt -sKt -pHI -rpR -keP -rcy -vxx -sKt -cbM -hfm -udn -sKt -sKt -sKt -teq -cHX -oyh -oyh -oyh -oyh -eLt -bNL -xBC -oyh -oyh -oyh -oyh -cHX -oyh -kVp -kVp -fPW -kVp -kVp -kVp -kVp -kVp -kVp -kVp -eYj -tqK -dEc -ixD -dEc -dEc -dEc -dEc -dEc -dEc -vcr -vcr -vcr -dEc -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(202,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -teq -sKt -ugV -ugV -ugV -ugV -ugV -ugV -ugV -ugV -ugV -htF -dXp -ouR -xVS -mVN -vxx -ofx -fkJ -xqr -dla -rzT -sKt -leo -teq -oyh -oyh -kVp -kVp -kVp -rqc -wqD -iFu -kVp -kVp -kVp -oyh -oyh -oyh -oyh -oyh -eYj -oyh -oyh -kVp -kVp -kVp -kVp -kVp -eYj -iRf -jgY -ixD -taD -fBu -mpF -fBu -fBu -gyS -fBu -fBu -gDW -gKV -hbl -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(203,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -teq -sKt -jZa -grE -bUa -jMp -grE -xcQ -qfk -grE -jFh -sKt -xPW -jQw -ufm -atK -llv -sKt -hfm -xqr -xqr -hfm -glH -jHv -fmO -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -kVp -fPW -bml -fPW -oyh -oyh -kVp -kVp -kVp -kVp -oyh -clF -dEc -cjC -mXq -ueS -npE -mXq -mXC -kox -mXq -bME -vcr -dEc -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(204,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -teq -sKt -sKt -iAH -sKt -sKt -iAH -sKt -sKt -iAH -sKt -sKt -sKt -cxN -sZj -cxX -rLE -sKt -siK -sKt -sKt -sKt -sKt -sKt -sKt -iTg -tBy -iTg -iTg -iTg -tBy -iTg -tBy -iTg -iTg -iTg -tBy -iTg -iTg -iTg -iTg -iTg -vwD -kVp -oyh -oyh -kVp -kVp -kVp -oyh -kVp -dEc -vcr -dqn -vcr -vcr -dqn -vcr -vcr -dqn -vcr -vcr -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(205,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -teq -teq -teq -teq -teq -teq -teq -teq -teq -teq -teq -teq -sKt -sKt -sKt -sKt -sKt -sKt -sKt -teq -teq -teq -teq -teq -teq -iSU -uQD -iSU -iSU -iSU -uQD -iSU -uQD -iSU -iSU -iSU -uQD -iSU -iSU -iSU -iSU -iSU -lVi -iTg -iTg -iTg -iTg -iTg -iTg -iTg -iTg -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -dEc -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(206,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -aTO -rcO -pNV -aTO -rcO -rcO -xln -aTO -rcO -rcO -xln -teq -teq -teq -teq -teq -teq -teq -teq -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -iSU -iSU -iSU -iSU -iSU -iSU -iSU -iSU -rcO -rcO -xln -aTO -rcO -rcO -xln -aTO -rcO -pNV -aTO -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(207,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rcO -rcO -owI -rcO -rcO -rcO -owI -rcO -rcO -rcO -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -rcO -rcO -rcO -owI -rcO -rcO -rcO -owI -rcO -rcO -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(208,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -xpw -xpw -xpw -owI -xpw -xpw -xpw -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -xpw -xpw -xpw -owI -xpw -xpw -xpw -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(209,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(210,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(211,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(212,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(213,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(214,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(215,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(216,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(217,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(218,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(219,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -fxS -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(220,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(221,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(222,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(223,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(224,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(225,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(226,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(227,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(228,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(229,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(230,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(231,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(232,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(233,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(234,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(235,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(236,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(237,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(238,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(239,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(240,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(241,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(242,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(243,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(244,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(245,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(246,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(247,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(248,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(249,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(250,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(251,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(252,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(253,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(254,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} -(255,1,1) = {" -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -owI -"} - -(1,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(2,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(3,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(4,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(5,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(6,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(7,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(8,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(9,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(10,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(11,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(12,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(13,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(14,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(15,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(16,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(17,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(18,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(19,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(20,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(21,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(22,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(23,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(24,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(25,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(26,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(27,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(28,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(29,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(30,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(31,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(32,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(33,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(34,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(35,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(36,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(37,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(38,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(39,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(40,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(41,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(42,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(43,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(44,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(45,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(46,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(47,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(48,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(49,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(50,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(51,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(52,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(53,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -ucA -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(54,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(55,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(56,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(57,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(58,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(59,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(60,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(61,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(62,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(63,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(64,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(65,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(66,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xpI -xpI -xpI -xpI -wwu -wwu -wwu -wwu -wwu -wwu -fNT -lwU -fNT -lwU -fNT -lwU -fNT -lwU -fNT -fNT -hLz -hLz -hLz -hLz -hLz -hLz -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(67,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -fZV -fZV -fZV -fZV -oyh -oyh -oyh -xpI -vNO -vNO -vNO -vNO -wwu -wwu -wwu -wwu -wwu -wwu -fNT -lwU -fNT -lwU -fNT -lwU -fNT -lwU -fNT -fNT -hLz -hLz -hLz -hLz -hLz -hLz -hLz -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(68,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -fZV -fZV -oyh -oyh -oyh -oyh -oyh -xpI -vNO -vNO -tjN -tjN -vNO -rbh -wcn -lJZ -sTq -fPH -wwu -rtm -kwl -fLv -skU -ksJ -skU -tEW -ugs -qHv -fNT -lQI -lQI -lQI -lQI -bsS -tlt -tlt -uzq -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(69,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iBI -nPw -jLT -fOg -fOg -fOg -nPw -fOg -vNO -vNO -vNO -uDP -wCT -cCO -vNO -rbh -bDr -bDr -sTq -adL -wwu -okK -cvC -atU -atU -atU -atU -atU -nTI -okK -fNT -lQI -lQI -wXi -cHr -jWn -lcJ -jEO -lft -lft -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(70,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iBI -riE -qdV -qdV -qdV -qdV -qdV -mCt -mCt -knP -cpW -qtf -bQv -oqD -rYw -uUG -wpa -wwu -wwu -wwu -wwu -wwu -bom -lXq -pMW -jzt -jzt -jzt -ate -eRu -ncD -fNT -hLz -hLz -hLz -hLz -oVP -gOU -kWT -lft -omg -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(71,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -wGN -qdV -nkh -mCt -mCt -bII -bII -bII -oBj -vNO -vNO -vNO -otQ -dAo -amg -vNO -kEI -wwu -sbI -jtJ -qdF -hat -qfv -lXq -oCg -pre -ntM -tvW -rns -eRu -qfv -qfv -lLW -kMQ -skz -hLz -uXA -uXA -czm -lft -uuF -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(72,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -fZV -ikV -qdV -qdV -qdV -qdV -qdV -qdV -mCt -poD -oyh -xpI -vNO -vNO -vNO -vNO -vNO -ocU -wwu -daz -eNM -skU -aiR -aiR -gxP -oAc -dyW -dyW -jUu -rns -ieC -aiR -aiR -skU -ugs -uMU -hLz -mwN -uXA -tbF -pMo -pMo -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(73,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -fZV -xJC -wYH -wYH -wYH -mCt -bII -bII -bII -ebA -lXs -gqP -gqP -nRn -lGh -lGh -lGh -lMx -wwu -mdC -tTB -trE -atU -shi -cdN -oCg -feX -feX -feX -rns -enp -shi -atU -hLv -xLs -voG -hLz -vmA -uXA -uXA -wpY -uXA -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(74,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -oyh -xJC -qdV -qdV -qdV -qwK -qdV -qdV -mCt -ebA -lXs -wwu -wwu -rbh -tqw -tqw -tqw -vWj -wwu -iyZ -pAy -veG -ptu -tWM -fQl -oCg -tnx -feX -uvE -rns -veG -tWM -ptu -veG -qnu -tEi -hLz -hLz -kLz -hLz -hLz -uXA -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(75,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -oyh -xJC -wYH -wYH -wYH -mCt -bII -bII -bII -ebA -lXs -wwu -wwu -rLR -tqw -tqw -tqw -vWj -wwu -wwu -fNT -jjc -bnV -fNT -fNT -fNT -fNT -fNT -fNT -fNT -fNT -fNT -dJy -jjc -fNT -fNT -hLz -jzL -cJY -ntv -hLz -uXA -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(76,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -iTg -xJC -qdV -qdV -qdV -qdV -qdV -qdV -mCt -ebA -lXs -gqP -gqP -wpa -egD -tqw -ozn -xNX -pgS -wwu -xXe -skU -aKC -yex -fNT -oRG -feX -feX -feX -hSO -fNT -npK -dEO -skU -cSW -fNT -lQI -eod -lQI -ozr -hLz -uXA -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(77,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -wdw -xJC -wYH -wYH -wYH -mCt -bII -bII -bII -ebA -lXs -wwu -wwu -kkw -aom -tqw -sbK -icr -aFg -wwu -evt -blJ -tqW -syz -hXm -tTS -feX -feX -feX -cly -ndd -tuT -lxD -xxC -wve -fNT -lcs -vVJ -rkE -bVY -pdJ -hpW -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(78,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -iTg -aZC -qLS -qLS -qLS -qLS -qLS -qfg -qLS -crd -wwu -wwu -wwu -nRn -eLK -tqw -cWF -dAk -tEG -wwu -xsG -veG -dXJ -rci -fNT -qMe -feX -feX -feX -fEn -fNT -llN -jKK -veG -auQ -fNT -lQI -lQI -lQI -dCL -hLz -jly -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(79,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -mqj -ebl -kAE -kAE -jtr -kVp -oyh -oyh -wwu -wwu -wwu -wwu -rbh -tqw -tqw -tqw -sbK -wwu -wwu -fNT -jjc -bnV -fNT -fNT -fNT -wll -nZG -fNe -fNT -fNT -fNT -bnV -bnV -fNT -fNT -hLz -hLz -hLz -hLz -hLz -elX -hLz -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(80,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -gAW -iTg -gAW -gAW -gAW -gAW -gAW -wwu -wwu -nAJ -ktV -wwu -rbh -tqw -tqw -tqw -sbK -wwu -qRx -eCJ -kwl -aKC -qYJ -myV -fNT -dzr -dzr -dzr -fNT -aQt -etV -shi -tqW -iWi -wRN -dHa -gtO -hLz -uXA -aJX -jly -hLz -yhP -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(81,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -wwu -wwu -wwu -cNf -cBb -iCg -wpa -roe -roe -roe -pFy -gaf -vlo -cKM -lDE -tqW -shi -nWz -lQY -nZG -nZG -nZG -bcx -shi -shi -shi -tqW -shi -ewd -fRa -lZH -hLz -uXA -hLz -jly -vlY -iRY -xzP -hLz -hLz -hLz -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(82,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -wwu -wwu -gqP -wwu -gqP -wwu -wwu -wwu -wwu -nEM -qdW -sbw -wwu -cwq -wwu -lnU -grA -wwu -wwu -ujT -jWz -utV -tqW -tqW -whf -vPE -fZP -tYo -csz -gLI -lxD -lxD -lxD -lPz -shi -wic -fRd -mPH -hLz -uXA -leR -jly -hLz -hLz -lSt -wLo -hLz -jJu -jJu -jJu -jJu -jJu -jJu -jJu -jJu -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(83,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wwu -gqP -wwu -gqP -wwu -wwu -wwu -wwu -wwu -xhz -wwu -wwu -cwq -hCt -jBm -jBm -jBm -wwu -uuM -chd -rtv -shi -cml -duC -gTL -mhb -aTU -pfn -bfW -rrm -rrm -rrm -kIR -atU -foa -iOQ -gET -ngL -uXA -hLz -jVu -usV -hLz -hLz -fGy -hLz -jJu -jJu -jJu -jJu -jJu -jJu -jJu -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(84,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -cwq -cwq -cwq -cwq -cwq -cwq -cwq -hgC -cwq -cwq -cwq -cwq -cwq -wwu -qdW -nAJ -jBm -xuv -xWe -xWe -xWe -xWe -xWe -xWe -fNT -kwl -miF -bam -rKB -uCU -yaX -shi -qKp -shi -sKG -fVe -npT -hLz -uXA -hLz -hLz -hje -bjC -bjC -bjC -qFA -jJu -cLG -gRQ -fDO -uWU -iZV -lKo -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(85,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -cwq -iKw -ooY -vLz -phI -pch -sxy -sbm -wvR -gWY -iWZ -pQZ -pJb -wwu -bDD -wwu -jBm -xuv -xLJ -fYw -dim -rJU -gGA -xWe -xHT -rtv -miF -jvv -aWE -bho -qia -shi -dhX -shi -ewd -fWh -xBd -hLz -uXA -gjr -hLz -knM -lQI -lQI -lQI -ozr -jJu -nqP -qiR -rkZ -kms -wXD -mmY -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(86,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -cwq -dAn -qnI -msl -pZH -xuv -xuv -xuv -xuv -xuv -xuv -xuv -xuv -xuv -jBm -jBm -hgn -xuv -qVV -qaW -dQX -vds -stp -vlm -tMK -rtv -miF -mII -vwd -bjf -qia -shi -dsb -iWi -ugv -jxP -gXo -hLz -uXA -thw -hLz -tal -lQI -lQI -lQI -ozr -jJu -hEc -ezR -qUL -jJu -lFq -mmY -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(87,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -kyM -kyM -kyM -xWf -xuv -xuv -qUC -dya -mKZ -sxl -naI -lNN -iGR -xuv -jBm -xuv -xuv -xuv -xWe -bPO -aHs -mil -afb -vlm -tMK -rtv -miF -yiB -jmc -jmc -qao -cvM -dvC -qao -jmc -jmc -jmc -hLz -uXA -mVZ -hLz -tal -lQI -lQI -lQI -ozr -jJu -jJu -jJu -jJu -jJu -jJu -mmY -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(88,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -pvX -bDr -bDr -ctI -xuv -hNr -hKm -sSz -sSz -sSz -kik -sSz -eLS -xuv -jBm -cNm -hnS -oHw -ijS -slv -aHV -wLp -ieE -vlm -tMK -rtv -miF -cXq -jmc -bkj -ccP -cvP -dxG -gOd -fnB -gbW -pWf -hLz -uXA -uXA -uXA -tbh -wNb -wNb -wNb -hoK -jJu -kxh -lvM -llX -lAh -guk -mmY -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(89,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -fUv -wwu -bFq -ctI -xuv -fVi -hKm -qgQ -gsn -rzI -gsn -eBg -anr -xuv -xuv -xuv -oht -sYh -eKd -tTi -vOs -vOs -cfh -xWe -fAP -mmI -miF -jvv -qao -blS -ffb -ffb -gmk -etj -qVf -dan -gcs -hLz -uXA -nnK -hLz -lDX -lDX -hLz -irV -jly -jJu -hqi -vrn -llX -lAh -vWD -bLd -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(90,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wXc -hrW -gLD -ctI -xuv -vQY -hKm -qTK -ifA -wTC -vIC -mHS -mGK -xDx -pqd -qAG -oFY -mBZ -ijS -obj -rgx -sEL -biW -xWe -rPZ -rtv -miF -jvv -qao -bmG -ffb -cyF -gmk -qcH -ffb -ffb -gej -hLz -ovB -uXA -uXA -uXA -dwx -pmA -pmA -nGJ -jJu -kJq -kEf -kJq -nWk -lDG -mmY -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(91,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -tcM -rua -rua -cwq -xuv -hNr -hKm -qTK -qTK -qTK -wxi -lcZ -grW -iXk -iPG -qAG -aXq -sOs -qAG -qAG -qAG -qAG -fja -xWe -wlu -rtv -miF -jvv -jmc -cIl -dWl -cEb -dFy -eAv -jhk -mDs -ksr -hLz -rwN -aTl -hLz -hLz -htG -hLz -jJu -jJu -jJu -vVH -iPX -kFb -iZV -xlH -lNj -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(92,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wwu -nLx -xuv -xuv -xuv -swT -swT -ote -llo -ote -iwo -iwo -ote -rBI -ote -qAG -sBt -fCH -qAG -vnz -jPr -sVr -fja -sRZ -tMK -rtv -miF -gxr -jmc -jmc -qao -cLQ -dRR -qao -jmc -jmc -jmc -hLz -hLz -hLz -hLz -jIy -hvE -vRq -jJu -bSb -clJ -kEf -ejl -fCq -rGP -cfU -pkr -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(93,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gqP -gqP -cwq -cwq -xuv -qyx -qyx -qyx -vxK -jON -jON -jON -vxK -wvv -hVK -eLC -tpU -eAa -uOV -egz -fHe -fsI -fsI -fWD -pOU -foh -vTY -lXq -miF -jvv -mcY -svX -cnk -roZ -tMp -oFa -fwK -dAN -gYN -ewq -hVq -inJ -hLz -hLz -chk -hLz -jJu -kfL -vjp -mDV -ntS -lTZ -fMm -lDG -pkr -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(94,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -cwq -vlV -xuv -xOe -aah -qyx -lRi -tGa -myS -nqh -wIU -iuk -sMx -cIN -cIN -cIN -sRz -mcf -cRd -gZu -lMN -gZu -cRd -pbG -tMK -rtv -miF -jvv -dIX -bzF -nGQ -cVL -eac -nFu -eEQ -gkq -iQH -fOA -fOA -fOA -gLE -pmA -nGJ -uXA -jJu -rJb -bqF -kmk -qrg -sEK -hte -iZV -pkr -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(95,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -hcF -pGR -xuv -oZv -qyx -qyx -vxK -rgy -acF -xje -vxK -iwP -fFu -auU -auU -auU -jFJ -cKE -qAG -tIx -omT -vpy -fja -sRZ -tMK -rtv -miF -mII -dIX -bDU -nGQ -dfn -fQf -svX -hZs -mpC -jnh -hBT -idw -igS -hLz -cUh -lep -uXA -jJu -jJu -jJu -bzm -vjp -vjp -pkr -mjr -pkr -jJu -jJu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(96,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gqP -gqP -cwq -cwq -xuv -qyx -qyx -qyx -vxK -abm -gvM -mbA -vxK -dhJ -fFu -aow -aow -aow -jFJ -dvP -kmR -kmR -kmR -kmR -ePa -ePa -swn -rtv -miF -jvv -dIX -kcZ -cpo -dfR -eas -ePv -fzZ -fzZ -hbw -hHH -sxe -iBq -hLz -pNc -jfK -uXA -uXA -uXA -jJu -jJu -jJu -xgd -hvc -xgd -hLz -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(97,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wwu -nLx -xuv -xuv -xuv -mRc -mRc -eXy -eXy -eXy -eXy -rwG -fFu -bfh -lZA -vio -jFJ -kJg -kmR -lcB -kGf -ooT -wXC -ePa -rNg -rtv -miF -jvv -vjl -svX -cqV -gKN -ebE -mtA -rrR -rrR -hcO -hLg -ift -iBx -hLz -fiI -tfS -uXA -txQ -uXA -uXA -aBo -uKl -uXA -avM -uXA -grX -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(98,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -cti -cwq -cwq -cwq -wwu -qAq -aax -nje -acJ -dZW -noe -jEX -fFu -bfh -iBo -vio -jFJ -lwg -tUg -xdJ -cGA -mNT -hkK -ePa -bpq -rtv -miF -ksw -hLz -hLz -hLz -hLz -pDL -heC -caP -jjF -hkZ -jjF -jjF -jjF -hLz -hLz -hLz -uXA -irV -rwN -uXA -aBo -uXA -mta -lQI -ekB -gbj -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(99,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wwu -xsf -wwu -cwq -wwu -brn -nWJ -unE -rDF -rDF -dtb -drA -lyx -kWN -tYn -axR -mhT -jFr -sif -lvS -cSb -mUJ -jnV -sif -fur -rtv -miF -jvv -hLz -roz -fGJ -hLz -jjF -jjF -jjF -jjF -mxd -jjF -iit -gJp -jjF -uek -hLz -uXA -rLd -vCG -uXA -uXA -uXA -iBL -lQI -ekB -xYK -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(100,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -qLo -qOh -wwu -hcF -wwu -wwu -oSZ -xUU -uGQ -dZW -eXy -kjc -fFu -xCU -jpQ -auF -jFJ -fJo -sif -lvS -kUk -aRK -jnV -sif -qfv -rtv -miF -wKr -rZi -uXA -uXA -hLz -vpp -eUJ -cCK -glY -cvE -jjF -ilG -iPr -jgJ -tnA -hLz -uXA -hLz -hLz -hLz -hLz -hLz -hLz -hLz -hLz -fRm -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(101,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gqP -gqP -sxK -uVj -iCg -cwq -cwq -wwu -wwu -wwu -wwu -eXy -eXy -xoF -fFu -jqD -bjZ -jqD -jFJ -qWv -kmR -iaq -iOe -vfI -jnV -lCz -iON -rtv -miF -imR -hLz -bYp -hCK -hLz -oLB -eXg -fED -hbz -xSb -hSH -ilV -qBk -jjF -mOK -hLz -uXA -hLz -dOv -cDh -cvm -kvE -pjf -kvE -hLz -ssM -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(102,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -qOh -uVj -wwu -gjh -cwq -cwq -cwq -cwq -xuv -uKn -hMV -lIL -fFu -kEF -uHR -ngk -jFJ -fko -sif -lvS -mlL -aSb -jnV -tVz -qfv -rtv -miF -kbx -hLz -hLz -uXA -hLz -emP -rWm -fKs -gqm -htq -jjF -jjF -jjF -jjF -hLz -hLz -uXA -hLz -jLk -vIO -xXv -lqf -xXv -pjf -hLz -fRm -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(103,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -qqu -hJD -wwu -wwu -wwu -wwu -qdC -cwq -xuv -njc -cgM -lIL -fFu -auU -auU -auU -mIq -eho -brs -bau -iRD -nFQ -oId -hFS -qfv -rtv -miF -wmW -hLz -uXA -uXA -hLz -enl -ljf -qnO -cZT -qbr -nNT -bMJ -iVY -jgO -hLz -wwQ -uXA -hLz -dSv -fiz -btq -xXv -vsU -kvE -kYV -fRm -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(104,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gqP -gqP -qOh -qOh -tDI -xYg -pzT -wwu -lkZ -cwq -xuv -hzv -xLc -mZJ -viL -llh -llh -llh -ivD -wiL -kmR -aFB -aFB -aFB -aFB -sif -qfv -rtv -miF -yiB -hLz -uXA -hLz -hLz -hLz -hLz -hLz -hLz -ilY -hLz -pLy -vlh -joh -hLz -aQU -uXA -hLz -jJa -pwL -vVD -qmC -iOV -vNr -tbI -lzf -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(105,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -uVj -vBP -sbm -cQj -nOZ -wwu -cja -cwq -isz -pUr -nVB -sYD -ayc -ryu -ryu -ryu -fTd -iAk -kmR -boL -hzf -aSq -tDV -ePa -bom -rtv -miF -gxr -hLz -uXA -uXA -uXA -uXA -uXA -uXA -uXA -uXA -hLz -hLz -hLz -hLz -hLz -xvz -uXA -hLz -hZP -pJf -oaC -uJr -pJf -owM -uTb -fRm -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(106,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -uVj -hHa -wwu -wwu -wwu -wwu -aWf -hmH -xuv -rWT -rWT -wIJ -wIJ -wIJ -avi -epB -mci -kKa -kmR -kmR -kmR -kmR -ePa -ePa -alr -rtv -miF -kfm -hLz -hLz -hLz -hLz -hLz -jKB -uJn -ppX -uXA -sWp -uXA -uXA -uXA -uXA -uXA -uXA -hLz -dPh -kGz -xYC -ucB -cOM -bKq -kYV -lzf -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(107,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -jYo -wwu -wwu -gvQ -mtL -xEo -tXg -cwq -xuv -odz -ahG -alK -anA -wIJ -wIJ -avi -mci -qSz -qAG -jME -jdR -mem -fja -sRZ -tMK -mmI -miF -jvv -gZf -kRI -uqC -pXT -hLz -hLz -hLz -lyK -uXA -hLz -tWL -sil -fIX -vXh -cXJ -uXA -hLz -eaB -hKv -rSU -kYt -xIE -lpH -hLz -uXA -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(108,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -tXg -tXg -hgC -cwq -xtC -nLx -cwq -cwq -ksX -mwL -djv -mwL -qbh -aoW -wIJ -wIJ -kaU -cvA -qdc -aHR -pOk -jXu -qdc -xLU -htr -hZL -aTU -nys -iJt -pEJ -mJg -mJg -mJg -ket -hLz -ePs -vXT -vXT -vXT -twP -ssy -kYm -mvN -uXA -hLz -eaB -wdX -lpH -sfe -emp -lpH -hLz -uXA -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(109,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -rWo -nAJ -kEI -xuv -xuv -xuv -xuv -xuv -xuv -nAU -ivY -bdD -iXa -ape -aoW -wIJ -fsI -skv -fHe -fsI -fsI -fsI -ssL -mYV -wmz -rhR -miF -jvv -fgD -lVk -gqi -gqi -pVK -hkw -hLz -djs -lQI -lQI -lQI -rvL -rvL -rvL -rvL -rvL -rvL -rvL -rvL -rvL -rvL -hLz -hLz -hLz -uXA -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(110,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wwu -wwu -muI -xuv -hge -hge -hge -oiO -ijV -pKO -aiN -jDc -anN -vIp -dkQ -wIJ -fsI -cTV -qAG -iMK -bsz -ksx -fja -bkH -tMK -rtv -miF -wIG -jzq -oxo -qAv -oWY -eQH -bSV -rvL -rvL -rvL -rvL -rvL -rvL -qAF -nxL -xCC -ocH -mLY -rks -ozt -ozt -rvL -uXA -uXA -uXA -uXA -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(111,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -kct -gkX -hcj -xuv -wUU -dJI -hge -gKp -qXi -agl -cLt -rdJ -jRI -sDg -rWT -rWT -ati -onT -qAG -qAG -qAG -qAG -qAG -dpL -iVH -rtv -miF -jvv -fNT -fNT -fNT -qGm -eQH -tyi -dCx -mWd -dRX -axQ -iwN -cmG -gjP -quV -iJX -xAO -rNb -mWc -ozt -ozt -rvL -uXA -hLz -ceH -tlt -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(112,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -cRH -dJf -hcj -xuv -hge -aak -hge -oiO -aeX -agn -agn -agn -jVo -ggD -rWT -uNp -qyk -oSb -qUO -dpL -uHf -kAe -vgo -dpL -lCh -rtv -miF -jvv -aUl -wkX -iqL -eYm -dTn -tyi -tyi -xwM -vtO -xIh -vzu -cmG -cmG -rdF -cmG -wVY -wVY -wVY -wVY -wVY -rvL -uXA -tVB -iiQ -tlt -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(113,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wwu -wwu -wwu -wwu -dKz -xuv -hge -rhC -hge -oiO -afz -lIh -mis -txR -dDk -vsM -xad -uaX -puG -smv -cyb -bsB -iOp -rUD -sih -dpL -fNT -xJs -iRg -aYA -fNT -fNT -wkX -qGm -ion -mdU -kJY -ltb -vtO -bjF -pcy -cmG -kqy -uHu -kQO -wVY -pdW -nlL -ieP -gyf -qFO -wVO -uXA -uXA -tlt -hLz -hLz -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(114,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -kRG -sUj -sUj -rkM -rkM -rkM -rkM -rkM -rkM -rkM -fKr -fKr -rWT -ujc -rWT -mCI -kXZ -wbS -eGF -dpL -hGG -bvx -btp -dpL -fqo -fqo -kcK -oGL -fqo -fNT -qMe -qGm -pPI -qTg -wkf -orQ -kis -iDk -sYl -cmG -bTm -mNb -nFr -wVY -mbv -xQo -uCV -gNm -lcv -aal -xhf -kpX -aal -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(115,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -bir -sUj -qEy -rkM -rBF -pxL -can -kuh -cLI -yaq -nxe -mTo -rkM -rkM -rkM -mrh -ivs -iNO -dpL -dpL -dpL -dpL -dpL -dpL -fNT -alL -tjP -jVt -fNT -fNT -fNT -qGm -qGm -qGm -qGm -dAp -ckQ -xcG -qfV -cmG -cmG -gsp -cmG -wVY -akU -xQo -kor -tBr -lcv -hCh -uAe -adq -xQG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(116,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -sUj -xVn -rkM -wCc -ezQ -qzo -aPf -qrx -eUn -jTM -oXE -xZX -dpP -rkM -mGd -shk -wbS -dpL -tIe -psn -aLO -fNT -lZS -idn -shi -miF -nWz -nIh -nYt -rtv -feX -feX -feX -qGm -cmG -cmG -qFC -cmG -cmG -gCP -mhp -iNp -wVY -sIH -hWV -kpR -fDZ -lcv -aal -ydS -adq -maQ -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(117,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -rkM -rkM -xKj -xKj -ntl -aCd -rQG -qEb -eBf -rJC -pbk -dKU -rkM -oOR -kvB -eao -ktM -pEu -flx -pEu -axK -lPj -uPQ -mge -loK -umC -nIN -gYX -nIN -feX -feX -feX -qGm -mZS -vKz -oHs -vXP -rOm -bTR -gWZ -nfH -iGY -stS -wzJ -fXb -wDf -lcv -cKs -cMh -pzx -cSK -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(118,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -tgF -uzH -fiA -fiA -wIP -tXB -gup -vsk -tPj -drm -aWJ -giq -rkM -ueO -puG -eep -dpL -jyL -psn -nzO -fNT -fqo -iNz -shi -siq -nWz -xXU -nYt -rtv -feX -feX -feX -qGm -xxw -iff -xpM -gSx -qnB -aPE -tJn -hPq -xZB -ccU -bOx -hRd -biZ -lcv -aal -xhf -lTN -aal -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(119,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -kwL -oFI -txu -gfg -waI -cHd -oFH -sgc -rkM -gzM -iot -vbQ -rkM -qxh -lhW -wbS -dpL -qun -qun -qun -qun -qun -fNT -lIC -uKW -gEa -fNT -fNT -wva -fNT -fNT -fNT -qGm -syV -wPX -xKq -nCG -nge -goX -oJs -nCG -mrG -mrG -mrG -mrG -mrG -lcv -vyA -nXb -lRl -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(120,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -pXg -ivo -txu -uHZ -txu -wFC -lhS -eSJ -jBR -gzM -vIa -gIb -ewK -vjX -gzM -kXZ -tuX -avH -maW -haL -nQS -qBg -qun -elB -elB -xdK -khx -elB -ldb -fVF -fQs -fVF -bjP -jRO -ihm -wyE -xKq -lTO -rac -srK -keJ -bfM -jxj -pwF -nCG -rvD -hZq -lcv -iiA -iiA -ugP -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(121,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -quW -nEi -txu -jml -fdp -wWJ -ffi -eVl -gzM -feP -sTT -pGb -jGf -dhb -puG -qZA -avH -maW -nQS -uJD -eTH -qun -qun -wrb -wGY -bap -qHW -qHW -qHW -qHW -jAZ -qHW -jRO -eCO -wyE -xKq -hab -dZz -bPP -xhJ -giy -cKv -cZG -meH -cqP -dfa -lcv -iiA -iiA -yeB -fjx -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(122,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -aYs -pyO -pyO -oYI -cdd -rkM -gzM -gzM -rkM -ddO -uqv -bLi -aip -gzM -swk -tYg -nXJ -maW -rxL -rxL -emI -vbP -qun -jyD -jLQ -sGu -heR -tBY -nhJ -vYl -pDS -doT -kKr -tam -wyE -bCp -nCG -pwS -uCv -cgb -cgb -ybe -wnq -nCG -piG -pdf -lcv -qqY -lxG -kcy -jIY -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(123,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -rkM -rqK -hNA -wqx -rkM -rkM -whw -whw -qXj -npF -hML -iCE -iCE -qun -qun -kjo -tpV -qun -uUg -nQS -nQS -nQS -qun -tKl -jLQ -sGu -heR -qRy -cht -sYb -kUO -hpz -kKr -hPX -wyE -xhc -nCG -sMI -gEl -wRD -vPN -cvn -tyj -nCG -qiF -vLL -lcv -ybG -vph -ybG -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(124,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -vlQ -vLd -olC -auv -rUh -rkM -vzZ -vzZ -gws -npF -lcT -cvK -eFO -qun -qNG -qtp -rjm -ibw -lRu -dEb -tKA -nQS -eHc -cCc -jLQ -sGu -heR -ilg -gmj -unV -noh -qiw -kKr -tam -oKR -xKq -nCG -xEv -rBt -aDp -xug -sgm -eYQ -nCG -nCG -nCG -lcv -ybG -jTH -eVQ -agV -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(125,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -cRU -eHf -iuW -eHf -dGa -rkM -uJq -nuv -cLA -npF -lcT -aAE -dJs -qun -nVT -iCi -wTO -maW -rxL -doJ -dEb -doJ -eHc -cCc -jLQ -sGu -heR -dnH -tld -rho -noh -aFm -kKr -xIk -wyE -xKq -nCG -pdY -lGp -xKy -wHq -sPg -hxy -nCG -nzJ -nzJ -lcv -gPJ -gPJ -gPJ -xit -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(126,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -rXg -dtm -jdC -bID -tRU -rkM -hDb -cvK -cLA -npF -lcT -eFO -pAV -qun -lYU -qtp -pKA -evi -oOE -iie -nQS -tKA -eHc -cCc -jLQ -vmH -qHW -kKr -pQW -kKr -fbD -kKr -kKr -xhh -eBo -vOn -nfv -nfv -ceF -ceF -ceF -ceF -nfv -nfv -mHh -obX -lcv -hAg -kFd -hAg -jHr -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(127,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -rkM -rkM -rkM -fMu -rkM -rkM -rkM -pov -gBN -uOY -npF -eKD -biJ -mwB -qun -hCV -jVT -uaV -maW -aUh -aUh -ukI -dEb -eHc -cCc -jLQ -sGu -nOO -aHY -ihp -iFi -noh -kMv -kKr -iuu -wyE -oVZ -nUa -lwD -kyO -sKw -mxN -mxN -isG -nRQ -tZO -tZO -knW -hAg -lrA -ptl -biS -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(128,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -sUj -sUj -sUj -fij -hQl -oqU -dYq -rkM -frw -iBj -pzb -una -efX -pzb -frw -qun -maW -oGF -maW -ibw -nQS -hIn -nQS -guT -eHc -hBG -jLQ -sGu -nOO -cbu -xsi -xsi -epO -eDC -kKr -jYe -wPX -xKq -bYB -ckR -gtu -kZl -sEA -oVa -mjA -pWA -lcr -tIu -lcv -hAg -lUd -szC -jHr -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(129,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -fov -vnK -qKR -vnK -iDh -iDh -dYq -rkM -rkM -rkM -jgU -rkM -rkM -rkM -rkM -qun -nOR -npu -gEv -ibw -maW -ibw -maW -ibw -ibw -ubi -jLQ -sGu -nOO -ihj -aog -aog -sSO -aIe -kKr -sHd -wyE -xKq -bYB -oON -pPQ -wNu -ldr -byW -yls -kdE -lbu -sgF -lcv -gzw -gzw -gzw -rHP -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(130,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -gjC -hJU -uZg -fij -sjW -pog -rwc -vnK -pQP -eDt -uDB -vnK -iaf -sgT -xRH -lti -wtw -tUq -hFL -maW -mwz -nQl -vLv -ibw -ehh -xYM -jLQ -sGu -nOO -gOZ -xVR -tfA -htD -rmD -kKr -tam -wyE -xKq -bYB -lfu -dNm -mjA -mjA -kBk -rJv -kvO -qno -mxN -lcv -gUR -wxd -aNV -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(131,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -ehl -sQT -mOb -vnK -vnK -gih -vnK -vnK -ocX -iMX -uDB -vnK -pXR -aIY -joU -qun -rUJ -lQb -pCf -bcC -bcC -bcC -sLX -djH -wcG -ybm -jLQ -jES -qHW -kKr -pQW -kKr -gQy -kKr -kKr -oSi -exl -qvv -ohF -tpi -cgp -rpp -laj -uHq -iWu -iWu -kMC -fPl -lcv -pMR -vSE -gty -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(132,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -vnK -vnK -uZg -oGo -sHv -kpt -kRS -hvf -kRS -kRS -kRS -cpg -sjf -aIY -vvs -qun -wMf -nyg -rfn -rfn -rfn -rfn -hFL -maW -roa -xYM -jLQ -aWc -qGb -dnH -kgl -dBO -nxN -kKr -emu -jdP -wyE -oOa -nUa -iRF -scD -fIU -mbb -kiO -kyO -kAU -kyO -rdl -lcv -eeL -ybG -ybG -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(133,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -fov -pro -uZg -gQA -wJI -vnK -tTw -cnL -wug -uKz -cgc -vnK -vvm -nfR -huz -qun -tll -ntU -vKB -rfn -niK -rfn -oig -bQY -wTS -xYM -jLQ -aWc -qGb -ilg -mDp -unV -fTN -xlk -gDM -jdP -oKR -cCX -nrm -oxn -oxn -oxn -oxn -oxn -kCA -pmX -oxn -oxn -lcv -sEd -ybG -mDI -cFq -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(134,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -ggg -pro -kpt -cYh -qOQ -vnK -vnK -vnK -vnK -jxK -aQV -iOA -qun -qun -qun -qun -qun -qun -vWg -oyv -abk -iqC -tGS -maW -xni -xYM -jLQ -aWc -qGb -cDa -nPG -olS -aXH -pRa -xue -qvi -rnU -oOa -beM -oxn -bna -usp -wcA -kod -crr -pbJ -tdn -qcI -lcv -kri -ybG -hQO -voO -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(135,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -vnK -mWH -vnK -vnK -wJI -vnK -wsH -lpB -vnK -wGl -wGl -iOA -xEj -ffN -iLJ -win -gle -qun -qun -qun -qun -ibw -ibw -ibw -vsx -bYg -jLQ -aWc -qGb -aCl -lLC -lzb -ipI -jSC -gDM -jna -uMW -kNZ -gxU -oxn -xgm -xDl -ozL -usl -lKw -aCw -tdn -tdn -lcv -aal -nZZ -aal -aal -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(136,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -voA -wJI -wJI -qvk -sff -eOf -erN -wGl -wGl -iOA -hwQ -rIp -aBK -kiA -win -nHC -oJp -oMz -aBK -fjQ -oDI -thD -vsx -jEk -jLQ -qOH -qHW -tIm -xoM -qty -kKr -kKr -nrm -pVP -izt -pVP -nrm -oxn -mYs -cuC -udb -udb -oIl -iYM -tdn -wlo -lcv -aSs -nca -vTS -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(137,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -fdr -vnK -hbe -lNA -vnK -imm -ojU -vnK -lci -lci -iOA -ocO -frz -aBK -kpx -iIM -sJn -iCD -eBY -aBK -ozy -fYj -kBc -vsx -xYM -jLQ -yka -mtI -ggp -hOX -qob -aHk -eEZ -twY -tia -cwz -twY -twY -oxn -oUE -eIw -bvL -ueG -fnW -iYM -tdn -tdn -lcv -uAe -nca -vae -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(138,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pqo -nrL -wJI -vnK -vnK -vnK -vnK -vnK -vnK -vnK -sHB -iOA -iOA -sJn -aBK -aBK -aBK -jxD -aBK -fhN -aZm -aBK -mDm -vrs -cTw -vsx -xYM -jLQ -tDb -gvp -gVI -qtM -xNd -ihL -hwV -hYk -qXX -usf -iog -sar -gvN -uIw -mrS -vNo -ssw -fnW -iYM -tdn -uPc -lcv -lph -nca -pYg -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(139,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -ndL -vnK -vaC -dUU -tdA -dnJ -cTJ -wvg -mqc -mRQ -dVV -xNy -sPp -mcI -rPC -sJn -lJu -dPk -aBK -vnR -tNe -sIz -bSX -ybm -jLQ -mJJ -mFz -suB -mve -amM -dfB -ask -jIs -buR -gxX -aGr -hBe -dxY -mdZ -iVs -usl -usl -eQP -uTX -oxn -oxn -lcv -lcv -lcv -lcv -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(140,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fLx -qNw -ahS -xXF -xeM -geb -gns -fcz -wGl -wGl -xZl -lba -iOA -rMR -kpx -gHU -rPC -dqm -aBK -wRc -wRc -wRc -wRc -sKm -sKm -sKm -sKm -cdm -jLQ -aYU -gvp -ffh -lbi -blH -ihL -hwV -opE -opE -xNH -opE -opE -dAF -wPS -aKA -iDe -iDe -mMi -mMi -fYa -jpB -mzh -jZe -ksH -pMf -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(141,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pqo -nrL -wJI -vnK -vnK -mgq -iPV -kVm -wGl -gIa -whL -iOA -utl -doh -gJz -rPC -hwQ -piz -aWO -nEl -edT -rBT -tEK -lAD -eUq -ttb -wQu -jLQ -dyG -mtI -gYa -jIi -csR -aHk -vOo -xlu -dzM -puH -dzM -gBV -oxn -fES -sKa -fES -bqQ -gvx -sKz -ksv -tQN -ciC -uQN -wmQ -wba -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(142,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -vnK -eQD -hgB -sDp -fzG -jlJ -eYp -wXs -iOA -dwN -eDl -ovY -rPC -tpW -flD -bAq -ouX -ouX -ouX -wdj -jgx -fgz -hUA -xYM -jLQ -usK -ilR -vVR -hHe -sno -aHk -wdd -fqn -wis -slP -iAQ -tZZ -aZW -aZW -aZW -iSP -iSP -iSP -lRW -rWx -fdW -lqx -ujd -kHM -tWK -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(143,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pqo -nrL -wJI -vnK -lCR -vnK -vnK -vnK -uJi -vnK -vnK -iOA -dfU -pZm -wJy -rPC -dVV -bLm -yhv -bLy -aVD -wym -uVz -jgx -kAm -hUA -xYM -jLQ -jay -grN -cqy -ouD -dUj -sRR -vSA -rwv -dzM -vNV -hwV -gHO -yba -lfW -aZW -pOK -nqM -qQM -dHR -iux -fdW -lqx -oXN -vym -ssB -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(144,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -fdr -vnK -oHr -iBv -oyt -jUJ -iDh -vnK -dVf -iOA -bsX -bIy -riF -rPC -hwQ -bLm -coH -xMk -oPY -hgK -eCf -jgx -uae -hUA -xYM -jLQ -aWc -grN -wMN -tsN -dhZ -sRR -tOW -rwv -bCd -dzM -gcm -txp -aaU -coZ -aZW -aYB -xcY -gEZ -kUW -iux -fdW -quE -eDm -fKS -cnz -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(145,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -okI -oHr -uyL -oyt -uhu -iDh -vnK -dVf -iOA -joT -pCU -pHu -rPC -xyd -aBK -gef -qVv -qVv -vzY -aqW -esu -pRD -ttb -iTw -jLQ -dUh -grN -rmd -sFG -loQ -sRR -tDX -kRM -dzM -wLC -dzM -sOT -twY -twY -qcr -xcY -otX -gEZ -dHR -gjb -ivL -ivL -ivL -ivL -ivL -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(146,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -dMV -vnK -vnK -vnK -ogA -nFq -vnK -dVf -iOA -iOA -iOA -iOA -hQE -aBK -aBK -rdH -rdH -rdH -rdH -dTJ -neX -sKm -sKm -jEk -jLQ -aje -grN -aTc -gxi -woE -biz -dzM -kUl -ghy -dzM -dYM -scx -dzM -dzM -qcr -xcY -nKY -mjg -ehO -iux -quC -wDa -jXv -xID -uAW -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(147,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wtC -fov -vnK -tdK -vnK -sLl -pog -vnK -dVf -dVf -dVf -dVf -iOA -mnM -fWa -aBK -vvX -yix -yix -yix -kBX -yix -gCM -ttb -xYM -jLQ -lCG -grN -voB -pZZ -gBz -sRR -xqZ -jTK -dzM -dzM -dzM -ijd -vOo -vOo -qcr -xcY -rEp -gEZ -dHR -mni -ivL -xbN -pOi -rxz -hdS -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(148,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -nmK -pmn -vnK -tnN -xYQ -pjX -pog -vnK -vnK -vnK -vnK -dVf -iOA -qGa -fhy -dWT -dtJ -cdc -cdc -cdc -fHd -vwQ -aNm -fXr -xYM -jLQ -pGs -kMN -tEe -fYt -loQ -sRR -qPu -sEl -vOo -xwZ -vOo -aRz -aaU -ilI -aZW -vXx -xcY -gEZ -wcH -iux -cuL -aVX -xBi -xYL -gss -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(149,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -xyM -kMk -gFO -bAP -bAP -gFO -gFO -xVt -gEL -vnK -dVf -iOA -wFM -emS -aBK -fhC -dJx -fRN -wlZ -mqx -wlZ -tUx -ttb -sLI -jLQ -pps -grN -eTJ -rep -tVi -sRR -qsj -iDr -thd -bYb -bnC -dXy -thd -aHK -aZW -bwE -wat -ydn -tfX -iux -cuL -aVX -vqd -ykS -uFk -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(150,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -vnK -vnK -kEp -ejI -tiX -uIP -wug -gFO -vnK -vnK -vnK -iOA -aBK -aBK -aBK -ttb -ttb -ttb -pCg -lYd -pCg -ttb -ttb -uUF -jLQ -tWv -grN -grN -grN -grN -grN -qvN -qvN -qvN -qvN -aZW -fEj -aZW -aZW -aZW -ylR -ylR -ylR -qyF -wCC -cuL -adB -jbt -sBJ -vOZ -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(151,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -wJI -wJI -vnK -vnK -vnK -vnK -vnK -vnK -kEY -vnK -dVf -vnK -qiJ -mmA -pei -vsy -ttb -okr -oyR -bFH -esk -bFH -dUi -hMg -sUy -dVW -fzy -rES -kzK -xzA -kzK -kzK -fou -eAV -hrw -jRO -vJF -nlc -gCw -slI -fqu -mFV -omk -vrA -ibk -mtV -gaL -gaL -gaL -gaL -gaL -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(152,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vnK -vnK -cDq -wJI -vnK -dVf -dVf -dVf -sKC -fCx -wOv -sKC -dVf -vnK -ahO -dVi -gHi -qeu -eyJ -gst -rCW -lia -rMY -cJI -cJI -dbN -fwM -ilA -tJZ -kqG -rpa -rpa -rpa -nhA -dQH -jdx -jNH -jRO -aeS -rlB -wLV -uMK -aZs -fSO -aKF -vrA -ffA -dUF -gaL -iMF -jzN -haB -bYX -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(153,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -dEt -wuA -vnK -vnK -vnK -vnK -vnK -vnK -oSL -vnK -vnK -amt -iRm -atv -wiv -lbq -eyJ -xmh -rCW -kzK -xEh -kzK -kzK -qrK -nFt -nFt -nFt -sNJ -kzK -kzK -rpa -kzK -jSW -nrX -mkE -gQx -avX -xWy -pfd -fQH -aUV -oDi -fgB -cBJ -hEO -dvA -sCp -ecl -lSw -nce -yal -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(154,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -gTs -opN -dEt -ehA -xtF -dEt -deG -xPu -gXs -xPu -oSw -amt -lyv -udZ -udZ -uTL -amt -qlq -irI -jZS -kNA -hXr -pYf -ttb -pPx -pPx -pPx -ttb -tRw -hIe -wGg -jZS -hbj -cle -bWz -jRO -wmN -qAh -rAu -lVE -hXt -qAh -oyy -vrA -ksB -blN -dyo -laf -iOr -ylV -lOq -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(155,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -wWk -opN -wuA -mPw -mPw -dEt -xPu -deG -cpm -deG -eMp -eyJ -hbi -mPv -hqy -yaR -amt -ttb -ttb -muB -iGq -ttb -ttb -ttb -nJU -nFt -jTE -ttb -ttb -ttb -mTH -muB -ttb -aal -aal -lcv -tTC -nCK -nuE -sWW -nCK -nCK -nCK -vrA -bPK -tNG -sCp -lct -oET -xoX -uik -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(156,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -thi -wQA -dEt -jGg -mPw -dEt -xPu -xPu -hAk -gXs -deG -eyJ -csC -wsY -lYe -aQC -mwO -ttb -hyt -hoj -nVi -uZm -ttb -uVR -xmQ -xmQ -xmQ -knd -ttb -khm -wFq -hoj -lsQ -aal -xJT -lcv -vce -ltZ -oXb -ydG -aII -fJU -maD -vrA -jVg -lcv -lcv -lcv -lcv -lcv -lcv -lcv -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(157,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -cGu -cGu -dEt -wVT -mPw -dEt -xPu -xPu -gXs -oSw -vvb -eyJ -hbi -lUv -aQk -dVi -kbq -ttb -ibJ -kzK -xEh -pMq -cHg -roh -xmQ -xmQ -xmQ -gfD -tLq -wYp -iFy -xhx -ffz -aAM -lhU -lcv -lcv -lcv -lcv -lcv -lcv -lcv -lcv -lcv -lDY -fhp -ezd -pqn -mbi -dop -vJC -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(158,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -dEt -dEt -dEt -dEt -kkI -dEt -oSw -deG -xPu -bUv -xPu -eyJ -hbi -uMz -lQc -dVi -cyL -ttb -cEH -jZS -kNA -xtZ -ttb -qSr -xmQ -xmQ -xmQ -rBm -ttb -acq -pFW -jZS -sFQ -aal -nQR -iEW -iEW -iEW -iEW -iEW -iEW -lhU -nnf -gmp -lDY -lPm -vdQ -bXn -rTL -aal -aal -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(159,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dEt -dEt -dEt -dEt -dEt -dEt -hgQ -dEt -imZ -cpu -dLe -mgo -xPu -amt -hwi -jxF -dVi -jOS -amt -ttb -ttb -muB -iGq -ttb -ttb -ttb -ttb -ttb -ttb -ttb -ttb -ttb -ctY -muB -ttb -aal -aal -aal -aal -aal -aal -aal -qtm -nQR -iEW -iEW -iEW -iEW -iEW -iEW -uvG -kcI -bCr -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(160,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -tfL -oyh -oyh -oyh -dEt -dEt -mcp -dEt -avl -deG -euC -aES -bpd -amt -mCQ -amt -eyJ -eyJ -amt -nUt -kzK -hoj -nVi -huT -szS -qGV -bbI -aIJ -ibW -aEW -wau -lrp -gbh -hoj -oFT -tsy -bet -iAb -bif -fSi -vWP -aal -aAK -ybG -hFM -jpH -ikG -rlw -fMf -cUN -pnc -kFd -lrA -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(161,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -tFm -tFm -tgS -tFm -avl -eMp -ybi -iTI -bUv -kUo -bCo -mKg -gAg -jjW -sTU -bFH -wMR -bFH -ozJ -jhw -szS -qGV -pvx -hWx -hWx -vGt -ldI -gCD -kzK -jZS -jZS -kzK -gyy -pMe -biD -uZY -keR -aal -aal -cJv -aal -aal -aal -aal -vae -aal -iid -aal -aal -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(162,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -tFm -tFm -tgS -tFm -pvZ -xPu -mDr -jko -kHG -ojz -mcB -oKL -sSV -pVi -vKY -ldI -ldI -hFE -ldI -hoB -puB -qGV -xmQ -xmQ -xmQ -aEW -dqX -bVg -qoq -slQ -qVh -xYM -gyy -gIo -wcT -tGv -jeR -lIJ -tRM -qck -iAb -faq -knT -aal -aal -aal -pnc -lfy -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(163,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -tFm -tFm -tgS -tFm -cpm -cpu -mpY -umo -nLL -kTg -idy -fUM -kFv -cHf -amt -raO -kzK -dNy -kzK -gCD -cJI -qGV -xmQ -xmQ -xmQ -aEW -ldI -gCD -gyy -ohz -cVJ -xYM -gyy -pMe -bcH -aqQ -oVg -bcH -gqs -feH -iVN -bUh -uXl -uXl -lhR -aal -pnc -lfy -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(164,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -mcp -dEt -deG -xPu -pKg -olj -xpO -amt -vUc -vuk -mDq -xgg -kca -pZW -pZW -pZW -pZW -kEU -cJI -ocu -iMU -iMU -iMU -nvv -lGw -vcY -vNM -sda -sda -vNM -wdC -bbK -jQu -jQu -ezy -qpp -iLM -iLM -buu -jtC -raz -iHI -iOs -aal -pnc -gKi -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(165,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iTg -oyh -oyh -oyh -dEt -dEt -gqJ -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -amt -pBW -pBW -kca -rCc -oZz -nQO -cfa -kxT -xgN -bFH -bFH -bFH -jhw -kzK -hoB -dXA -pqg -jZS -ftT -jZS -ifG -iAb -nhX -hgD -vFw -prS -wcT -pbm -iVN -kHJ -eYL -fTo -qCZ -aal -pnc -lfy -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(166,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -kkI -mlx -cvg -vrN -pOH -oIS -ipu -aUe -dEt -aPc -sPu -ucm -kca -xUT -shd -hjH -yfU -eZQ -jCz -kzK -kzK -kzK -gCD -kzK -xcW -ivz -igE -aYy -aYy -aYy -iAb -iAb -iVN -iVN -iAb -aTJ -pix -iAb -iAb -iAb -aal -aal -aal -aal -pnc -lfy -lfy -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(167,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -mPw -pNI -dxK -oIS -dxK -dxK -wbx -pJs -dEt -nmF -pXG -jmu -kca -xOr -fsD -fOl -cHy -uqd -xhx -bxE -xhx -xhx -daT -xhx -daT -pIm -igE -hlP -nIQ -iwj -hiJ -gYc -kbL -bku -iAb -aBS -bsK -bsK -bxr -efn -aal -oVH -oVH -aal -pHQ -iRN -iRN -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(168,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -tFm -jPg -mPw -eHk -meB -fxm -pJA -wBg -fpN -axf -dEt -dEt -uZF -pZW -pZW -qpa -xDM -ddA -pZW -wCG -jZS -caF -dKS -bsv -qAU -uDc -hoB -pGS -aWH -hAR -pFT -ewz -bfl -bhZ -aTh -bkR -boH -brC -jhU -btW -bxZ -bAc -lcv -lcv -lcv -lcv -rCz -lcv -fUT -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(169,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -kJU -mPw -sQa -spr -spr -del -spr -jFB -pJs -rif -dGe -uZF -aQM -xyi -iva -ifV -lkA -pZW -nyE -nyE -cIc -nyE -nyE -kuB -bFH -ckk -ifG -igE -hcr -jbR -cqR -uSL -aFs -jeF -blv -boI -brC -ltt -jXc -mHf -lcv -lcv -hAg -hAg -wYM -vSQ -rCz -ybG -xhf -xhf -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(170,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iTg -oyh -oyh -oyh -dEt -xcw -mPw -sQa -spr -aOa -deK -spr -pxw -edO -awA -jBf -uZF -afD -rEa -itc -sBb -ybB -rkY -nyE -eIg -eiD -vQf -nyE -sgJ -kzK -juq -igE -igE -izy -baA -jxk -igE -iAb -koN -blX -dNG -oZj -jja -jXc -kOU -lcv -jer -hAg -hAg -wYM -vSQ -rCz -tfR -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(171,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -lcU -oyh -dEt -fCM -mPw -tIT -spr -aOa -xza -spr -fpN -kJU -dEt -dEt -uZF -pZW -pZW -uZF -uZF -uZF -uZF -uZF -rYR -ogD -wzS -nyE -aOp -oqv -cMz -igE -aWR -aZn -cSe -aZn -bgz -bid -cJR -blX -bxk -iaC -jnF -jXc -tch -lcv -jer -jer -hAg -mWr -dcN -rCz -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(172,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -tFm -oHL -mPw -vhq -spr -aOa -xpt -spr -gri -fkD -dEt -lYb -uZF -xiW -xiW -uZF -svu -svu -svu -cuR -wxY -hsI -qBW -nyE -xGu -jhw -rnP -igE -aWR -aZn -bbE -cSe -irx -uVN -wRp -bmA -bpA -bfs -cVT -jXc -uim -lcv -lcv -bHU -bHU -lcv -sAA -lcv -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(173,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -mPw -sQa -spr -kSX -kSX -spr -kgY -mPw -hSI -mPw -mPw -mPw -mPw -uZF -svu -uZF -uZF -uZF -nyE -hni -nyE -nyE -hpg -gCD -qYb -igE -aWR -fYf -aPd -mki -bgz -bid -grk -bmL -tsB -mOH -jhU -btW -byH -bAj -lcv -pJv -xsA -lfy -sZY -lcv -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(174,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -mPw -tIT -oIS -dxK -oIS -dxK -kgY -mPw -dEt -ejr -bET -kFp -mPw -uZF -svu -uZF -noO -ijZ -uGP -wJG -noO -fsJ -hGA -gCD -qYb -nlN -nlN -nlN -nlN -nlN -nlN -nlN -bnf -fOk -mTh -hDI -btt -opr -byI -kNJ -lcv -rzA -gFz -tez -jBu -ioG -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(175,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -mPw -dge -bRI -ueC -ueC -bRI -nIB -mPw -dEt -dEt -loM -dEt -mPw -uZF -svu -uZF -lSI -biR -vLx -vpA -wBq -fsJ -fUg -wHR -gwz -oNf -qjn -wxb -wkw -slk -giV -nlN -nlN -nlN -nlN -nlN -nlN -nlN -nlN -nlN -lcv -xjW -qMV -lKp -gFz -lcv -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(176,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -mPw -mPw -mPw -uJs -isk -syP -rgE -mPw -dEt -lgO -vwN -dEt -mPw -uZF -svu -uZF -iOD -biR -nqb -xAu -crK -fsJ -rQV -wIA -rQV -tPm -tPm -tPm -fDR -nlN -giV -giV -nlN -pEp -pEp -pEp -pEp -gwT -pPG -wyf -lcv -lcv -lcv -lcv -lcv -lcv -ybG -xhf -xhf -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(177,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -tQM -kJU -aeb -dEt -gFS -fXq -dEt -ius -dEt -dEt -teB -dEt -mPw -uZF -svu -uZF -noO -jiD -vAd -fJY -noO -fsJ -tKP -lNh -nno -tPm -gSu -tPm -fDR -nlN -nlN -nlN -nlN -vJs -pEp -pEp -pEp -xQq -qbw -qbw -kQI -slk -qza -meU -diW -slk -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(178,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -xOC -hjP -gha -nBO -fIM -fXq -dEt -jNP -jNP -rRB -fOK -dEt -mPw -uZF -svu -uZF -uZF -uZF -fsJ -fsJ -fsJ -fsJ -ffv -lTu -sus -tPm -gSu -tPm -rGL -qjn -wkw -aXC -foB -eCK -qWN -vqx -jOj -uLk -xui -xui -xui -pmD -xiK -xiK -xiK -ngY -ybG -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(179,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -dEt -dEt -pCC -uzB -aeW -dEt -tfE -fXq -dEt -oZZ -hfD -gOp -fOK -dEt -mPw -uZF -svu -svu -svu -uZF -cfH -yhM -cId -rQV -aVq -fuI -kOk -tPm -gSu -tPm -xui -nlN -uWm -iSu -nlN -qDS -pEp -pEp -pEp -xQq -xui -tuB -rXH -nlN -fhO -osI -cem -nlN -iFr -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(180,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iTg -oyh -oyh -oyh -dEt -dEt -dEt -dEt -dEt -dEt -dEt -jPg -dEt -oZZ -twq -vqQ -fOK -dEt -mPw -uZF -uZF -uZF -svu -uZF -cfH -wns -kOk -iiM -wmw -bXz -sZo -tPm -tnm -tPm -xui -nlN -bvC -uuz -nlN -ylj -pEp -pEp -pEp -hBN -xui -nlN -nlN -nlN -nlN -nlN -nlN -nlN -aal -aal -aal -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(181,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -tfL -dEt -dEt -dEt -dEt -dEt -dEt -fXq -vMF -jas -cOD -lXn -scK -qEE -dEt -mPw -imI -wWk -uZF -svu -uZF -cfH -btU -xYr -rQV -xCl -qkI -pdd -tPm -gSu -tPm -xui -nlN -nlN -nlN -nlN -nlN -inE -ehD -inE -nlN -xui -nlN -nlN -nlN -nlN -nlN -nlN -nlN -aal -aal -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(182,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -exc -upG -bwK -tHn -qWS -aZA -hsW -dEt -mPw -imI -qVm -uZF -svu -uZF -tPm -tPm -tPm -tPm -tPm -tPm -tPm -tPm -gSu -tPm -xui -xui -dEJ -xui -xui -nlN -xui -nlN -xui -aGI -xui -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(183,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -mPw -imI -oWS -uZF -svu -gSu -gSu -gSu -tnm -gVA -gVA -gSu -gSu -gSu -gSu -tPm -uxI -sOj -xui -wOd -xui -aGI -xui -ijX -xui -aGI -cWo -nlN -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(184,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -jPg -dEt -mSR -qKl -tzB -hRm -tJR -fXq -ajb -mPw -dEt -nlN -nlN -tPm -tPm -tPm -tPm -tPm -tPm -tPm -tPm -tPm -tPm -tPm -tPm -nPs -qbw -xui -rPV -xui -aGI -tLu -aGI -xui -xui -xui -qcp -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(185,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -dEt -dEt -dEt -eIW -ajb -tzB -aSB -xRJ -paA -oIk -mPw -svy -nvw -fhA -aFQ -fBO -dNI -hnL -gYe -tPm -rfq -hLB -aiw -hLB -hjx -xui -acE -uFI -xui -aGI -tLu -xui -qcp -nlN -nlN -nlN -nlN -xui -nlN -nlN -nlN -oyh -oyh -oyh -oyh -lcU -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(186,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -pQm -jPW -dEt -dit -gxf -bEK -kSr -hZJ -mcm -dEt -mPw -eNa -nvw -fhA -oTQ -opd -oTQ -mUF -kVY -tPm -jzp -hLB -ozc -hKa -nlN -xui -vaR -xui -xui -nlN -nlN -hsh -nlN -nlN -gHB -bAb -nlN -xui -hxF -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(187,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -fwJ -oIk -dEt -uQf -oIk -duv -cQz -rrr -dnM -uNZ -mPw -hCv -tAc -wHV -rHA -nqt -isQ -gJy -uiF -tPm -nlN -hjx -bnt -nlN -nlN -nlN -nlN -bnt -nlN -nlN -qEe -dVH -jtf -nlN -usq -nyr -wWf -xui -mvS -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(188,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -dEt -bMR -ihC -dEt -tFm -tFm -dEt -nzM -ptc -nkL -uNZ -mPw -kLF -tAc -rfD -ibT -esH -maq -aGE -qtj -nlN -loS -xui -xui -xui -dEJ -xui -xui -xui -xui -nlN -oZk -ckl -qhE -nlN -nlN -nlN -nlN -cWo -nlN -nlN -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(189,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -fsu -mzC -mzC -sLE -xtR -mmz -hoM -nzM -hZJ -vaG -dEt -mPw -dEt -nlN -nlN -nlN -nlN -nlN -iIm -nlN -nlN -loS -xap -nRv -pJH -hgS -hle -wOd -hXu -xui -nlN -hzR -rSw -tzu -nlN -hMU -rxa -nlN -xui -kRh -gyd -nlN -nlN -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(190,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -oIk -sIX -hZJ -uNZ -xng -mWW -pqO -jXE -sBp -oAz -etA -mPw -ure -oFu -xNE -sGZ -ure -xui -xui -hgS -nlN -bnt -nlN -bnt -nlN -nlN -dUT -nlN -lEu -cWo -nlN -nlN -nlN -nlN -nlN -xyU -gBo -nlN -qzE -nya -lQs -nlN -nlN -fZV -fZV -fZV -fZV -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(191,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -dEt -hZJ -sIX -jTS -hoM -bmE -bcr -qKI -luw -ezI -hZJ -rrr -mPw -hss -dJq -dJq -dJq -hss -xui -hXu -nmq -nlN -hgS -pum -xNK -nlN -hXu -jvk -pnk -rZe -xui -nlN -jXl -qEH -dLu -hsK -jEs -dXz -nlN -xui -cCq -cCq -cCq -cCq -cCq -qah -sxi -fZV -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(192,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -gaW -scc -sIX -fSA -dEt -dEt -dEt -dEt -tFm -dEt -dEt -qeb -qeb -dEt -mnj -muP -qmu -dEt -xui -xui -xui -xui -xui -xui -rsf -xui -xui -xui -xui -xui -qcp -nlN -tzf -dDH -tBN -txb -txb -txb -oml -xui -cCq -ogp -uEo -blt -dGG -pUV -lXs -keE -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(193,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -ajb -hZJ -jDJ -uQf -oIk -uPL -hjV -ivQ -hZJ -tnG -dEt -lsV -lqK -dEt -dEt -dEt -dEt -dEt -nlN -nlN -nlN -nlN -nlN -wKz -nlN -nlN -nlN -nlN -nlN -nlN -nlN -nlN -mbe -mbe -rcp -bJk -oin -jtL -cCq -lQM -cCq -vKs -cCq -hvY -cCq -pUV -lXs -fZV -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(194,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -rxe -uEK -wGq -rrr -hZJ -dEt -rsY -wjy -hZJ -mgG -dEt -dEt -mzI -uTh -dEt -dEt -dEt -dEt -nlN -nlN -nlN -nlN -nlN -kVT -nlN -nlN -nlN -nlN -nlN -nlN -nlN -nlN -nlN -wzY -abu -rkd -mFv -xRo -cCq -iDm -xrj -sZh -bIm -hMs -qCt -pUV -lXs -fZV -fZV -keE -fZV -fZV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(195,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -apt -xSn -mzC -haS -jDJ -xTa -bfk -lZa -pMx -xeR -dEt -odp -qbG -wWk -dEt -dEt -oyh -oyh -oyh -oyh -oyh -oyh -nlN -lLO -nlN -oyh -oyh -oyh -oyh -oyh -oyh -nlN -nlN -hrp -jEs -nZq -bbL -xRo -cCq -lbr -vdn -cWR -ioQ -aVr -img -gYb -hgN -cCE -cCE -cCE -sxi -fZV -keE -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(196,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -aZp -axG -ajb -gxf -eeC -fzR -rrr -hZJ -fQY -dEt -dEt -qbG -uTh -dEt -dEt -dEt -oyh -oyh -oyh -oyh -oyh -oyh -oyh -gpt -oyh -oyh -oyh -oyh -oyh -oyh -oyh -nlN -nlN -nlN -sut -nld -qbw -sut -cCq -pxK -gmQ -uxt -cCq -hvY -cCq -gYb -aRY -aRY -aRY -aRY -hgN -cWD -keE -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(197,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -crn -apt -gOx -xlj -jju -dEt -crn -hGQ -goD -dEt -dEt -tEY -fDS -dEt -dEt -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -gpt -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -nlN -nlN -qEH -lQd -fIF -ych -cCq -sDo -tBv -pHL -sKX -aeu -eSI -gYb -gYb -pUV -pUV -gYb -aRY -hgN -sxi -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(198,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -gpt -hQT -oyh -oyh -hQT -ilK -oyh -oyh -oyh -nlN -nlN -nlN -nlN -nlN -nlN -cCq -cCq -cCq -cCq -cCq -cCq -cCq -gYb -gEf -org -gEf -pUV -gYb -aRY -wzm -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(199,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -dEt -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -edA -gpt -fPW -eYj -eYj -fPW -cfJ -oyh -oyh -oyh -oyh -nlN -nlN -nlN -nlN -nlN -cCq -cCq -cCq -cCq -cCq -cCq -cCq -gYb -aUj -pUV -lua -iRr -pUV -aRY -wzm -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(200,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -tUT -eYj -fPW -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -keE -gYb -pXr -vvC -qDa -lQW -pUV -aRY -wzm -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(201,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -eYj -oyh -oyh -hQT -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -fZV -gYb -qDI -pUV -syi -qBv -pUV -aRY -wzm -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(202,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -inK -oyh -oyh -oyh -oyh -fPW -eYj -eYj -fPW -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -fZV -gYb -gEf -pUV -gEf -pUV -gYb -aRY -wzm -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(203,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -itT -oyh -oyh -bml -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -keE -gYb -pUV -pUV -pUV -gYb -aRY -cFx -aWB -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(204,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -iML -fPW -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -fZV -aRY -aRY -aRY -aRY -aRY -cFx -tTf -fZV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(205,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -fZV -bhz -gAW -gAW -gAW -gAW -aWB -fZV -fZV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(206,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(207,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(208,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(209,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(210,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(211,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(212,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(213,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(214,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(215,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(216,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(217,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(218,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(219,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(220,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(221,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(222,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(223,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(224,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(225,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(226,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(227,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(228,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(229,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(230,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(231,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(232,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(233,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(234,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(235,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(236,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(237,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(238,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(239,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(240,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(241,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(242,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(243,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(244,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(245,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(246,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(247,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(248,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(249,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(250,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(251,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(252,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(253,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(254,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(255,1,2) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} - -(1,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(2,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(3,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(4,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(5,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(6,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(7,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(8,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(9,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(10,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(11,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(12,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(13,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(14,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(15,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(16,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(17,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(18,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(19,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(20,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(21,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(22,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(23,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(24,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(25,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(26,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(27,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(28,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(29,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(30,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(31,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(32,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(33,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(34,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(35,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(36,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(37,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(38,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(39,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(40,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(41,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(42,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(43,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(44,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(45,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(46,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(47,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(48,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(49,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(50,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(51,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(52,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(53,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(54,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(55,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(56,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(57,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(58,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(59,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(60,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(61,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(62,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(63,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(64,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ibK -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(65,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -atB -tgX -rIc -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -pRs -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(66,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -saG -saG -saG -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -eDe -rIc -eDe -rIc -nUL -rIc -eDe -rIc -eDe -gwL -gwL -gwL -gwL -gwL -gwL -uhK -gwL -nIu -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(67,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -saG -saG -saG -saG -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -eDe -rIc -eDe -rIc -nbT -rIc -eDe -rIc -eDe -gwL -gwL -gwL -gwL -gwL -gwL -uhK -gwL -smJ -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(68,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -saG -saG -saG -eAE -nxm -vrX -aic -fOS -icY -nVq -dfl -wRJ -vpa -gec -rTE -bks -bks -bks -hPL -viZ -vpa -gwL -toH -toH -toH -toH -nST -hEo -gwL -sJU -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(69,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kVp -saG -saG -eAE -fnM -ixf -gby -hzq -pNA -nVq -nVq -cyX -wRJ -eOC -mUs -oJo -oJo -tZF -oJo -oJo -eUp -uzE -gwL -toH -lNs -liT -xvo -joE -oQS -niP -bne -rfI -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(70,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kVp -saG -saG -nNM -gAt -eAE -sGw -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -bVu -kKX -blO -sUI -sUI -sUI -niA -eub -qKN -gwL -gwL -gwL -gwL -gwL -lsm -oQS -fIg -hEo -gVx -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(71,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kVp -wRJ -wRJ -eCP -wrh -wPF -cil -ooF -wRJ -rxg -sJO -vuG -sJO -sJO -kKX -iQp -oZx -oZx -oZx -reW -eub -sJO -sJO -teN -sVh -tNi -gwL -oRB -cQr -gwL -gwL -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(72,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -gDL -acK -acK -hEm -jNQ -wRJ -oVY -gec -vuo -oon -oon -jds -iQp -oZx -oZx -oZx -sfS -ivu -oon -oon -sKN -wFY -mSj -gwL -fqE -oQS -lYL -ghX -rSY -uhK -uhK -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(73,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -pBv -wRJ -wRJ -wRJ -wRJ -wRJ -sJO -fjo -ePM -xxF -wdb -ylK -iQp -gCG -cHm -gCG -kgL -qwC -wdb -huJ -hQA -mlX -hQX -gwL -fmF -oQS -gwL -fiX -fYM -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(74,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -joA -kSR -fWY -fOR -fry -gfr -eJs -pyg -uJX -uJX -oHT -drk -iQp -hGP -nWH -aim -reW -xwg -ttk -enZ -mfk -mFf -pDx -gwL -gwL -jrl -gwL -gwL -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(75,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -iwu -ccH -ccH -gEe -uIN -ltq -ltq -eDe -rtS -xPI -eDe -eDe -eDe -eDe -eDe -eDe -eDe -eDe -eDe -uvQ -hex -eDe -gwL -gwL -dVt -dVt -gyp -gwL -kPW -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(76,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iTg -sKn -sKn -xRB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -iwu -ccH -jRV -bQn -otZ -rAE -aCx -rLf -bks -sei -nba -eDe -nGm -oZx -oZx -oZx -gmO -eDe -hpe -oon -mtM -hdy -gwL -toH -toH -toH -eBQ -gwL -kPW -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(77,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -cvD -cXm -pRs -lfd -xuh -xuh -xuh -xuh -xuh -xuh -xuh -wRJ -wRJ -iwu -ccH -muX -gGX -kAb -lmu -aHP -uBr -hpF -bUH -uSw -xwJ -lUZ -oZx -oZx -oZx -qiU -kPq -efW -xxF -riD -lMR -gwL -vRC -iEg -toH -nhF -gwL -kPW -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(78,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iTg -aZN -oXd -soz -ucA -xuh -ucA -ucA -ucA -ucA -wRJ -wRJ -wRJ -iwu -ccH -qdz -lKE -iia -jat -aCx -kjW -drk -uJX -leI -eDe -qXv -oZx -oZx -oZx -poE -eDe -vVG -enZ -mZI -uqT -gwL -toH -uCw -toH -eBQ -gwL -gwL -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(79,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kVG -ucA -ucA -xuh -xuh -xuh -xuh -wRJ -wRJ -wRJ -wRJ -iwu -ccH -ccH -rLl -lzd -uIN -ltq -eDe -rtS -xPI -eDe -eDe -eDe -xeT -qqv -eNS -eDe -eDe -eDe -uvQ -hex -eDe -gwL -gwL -xwI -vuN -rMc -oIj -gwL -jPd -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(80,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kVG -xuh -xuh -xuh -ucA -ucA -wRJ -wRJ -wRJ -gdm -kpT -iwu -uFR -ccH -suT -lij -uIN -vUv -rHg -bks -sei -wxF -igA -eDe -oRb -oRb -oRb -eDe -dMk -eKp -oon -mtM -uyf -hWn -gwL -gwL -wiB -gwL -gwL -gwL -rFG -cXC -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(81,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -kcA -wRJ -ucA -xuh -ucA -wRJ -wRJ -wRJ -wRJ -gdm -kpT -igy -btC -ccH -dFn -bLq -lwo -sJO -fjo -wdb -bUH -wdb -riD -pUD -qqv -qqv -qqv -wfe -wdb -wdb -huJ -riD -wdb -pPr -gwL -bNp -puM -gwL -sOI -gwL -uex -gwL -gwL -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(82,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -aGH -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -igy -igy -igy -igy -igy -niE -ccH -hNO -uAg -kWf -bGn -rec -bhN -bUH -bUH -enF -szt -oqK -cEt -izN -wyU -bLB -bLB -bLB -oet -bLB -xbt -lOc -puM -gwL -gwL -aBa -gwL -nOH -wRE -fuH -cfp -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(83,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -wRJ -uVK -wRJ -wRJ -wRJ -wRJ -wRJ -klw -igy -wRJ -wRJ -hEu -wRJ -wRJ -ccH -uIN -uIN -uIN -vpa -nqm -drk -mkZ -drk -drk -lCf -uQE -mso -rMX -dGS -drk -drk -kHV -drk -drk -eLd -gwL -uQL -wOE -uQL -uQL -uQL -uQL -gHY -uQL -uQL -uQL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(84,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -hEu -hEu -hEu -hEu -hEu -dCt -hEu -klw -igy -wRJ -hbm -hEu -wRJ -mKm -ggi -bqH -cVK -tQd -tQd -dJh -dJh -tQd -tQd -tQd -tQd -gec -mso -uMu -jWT -awt -awt -jWT -jWT -awt -awt -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -gwL -uQL -niP -lGK -uep -eZa -eZa -eZa -dso -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(85,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -hEu -mDe -jqy -mDe -vDo -wRJ -hEu -hEu -igy -hEu -hEu -hEu -wRJ -jyc -tVC -tVC -tVC -cDu -mfM -uUV -ybY -vaH -poL -wci -tQd -fjo -mso -dFd -awt -gjf -gjf -gjf -qoa -jDe -jDe -qoW -tTc -xyc -ahT -ddx -nbu -dzg -mKf -ubR -gwL -uQL -wOE -qJA -lDH -smJ -smJ -smJ -aze -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(86,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -hEu -jqy -mDe -jqy -mDe -wRJ -wRJ -wRJ -cee -wRJ -wRJ -wRJ -fPj -jMv -iGI -vUS -pjZ -ygT -aCq -ygT -ygT -ygT -ygT -wVm -dJh -fjo -mso -dFd -awt -gjf -ulB -ulB -ulB -jDe -bMs -kpa -jzE -gjf -gjf -ddx -rBC -rBC -jYz -fIa -gwL -gwL -gwL -gwL -gwL -smJ -smJ -smJ -aze -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(87,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -jsF -jsF -jsF -hEu -rip -rip -wRJ -dHn -gXH -sEU -wRJ -jsY -wRJ -lnM -bjK -jYt -dEq -wsl -fYu -ske -ske -luD -luD -lXL -ooE -qUr -mso -laJ -jWT -tRT -nXq -xEL -oAm -jDe -dId -jAl -jHT -gjf -gjf -ddx -rBC -rBC -jYz -ikn -jWT -vSX -qQb -sIA -gwL -smJ -smJ -smJ -aze -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(88,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -nVq -nVq -mDe -wsA -rip -wTp -wRJ -eLe -wRJ -wRJ -wRJ -jsY -wRJ -gdY -sfT -vzS -sWC -gyX -mzg -wmS -fYm -lQJ -wTw -qDu -wSW -faP -gWg -iOh -awt -gjf -mQg -rBC -pzK -jDe -gjf -wtg -gjf -gjf -gjf -uCW -kHc -xAq -lvC -eEu -jWT -vsK -lFz -uba -gwL -smJ -txC -sOI -aze -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(89,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -nVq -wRJ -nVq -wsA -rip -rip -wRJ -kWo -wRJ -tDp -wRJ -jsY -wRJ -mub -iaS -vaA -vaA -wqk -vXm -csr -hlX -upT -sjX -kOu -dJh -fjo -qcd -ccF -awt -gjf -mQg -rBC -pzK -jDe -gjf -vXY -vRj -ldV -osX -jHJ -hVt -hVt -hVt -mqL -jWT -jWT -jWT -tnS -gwL -gwL -gwL -vGT -ryz -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(90,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -mDe -twa -oBd -iDw -hEu -hEu -hEu -igy -wRJ -wRJ -wRJ -jsY -wRJ -uJa -upT -upT -upT -lXW -aYJ -ccp -pDX -upT -sjX -rGd -tQd -spd -qcd -nsn -rSS -xDS -sln -jAl -pWr -jDe -bMs -kpa -jzE -gjf -vRj -vWQ -vWQ -vWQ -vWQ -rnv -gJr -vWQ -wXH -bVl -gwL -uQL -uQL -uQL -uQL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(91,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wRJ -wRJ -wRJ -wRJ -wRJ -ccH -ccH -ccH -ccH -igy -wRJ -jsY -jsY -jsY -wRJ -vDV -kZv -cIr -ldO -efe -bZM -bdx -aLU -byK -pAY -mOj -tQd -fjo -qcd -ceh -dMj -cix -ulB -ulB -ulB -xCM -dId -jAl -jHT -gjf -xDS -xDS -xna -xna -xna -pcf -xna -dSf -jRP -uZo -gwL -uQL -gwL -gPR -gwL -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(92,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -cFQ -oBy -xzd -wDb -uXi -udx -siB -siB -ccH -igy -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -lmU -qyE -aeg -bKS -djx -mKT -nJo -pDQ -dpd -tQd -fjo -qcd -fOu -awt -cix -cix -xDS -xDS -ved -xDS -xDS -xDS -xDS -xDS -gjf -vZg -dIx -dIx -srS -jWT -jWT -pGf -jWT -gwL -pVr -gwL -sIx -sIx -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(93,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -cFQ -lcW -isA -ihV -dbK -siB -siB -txT -ccH -igy -wRJ -xIs -rip -wsZ -usX -nbc -wRJ -jdo -lpR -lYr -dNn -aLv -xbP -qHE -pFA -qHE -dJh -fjo -qcd -dFd -awt -gjf -gjf -vXY -xDS -qaY -gjf -gjf -wtg -gjf -gjf -jnm -tMd -ycW -ycW -umZ -gyr -kXP -jwP -ori -pLQ -czj -gwL -aZw -ivU -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(94,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -cFQ -vqz -efF -jkH -pkH -wLK -siB -siB -ccH -igy -igy -igy -igy -igy -igy -rip -wRJ -tIH -lyd -mdN -uDb -vGv -yeR -qHE -bmO -rVY -tQd -iYL -qcd -nCL -jWT -rZS -nla -mQF -xDS -jDe -bMs -kpa -jzE -gjf -tFS -nNJ -ycW -ssj -ssj -gip -gyr -ptD -jwP -qAx -qAx -kII -gwL -aZw -sIx -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(95,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -smU -iQf -pdh -pdh -pdh -pdh -pdh -pdh -pdh -ccH -wRJ -wRJ -igy -gzU -wRJ -nOw -lFL -mfE -uDb -czP -xXp -rMo -lok -gaA -whR -fjo -qcd -dFd -awt -ubR -mhE -rwh -xDS -jDe -dId -jAl -jHT -gjf -gjf -nNJ -dxv -ssj -ssj -pZt -gyr -puY -fSX -vOf -lFY -pXU -gwL -gwL -sPk -gwL -gwL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(96,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -gxH -sCu -gUX -rQd -wUS -fLu -ycg -uHe -vDg -ccH -sCH -wRJ -igy -rip -wRJ -tpS -kwG -dzq -uDb -oLt -woH -woH -lPA -tDB -whR -fjo -qcd -dFd -awt -jPR -ubR -nYE -xDS -jDe -gjf -iwU -psq -eEr -wVz -ouk -ycW -ssj -ssj -idr -gyr -gyr -pHU -jGF -rGv -cbi -tGn -pSl -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(97,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uhr -abx -ntO -nJk -xDC -uaK -hPk -dke -ycg -uHe -vVo -ccH -rip -wRJ -igy -rip -wRJ -bzy -lGJ -mlh -jrr -kwc -mPW -bvF -lPA -uVI -whR -fjo -qcd -dFd -eDe -jjF -jjF -nrC -odY -tTV -nrC -jjF -jWT -jWT -jWT -jWT -fAz -oNd -hoW -fAz -gyr -pxZ -eSn -tGn -tGn -tGn -tGn -pSl -aqx -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(98,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uhr -abx -ntO -oJf -rtl -rtl -rtl -rtl -rtl -rtl -ccH -ccH -bRx -wRJ -igy -rip -wRJ -bIQ -jwu -lFe -gYh -qHR -woH -nLp -qWQ -qIY -whR -jwo -qcd -dFd -mYu -jjF -mbM -gBr -sRh -tUG -ris -tdt -gyr -sng -iHx -aOx -rRu -sFt -sFt -sFt -tHs -sGR -tDv -tGn -aoM -aoM -tGn -pSl -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(99,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -sFz -pMK -xeE -pbj -gMv -vjT -gTk -rtl -jgK -xDK -rip -oYT -igy -igy -wRJ -whR -whR -jse -whR -whR -whR -rgL -whR -whR -whR -dff -qcd -dFd -sJO -nrC -uPd -iUV -ehm -ehm -uQS -sdA -fAz -wUu -bSd -xsg -xsg -oSg -oSg -oSg -jDx -jNv -pKE -tGn -aoM -tGn -tGn -tGn -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(100,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -dOM -vsn -fok -bpY -xAo -rLB -gTk -rtl -bGl -oMv -txF -wRJ -dab -igy -wRJ -rhi -lXK -csP -qcA -whR -kcC -nMX -wAM -rIc -sJO -fjo -qcd -aJb -sMb -fkj -tda -hry -wTq -wTq -uRO -orD -asV -qVa -uwa -sFt -xQv -kAO -sFt -sFt -rXs -bQG -twy -tGn -tGn -tGn -vxG -tGn -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(101,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uhr -abx -ntO -ilb -eKC -eKC -eKC -eKC -eKC -eKC -wRJ -wRJ -wRJ -wRJ -igy -igy -wRJ -azu -qdm -kKo -kKo -tyb -oZJ -bUH -qYQ -qNe -jVN -riC -qcd -fEZ -ezC -rWu -cbo -kZV -wTq -wTq -jSJ -vuD -vTk -lhy -uwa -sFt -oEU -oSA -sFt -xvN -fWl -bQG -vZF -aXW -dKb -rxi -ajs -qLP -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(102,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uhr -abx -ntO -cjp -xSi -cgB -fFF -xnL -wcs -cQo -qxJ -wDz -wDz -wRJ -igy -cGh -wRJ -mUa -lXU -jTO -erY -whR -jnD -dMb -xCy -gsS -sMb -qtV -qcd -dFd -sJO -nrC -uPd -oDJ -eDj -fsg -uUw -xEN -fAz -hmX -wUF -wUF -wUF -kKz -kKz -kKz -kKz -bQG -gbk -tGn -nOB -nDn -dYX -tGn -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(103,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -fSV -gsD -gKa -uIQ -uco -vgb -vgb -veF -mou -wDz -wDz -wRJ -igy -igy -wRJ -giv -giv -giv -giv -giv -giv -nUp -pHf -rIc -pwv -dnR -gWg -blw -vpa -jjF -iNB -wxM -sVv -ogg -wuC -wms -gyr -vwc -gMz -pSV -dSl -gOO -pBS -sFt -kKz -sal -mhO -tGn -tGn -tGn -tGn -tGn -iHl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(104,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -bXd -cjp -wRJ -wRJ -wRJ -mEj -gJo -ltU -tcl -fbe -wRJ -wRJ -wRJ -igy -wRJ -cSc -nEj -tBV -rZn -iWm -giv -lDW -pMI -eDe -eDe -oSx -qcd -cGU -qBx -qBx -qBx -nIv -sVU -jUf -rrD -qBx -gyr -fAz -vhd -fAz -gyr -gyr -dvB -sFt -sxt -sal -mhO -tGn -qCv -mUA -thM -qcj -pSl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(105,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uhr -abx -ntO -kXc -wRJ -rms -wRJ -kdA -bzO -vHm -owB -wDz -wRJ -eMR -cGh -igy -wRJ -giv -giv -iPh -mCD -mHu -dBY -mXg -gct -bNs -eDe -lNm -qcd -gCC -qBx -nVE -vAs -wPn -oPX -fJa -xbA -hlo -qBx -iBF -swI -gTT -vqp -diA -diA -diA -mCr -diA -diA -tGn -qCv -mUA -xpH -fvb -fvb -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(106,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uhr -abx -uHV -ktG -udw -igy -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -wRJ -igy -igy -igy -wRJ -oEr -wYj -qPn -rNa -cpk -giv -tWI -ool -wZS -eDe -fjo -qcd -nCL -qBx -pjs -akD -fNg -sWw -fNg -nBC -mOh -qBx -bCG -nzd -xsQ -cgR -diA -sGW -vNR -exw -awV -sGW -tGn -qCv -mUA -pKd -mUA -mUA -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(107,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -ntO -nbN -wRJ -igy -igy -igy -igy -igy -igy -igy -igy -igy -wRJ -xns -wRJ -vpD -lqu -pnK -liQ -liQ -liQ -liQ -pZi -liQ -liQ -spd -qcd -dFd -nIv -pjh -ixH -fNg -sWw -uiE -uYg -fDF -vvx -ruo -ftp -pzi -hRg -diA -rqi -pnm -ezM -pDK -iuE -tGn -qCv -mUA -pKd -mUA -mUA -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(108,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eKC -eKC -sLm -eKY -wRJ -qxI -qxI -wRJ -mcO -rrW -qxI -wRJ -wRJ -wRJ -wRJ -eAE -wRJ -qrZ -ffZ -rPw -liQ -kqW -ktz -wfI -gMf -eJF -liQ -fjo -qcd -dFd -jSy -jHm -mpe -kBj -dOg -kXj -qWo -xaN -qBx -kUU -tGc -jzV -twO -diA -iPm -plO -xwN -oub -mPJ -tGn -qCv -mUA -pKd -mUA -fjv -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(109,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -rtl -rtl -lUO -lgY -ccH -ccH -ccH -ccH -ccH -ccH -ccH -rWT -hxl -kRn -ccH -wEQ -wRJ -jvQ -fGW -wID -liQ -rLh -gAf -uIy -aht -xvk -liQ -fjo -qcd -toO -ouZ -uOl -gAe -fNg -mZy -fNg -rRX -xJk -qBx -dFN -heF -sby -anb -tGn -tGn -tGn -tGn -tGn -tGn -tGn -teV -mUA -ewH -eJl -mUA -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(110,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -wdS -qTw -rQc -xSW -jqP -lbO -xfD -plz -lzp -rWT -rWT -gpu -ccH -ccH -iHm -qrd -qrd -qrd -iHm -nVZ -bQe -twg -pPf -uQK -liQ -xtI -qcd -dFd -nIv -dPv -grb -fNg -mZy -fNg -nBC -vyH -qBx -qBx -qBx -qBx -qBx -tGn -fZC -sEP -bxH -cwl -tGn -mUA -mUA -mUA -nFf -tDf -mUA -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(111,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -alu -gvj -eJd -vnG -aoG -sdi -ygU -gHu -mxJ -czZ -kwf -rWT -byY -dzQ -bmf -wIN -iHm -gUT -ljh -yjU -iHm -dTB -hDZ -uXR -pPf -vBI -liQ -etv -qcd -ust -qBx -aqz -bkh -kOA -dOg -les -rOJ -wSz -xDX -tLg -tXP -nKa -oLG -tGn -gNS -cwl -fhx -cwl -tGn -npO -bGc -qwy -rSu -tDf -mUA -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(112,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -alu -gvj -eUx -txB -iAZ -suv -qnN -cFg -hRp -plz -rSD -rWT -uhF -vhL -uCn -wIN -iHm -bqI -tyK -bqI -iHm -iHm -iHm -hnC -eHG -xjh -liQ -vzO -qcd -dFd -qBx -qUs -grb -fNg -tff -fNg -nBC -fNg -grb -fNg -tuH -smi -dLV -tGn -jFQ -jFQ -dEN -tGn -tGn -tGn -tGn -tGn -tGn -raY -tGn -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(113,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -alu -gvj -tlK -rMC -tLb -qSv -jGl -jGl -hoo -uBE -maf -rWT -sNd -evW -oTX -wIN -iHm -fNq -iKT -xNf -mpy -drB -iHm -rGl -vIh -liQ -liQ -rMM -xdU -tQF -qBx -qBx -rTB -fNg -tff -fNg -nBC -fNg -grb -fNg -mFB -smi -xpR -tGn -tGn -nsw -tGn -tGn -aoM -tGn -xIF -tGn -ewY -ppZ -twS -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(114,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -fOH -oUu -xHK -wpt -cuT -cuT -vYE -qAa -kwf -rWT -rWT -oLk -rWT -wIN -iHm -lWN -xwa -sSB -ajE -yfh -iHm -suM -dIU -liQ -ybQ -ybQ -sKs -bsN -ybQ -qBx -cCS -uxZ -wSG -umG -yhz -fNg -xmM -fNg -nGG -mSm -aPH -oZE -lxK -lYD -lxK -tGn -tGn -tGn -pSl -uiR -qFr -nDk -uPY -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(115,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -hUT -lbJ -nqi -hfC -xiM -xiM -qVO -plz -bYJ -rWT -usa -vQs -rWT -lEo -iHm -qrd -qrd -wGR -qrd -qrd -iHm -liQ -liQ -liQ -eDe -pqB -bdR -cKS -eDe -eDe -eDe -eDe -eDe -eDe -eDe -uZc -nwf -uZc -uZc -uZc -uZc -tGn -pSl -pSl -khP -pSl -pSl -pSl -pSl -tGn -rIt -nDk -tLF -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(116,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -oJr -bTy -nqi -hSP -xiM -xiM -qVO -uBE -maf -rWT -lLL -rzW -abl -nnT -iWW -sSB -sSB -sSB -qrd -sOO -ibF -oBP -eDe -ybQ -gzc -wdb -qcd -riD -sNq -mqy -fjo -oZx -oZx -oZx -mNW -ufs -ufs -xGx -xGx -kak -ufs -tGn -rfT -tGn -tGn -tGn -tGn -tGn -tGn -tGn -tGn -raY -tGn -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(117,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -ovJ -eCz -jlE -kdU -kNn -kNn -fli -oRq -kwf -rWT -mAI -tCj -iHm -iHm -iHm -ejP -gMQ -sSB -iom -tcs -xmi -tcs -nRK -sMg -cXK -kZH -uNx -hkV -jqq -viX -jqq -oZx -oZx -oZx -eDe -ufs -ufs -naR -sdO -caQ -lmW -uZc -rtB -uZc -pCH -bQK -xWn -tGn -aoM -aoM -tGn -pSl -vxG -cHT -cHT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(118,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -rSD -bTy -cZS -eIU -twv -yfm -ygn -plz -rSD -rWT -tjM -wLD -iHm -oDe -qrd -iKT -sSB -dIv -qrd -oqk -jpq -xNC -eDe -rYq -nKn -wdb -qcd -riD -tcP -mqy -fjo -oZx -oZx -oZx -mNW -xGx -diU -ufs -hSl -dDu -ufs -uZc -tCU -dTk -rfx -oZp -bfc -tGn -tGn -tGn -tGn -vFJ -mzA -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(119,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -maf -hrL -nqi -eKB -nAH -hUT -hUT -hUT -iHm -rWT -rWT -qXE -iHm -kgT -qrd -lZl -isU -qrd -qrd -qrd -qrd -qrd -qrd -qrd -eDe -xUB -bdR -mZI -eDe -eDe -uph -eDe -eDe -eDe -eDe -uZc -mxP -wEE -vIE -tzv -uZc -uZc -sAz -kLN -dfp -qfT -ldq -tGn -vFJ -fvb -fvb -uxD -aGQ -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(120,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -ovJ -otR -nqi -pep -yhT -aRd -bzB -kbZ -iHm -hDU -iHm -iHm -iHm -lga -qrd -shB -isU -qrd -cbt -cbt -cbt -cbt -cbt -qrd -ybQ -ybQ -sKs -bsN -ybQ -xLG -pbt -nZh -pbt -dFb -nZh -uZc -vAg -uZc -dKL -tzv -uZc -oua -dYf -kil -qfT -oZp -ykr -aXW -tDf -aGQ -aGQ -eHT -aGQ -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(121,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -kCR -bTy -nqi -pep -yhT -aJD -bzB -aJD -iHm -sSB -sSB -sSB -ccV -sSB -sSB -sSB -isU -qrd -qrd -qrd -qrd -qrd -qrd -qrd -bxl -oSu -cuX -auD -eDe -eDe -iuo -iuo -iuo -iuo -iuo -iuo -iuo -iuo -sQn -tzv -uZc -pjW -awo -tzv -bfc -eSa -tGn -tGn -tDf -aGQ -aGQ -tGn -tGn -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(122,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -maf -hrL -nqi -hjN -yhT -aJD -bzB -urv -iHm -sSB -ccV -sSB -mQd -sSB -ccV -lxR -isU -isU -isU -qrd -nZR -nWo -bvR -qNF -bxl -vSa -ftv -jiL -iqu -iuo -cnx -gGp -uXG -wAa -vjJ -hdh -ntq -iuo -uZc -cWM -uZc -uZc -pim -fbV -pim -uZc -tGn -hZn -jQK -mex -mex -xJW -pSl -cHT -cHT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(123,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -ovJ -umb -nqi -fXR -yhT -vTV -rjB -sav -iHm -sSB -ccV -sSB -sSB -sSB -ccV -bvq -iKT -iKT -isU -qrd -edI -nWo -pRU -qOs -bxl -gGH -ftv -hTu -tve -cyc -sBI -lao -jeA -wtX -iuo -mFF -ncl -iuo -cQY -nnc -bfc -awo -awo -tzv -bfc -sgR -tGn -uJb -cmr -cmr -cmr -tGn -qPl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(124,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -rSD -bTy -rom -irb -iHm -iHm -iHm -iHm -iHm -sSB -ccV -qrd -qrd -qrd -qrd -qrd -qrd -qrd -isU -qrd -kaZ -wbk -hKZ -bxl -bxl -orN -ftv -jiL -krT -wTW -izF -qAY -oYG -myQ -iuo -iuo -iuo -iuo -iki -tzv -ujs -dYf -awo -vhP -awo -ltI -tGn -tGn -tGn -tGn -tGn -tGn -jPG -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(125,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -hUT -hUT -hUT -hUT -iHm -sSB -sSB -sSB -sSB -sSB -qrd -qrd -sNE -wIQ -vip -ulo -avP -qrd -eml -qrd -vLb -mTQ -vTo -pbg -rcm -bzW -ftv -mSJ -iuo -iuo -sJg -wKj -laC -har -iuo -fhl -ebG -iuo -nDj -nfw -uZc -vMh -ukT -gvn -mms -dYf -tGn -ajs -ryX -fBa -fBa -fBa -lKh -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(126,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -hqD -hXp -nvT -dGo -dGo -dGo -iHm -sSB -qrd -qrd -qrd -qrd -qrd -vTf -gvO -boP -oDS -boP -nbV -wEY -kSW -nWe -cLC -apS -iyt -bxl -qJU -cdF -ftv -jiL -wTW -tSD -xkT -xpA -jFi -qaV -nzq -nUA -dch -iuo -fzY -tua -rGC -ttJ -bhF -eTQ -hyW -dgZ -kQN -jPG -ewA -xPZ -aGQ -aGQ -cnq -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(127,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -hqD -hXp -nvT -hEM -dGo -dGo -iHm -sSB -qrd -mcU -xCX -nWe -ltH -qtA -lGo -lNX -lNX -lNX -pcO -qAM -oQN -nWe -bxl -bxl -bxl -bxl -bxl -pOv -ftv -jiL -wTW -bZA -ykb -xBl -iuo -iuo -iuo -iuo -iuo -iuo -ufs -kGr -uZc -qsL -awo -tzv -xWn -gZm -tGn -hnZ -che -qBJ -nVP -fIz -kcl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(128,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -nAH -nAH -hUT -nAH -hUT -nAH -iHm -sSB -qrd -wsG -oiA -hdz -mkl -hwr -neC -aEJ -aEJ -xGO -oHp -aOt -oQN -nWe -niM -lof -pUI -qQN -dCU -hHr -ftv -jiL -wTW -rhY -ykb -foT -iuo -nzw -iLR -iim -iuo -bJs -cbE -sBx -uZc -uZc -map -kSZ -mYK -uZc -tGn -nbi -ftl -tpw -qPG -aGQ -cnq -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(129,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -ome -qrd -gQa -qrd -sSB -sSB -qrd -nQQ -dfP -nWe -rgM -hwr -sAi -yek -dpM -pie -heY -aOt -syt -nWe -nlG -lof -pVk -bde -dCU -oFS -ftv -jiL -wTW -wDc -ykb -xBl -uJG -xaG -ykZ -ybK -iuo -wcC -yae -hiu -uZc -gYj -bsl -nHF -uwG -kVM -tGn -mwg -iCK -afv -oxJ -wNH -geL -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(130,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -iOY -qrd -kgT -qrd -sSB -jaI -qrd -nWe -nWe -nWe -xze -hwr -noU -cIJ -fvy -apm -heY -aOt -hCM -nWe -kZp -opC -lEz -dCU -dCU -haV -ftv -jiL -eLw -eLw -eLw -eLw -eLw -eLw -uZc -uZc -uZc -uZc -aJZ -qTH -aXR -ubP -eiP -qsR -ufs -dqF -tGn -tGn -ueX -dfs -tGn -tGn -jPG -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(131,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -qIv -kgT -tkB -lTA -sSB -jpz -qrd -oeQ -xgb -nWe -bWZ -hwr -oWt -wJH -tmU -qcQ -heY -aOt -qCa -nWe -nsM -opZ -pWj -tZz -rcm -bzW -ftv -aYe -eLw -shy -qat -cKJ -yaW -peo -uZc -oAv -qfn -uZc -reD -tbu -uZc -keW -vIZ -wkn -obs -hTK -tGn -fRy -nUU -oee -iFv -tGn -qPl -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(132,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -kgT -qrd -mLk -qrd -sSB -qxW -qrd -wsG -oiA -hdz -mkl -hwr -kub -fVA -dtc -xcP -qxT -aOt -oQN -nWe -nuR -otr -qff -dCU -kUC -cdF -ftv -jiL -qbz -smx -qxy -qnw -vcg -vbB -uZc -uZc -uZc -uZc -uZc -uZc -uZc -uZc -uZc -cpD -uZc -uZc -tGn -jPG -jPG -aKr -jPG -jPG -jPG -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(133,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -kgT -rov -vnv -qrd -sSB -sSB -qrd -xCX -mcU -nWe -lXb -aWd -ofh -mLm -mLm -mLm -bsw -fzV -oQN -nWe -dCU -dCU -dCU -dCU -dCU -orN -ftv -jiL -eLw -lFJ -qxy -oyW -ofa -uKR -nXk -uKR -ttt -aap -mAk -tLr -mHa -uNd -nWp -uqu -kBL -yfN -tGn -tbq -tGn -bPq -tGn -eJU -tGn -tGn -tGn -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(134,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -cmu -rov -vnv -qrd -vEr -sSB -qrd -qrd -qrd -qrd -oVy -omK -mnH -eCg -mnf -cng -xqL -weO -oQN -sYN -nqr -qcX -fFo -nqr -aIs -cdF -ftv -jiL -eLw -jQY -uKR -dcZ -emx -gJq -hyp -hyp -hyp -lpZ -hyp -odJ -eyV -fOI -fOI -sZD -iYK -tkJ -tGn -jPG -jPG -fnF -atA -ajs -vRm -mUA -wtl -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(135,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -qrd -qrd -iEU -qrd -qrd -sSB -nDx -qrd -iOY -qrd -jEZ -dXo -fLf -gyW -uFO -dxP -fLf -oqw -oQN -xsm -sYc -klz -gDe -sYc -nkO -jNc -asZ -njK -clf -krq -pSn -sfv -rRp -bBK -eLw -eLw -eLw -eLw -nxC -eLw -mHa -vJH -aHa -toQ -hsU -dJL -tGn -tGn -tGn -tGn -geh -tGn -tGn -tGn -tGn -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(136,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -djF -kgT -tkB -qrd -sSB -jpz -goh -kgT -qrd -qrd -nWe -nWe -nWe -nWe -nWe -nWe -vva -oQN -qXr -nel -neh -dwi -nel -gEc -neh -ftv -xMW -wpI -kNT -ufN -lFa -scu -dDF -eLw -nVl -sZy -lhv -pik -dIi -mHa -dCD -ivg -mEK -iYK -xKd -tGn -aoM -tGn -sxZ -kAw -gaU -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(137,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -bof -bof -lDD -xRM -odV -qrd -sSB -jpz -qrd -kgT -mus -qrd -aLC -cvo -uXX -sYX -cga -uXX -tHw -oQN -oqw -nqr -puI -dro -nqr -aIs -cdF -ftv -jiL -eLw -kQF -qeA -qoC -oMd -oMJ -vWz -vcg -pgG -iPR -sSR -xEi -mHa -vJH -qvc -fOI -iYK -wlF -tGn -aoM -tGn -tLF -kAw -ogM -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(138,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -qrd -oEh -hVI -qtw -sSB -dcw -qrd -fHW -qrd -qrd -jbg -dVy -uXX -mqM -jbg -uXX -nXX -tSU -nWe -rfU -rfU -rfU -rfU -rfU -orN -ftv -jiL -eLw -lhA -qxy -ftJ -dZt -oMJ -ubW -xhd -uhB -dus -sul -hHc -mHa -vJH -aHa -fOI -lbK -tkJ -tGn -aoM -tGn -tGn -kAw -bKY -tGn -tGn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(139,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -qrd -sCv -qrd -qrd -bts -qrd -hqR -jmU -jmU -iYA -ejP -qrd -eoe -cJw -uXX -cJw -bVT -uXX -gTt -oQN -nWe -kUh -pzV -qse -rfU -tQK -cdF -ftv -jiL -qbz -hRH -qxy -qnw -dZt -deu -mbJ -dEQ -hTd -kry -hTd -qQe -mHa -fxG -yfN -gId -fOI -wES -tGn -aoM -aoM -tGn -tdN -piR -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(140,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -jRq -szU -yew -kgT -hVI -qrd -msv -aVs -aVs -iGh -hfz -qrd -olR -uXX -uXX -uXX -tec -uXX -uXX -lBP -uXX -nAF -mMo -wNL -wMr -rcm -neh -ftv -aYe -eLw -vRR -qSJ -hJK -hdX -sZX -eLw -vaD -vmX -pvD -wrJ -uaE -piR -piR -piR -piR -bcb -piR -tGn -tGn -tGn -tGn -roj -llr -hiQ -hiQ -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(141,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -qrd -qrd -qrd -xRM -hVI -eir -dfA -aea -aVs -iGh -qrd -qrd -xdc -xkU -eMi -aaM -jyu -uXX -beh -plX -uXX -wDC -oTW -smq -rfU -rfU -rbm -ftv -nqx -eLw -eLw -eLw -eLw -eLw -eLw -eLw -eLw -eLw -eLw -ilk -eLw -piR -npZ -lDA -uqi -rhI -uqi -uqi -uqi -uqi -uqi -vQi -ddj -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(142,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -nWM -sDL -ifo -qrd -sSB -aaw -lFw -kQo -isU -cdj -eAi -spT -hsA -fmK -plX -bex -iky -aSQ -uXX -nBh -ovK -qmM -rTg -rfU -cdF -ftv -jiL -wfR -lDi -tic -lnA -dgw -rnW -iLy -xCg -eLw -evN -vRn -fYH -piR -jlC -gpW -piR -rbz -piR -ujr -vHq -piR -rbz -ujr -eNY -hiQ -hiQ -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(143,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -qrd -nlg -nlg -qrd -sSB -qrd -eBM -qrd -hfb -qrd -qrd -qrd -qrd -qrd -qrd -qrd -qrd -qrd -qrd -aiS -ovK -qov -dhs -rfU -ouF -ftv -jiL -wfR -wAJ -tic -vyz -wuL -xFg -mOO -oNV -eLw -cmh -kSU -pEY -piR -piR -roj -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(144,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -nyG -sSB -sSB -uuU -sSB -sSB -sSB -sSB -isU -isU -ahd -isU -isU -isU -qrd -uFc -pOZ -nof -qrd -rfU -rfU -rfU -rfU -rfU -xak -ftv -jiL -wfR -wJR -tic -lnA -wuL -wuL -wuL -wuL -wuL -piR -piR -piR -piR -npZ -roj -piR -alf -cMU -fBt -exN -wys -fBt -sfk -sfk -sfk -sfk -nYL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(145,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -sSB -qhH -bBP -njq -bjz -qWp -qrd -qrd -qrd -qrd -qrd -qrd -shB -isU -elD -evn -prZ -phd -qrd -ksd -sZH -uNb -kDB -bYP -cdF -ftv -jiL -wfR -hlG -vOM -lkP -sVY -akI -qem -oiU -ong -piR -jRM -ebn -piR -tnX -gpW -lKF -msu -iUQ -wSP -rcu -tji -kaq -ldf -rcO -rcO -rcO -bln -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(146,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -sSB -isO -qrd -qrd -qrd -gyG -qrd -xPv -lvW -kGv -omG -qrd -qrd -sSB -qrd -eLB -iCJ -eFC -qrd -nEO -mbB -ssP -auN -rcm -bzW -ftv -mSJ -wuL -wuL -sXf -lzA -fpb -cYu -wuL -mcV -nZe -piR -xyz -tKq -vjK -lDA -vQi -piR -uAi -mVj -wkL -nMn -ykL -wkL -yli -yli -yli -yli -iFu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(147,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -bof -bof -sSB -tQS -qrd -aVs -qrd -iOY -qrd -hfO -yhZ -uoS -gpM -jGj -qrd -sSB -qrd -qrd -tZY -moe -qrd -rHY -dWv -iaF -kDB -kDB -nED -ftv -jiL -uNC -wfR -jtu -kVF -bEQ -tnC -wuL -wuL -wuL -piR -jAU -tUc -vER -roj -ojx -piR -iwZ -uGt -myO -mLp -ioP -myO -myO -myO -myO -myO -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(148,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -sSB -jpz -qrd -sJA -eud -yfY -qrd -xWr -kYD -iJl -cvX -tRi -qrd -sSB -lWa -qrd -qrd -fiT -qrd -qYM -ryx -qwc -tqi -kDB -kpi -ftv -kbR -iCQ -vQZ -biV -wtu -eOh -ofH -wuL -jrv -uqA -piR -piR -tUc -vZK -roj -tUc -piR -uAi -mVj -fBt -exN -gzv -fBt -sfk -sfk -sfk -sfk -nYL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(149,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -sSB -jpz -nAf -dZf -fLR -lgv -qrd -hwe -ivV -eEf -hjr -nnJ -qrd -sSB -sSB -ejP -pIu -cmu -qrd -nIt -ryx -qAI -uLH -kDB -gGH -ftv -jiL -gQO -wuL -tJY -aRM -hWS -hSo -jtm -hxP -uTW -piR -trH -uIp -cJi -roj -ozS -piR -hrc -xWV -fAp -yhX -yhX -qzc -ldf -rcO -rcO -rcO -bln -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(150,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -uuU -eTp -qrd -qrd -qrd -qrd -qrd -lAU -lAU -sYI -lAU -lAU -qrd -qrd -sSB -vrU -qrd -qrd -qrd -kDB -kDB -kDB -kDB -kDB -jRe -ftv -glu -wuL -wuL -wuL -wuL -wuL -wuL -lRY -lRY -lRY -piR -piR -piR -piR -bmN -piR -piR -wUy -mVj -wkL -see -tgP -wkL -yli -yli -yli -yli -iFu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(151,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -sSB -ejP -qrd -wzO -dps -fFB -mzr -hUX -hjF -tbd -agp -eHU -gAC -qrd -hdx -qrd -qrd -uaD -lwv -cQa -aFh -gLf -gLf -hQK -nkO -asZ -rId -bin -vRv -gLf -qtO -gLf -jNu -lRY -tMk -pYU -syH -wMX -vrw -piR -gpW -myO -tto -anH -hGz -myO -mLp -ioP -myO -myO -myO -myO -myO -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(152,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qrd -qrd -sSB -sSB -qrd -jKY -rCq -oyF -hGp -hGp -hGp -hGp -hGp -ojc -neL -eKl -uzP -iMN -hJV -dxD -nKq -nWI -nXA -nXA -nXA -bNU -qea -air -keL -dDG -wOu -wOu -xlE -wXq -kkg -xxy -lvp -fZX -nHW -nlf -rKM -piR -vZJ -myO -vMm -yaK -cZe -fBt -czr -nOY -fBt -sfk -sfk -sfk -sfk -nYL -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(153,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -kRw -hng -kRw -iMN -dNp -jWR -klc -qAd -qAd -qAd -jIA -kKk -vNP -vNP -vJu -iMN -hJV -dxE -otO -fAT -nXA -ddg -ddg -kNR -fBM -fBM -fBM -xst -ddg -ddg -qNK -ddg -nzj -lRY -kGe -fZX -gwb -cFM -mwK -piR -roj -uDH -qRE -qQr -qBP -jMu -iZG -rmT -lcF -ldf -rcO -rcO -rcO -bln -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(154,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -uTP -onl -kRw -qzx -ngr -kch -fpU -fpU -fpU -fpU -fpU -kKU -tGk -iMN -edX -iMN -nqr -jgT -dxE -ppT -ykt -odk -nhM -nqr -nAD -nAD -nAD -nqr -aWa -odk -nIT -aAj -jXb -lRY -pEE -fZX -pCr -fwb -qFz -piR -dgA -myO -udF -vSW -dYB -wkL -see -see -wkL -yli -yli -yli -yli -iFu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(155,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -fWz -onl -kRw -qNu -rCq -kch -fpU -fpU -fpU -fpU -fpU -kKU -iXQ -wsO -fUi -nLd -iMN -iMN -nqr -uRb -jsS -nqr -nqr -nqr -xLe -fBM -vCH -nqr -nqr -nqr -oRz -pfC -nqr -lRY -mqw -kux -joL -tmq -tfD -piR -roj -piR -piR -myO -myO -myO -myO -myO -myO -piR -piR -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(156,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cYS -onl -kRw -qSR -rCq -kch -fpU -fpU -fpU -fpU -fpU -kKU -biM -dUP -iED -pNj -mpp -iMN -gPb -ogW -xMJ -rQl -nqr -qhN -oCF -oCF -oCF -ksk -nqr -nod -pmS -vkb -nNq -lRY -wzk -xXB -wkH -uRQ -bCk -piR -rof -uqi -uqi -uqi -uqi -cMb -uqi -ruU -vXv -sOq -uuH -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(157,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -kRw -kJT -kRw -qzx -rCq -kch -fpU -aGK -ojW -ecB -fpU -kKU -xmk -tup -kes -miH -ogt -iMN -eIK -nEX -nXA -eYq -kBB -mjZ -oCF -oCF -oCF -nhl -mtx -xeZ -xlE -fDv -uOW -lRY -dtj -gJm -lRY -lRY -lRY -piR -ahU -piR -piR -piR -biO -piR -rtc -roj -wCH -hcT -kwm -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(158,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -acu -cIM -kRw -fKd -csM -kgK -knk -bSj -rws -akh -sXX -kLM -fzw -bzJ -avk -pNj -hgM -iMN -bPh -aLZ -iNC -xoj -nqr -mIO -oCF -oCF -oCF -jyP -nqr -sKu -usN -aAj -krw -lRY -xbx -mcj -lRY -nhG -pVd -mwD -bvc -sQG -knO -piR -aMJ -piR -qPU -roj -piR -piR -piR -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(159,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -nvo -cIM -kRw -iMN -hlU -bMt -iRc -lOA -rdt -iCS -pmw -cwF -bTe -jlS -bGb -bwz -iMN -iMN -nqr -uRb -sum -nqr -nqr -nqr -nqr -nqr -nqr -nqr -nqr -nqr -oRz -pfC -nqr -lRY -lRY -lRY -lRY -ddy -ddg -ddg -pnf -jRi -dBw -jNg -hyx -kdK -wza -rof -suu -tPL -ejN -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(160,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -cIM -kRw -fKd -ngr -quA -tjc -anW -pdO -kCk -ePH -bIk -tXV -iMN -mzx -iMN -iMN -nGj -kTL -ogW -iQi -iil -ibs -fQi -now -oCF -qjK -ajX -bUZ -xpk -trq -rDR -cmH -nzr -pWQ -tzb -pWQ -cTb -oGt -rbp -foL -foL -leY -piR -awU -piR -fHE -piR -mom -hcT -uBi -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(161,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -aSK -kRw -lpq -rCq -kch -fpU -lQt -uGe -kRR -fpU -kmt -oGM -cEw -qPi -lBK -mEg -fBP -ddg -wet -ddg -ddg -rnE -fQi -oCF -oCF -oCF -ajX -vxT -ddg -xHr -eiw -gDe -lRF -gLf -mUE -gLf -gLf -lVf -mbF -frW -tdz -prQ -piR -biO -piR -qeX -cvf -nko -gBp -rdj -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(162,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -jrM -kRw -qSR -rCq -kch -fpU -fpU -fpU -fpU -fpU -kmt -oGM -cEw -rdW -pSd -mEg -fBP -ddg -fAT -ddg -wSR -aSu -wGz -ggd -ggd -oaS -ajX -nXA -ddg -bAf -grv -kYM -sdX -fIk -aXj -awn -fIk -wHP -wmX -mmi -yll -qmb -piR -piR -piR -piR -piR -mom -hcT -hcT -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(163,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lNB -lNB -cIM -cIM -kRw -qNu -rCq -kch -fpU -fpU -fpU -fpU -fpU -kmt -ewm -iMN -nZu -iMN -iMN -ifh -jLX -eKf -gLf -uzK -aSu -fQi -roo -cKH -vUG -ajX -nXA -ddg -frW -frW -frW -frW -frW -frW -frW -frW -frW -frW -frW -yll -qmb -til -bAe -gSS -mPZ -piR -mom -hcT -hcT -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(164,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -jrM -cIM -kRw -lpq -csM -kch -fpU -fpU -fpU -fpU -fpU -kmt -rdW -hzE -iFw -xSK -iMN -nqr -nqr -nqr -nqr -hhl -aSu -qEB -hUc -hUc -hUc -sBF -nXA -ghJ -frW -tjd -unh -vcd -vAe -wwe -frW -uxj -pCc -diS -xhk -kpe -hJg -piR -bBS -wwi -pvE -piR -mom -hcT -hcT -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(165,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -izw -cIM -kRw -iMN -kMX -kgK -mAJ -fll -hav -mJy -kKE -baa -fio -dCW -dCW -dCW -qeY -fzw -jhx -hGp -nqr -aAx -wjx -aSu -aSu -kXt -nXA -nXA -fvx -ddg -frW -tkF -unm -vcu -vAW -wye -frW -pZB -xAL -frW -boa -qNW -hLo -piR -xRs -bKR -rdv -piR -mom -hcT -hcT -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(166,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -jrM -cIM -kRw -jgB -cOt -blF -fBk -pmO -pmO -pmO -kZS -wjm -kEv -hLd -bfj -bfj -iMN -kFJ -oqd -slz -nqr -keA -qCy -pXL -rXY -kzP -oGf -pxC -uHE -nhM -frW -toh -utU -vlq -vGi -wyJ -frW -frW -xBB -frW -yll -hYe -piR -piR -piR -vOt -piR -piR -mom -hcT -hcT -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(167,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -cIM -kRw -xbZ -wJS -blF -pQk -jHR -hjg -hjg -dBj -aib -weg -thu -bfj -bfj -iMN -gem -fDN -mQl -qAO -lwP -lwP -lwP -qAO -tcE -qAO -frW -frW -frW -frW -ttI -uAc -vnY -vGi -wAz -frW -tBl -xDm -frW -yll -qmb -jLh -pOn -pOn -pOn -pOn -pOn -oCe -uKD -rTv -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(168,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -kRw -kRw -kRw -kRw -oEk -wFK -oEk -iQU -iQU -iQU -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -qAO -gxQ -rca -kIw -eqF -cHE -gFh -frW -gIf -yfT -frW -frW -frW -frW -uUU -frW -frW -frW -frW -frW -yll -jTw -piR -pOn -gph -piR -piR -piR -piR -piR -piR -piR -piR -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(169,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -tdB -oxP -xhC -kKG -kRw -aNz -ciM -cZB -stx -dFL -yiK -kRw -qQi -iAg -lgw -swM -kRw -axP -hdg -kRw -ykC -uVL -tTn -tTn -fGx -jjg -fjF -frW -iTX -sqi -sEt -tzA -vsY -aXh -vsY -wAO -iqv -pgU -vpj -xEJ -lQa -jbz -ljL -wPs -piR -piR -szl -uwl -kxs -wTU -szl -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(170,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -rKQ -jmH -iSD -uaG -kRw -xXK -luS -oEk -hdN -uCP -vCy -kRw -bKz -kWa -wQX -bSR -kRw -ihn -rQf -kRw -mMm -faS -fXB -quO -cgm -uhj -frW -frW -chn -suP -sFe -tOl -kba -ewB -vHd -wKE -frW -xkC -vlP -hww -xFl -hLo -piR -pOn -gSS -piR -kZG -kZG -kZG -bbs -kZG -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(171,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lNB -lNB -rKQ -kLY -oyZ -uaG -kRw -mLO -aRX -oEk -gfP -pgv -pyt -kRw -iGo -irh -bbb -wWo -kRw -kIu -rQf -kRw -dtI -xCJ -hyY -shV -kok -wcQ -frW -tdG -pyU -sxm -sFf -kba -qwg -uEG -vJE -wKE -frW -jPD -xHw -sYw -ctd -dQn -piR -pOn -vzx -gGx -rnl -lik -ffV -aDN -wwp -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(172,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -ssz -cWY -veA -ata -kRw -qgh -ciM -wJf -atL -dBf -yiK -kRw -lNB -uXw -lNB -aiO -kRw -kRw -djy -kRw -ufl -oXW -fEG -cNE -oXW -ufl -frW -oOg -veB -sxm -sFf -hip -uEG -uEG -vJE -osk -frW -frW -xLd -frW -piR -aMJ -piR -pOn -gSS -lKF -gRI -gcf -hXI -gxd -aWj -eqk -eqk -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(173,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -kRw -kRw -kRw -kRw -kRw -ejG -kRw -kRw -kRw -kRw -kRw -pqY -fdX -ryi -liL -kRw -gqF -qKG -kRw -nRo -asS -asS -nvO -asS -aZF -frW -iSt -piq -sxm -sFf -hip -uEG -khS -vJE -tfw -frW -eTT -xNL -gvh -oTK -dVD -sOD -pOn -mVR -piR -fix -cBq -rsz -mnY -uhU -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(174,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -cIM -cIM -cIM -cIM -cIM -cIM -cIM -cIM -cIM -cIM -lVq -kRw -pJq -pwA -rlX -xLO -kRw -xTW -sBE -kRw -upo -wvw -dTe -jzv -asS -qzh -frW -tdG -sKR -sxm -sFf -ttG -qXs -uEG -vJE -wKE -frW -oce -cAU -ycu -piR -bGh -sOD -pOn -jAU -piR -tgA -cFK -gaT -vuI -rtH -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(175,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -rCv -gmH -rCv -snd -snd -snd -snd -nLM -snd -cIM -eNi -pAn -efa -xJM -hCJ -vXH -kRw -dcH -iMM -kRw -cpa -kXF -dTN -hFc -sjc -kRw -kRw -kRw -nre -sxv -sId -tOP -ttG -ueJ -vQb -wKE -frW -bKG -hrC -piR -piR -piR -piR -pOn -gSS -piR -pen -pen -pen -aTj -pen -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(176,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -rCv -gmH -rCv -snd -qPS -cCk -qjq -eJc -jOT -nHf -aZI -kRw -kRw -kRw -kRw -kRw -kRw -rYK -kRw -kRw -fpp -asS -asS -rbD -shE -kRw -rKg -rUG -mbD -hzL -frW -tRo -lTg -eFr -sqj -wKL -xfI -ugW -piR -jVe -piR -aoo -piR -bFf -piR -piR -lCO -rFg -rFg -gdS -gAP -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(177,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -rCv -xsP -rCv -snd -wVu -pUC -iwH -qON -snd -tat -kYv -cIM -cIM -cIM -cIM -cIM -cIM -cIM -cIM -kRw -ufW -gIg -czu -xwX -xwX -kRw -evI -kRw -hzX -rXx -piR -piR -piR -piR -piR -piR -piR -piR -piR -fMs -iYF -pUe -sKI -pOn -ebn -piR -rFg -lxI -udy -lOh -oiJ -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(178,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -rCv -egx -rCv -snd -iWf -hci -oyO -uPA -snd -tat -kYv -kRw -hUP -kRw -hUP -kRw -dyq -kRw -cIM -aKx -rQV -rQV -rQV -rQV -aKx -aKx -lIt -kRw -kRw -piR -piR -uyh -wqW -piR -hcT -hcT -hcT -hcT -piR -piR -piR -ylD -piR -kEe -mPZ -piR -tHH -cky -vBd -ooV -vkz -eqk -eqk -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(179,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -rCv -hYb -rCv -snd -lKj -ddb -snd -keM -snd -tat -kYv -fTv -hJQ -cIM -cIM -cIM -cIM -cIM -cIM -aKx -cfH -nmV -pcC -dfw -aKx -rSN -piO -loa -loa -sjH -uqi -uqi -uqi -gKO -kRO -aYq -aYq -aYq -aqR -pOn -pOn -pOn -bFf -xHR -gSS -piR -nFi -rFg -hHn -kWM -tHH -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(180,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -kRw -kRw -kRw -snd -snd -snd -snd -ktY -snd -kRw -kRw -kRw -kRw -toK -cIM -eiJ -kRw -kRw -kRw -aKx -cfH -pBZ -pcC -pcC -aKx -wTB -rGI -pEQ -dzR -piR -piR -piR -lxZ -qdX -ick -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -pen -pen -pen -pen -pen -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(181,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -kRw -kRw -kRw -kRw -snd -snd -snd -snd -sMY -snd -kRw -kRw -kRw -kRw -pZL -cIM -mSa -pNs -jOX -hcR -aKx -cfH -qhp -pcC -shz -aKx -kRw -hzU -kRw -piR -piR -lCs -piR -eXB -pXh -qcZ -piR -rsW -pvm -piR -piR -piR -piR -piR -piR -piR -piR -pen -pen -pen -pen -pen -pen -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(182,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -bjb -wzm -oyh -oyh -kRw -kRw -aSK -cIM -pFI -kRw -nyv -gmH -aKx -aKx -aKx -aKx -aKx -aKx -tnt -cIM -pmB -piR -kuA -pwC -piR -piR -rne -piR -piR -hGL -ivE -piR -piR -bml -fPW -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(183,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vOv -oyh -bjb -wzm -oyh -oyh -kRw -kRw -kRw -cIM -cIM -hJQ -cIM -cIM -cIM -cIM -cIM -cIM -cIM -hJQ -cIM -cIM -jNt -piR -pDd -vlX -vlX -llm -wDS -huR -lYX -lYX -piR -piR -piR -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(184,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -rza -bjb -wzm -oyh -oyh -oyh -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -oyh -oyh -oyh -eYj -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(185,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -lfU -bjb -wzm -oyh -oyh -oyh -oyh -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -kRw -piR -piR -piR -piR -piR -piR -piR -piR -piR -piR -oyh -oyh -oyh -oyh -fPW -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(186,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -lfU -onM -wzm -oyh -vOv -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(187,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -lfU -onM -wzm -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(188,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -fZV -oyh -lfU -onM -wzm -iTg -uTx -uTx -iTg -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(189,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -keE -oyh -lfU -onM -wzm -wLl -lfU -lfU -bOg -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(190,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -fZV -vOv -lfU -onM -wzm -tkq -ryh -bjb -iTg -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(191,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -oyh -oyh -oyh -lfU -onM -cCf -ebl -jtr -lfU -wzm -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -eYj -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(192,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vOv -uXM -uTx -uTx -lfU -bjb -lDb -lfU -lfU -lfU -bOg -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -eYj -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(193,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -kFO -onM -onM -onM -onM -onM -onM -onM -lfU -wzm -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(194,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -kFO -lfU -lfU -lfU -bjb -lfU -lfU -lfU -lfU -wzm -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -fPW -eYj -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(195,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -keE -kFO -onM -onM -onM -onM -onM -onM -onM -lfU -wzm -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(196,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fZV -kFO -lfU -lfU -lfU -bjb -lfU -lfU -lfU -lfU -wzm -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(197,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -kFO -onM -onM -onM -onM -onM -onM -onM -lfU -wzm -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -eYj -oyh -oyh -aRY -aRY -aRY -aRY -aRY -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(198,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vOv -tDH -uJR -uJR -uJR -uJR -uJR -uJR -uJR -uJR -ugb -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -xKt -djc -djc -djc -dkn -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -eYj -oyh -oyh -pUV -pUV -pUV -pUV -pUV -aRY -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(199,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -keE -fZV -fZV -keE -fZV -fZV -fZV -fZV -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ujI -edA -pRs -pRs -wbT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dnS -gYb -dnS -dnS -pUV -aRY -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(200,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ujI -pRs -pRs -pRs -wbT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sWs -pRs -pRs -dnS -pXr -vvC -dnS -pUV -xfE -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(201,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qRS -acl -pRs -acl -xUk -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dnS -gYb -dnS -dnS -pUV -aRY -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(202,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pUV -pUV -pUV -pUV -pUV -aRY -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(203,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -aRY -aRY -aRY -aRY -aRY -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(204,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(205,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(206,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(207,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(208,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(209,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(210,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(211,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(212,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(213,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(214,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(215,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(216,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(217,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(218,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(219,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(220,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(221,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(222,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(223,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(224,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(225,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(226,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(227,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(228,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(229,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(230,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(231,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(232,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(233,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(234,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(235,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(236,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(237,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(238,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(239,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(240,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(241,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(242,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(243,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(244,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(245,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(246,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(247,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(248,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(249,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(250,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(251,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(252,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(253,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(254,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(255,1,3) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} - -(1,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(2,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(3,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(4,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(5,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(6,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(7,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(8,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(9,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(10,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(11,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(12,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(13,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(14,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(15,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(16,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(17,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(18,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(19,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(20,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(21,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(22,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(23,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(24,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(25,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(26,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(27,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(28,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(29,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(30,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(31,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(32,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(33,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(34,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(35,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(36,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(37,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(38,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(39,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(40,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(41,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(42,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(43,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(44,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(45,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(46,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(47,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(48,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(49,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(50,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(51,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(52,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(53,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(54,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(55,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(56,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(57,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(58,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(59,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xXo -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(60,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(61,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(62,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(63,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wIp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(64,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -tlJ -ucA -gMe -gMe -gMe -gMe -gMe -gMe -gMe -ucA -tlJ -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(65,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dCK -gMe -gMe -cGQ -dkD -rrX -iJM -tms -gMe -gMe -dCK -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(66,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -aNs -sGb -mXD -ijQ -izV -rrX -rrX -rrX -dDC -sAw -iVP -sGb -uIx -voT -voT -voT -voT -voT -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(67,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -aNs -cRe -rrX -djJ -pWa -rrX -kbS -rrX -uKT -bDC -rrX -fxT -uIx -voT -voT -voT -voT -voT -voT -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(68,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -hIp -xHe -beE -ngf -pCS -mTs -qox -aNs -xdV -rrX -rrX -fdG -acC -acC -acC -vtH -rrX -rrX -iPU -uIx -nDu -nDu -nDu -bkY -aDQ -sNa -sfw -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(69,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xJo -uxw -xHe -qhQ -iQy -ibo -qox -qox -aNs -pYj -hTj -vjm -fBA -lhi -wri -gEW -uiY -rrX -fPX -nHa -uIx -nDu -mTi -eZD -sUZ -mpK -qtz -nsh -jcf -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(70,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -yjN -uxw -ozA -eGK -cAi -gEB -cmw -cHz -aNs -sQw -rDQ -rrX -ewp -eIb -uBN -mzv -wvA -rrX -nss -wqQ -uIx -sVi -wJq -wJq -ucS -hGy -uxW -wVr -wsj -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(71,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -rNL -kjd -yiI -uxw -pkm -aNs -mPs -ivk -rrX -rrX -djJ -svK -bDC -rrX -rrX -iBb -rzg -uIx -sow -kMb -hDK -tJL -aFY -okt -dLL -nYo -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(72,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -ioM -gja -xjQ -iqD -vzM -xJp -uxw -xjX -aNs -kWD -sZO -rlJ -nKL -rrX -wsh -rrX -shu -hwM -ukK -xzS -uIx -oad -uxW -rao -qZq -qZq -dAi -fBY -gjn -voT -voT -voT -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(73,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -lRc -lVV -tqu -hdL -iKJ -bfx -eGK -onE -aNs -xMV -wFT -gaJ -qOq -twM -njS -piI -kcr -qNY -iTN -qGF -uIx -tnM -lvm -vSG -mpK -key -nsh -nsh -wAH -rej -rVy -wbo -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(74,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -xHe -xHe -nKs -xHe -xHe -aNs -aNs -aNs -aNs -aNs -mEY -dCK -qkz -dCK -dCK -dCK -dCK -uIx -uIx -uIx -voT -voT -rCM -voT -voT -voT -voT -voT -voT -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(75,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -jnv -dzY -lJp -lJp -lJp -gsx -maK -maK -maK -maK -prD -boS -aNs -rYS -pBV -wlK -eCM -nET -eCM -uNm -vQR -hEQ -uIx -rhJ -rhJ -rhJ -pTI -rao -iES -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(76,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -gBs -xHe -sHq -vLW -vLW -vLW -vLW -vLW -vLW -cCV -uVU -gGB -aNs -sRO -rzu -bDV -oID -fst -mWn -uFw -vQR -xDy -uIx -nDu -nDu -nDu -xSr -rao -yke -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(77,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -vXM -rPA -abP -vLW -mNI -gGO -qhC -vDN -vLW -snU -uVU -gho -aNs -pZp -wfD -bxe -eCM -evo -eCM -tVp -vQR -uIz -uIx -oqx -mpZ -rUN -rSK -rao -hVk -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(78,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -abP -vLW -szb -wYs -eWS -kha -vLW -aNs -uAo -aNs -aNs -jcS -dCK -dSa -eCM -eCM -eCM -eCM -eCM -eCM -uIx -voT -nDu -nDu -okT -wAH -aCu -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(79,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -lJp -lJp -lJp -abP -vLW -aEP -wnO -wnO -bxc -vLW -mqi -hiU -hJF -rEU -rlC -khk -gfb -rEU -hLL -vIS -vIS -tuy -qDD -qyo -vZU -brT -brT -nBV -uif -mLH -voT -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -wIp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(80,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -lJp -lJp -xHe -olV -abP -vLW -oYL -wYR -jZL -kWx -nZg -iPY -qdS -iPY -wbr -agK -spF -bCq -abS -fsY -ewW -bRq -tvU -qTn -dKJ -voT -voT -hFb -voT -voT -voT -voT -mSl -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(81,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -ucA -ucA -ucA -xHe -xHe -xHe -lJp -lJp -aNs -aNs -aNs -rNN -vLW -qoI -rbK -wnO -keg -vLW -geA -oqH -toM -eNw -ohu -prd -njU -rEU -gxn -hbN -omr -vhV -omr -nfU -voT -epk -ndo -wAH -pPY -faL -voT -jvf -vNa -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(82,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -lJp -lJp -hTr -aNs -sTG -qlp -qlp -oKq -gMi -ciz -dWu -wfx -vLW -vLW -vLW -gYS -gYS -bmD -lgD -ykw -hIb -fKZ -hbW -dbZ -hKg -raq -voT -voT -rao -ndo -dQs -rao -rao -iiW -tje -laZ -pxy -voT -voT -voT -voT -voT -voT -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(83,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -xHe -tWo -lJp -aNs -aNs -aNs -vjC -ccf -uJA -oKq -iUS -snL -qsH -wAb -wJt -mIT -vLW -kHl -hJF -gxn -rlP -tBq -czp -czp -wgO -czp -tdF -czp -uIx -jNr -uif -ndo -ndo -ndo -ndo -voT -voT -voT -voT -voT -voT -voT -voT -voT -voT -voT -voT -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(84,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -xHe -xHe -xHe -tSf -xHe -eGK -uxw -kCi -xHe -xHe -lJp -aNs -glw -aNs -omh -per -uTG -oKq -nih -wnO -pIS -lRR -vPj -igw -vLW -pmo -wtt -gxn -dfm -hsa -czp -tAE -jjs -bja -bcD -mtW -uIx -qWm -yke -fDM -rao -wAH -ndo -voT -ndo -ndo -ndo -ndo -ndo -ndo -rys -fjq -fjq -fjq -pTI -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(85,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -aDn -uxw -krF -uxw -xHe -jbc -nnj -nnj -hto -hto -lJp -aNs -glw -aNs -oKq -sRd -oKq -oKq -oKq -oKq -oKq -oKq -oKq -wjj -oKq -bJV -hWp -mdE -dfm -tBq -czp -sFa -sFa -sFa -bcD -sFa -uIx -nIk -rao -mel -okt -wAH -ndo -trV -ndo -voT -voT -voT -voT -voT -qlh -nDu -nDu -nDu -koc -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(86,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -pRs -xHe -xHe -xHe -aLb -xHe -hto -hto -hto -hto -uxw -lJp -aNs -glw -aNs -drw -per -med -jvM -nSV -pHT -phj -ehu -qOO -ced -oKq -dWL -oKY -cfu -dfm -tBq -wgO -apT -aGm -aGm -gtw -hGa -uIx -uIx -uIx -uIx -uIx -uIx -uIx -voT -rIU -voT -vbT -ehr -wOy -voT -qlh -nDu -nDu -nDu -qgV -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(87,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -kqp -dIQ -dIQ -gmA -uxw -jBa -xHe -dGp -lJp -aNs -glw -aNs -hmu -mEh -nUO -vyu -sAr -lEg -tWR -mzW -mzW -rtL -hxJ -cWf -cWf -cfu -dfm -tBq -wgO -xYS -eYh -uiM -vAp -fUm -oTx -uqc -nYe -cep -fwj -lOe -uIx -aaO -xFo -lBG -pZE -sMw -eFJ -lUS -qlh -nDu -nDu -nDu -qgV -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(88,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -qox -qox -qox -mhY -awH -oBL -xHe -jgz -lJp -aNs -glw -aNs -mGY -mUm -ugn -jvM -eVo -lYP -fzU -fzU -gJg -fzU -hxJ -oKY -cWf -cfu -rti -vuU -wgO -rZb -acL -jKF -fXa -sFa -uCC -uqc -lng -pWD -xMF -kBi -uIx -rao -vdU -kRN -uJW -eiO -wkF -voT -qlh -nDu -nDu -nDu -qgV -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(89,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -exe -xHe -qox -mhY -uxw -epQ -xHe -vAB -lJp -aNs -glw -aNs -epu -dMY -rqj -jvM -lsM -dOa -qLW -nEa -gaB -akr -oKq -cWf -vlD -qND -dfm -tBq -wgO -xYS -ltC -mpL -joH -oEC -xpi -uqc -bru -wQR -xMF -xyA -uIx -uwP -uwP -hSh -nAE -sIE -cQC -voT -vZq -mNY -mNY -mNY -bJQ -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(90,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -qox -nMU -lfM -efY -qkZ -qkZ -jFO -jDD -lJp -aNs -glw -nPE -oKq -oKq -oKq -oKq -oKq -hBx -oKq -jCA -jCA -jCA -jCA -jCA -jCA -xEB -dfm -tBq -wgO -xwx -tIc -tIc -vnM -sFa -czp -uqc -jIJ -ezm -hzQ -pSz -uIx -uIx -uIx -uIx -uIx -vEa -fXs -fXs -fXs -fXs -fXs -jNE -hfe -voT -voT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(91,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xHe -xHe -bRh -keX -rQx -uEY -uxw -uxw -aSU -qkZ -prD -aNs -hWu -hWu -hWu -hWu -hWu -nPE -qtH -koU -oKq -vBN -rkO -rkO -usF -kti -jCA -jib -dfm -tBq -czp -rAe -sFa -sFa -sFa -jUC -uqc -fOj -ghH -khK -vrJ -ghH -cqc -gIl -cis -cub -wTg -vEa -rxZ -tCG -pme -iho -fXs -vlb -fXs -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(92,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -mSG -mSG -mSG -mSG -doC -mSG -sJm -sJm -sJm -nPE -hwP -nPE -nPE -nPE -nPE -nPE -nPE -nPE -asb -sIT -oKq -kxM -eFq -bGt -eFq -pUn -dVk -gxn -dfm -sEE -czp -uIL -nSS -uDA -xSM -auK -uqc -eJX -vnd -qzK -ojM -itR -cjM -cah -uzZ -egJ -ehX -vEa -iZA -fTa -fTa -vqe -fXs -dek -dek -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(93,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -svI -pfi -tQO -mXH -qyH -mXH -pSI -mUd -xJx -nPE -bvM -fUk -rXJ -gDy -xXm -eRZ -uIr -nPE -tKs -hug -oKq -fpg -rQj -hNU -pQG -wMM -nvs -ixZ -dfm -nmk -uqc -uqc -uqc -uqc -uqc -uqc -uqc -rZV -pld -gLb -wWX -wvq -uWl -gIl -qkU -pHc -cRJ -vEa -vok -fTa -wtL -lew -fXs -dKk -qEh -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(94,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -svI -kvw -dXc -xpL -qRI -mKO -rDL -heI -jha -nPE -xVV -gsy -uwf -pUK -moL -hMp -gDy -nPE -nPE -nPE -jCA -kiM -nou -vUQ -vOy -lKn -dVk -gxn -ePJ -pEO -hUR -aId -aId -dKF -tRq -hUR -sRG -lOk -wPw -scH -puw -sdN -vyL -uqc -vEa -vEa -vEa -vEa -nQo -fTa -bMW -sbn -fXs -nGW -dek -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(95,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -svI -pfi -mDD -wFa -eIs -wFa -tYV -oUW -xwL -nPE -nPE -nPE -nPE -nPE -nPE -pDq -aex -tZJ -fkv -wHr -jCA -eXT -mpM -vNq -bMa -ngX -jCA -gxn -dfm -pAk -lgX -wFA -cKq -uza -lxC -bfT -xht -lYY -pld -hit -vom -wvq -rJI -kDU -vEa -owb -owb -fXs -fXs -fXs -cev -fXs -fXs -fXs -vlb -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(96,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -mSG -mSG -mSG -mSG -aSX -aSX -pqH -bJA -mKu -hHi -fMc -gOF -ddH -uOc -nPE -pDq -vfi -lmb -lak -eeN -jCA -pbe -lSY -kdx -wwE -lKn -bOE -gxn -dfm -veI -uqc -uqc -uqc -uqc -uqc -uqc -uqc -fjK -bta -ubt -xZb -tPx -rJI -bkd -vEa -owb -fXs -fXs -aeL -wtL -bAG -bAG -bAG -bAG -bAG -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wIp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(97,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sFR -crp -crp -dWz -lYx -unQ -wMU -aaN -pGz -jjj -dIJ -oTq -jjT -hmM -nPE -pDq -iea -jPp -bwA -gRA -jCA -jZm -ulW -qFi -piw -hQQ -kVZ -dmc -ePJ -jdM -fUq -jzF -nFH -bkT -apq -oKD -uqc -xrh -krU -uTB -mDl -efb -qsP -llT -vEa -owb -fXs -dIh -wtL -eLq -bAG -wtL -fXs -fXs -sdh -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(98,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vyc -vPP -rrs -mCU -hGC -jJM -hAH -eSq -tHk -bDn -gwe -eoI -nPE -nPE -nPE -pDq -nPE -nPE -nPE -nPE -jCA -fQF -mBM -bxb -mBM -rmZ -bOE -gxn -dfm -aqu -kbI -oAe -uOh -scI -jwj -aYl -uqc -uqc -uqc -uqc -uqc -uqc -uqc -uqc -vEa -owb -fXs -fRx -msj -ayU -bAG -bAG -fXs -tJE -biC -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(99,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lYx -oRh -lYx -wWY -lYx -ngD -wMU -aqm -kFy -xTG -xxA -xdE -nPE -uZr -moL -xZu -nPE -fkN -fQx -nTJ -iXS -mFQ -hNh -hNh -hNh -sdB -jCA -yeq -dfm -aqu -raq -vIr -iow -qgb -yfn -ioR -oAe -kbT -vDJ -mau -nYN -pIj -nYN -szx -vEa -owb -vEa -vEa -vEa -vEa -vEa -bAG -fXs -vFS -tde -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(100,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sJm -lNx -koC -oOA -tyR -tyR -xqB -voX -kFy -eTV -auO -fNt -hsT -lEs -dIl -nPE -nPE -vZi -wFW -vIF -iXS -iXS -iXS -iXS -iXS -gYS -gYS -rPF -dfm -pSp -tLk -vIr -kQp -nak -eHD -gcH -oAe -twz -dDw -mau -xPE -qFL -gYI -rPK -vEa -owb -owb -owb -owb -owb -vEa -bAG -fXs -fXs -sdh -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(101,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sJm -iwD -rDL -sab -vuB -vuB -vuB -hfE -bep -hnG -pNa -sJM -nPE -pDq -cSk -nPE -wIz -jLt -wFW -wFW -nEs -iHM -iLH -mBt -iXS -gBU -tYW -lui -dfm -aqu -raq -vIr -nJT -oXV -cSF -aEm -oAe -mxO -hwd -mau -eae -mGT -xWq -cfe -vEa -vEa -vEa -vEa -vEa -vEa -vEa -bAG -bAG -bAG -lCg -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(102,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sJm -wBO -qcY -cHK -ulp -hPf -hPf -cGX -hoa -oWs -ilx -oPU -nPE -whI -hMp -nPE -xBt -qlf -qlf -qlf -wKk -wFW -ktN -sVc -whb -pNW -oCx -oCx -dfm -aqu -hbg -oAe -iWT -iUT -nyL -xSQ -dzE -iUb -mau -mau -mau -xqY -mau -mau -mau -hSD -raE -pke -fmG -nhZ -vEa -aIU -wtL -bAG -wtL -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(103,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sJm -sJm -mcr -rhw -kKO -sRn -sRn -iAt -sJm -sJm -sJm -sJm -nPE -gDy -pDq -nPE -nCP -hOF -tJN -iZE -rIb -xAk -qyD -cGt -tuc -dJo -wJT -wJT -pwI -tDO -oAe -oAe -oAe -oAe -dRI -emK -mau -mau -mau -nEZ -qmf -xAn -ygI -lbp -lXx -ieX -nah -jLm -hLq -eQd -vEa -eEN -wtL -bAG -tqr -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(104,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -gQV -gQV -bTQ -gQV -gQV -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sJm -sJm -mcr -rhw -mZT -xLo -xLo -use -sJm -lxs -moL -moL -moL -moL -xZu -nPE -dUY -axF -jUg -aMo -sUt -sUt -fLz -gSs -hhI -hRP -euu -euu -rti -lSd -bDL -dHD -dHD -bDL -bDL -dTY -mau -mHV -gXW -pTP -pTP -nHy -iqR -apg -lXx -dAe -hhX -dlt -hLq -wQh -vEa -iQB -eGl -fPD -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(105,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -gQV -gQV -lAJ -cxR -gXO -gQV -gQV -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xuh -sJm -sJm -elE -sJm -sJm -sJm -sJm -sJm -sJm -pDq -gDy -gDy -gDy -gDy -cSk -nPE -hKt -nWP -xvr -hIB -nTo -hns -oLE -jbr -iXS -eHr -wGb -mvw -dfm -nWS -bDL -ebK -ebK -bDL -oFs -cNQ -mau -apg -dtM -iqR -orl -nbj -iqR -apg -sWm -qHo -wtF -wtF -bnL -uDL -vEa -jbV -guI -iOu -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(106,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -bTQ -gQV -nqU -cbm -hLy -jOp -qxd -gQV -mQO -xuh -xuh -xuh -xuh -xuh -sWs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iaz -pRs -sWs -iAe -vYV -hxL -lez -oSQ -qrf -xQg -nPE -jNM -xZu -osS -dvc -eMg -gDy -gDy -nPE -nPE -iXS -iXS -iXS -iXS -iXS -iXS -iXS -iXS -gYS -gYS -gir -tnj -tEv -dPS -xFp -dGF -kHR -jIZ -ggS -cwX -apg -dtM -dGf -nJC -saB -iqR -apg -sWm -kHO -iAq -sBV -iAq -cBx -vEa -jbV -qZh -jbV -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(107,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -bTQ -hDr -lbm -hLy -hLy -hLy -uyQ -oFi -oFi -aPu -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xuh -xuh -xuh -hNj -jAR -lVU -aWw -oSQ -qZi -qZi -nPE -pDq -gDy -gDy -mif -pcq -lpe -gDy -sCz -nPE -qPv -pJV -iag -hAV -iqy -mKs -ryE -bwu -wwT -aBV -kyj -dfm -xnY -nQY -xyw -xyw -tnR -hTD -rRU -cwX -apg -dtM -hFA -aDE -saB -iqR -apg -sWm -rHf -cdf -ooN -hwL -mjM -vEa -jbV -qZh -jbV -vhS -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(108,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -bTQ -gQV -fmk -vjc -hLy -uyQ -mBm -gQV -mQO -xuh -xuh -xuh -xuh -xuh -sWs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iaz -pRs -sWs -iAe -kDN -bkU -bJi -aWw -blj -tvY -nPE -pDq -jNl -iPs -rfM -lXj -vpn -gDy -uDE -nPE -ybn -ipn -ipn -ipn -fpn -uGO -mCJ -hax -btT -hIb -uSW -dfm -cjo -bDL -jgG -jgG -bDL -xdC -raN -lXx -rYf -dtM -ptW -mdL -bGs -iqR -apg -lXx -wIW -iTA -xEl -jtb -oiu -vEa -jbV -qZh -jbV -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(109,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -gQV -gQV -mhZ -ddM -nHr -gQV -gQV -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xuh -lln -lln -mko -eNX -bNP -nQj -rCj -nPE -pDq -gDy -qFM -bWn -neJ -ryQ -gDy -uDE -nPE -hMm -ipn -pYl -geD -fmx -mKs -lif -vzP -vGy -vFV -ibi -dfm -dTF -jgG -bUW -mvO -bDL -eKe -owh -lXx -lXx -oJk -fyb -lXx -xbr -fyb -lXx -lXx -jyp -vaB -uqt -vEa -vEa -vEa -jbV -guI -hmN -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(110,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -gQV -hDr -hDr -hDr -gQV -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lln -lln -anK -jxz -iMu -twd -qbl -rVJ -pDq -gDy -gDy -gDy -jJI -gDy -gDy -mYF -nPE -idM -ipn -cGI -geD -hUY -liQ -liQ -liQ -liQ -liQ -aZX -dfm -pIG -buI -nVW -efz -val -cqz -uVh -auJ -pGy -fTn -eOy -eOy -iGA -eOy -exp -lnl -uYM -vIo -ujt -eNj -ftt -eNj -eNj -eNj -fPD -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(111,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -tXF -tXF -tXF -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lln -lln -xvL -jxz -ujQ -lln -lln -nPE -pDq -rAy -bOJ -rAy -gDy -gDy -sNe -xby -nPE -rmm -ipn -qLH -geD -wHu -jmR -chO -nII -cAO -liQ -gxn -dfm -cjo -jgG -sTs -ocR -bDL -jHS -ovZ -ovZ -ifF -cxc -rek -kOc -kOc -kOc -kQu -nRI -aHo -mVh -iXK -xOI -cAJ -sZN -cAJ -owr -iBn -jbV -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(112,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lln -lln -tXW -vnI -vnI -lln -rRC -bpF -whI -moL -moL -moL -moL -lkc -spI -rLM -nPE -cuK -ipn -fBw -tPG -ayi -oke -pEx -pEx -ccc -mrZ -lGi -mLb -xat -bDL -sXM -bDL -lvT -lvT -meV -lvT -vWw -lDo -eBy -eQN -dXX -aQS -vko -mBg -dPf -mBg -pse -oQu -odH -jsL -myp -eNj -sPR -fXs -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(113,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lln -lln -vnI -mzk -vnI -lln -tVc -bpF -mbk -gDy -gDy -gDy -gDy -gDy -kgZ -oaU -nPE -frU -ipn -ipn -ipn -oJR -gjq -gYO -hJJ -liQ -liQ -xUQ -lgD -nfY -bDL -lvT -lvT -clV -kcv -xKs -rsh -vWw -pVj -lAm -fQA -chF -fQA -fQA -fNA -ebz -aFM -gNL -eNj -kcw -hvb -vRF -eNj -jXB -kHx -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(114,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -lln -lln -lln -lln -lln -lln -gDy -bpF -tfs -gDy -szn -wLj -aWV -gDy -tlZ -oaU -nPE -qPv -iQe -wqP -omq -obK -kpI -dJC -sQv -liQ -rEU -rEU -sJu -rEU -rEU -lvT -dSn -pNN -hvB -peg -gta -vWw -tUW -eBy -sMB -sMB -sMB -aEh -fNA -gFT -dnU -dnU -aRU -eNj -eNj -eNj -eNj -pAK -vPu -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(115,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gDy -gDy -vqb -ndX -sbU -tAW -gDy -lIS -uIr -vsO -rAy -hGB -fTu -gDy -fZI -oaU -nPE -nPE -nPE -nPE -nPE -liQ -liQ -liQ -liQ -liQ -nWW -wXg -nQX -bgI -eOP -eOP -eOP -eOP -eOP -eOP -eOP -vWw -luv -kIO -rGZ -kPr -vpE -wcm -ede -dgq -mXU -ojp -fDI -rVi -vEa -owb -fXs -jXB -bMP -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(116,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gDy -gDy -won -tLf -bew -jCM -gDy -bpF -uIr -gDy -aTi -oZY -gts -gDy -cek -hKS -lkc -moL -moL -hMp -gDy -ifk -vMg -cPT -nWW -tEh -bVy -vVu -vOE -tDs -pRS -gHM -kfq -vRO -vRO -vRO -eOP -vWw -ijT -kIO -tVa -qDM -sHJ -wcm -qCO -pvO -aGw -toy -pii -dvJ -vEa -owb -fXs -sPR -fXs -fXs -fXs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(117,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gDy -gDy -wsy -pYK -wGK -vLJ -gDy -bpF -gDy -gDy -gDy -gDy -dks -gDy -gDy -sNe -gDy -bpF -khX -whI -xIR -mFJ -rPr -mFJ -ifw -nMz -jgd -kpl -tFp -gQh -fsK -weB -sTE -vRO -vRO -vRO -eOP -vWw -uKs -kIO -qXn -sMp -wSb -wcm -fQA -ngK -dnU -ycx -otJ -jye -vEa -owb -fXs -bhh -sOU -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(118,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gDy -gDy -cYP -njC -kNh -dsv -sUH -bpF -bpF -bpF -gDy -heg -iEa -xhU -gDy -uDE -gDy -bpF -bpF -bpF -gDy -lkI -kgn -erp -nWW -uIk -pjU -tDs -vOE -dYh -qey -gHM -ptg -vRO -vRO -vRO -eOP -vWw -uKs -kIO -ghZ -wiR -rGZ -wcm -fQA -oTG -dnU -bVj -pJj -duZ -vEa -fXs -fXs -bhh -sOU -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(119,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -gDy -gDy -gDy -gDy -gDy -gDy -gDy -gDy -gDy -tPK -gDy -aZd -rhN -eUZ -gDy -uDE -gDy -gDy -gDy -gDy -gDy -txa -txa -txa -txa -txa -nWW -qNI -nQX -kQk -eOP -eOP -eOP -eOP -eOP -eOP -eOP -vWw -pVj -woK -pnJ -pnJ -mDL -aEh -fQA -gJA -dnU -sWo -sWo -pnw -ycM -sOU -sOU -bhh -sOU -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -wIp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(120,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -dBb -nTU -pEs -jid -goe -goe -gDy -iGd -gDy -gDy -gDy -gDy -gDy -gDy -gDy -txa -gIK -lty -wLd -uxF -awR -gIK -gbR -txa -uIk -uIk -tNU -uIk -uIk -dPH -qCs -qCs -lFg -qCs -qCs -vWw -uKs -wQY -rsi -axX -fQA -fQA -fQA -sXp -dnU -sWo -wyv -sWo -ycM -sOU -sOU -bhh -jjG -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(121,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -bjg -emZ -rKG -kFF -xrq -psc -dlW -kDq -dlW -xrY -xdm -jZp -vJf -rVI -oih -txa -nAC -oxX -xqv -fOU -mEN -hAs -rqU -txa -txa -qCH -aYb -wxw -dPH -dPH -dPH -dPH -dPH -dPH -dPH -vWw -kjk -gnW -vWw -vWw -ljH -kvH -cfD -vWw -vWw -wDE -cWK -sWo -ycM -sOU -sOU -mLS -nXQ -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(122,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -nNk -nSC -nSC -nSC -mGy -oiY -daY -pOQ -iTJ -tGW -ell -bRl -jzB -giQ -onc -txa -wBF -rVk -rVk -rVk -epm -dWg -dWg -fYr -txa -fiw -vOE -uHa -dPH -rWz -vKA -dyX -dPH -tbX -bTX -wYW -gwE -sHY -dPH -jlW -mqB -mqB -lOp -rBU -qjr -sWo -jJC -wyv -ycM -sOU -sOU -hch -bzM -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(123,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -nNk -dtv -dtv -tby -cjB -bRt -daY -iCU -iTJ -xbF -nTB -moq -chP -cgw -lad -txa -rVk -yfx -rCk -rCk -sqv -lhO -lhO -cGT -txa -mlH -vOE -nYZ -atP -hxz -vES -uyX -aCB -vBa -bsV -adT -aQL -sHY -dPH -rAP -rTw -nhm -qQG -puQ -qjr -sWo -bJj -wyv -ycM -nXQ -nXQ -dSm -bzM -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(124,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -cVb -uHv -qxQ -tby -sLe -psc -daY -iCU -iTJ -xdm -xdm -moq -moq -chP -lad -txa -xjo -xHv -vVB -vVB -pll -lhO -lhO -flX -txa -bVy -vOE -rBY -uiv -yfq -tAs -mho -uiv -neR -mZH -jIV -fBT -sHY -rDZ -cbw -lOp -ira -dtX -oOW -qjr -qjr -qjr -qjr -ycM -ncB -ncB -vSB -ncB -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(125,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -wir -tby -tby -tby -sLe -psc -daY -iCU -iTJ -xdm -chP -moq -sDE -moq -lad -txa -lOg -uiS -psa -mnE -pll -lhO -pux -tnn -cmM -bVy -tnV -daD -fvA -kkK -fDA -emk -wmr -hHq -ntR -nyZ -fBT -sHY -xIP -cbw -lOp -izj -cUd -lXm -kdh -tGz -iXF -sPs -ycM -dmR -vRa -sYK -pze -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(126,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -wir -nSC -nSC -nSC -luZ -bRt -qGf -dzB -lDj -vqS -wFb -bjT -kXK -syE -clT -txa -wUK -tsi -xcN -wiC -pll -lhO -lhO -hbS -oho -rRP -vOE -mcq -dPH -sEk -mwe -oCc -dPH -neR -jwG -gAi -sRf -sHY -hAP -qtQ -kTz -gUH -fCS -mqB -lOp -xCR -iXF -sPs -ycM -eqV -tmk -pIv -gWN -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(127,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -wir -nSC -dtv -dtv -sLe -psc -daY -iCU -iTJ -xdm -chP -moq -mIQ -moq -nqI -txa -csw -fQv -jFK -tpy -juW -hbS -gJu -cwD -txa -bVy -vOE -nXw -dPH -dPH -amm -dPH -dPH -xjc -pyQ -fCE -cLF -sHY -cAt -cbw -xOY -nzV -xDG -qqE -eLg -jeQ -uXo -sPs -orf -gVR -sfM -sOU -gWN -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(128,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -nNk -nSC -dtv -fEr -sLe -psc -daY -iCU -iTJ -tQl -xdm -moq -moq -chP -lad -txa -urS -xkR -tRh -suD -nLc -lhO -nRU -pOY -wtM -qdY -vOE -aUR -xEP -tOc -hED -xhp -xEP -sct -mlN -dPH -sdI -soP -glN -lKQ -aCG -smY -eoG -syd -qnv -khn -iXF -sPs -ycM -sOU -aDq -sOU -gWN -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(129,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -mvs -gid -nSC -nSC -sLe -bRt -daY -iCU -iTJ -xbF -nTB -moq -chP -xdm -xvO -txa -bTK -qEt -ehk -fhG -nLc -lhO -nRU -rVN -cmM -bVy -vOE -aUR -wiT -cWy -tcm -inj -skQ -hED -bNg -dPH -emr -oDd -dPH -vuf -jjA -gSD -wPG -iaO -gMo -jOc -iXF -sPs -ycM -noA -noA -noA -iZi -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(130,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qXo -otM -sOB -dKf -nSC -nSC -nSC -mGy -lLm -daY -klC -iTJ -tjJ -qfE -xdm -txw -bRl -nKA -txa -xjo -xHv -tha -tha -nLc -pux -nRU -kKQ -txa -fGm -vOE -wDy -gaC -hED -fdB -wHU -gEh -qlo -jXj -dPH -aZq -sHY -dqQ -dqQ -dqQ -dqQ -dqQ -dqQ -dPH -dPH -dPH -ycM -ycM -esB -ncB -ncB -ncB -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(131,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -ckU -jKi -rdC -cIE -eov -vXn -dlW -xcT -ntn -lad -xvO -sLY -sHQ -uOo -aUH -txa -rVk -rVk -uOd -snp -qzH -lhO -nRU -pDv -txa -mlH -vOE -scG -wiT -anj -wGX -vHi -oRY -mgS -xPw -dPH -mcA -sHY -eoL -hSJ -dBo -mXY -jhv -qFI -wIn -hyR -roy -ycM -esB -esB -ncB -jyY -rLb -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(132,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -otM -sOB -dBb -hKx -mhh -csF -csF -psc -dlW -pZK -dlW -dlW -eEd -dlW -dlW -dlW -dlW -txa -hUj -hUj -hUj -hUj -qzH -dWg -djd -ejK -txa -bVy -vOE -aUR -xEP -kGa -wyY -mra -gLy -vkZ -cgZ -dPH -qxY -eUU -dDR -iTd -oPA -uNl -hfd -qFI -iPH -wuJ -aZl -ycM -esB -wIe -ncB -mJc -aWZ -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(133,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dlW -rIo -rIo -rIo -rIo -rIo -rIo -mMk -dlW -lsC -dlW -whU -vju -buC -jKh -dlW -lks -txa -vEg -txa -fCQ -cBU -ydX -meD -vCI -txa -txa -bVy -vOE -omS -ffe -ffe -wrj -wrj -ffe -ffe -xEP -dPH -jGz -rIa -bsI -oOi -dOD -iJY -bBg -qFI -omP -uOL -nGS -ycM -esB -esB -esB -ncB -sBy -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(134,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dlW -rIo -mfQ -avf -aBR -xdy -rIo -oGD -iCU -oGD -dlW -oNn -pMZ -enE -uOe -dlW -dlW -dlW -ram -txa -wLd -tYa -pEz -mHx -wLd -txa -vse -tnT -fIs -aUR -ffe -ait -xeF -rWa -lWY -ffe -lPf -jOA -mfU -tNd -qxZ -uHT -uJN -lOz -gAD -qFI -wuc -xZL -xZL -ycM -ycM -ycM -esB -nwD -nwD -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(135,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dlW -rIo -rIo -sua -sOB -hJG -cVo -oGD -imt -xPX -dlW -dlW -dlW -dlW -dlW -dlW -dlW -nWc -ram -txa -txa -txa -txa -txa -txa -txa -ctv -bVy -vOE -aUR -wrj -mGt -igI -hvC -qfm -ffe -sfB -oQn -vCP -rGb -qFI -qFI -qFI -qFI -qFI -qFI -wmI -xZL -fbo -kTI -iJo -ycM -dUJ -ycM -ycM -ncB -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(136,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dlW -rIo -lPl -sGN -jqh -rIo -lsC -oGD -oGD -oGD -oGD -oGD -oGD -oGD -oGD -dlW -mWq -pYw -pYw -utJ -dqe -uHI -uMS -iUZ -vxy -hUe -tzV -vOE -aUR -wrj -pVD -vBw -mOe -bRP -trM -tPI -fUZ -clU -jak -amm -oYW -kTI -cBE -guF -jiM -dSF -kTI -wkv -kTI -sJK -ycM -rCx -sBN -ycM -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(137,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -dlW -rIo -rIo -rIo -rIo -rIo -dlW -dlW -dlW -dlW -hXo -dlW -dlW -lHQ -oGD -dlW -vxy -khs -vxy -vxy -cjK -dWK -hTz -lQo -kvi -kmG -xWF -fIs -wDy -wrj -fYJ -dHq -wmo -mlg -cxg -vBa -kxP -jsH -bwF -xkw -qXW -skD -skD -skD -qBm -qXp -qXp -qXp -kTI -eWl -ycM -qwu -xQC -ycM -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(138,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sxo -sxo -kTV -wlX -sxo -nps -nGD -cOz -mqd -sxo -eFz -nIl -dlW -oGD -oGD -dlW -hre -shW -ofD -vxy -bxs -oWC -rbR -ciU -vxy -sds -qxb -vOE -aUR -wrj -vqv -sMD -acp -sSY -wrj -vTj -fhv -jsH -lbt -gDx -gDx -vrM -gDx -gDx -gDx -xTw -tBk -edj -kAR -tBk -ycM -nCA -luE -ycM -ncB -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(139,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -teW -vPA -adD -iRb -leF -vyW -fvD -fvD -fxI -oBD -eem -kzT -dlW -oGD -qCr -dlW -dWt -kxJ -kQQ -vxy -kxS -xen -rKk -drD -vxy -vxy -fNL -vOE -aUR -wrj -wzp -iCG -aoh -lfQ -ffe -emV -uwA -jsH -ncs -gDx -bJm -oZo -gXi -gDx -rhO -ftZ -tBk -sCO -wKi -akt -rbr -rbr -rbr -rbr -rbr -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(140,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -teW -vPA -sGU -flS -nPp -vyW -dje -eop -xRf -sxo -ngT -dlW -dlW -oGD -nZV -dlW -eET -hSQ -dpQ -vxy -odP -tme -ohm -upx -sfR -dJF -bVy -vOE -oct -ffe -eQi -qaJ -pNe -lax -ffe -nxU -iYC -uUE -kTh -gDx -wDh -hXs -dOl -vWE -idu -ftZ -tBk -qTA -lwY -lwY -cVz -fCA -foF -rbr -rbr -rbr -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(141,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sxo -sxo -boq -psF -uOS -vyW -dje -eWC -sxo -sxo -sxo -dlW -taM -soZ -vXc -dlW -dlW -dlW -dlW -dlW -vJS -pNH -dOK -pgL -qSD -dJF -bVy -vOE -aUR -ffe -ffe -ffe -ffe -ffe -ffe -dPH -xZL -qfR -xZL -gDx -tzs -rNT -tBj -vWE -idu -mmL -tBk -qTA -cXr -akt -rbr -fvV -tFO -bSi -qRA -tIV -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(142,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -teW -vPA -aQW -flS -nPp -vyW -dje -cqm -viA -qcS -qPt -dlW -gTR -oGD -oGD -oGD -oGD -oGD -oGD -dlW -hNY -iKc -nOX -weQ -nXm -dJF -rmF -vOE -bZd -pOG -gEk -gEk -cXD -gEk -loF -dPH -szo -uxl -lOB -gDx -aPh -rSJ -izn -gDx -aEq -kXN -tBk -kwt -wKi -rbr -rbr -uWM -nwc -rbr -rbr -rbr -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(143,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -teW -vPA -vjQ -sSl -lcN -vyW -jjo -pqt -sxo -xiA -xiA -dlW -omA -xxS -vHX -sXR -oGD -rsL -oGD -dlW -dlW -dlW -dlW -dlW -dlW -vxy -fkL -vOE -aUR -pOG -iqg -qfz -qfK -qfK -ueW -dPH -wSw -apR -wDF -xZL -xZL -xZL -xZL -tBk -tBk -tBk -tBk -gqV -gXp -rbr -gWU -qcR -tFO -mxf -uxf -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(144,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sxo -sxo -kTV -wlX -sxo -vyW -wzt -mcD -rNo -tKY -jjB -dlW -dlW -dlW -dlW -dlW -oGD -oGD -oGD -oGD -thU -uIM -fMB -qAw -dlW -ipQ -bVy -vOE -keN -pOG -faM -jjU -wze -iZU -qsD -jze -gZL -gRx -bnQ -xZL -fCz -obT -wNR -tBk -tXR -aDD -xiS -gqV -iyR -rKX -szD -ndc -mTF -rbr -rbr -rbr -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(145,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sxo -sxo -wQN -wQN -sxo -nEG -wiu -rem -rNo -wOt -blq -rNo -oHC -oHC -oHC -dlW -dlW -dlW -dlW -oGD -uTk -eWW -pKD -fuy -dlW -hPK -bVy -vOE -dBZ -pOG -sRH -xSB -xWM -rQh -qtS -dPH -sfG -apR -twZ -gll -rTa -rTa -dsz -tBk -kbN -jHI -hMd -gqV -wKi -pjM -kyw -qQI -ybH -bSi -qRA -tIV -jfs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(146,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oXa -kSA -oOY -kpz -mTg -qrN -veQ -ycq -vfc -qrN -veQ -ncC -veQ -qrN -veQ -qrN -lJB -kTZ -ydL -jvu -jvu -dwE -qjs -qOV -uvJ -wJj -rgc -gGi -bYq -pOG -hkd -qfG -oxQ -isg -tUa -dPH -jCK -uxl -eYw -dPH -tTJ -ljs -jpT -tBk -poY -bie -hMd -gqV -wKi -rbr -jSt -fQj -mHQ -rbr -rbr -ayJ -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(147,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oXa -kSA -vfa -ooy -kXs -uVk -rPX -kvR -jYy -nGL -mvM -iah -mvM -nGL -mvM -eYN -cVX -ggW -dlW -sOB -dlW -dlW -tEc -dlW -dlW -nWW -nhV -mMS -vvY -pOG -pOG -rKC -pOG -fkA -fkA -fkA -fkA -kLE -fkA -fkA -fkA -jVK -jVK -tBk -lmk -eIq -hMd -kye -waJ -rbr -rbr -pjM -rbr -rbr -rbr -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(148,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -rNo -rNo -gaM -gaM -rNo -kme -rCQ -fEp -rNo -vKe -vKe -rNo -gaM -cff -gaM -rNo -fwV -ulu -dlW -lgz -dlW -kON -qnc -uQI -iEm -nWW -eOP -gjd -eOP -pOG -miV -vxn -noj -fkA -fkA -pJz -mHl -wPW -sTr -mph -qkP -jVK -opP -ozO -ozO -tZX -ozO -wit -pMy -tDG -bTY -gcG -rqf -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(149,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -azW -azW -aLe -xVF -deM -deM -deM -deM -act -rNo -gZn -haW -vQt -rNo -mBP -tOE -dlW -jTo -dlW -dlW -deg -dlW -dlW -nWW -xRR -chY -uuh -pOG -pOG -qYq -pOG -fkA -fkA -pxt -sTr -wPW -dvT -jwi -tOn -jVK -gqI -bqs -cSQ -dVx -mMw -kPy -xko -ciS -wxc -qPp -aWq -bFM -dly -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(150,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -deM -deM -deM -xVF -opR -deM -uLQ -uLQ -deM -rNo -ylf -moO -eHN -wGL -xLw -lpF -dlW -dlW -dlW -dlW -oyh -oyh -oyh -xot -hWG -qAJ -sqG -xot -oyh -oyh -oyh -fkA -fkA -dSw -ezK -kRF -jMn -sTr -dji -jVK -ipv -ozO -mYp -nAb -iXo -vZb -xko -tDG -qPV -vxq -cZA -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(151,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -rNo -rNo -deM -mte -oAA -xVF -esR -deM -ulN -ulN -deM -rNo -moB -ayl -qJq -rNo -xjI -ydi -rNo -gVS -rNo -rNo -oyh -oyh -oyh -xot -wTj -wTj -whM -eOP -oyh -oyh -oyh -fkA -fkA -fkA -fkA -fkA -xrK -pJd -pJd -jVK -ozO -ozO -ozO -ozO -ozO -xXd -qry -rJF -rJF -rJF -rJF -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(152,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -deM -kmc -iIn -xVF -deM -deM -bTf -bTf -deM -fEp -bTu -wBU -rKJ -jks -veQ -tjF -cVR -nGl -rNo -rNo -oyh -oyh -oyh -fGD -ezF -dyk -ezF -ret -oyh -oyh -oyh -fkA -ppf -wmD -fkA -kUZ -wcL -oqQ -iKR -jVK -lum -arq -bqn -iZQ -vGO -sUP -xko -rJF -qqp -oPm -tdb -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(153,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -deM -kmc -ntW -xVF -kWs -deM -deM -deM -iCh -rNo -cSu -gMs -eiV -rNo -uhG -xYd -nGl -nGl -rNo -rNo -oyh -oyh -mrL -nWW -xot -xot -xot -nWW -ric -oyh -oyh -fkA -fkA -qgw -fkA -dkP -oqQ -jLF -iMc -jVK -pfj -bej -emJ -bej -niG -tvm -xko -kjz -waV -waV -ckv -bFM -dly -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(154,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -deM -kmc -iIn -xVF -deM -deM -uLQ -uLQ -eNo -rNo -lLt -sWP -rOB -rNo -fod -tyu -rNo -wVX -rNo -rNo -oyh -mYM -oyh -oyh -oyh -dyt -oyh -oyh -oyh -sVp -oyh -wMF -wMF -wMF -wMF -wMF -wMF -wMF -wMF -jVK -wcF -pyW -ecF -rog -fpF -fZv -xko -rJF -ppi -gWF -unv -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(155,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -rNo -rNo -vzw -sZd -ohn -xVF -esR -deM -ulN -ulN -vyK -rNo -rNo -pNM -rNo -rNo -rVQ -utT -rVQ -rVQ -rVQ -rVQ -oyh -kgW -oyh -oyh -oyh -dyt -oyh -oyh -oyh -kgW -oyh -wMF -wMF -yeU -yeU -yeU -yeU -yeU -yeU -jVK -vWn -mRa -wkP -uTc -nOa -vVW -oxm -rJF -rJF -rJF -rJF -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(156,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -deM -deM -deM -xVF -opR -deM -bTf -bTf -deM -rNo -dSE -nPS -rNo -tqz -rVQ -vqB -vBB -spb -rVQ -rVQ -oyh -rCR -oyh -oyh -iSU -dyt -iSU -oyh -oyh -rCR -oyh -wMF -wMF -wMF -wMF -wMF -wMF -wMF -wMF -jVK -nQA -byE -cZK -qyO -xDw -kKn -xko -rJF -qqp -pbx -oSW -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(157,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -vVT -mTG -azW -azW -fsR -xVF -deM -deM -deM -deM -act -rNo -doy -nPS -rNo -kwn -pzu -xgC -rgz -xXq -rVQ -rVQ -oyh -kgW -oyh -oyh -oyh -dyt -oyh -oyh -oyh -kgW -oyh -wMF -wMF -xaW -iQF -dAr -uRy -boB -wQo -xOF -fZg -uXU -pZD -tvm -hhQ -iZh -uuu -uym -aWg -aWg -ckv -bFM -dly -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(158,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -lkY -lkY -fVV -qFu -aiL -dtl -fVV -lkY -lkY -fVV -rNo -pNM -rNo -anF -rVQ -fZl -tyP -qxE -rVQ -rVQ -oyh -rCR -oyh -oyh -oyh -jIc -oyh -oyh -oyh -rCR -oyh -wMF -wMF -qzQ -eJy -pfL -pfL -yfr -nKU -qle -xUI -nrk -gbp -wHw -pmd -aWv -owo -rJF -bjw -tgz -vhr -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(159,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -nLs -nLs -bIl -kkA -aDi -gxc -kZe -gxc -utw -fVV -lGb -ity -rNo -rVQ -rVQ -lfw -rVQ -rVQ -rVQ -rVQ -oyh -kgW -oyh -oyh -oyh -kyo -oyh -oyh -oyh -kgW -oyh -wMF -wMF -nSz -rCF -qXw -fNV -vNS -mrE -nwL -wLP -hRI -eWg -tml -ikT -ecf -owo -rJF -rJF -rJF -rJF -wtp -wtp -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(160,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -vaN -nLs -bIl -azK -kqk -pxF -fkp -apl -cVl -fVV -fVV -fVV -fVV -piA -rTV -uns -nhd -rVQ -rVQ -rVQ -oyh -rCR -oyh -oyh -iSU -kyo -iSU -oyh -oyh -rCR -oyh -wMF -wMF -wMF -ePU -hIR -rqV -fje -toX -gjH -cYW -wcW -dWj -jEY -vlf -cib -owo -rwq -hWH -mXn -gvU -qkS -qkS -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(161,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -nLs -nLs -bIl -aeF -aDi -aDi -aDi -aDi -aDi -oUl -jDq -psh -fVV -iGG -wRL -gUc -rVQ -rVQ -rVQ -oyh -oyh -kgW -oyh -oyh -oyh -kyo -oyh -oyh -oyh -kgW -oyh -oyh -wMF -wMF -wMF -cOx -kDz -icn -wQo -uEF -uEF -oiw -uEF -uEF -ozO -ozO -sAJ -ozO -iBl -rMu -dHY -pmC -oFM -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(162,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -wdZ -ogJ -rtb -gxc -cNH -fvJ -bvP -sdZ -fVV -fVV -tVU -qku -fVV -lIn -kdw -rVQ -rVQ -rVQ -oyh -oyh -oyh -uUj -oyh -oyh -oyh -kyo -oyh -oyh -oyh -rDD -oyh -oyh -oyh -wMF -wMF -wMF -ttw -oEB -wQo -tun -mSN -siT -eEn -uEF -juF -fTO -ftu -ozO -xKZ -lkB -oYw -qkS -qkS -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(163,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -fVV -fVV -fVV -ooQ -nxV -gbZ -pqe -iWQ -xeQ -fVV -cRL -ddd -fVV -rVQ -rVQ -rVQ -rVQ -oyh -oyh -oyh -oyh -oyh -ric -nbP -uQA -qXy -uQA -nbP -mrL -oyh -oyh -oyh -oyh -oyh -wMF -wMF -wMF -wMF -wMF -kNO -axY -fCU -gpA -uEF -tHZ -aih -cMg -ozO -mek -mek -mek -qkS -qkS -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(164,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -fVV -fVV -fVV -fVV -fVV -bSg -bSg -bSg -bSg -fVV -iKD -fVV -fVV -fVV -fVV -rVQ -rVQ -rVQ -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xTI -xJH -aNQ -xJH -uWn -oyh -oyh -oyh -oyh -oyh -oyh -oyh -wMF -wMF -wMF -wMF -kNO -kNO -pkT -pkT -kNO -lPt -lPt -jVK -jVK -qkS -qkS -qkS -qkS -qkS -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(165,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -fVV -wOJ -wOJ -wOJ -wOJ -fVV -ucN -fVV -fVV -fVV -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -hWr -ojl -mYg -enJ -wXk -uQA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -kNO -kNO -aHC -aHC -kNO -yfA -yfA -jVK -jVK -jVK -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(166,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -nbP -tIl -fEv -dMt -nbP -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(167,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -oyh -oyh -oyh -oyh -nbP -nbP -nfZ -nbP -nbP -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(168,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -nbP -nbP -lSE -whJ -owP -nbP -nbP -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(169,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -xHg -xHg -xHg -nbP -hzu -nJR -cvZ -mDn -nwR -nbP -nbP -nbP -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(170,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lbF -nse -ntF -ntF -gJs -whJ -rrl -uSm -dPC -dPC -niu -rFy -nbP -oyh -oyh -oyh -pwH -hQT -hQT -ilK -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(171,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lbF -tzU -hKw -nFT -nbP -ovP -mDn -qQS -nus -mkL -nbP -eXL -nbP -hQT -ijJ -hQT -ilK -fPW -eYj -pwH -hQT -hQT -ilK -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(172,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -kDG -tzU -ofi -oyh -nbP -nbP -xRQ -oRS -lFj -nbP -nbP -eYj -fPW -eYj -cun -fPW -oyh -iML -eYj -oyh -eYj -fPW -dZa -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(173,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -umQ -aFj -aFj -aFj -sOy -sOy -sOy -sOy -sOy -vyR -vyR -vyR -vyR -vyR -vyR -vyR -oyh -oyh -oyh -oyh -eYj -dZa -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(174,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -aFj -kum -aFj -aFj -aFj -sOy -rZC -uDR -knY -sOy -vyR -vyR -vyR -vyR -vyR -vyR -vyR -vyR -oyh -pwH -hQT -ijJ -hQT -ilK -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(175,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -rrQ -kum -uLO -fpH -aFj -mWh -oTA -nEI -dWG -mWh -vyR -oHW -vyR -bkM -vyR -vyR -vyR -vyR -oyh -iML -fPW -eYj -fPW -dZa -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(176,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -lcU -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -pUB -kZZ -kum -kum -kum -pKc -fzr -iBc -jPj -onI -oiP -vyR -imS -dQQ -edZ -rOj -jth -vyR -vyR -oyh -iML -eYj -pGG -eYj -dZa -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(177,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -clH -wvd -trB -ykV -hzI -aFj -wmt -nEI -jPj -llQ -eys -vyR -nqc -vGk -euy -euy -cRA -vyR -vyR -vyR -iML -fPW -eYj -fPW -dZa -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -lcU -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(178,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -fnL -ykV -tOV -szK -pUq -aFj -gLt -iqz -cNT -qEG -mhu -vyR -xEZ -vyR -vyR -urf -inl -vyR -vyR -vyR -qWn -itT -gZG -itT -gnj -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(179,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -dkh -aFj -aFj -aFj -daa -kZZ -tOV -knH -hwN -aFj -aOw -iqz -mIX -vrt -xZM -vYJ -rUi -vyR -vYX -rOW -bqU -vyR -vyR -vyR -lLp -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(180,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -nTP -hzI -tOV -knH -knH -aFj -hSt -iqz -lbx -nEI -oiP -vyR -ldv -vyR -vyR -rOj -nwW -vyR -vyR -vyR -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(181,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -aFj -aFj -aFj -byX -vPg -uNq -knH -knH -aFj -oha -dWG -pIf -oiP -bNh -vyR -jOC -jOC -krK -qmG -cTo -vyR -vyR -vyR -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(182,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -aFj -aFj -ptL -ykV -fID -bEV -ims -aFj -mWh -oiP -nEI -fNY -mWh -vyR -imS -wYd -col -urf -mqG -vyR -vyR -oyh -oyh -oyh -oyh -fMl -sWs -wbT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(183,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -oyh -aFj -aFj -aFj -dlR -cRs -uEb -uEb -aFj -sOy -dog -mWh -dog -sOy -vyR -oHW -vyR -arM -vyR -vyR -vyR -vyR -oyh -oyh -oyh -oyh -acl -acl -xUk -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(184,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -aFj -aFj -aFj -aFj -aFj -aFj -aFj -aFj -sOy -sOy -sOy -sOy -sOy -vyR -vyR -vyR -vyR -vyR -vyR -vyR -vyR -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(185,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -oyh -oyh -oyh -aFj -aFj -aFj -aFj -aFj -aFj -aFj -sOy -sOy -sOy -sOy -sOy -vyR -vyR -vyR -vyR -vyR -vyR -vyR -oyh -oyh -oyh -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(186,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sKZ -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -sKZ -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(187,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(188,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -qQt -dJu -dJu -lpc -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(189,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -uMR -mlO -mlO -fZn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(190,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -eEE -cUq -qUV -lzq -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(191,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -bjb -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(192,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -iOw -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(193,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(194,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(195,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(196,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(197,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(198,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -xKt -djc -djc -djc -dkn -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(199,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ujI -edA -pRs -pRs -wbT -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(200,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ujI -pRs -pRs -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(201,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(202,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(203,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(204,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(205,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(206,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(207,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(208,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(209,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(210,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(211,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(212,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(213,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(214,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(215,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(216,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(217,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(218,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(219,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(220,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(221,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(222,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(223,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(224,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(225,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(226,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(227,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(228,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(229,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(230,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(231,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(232,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(233,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(234,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(235,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(236,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(237,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(238,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(239,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(240,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(241,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(242,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(243,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(244,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(245,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(246,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(247,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(248,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(249,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(250,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(251,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(252,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(253,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(254,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} -(255,1,4) = {" -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -ucA -"} diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e730dea04bc99..8f24d290d1750 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -9929,7 +9929,7 @@ /area/centcom/central_command_areas/armory) "Vh" = ( /obj/structure/table/reinforced, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = 10; pixel_x = 2 }, @@ -62229,7 +62229,7 @@ xt xt xt xt -xt +PG xt Vd zm @@ -62486,7 +62486,7 @@ xt xt xt xt -rq +xt xt xt zl diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm index 7e99bf96803cd..daec11b31a2c6 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_1.dmm @@ -2735,7 +2735,7 @@ gs IK IK IK -pD +mg "} (53,1,1) = {" AN @@ -2771,7 +2771,7 @@ IK IK IK IK -pD +mg "} (54,1,1) = {" AN @@ -2804,10 +2804,10 @@ gs IK IK IK -pD -pD -pD -pD +mg +mg +mg +mg "} (55,1,1) = {" AN @@ -2840,7 +2840,7 @@ IK IK IK IK -pD +mg IK IK IK @@ -2875,8 +2875,8 @@ cV cV mg sf -pD -pD +mg +mg IK IK IK diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm index e7c0c22ad0575..dd68accab503b 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm @@ -2907,7 +2907,7 @@ gs IK IK IK -pD +mg "} (53,1,1) = {" AN @@ -2943,7 +2943,7 @@ IK IK IK IK -pD +mg "} (54,1,1) = {" AN @@ -2976,10 +2976,10 @@ gs IK IK IK -pD -pD -pD -pD +mg +mg +mg +mg "} (55,1,1) = {" AN @@ -3012,7 +3012,7 @@ IK IK IK IK -pD +mg IK IK IK @@ -3047,8 +3047,8 @@ cV cV mg sf -pD -pD +mg +mg IK IK gs diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm index 334f49ad8b602..83d22aaf3d8ed 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_3.dmm @@ -2638,7 +2638,7 @@ gs IK IK IK -pD +mg "} (53,1,1) = {" AN @@ -2674,7 +2674,7 @@ IK IK IK IK -pD +mg "} (54,1,1) = {" AN @@ -2707,10 +2707,10 @@ gs IK IK IK -pD -pD -pD -pD +mg +mg +mg +mg "} (55,1,1) = {" AN @@ -2743,7 +2743,7 @@ IK IK IK IK -pD +mg IK IK IK @@ -2778,8 +2778,8 @@ cV cV mg sf -pD -pD +mg +mg IK IK gs diff --git a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm index 5eae1f6e7ec96..cc4cbdcdd9677 100644 --- a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_1.dmm @@ -1037,7 +1037,7 @@ a J J J -W +t J J J @@ -1060,10 +1060,10 @@ Z "} (29,1,1) = {" m -W -W -W -W +t +t +t +t J J J @@ -1086,7 +1086,7 @@ Z "} (30,1,1) = {" J -W +t J J J @@ -1111,8 +1111,8 @@ Z Z "} (31,1,1) = {" -W -W +t +t J J a diff --git a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm index 02960cfadc516..df7d703de1557 100644 --- a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_2.dmm @@ -136,10 +136,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/greater) -"oT" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/station/asteroid) "oV" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/button/door/directional/west{ @@ -1112,7 +1108,7 @@ Rk cV cV cV -oT +ja cV sj PC @@ -1135,10 +1131,10 @@ fX "} (29,1,1) = {" Cn -oT -oT -oT -oT +ja +ja +ja +ja cV sj sj @@ -1161,7 +1157,7 @@ fX "} (30,1,1) = {" cV -oT +ja cV cV cV @@ -1186,8 +1182,8 @@ fX fX "} (31,1,1) = {" -oT -oT +ja +ja cV cV Rk diff --git a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm index 02618e94a681c..12357ca0a2f8f 100644 --- a/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/servicecargolower_3.dmm @@ -948,7 +948,7 @@ a J J J -W +t J J J @@ -971,10 +971,10 @@ Z "} (29,1,1) = {" m -W -W -W -W +t +t +t +t J J J @@ -997,7 +997,7 @@ Z "} (30,1,1) = {" J -W +t J J J @@ -1022,8 +1022,8 @@ Z Z "} (31,1,1) = {" -W -W +t +t J J a diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index acc639880b14e..5701e877f72ae 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -77,7 +77,7 @@ /obj/effect/turf_decal/sand/plating, /obj/structure/cable, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "aan" = ( /turf/open/floor/iron/stairs/medium{ dir = 8 @@ -103,7 +103,7 @@ /obj/effect/turf_decal/sand/plating, /obj/machinery/light/small/directional/west, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "aat" = ( /obj/item/stack/cable_coil, /turf/open/misc/asteroid/airless, @@ -112,7 +112,7 @@ /obj/effect/turf_decal/sand/plating, /obj/machinery/light/small/directional/east, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "aaw" = ( /obj/item/storage/toolbox/electrical, /turf/open/misc/asteroid/airless, @@ -136,7 +136,7 @@ /obj/effect/turf_decal/sand/plating, /obj/structure/cable/layer1, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "aaD" = ( /obj/structure/ore_box, /turf/open/misc/asteroid/airless, @@ -1340,19 +1340,19 @@ id = "portsolar" }, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "ael" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/cable/layer1, /obj/structure/cable, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "aem" = ( /obj/item/storage/toolbox/electrical, /obj/effect/turf_decal/sand/plating, /obj/structure/cable/layer1, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "aen" = ( /obj/effect/turf_decal/sand/plating, /obj/item/stack/ore/glass, @@ -5913,7 +5913,7 @@ /area/station/cargo/sorting) "aST" = ( /turf/closed/wall/r_wall, -/area/station/solars/port) +/area/station/maintenance/solars/port) "aTa" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -6259,7 +6259,7 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "bcq" = ( /obj/effect/landmark/secequipment, /obj/effect/turf_decal/bot, @@ -6952,7 +6952,7 @@ /obj/effect/turf_decal/sand/plating, /obj/machinery/light/floor, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "bsW" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7855,6 +7855,9 @@ /obj/structure/rack, /obj/item/clothing/suit/hooded/ablative, /obj/item/gun/energy/ionrifle, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 3 + }, /obj/item/gun/energy/temperature/security, /obj/structure/reagent_dispensers/wall/peppertank/directional/north, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -8392,10 +8395,6 @@ /obj/structure/water_source/puddle, /turf/open/misc/asteroid, /area/station/security/prison/workout) -"bRE" = ( -/obj/structure/lattice/catwalk, -/turf/open/floor/plating/airless, -/area/station/solars/port) "bSd" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, @@ -9568,7 +9567,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "ckr" = ( /obj/structure/table, /obj/item/assembly/timer{ @@ -10564,7 +10563,7 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "cCr" = ( /obj/structure/cable, /obj/machinery/light/warm/directional/east, @@ -10958,7 +10957,7 @@ dir = 1 }, /turf/open/openspace, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "cII" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -12237,7 +12236,7 @@ /obj/effect/turf_decal/stripes/box, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "deU" = ( /obj/structure/closet/emcloset, /obj/machinery/light/dim/directional/west, @@ -13990,7 +13989,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light/dim/directional/south, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "dMw" = ( /obj/machinery/door/airlock/hatch{ name = "Emergency Exit" @@ -14954,7 +14953,7 @@ /obj/structure/ladder, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "edE" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner{ dir = 8 @@ -15514,7 +15513,7 @@ /obj/structure/cable, /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "eqK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -16131,7 +16130,7 @@ /obj/effect/turf_decal/stripes/box, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "eBd" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 9 @@ -16912,6 +16911,9 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) +"eSh" = ( +/turf/closed/wall, +/area/station/solars/starboard/fore/asteriod) "eSj" = ( /obj/structure/table, /obj/item/storage/box/firingpins, @@ -17508,7 +17510,7 @@ }, /obj/structure/cable, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "feP" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 5 @@ -18486,7 +18488,7 @@ /obj/structure/cable/layer1, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "fvM" = ( /obj/structure/stairs/north, /turf/open/floor/iron/stairs/medium, @@ -18865,7 +18867,8 @@ /area/station/commons/vacant_room) "fEZ" = ( /obj/structure/noticeboard/directional/north, -/obj/structure/aquarium/lawyer, +/obj/item/fish_tank/lawyer, +/obj/structure/table/wood, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/wood, @@ -19613,7 +19616,7 @@ /obj/structure/cable/multilayer/connected, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "fSM" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 @@ -20059,7 +20062,7 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "gbl" = ( /obj/structure/chair/office{ dir = 1 @@ -21067,7 +21070,7 @@ }, /obj/structure/cable, /turf/open/openspace, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "gtZ" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/machinery/airalarm/directional/south, @@ -21370,7 +21373,7 @@ /obj/structure/cable/layer1, /obj/structure/cable, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "gAH" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 1 @@ -21759,7 +21762,7 @@ /obj/effect/turf_decal/sand/plating, /obj/machinery/light/small/directional/south, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "gGV" = ( /obj/structure/table, /obj/item/instrument/harmonica, @@ -23358,7 +23361,7 @@ /obj/effect/turf_decal/sand/plating, /obj/structure/cable, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "hmb" = ( /obj/effect/turf_decal/tile/bar{ dir = 8 @@ -24057,7 +24060,7 @@ /obj/structure/cable, /obj/structure/cable/layer1, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "hDF" = ( /obj/machinery/computer/apc_control{ dir = 1 @@ -26446,17 +26449,6 @@ /obj/machinery/status_display/evac/directional/east, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) -"ixH" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/space/openspace, -/area/space/nearstation) "ixO" = ( /obj/structure/chair/comfy/brown{ dir = 8; @@ -27806,7 +27798,7 @@ }, /obj/structure/cable, /turf/open/openspace, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "iXx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /obj/structure/lattice, @@ -28135,7 +28127,7 @@ "jcT" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "jde" = ( /obj/machinery/door/airlock/engineering{ name = "Vacant Office A" @@ -28336,7 +28328,7 @@ /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "jgn" = ( /obj/structure/table/reinforced, /obj/structure/displaycase/forsale/kitchen{ @@ -31477,7 +31469,7 @@ /obj/structure/cable/multilayer/multiz, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "kgG" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -31904,7 +31896,7 @@ "koo" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "koq" = ( /obj/machinery/air_sensor/oxygen_tank, /turf/open/floor/engine/o2, @@ -34502,7 +34494,7 @@ /obj/structure/cable/multilayer/connected, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "lhV" = ( /obj/structure/displaycase/trophy, /obj/machinery/light/warm/directional/west, @@ -35165,7 +35157,7 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "lsx" = ( /obj/structure/chair/stool/directional/north, /obj/effect/turf_decal/trimline/dark_blue/corner{ @@ -35592,7 +35584,7 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "lzo" = ( /obj/machinery/door/window/left/directional/south, /turf/open/floor/grass, @@ -36325,7 +36317,7 @@ /obj/structure/cable/layer1, /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "lMJ" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -36361,7 +36353,7 @@ /obj/effect/turf_decal/sand/plating, /obj/structure/cable/layer1, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "lMZ" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 @@ -37924,7 +37916,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/cable, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "mns" = ( /obj/effect/turf_decal/trimline/brown/filled/corner{ dir = 1 @@ -38297,7 +38289,7 @@ }, /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "muZ" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -38909,7 +38901,7 @@ pixel_y = 8 }, /obj/structure/window/reinforced/spawner/directional/north, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/iron/dark, /area/station/medical/morgue) @@ -39094,7 +39086,7 @@ "mJF" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "mJG" = ( /obj/structure/chair/stool/bar/directional/north, /obj/effect/turf_decal/siding/thinplating{ @@ -39122,7 +39114,7 @@ /obj/structure/cable/layer1, /obj/structure/cable, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "mKh" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -39595,7 +39587,7 @@ }, /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "mWC" = ( /obj/machinery/holopad, /obj/machinery/firealarm/directional/north, @@ -39927,7 +39919,7 @@ /obj/effect/turf_decal/sand/plating, /obj/structure/cable, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "ncF" = ( /turf/closed/wall, /area/station/maintenance/tram/left) @@ -40055,7 +40047,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "neC" = ( /obj/structure/railing{ dir = 1 @@ -40475,7 +40467,7 @@ "nkU" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "nle" = ( /obj/machinery/door/airlock/security{ name = "Evidence Storage" @@ -41340,7 +41332,7 @@ /obj/structure/cable, /obj/structure/cable/layer1, /turf/open/floor/plating/airless, -/area/station/solars/port) +/area/station/solars/port/asteriod) "nzO" = ( /mob/living/carbon/human/species/monkey, /turf/open/misc/dirt/jungle{ @@ -42045,7 +42037,7 @@ "nNw" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "nNz" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -42080,7 +42072,7 @@ /area/station/tcommsat/server) "nOd" = ( /turf/open/openspace, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "nOe" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 6 @@ -43265,7 +43257,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "ojQ" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/turf_decal/trimline/blue/filled/corner{ @@ -44029,7 +44021,7 @@ /obj/structure/cable, /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "oAn" = ( /obj/machinery/airlock_sensor/incinerator_ordmix{ pixel_x = 23; @@ -44433,7 +44425,7 @@ /turf/open/openspace, /area/station/hallway/primary/tram/center) "oKZ" = ( -/mob/living/simple_animal/bot/floorbot, +/mob/living/basic/bot/repairbot, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -45348,7 +45340,7 @@ /obj/structure/cable, /obj/machinery/light/small/directional/west, /turf/open/floor/plating/airless, -/area/station/solars/starboard/fore) +/area/station/solars/starboard/fore/asteriod) "pdf" = ( /obj/machinery/camera/directional/north{ network = list("ss13","engineering","Security"); @@ -45774,7 +45766,7 @@ /area/station/cargo/miningdock) "plk" = ( /turf/closed/wall/r_wall, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "pln" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 8 @@ -46053,7 +46045,7 @@ /obj/structure/cable, /obj/machinery/light/floor, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "ppU" = ( /obj/structure/railing, /obj/effect/turf_decal/trimline/tram/filled/line{ @@ -47367,7 +47359,7 @@ /obj/structure/cable/layer1, /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "pKZ" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -48161,7 +48153,7 @@ }, /obj/structure/railing, /turf/open/openspace, -/area/station/solars/port) +/area/station/maintenance/solars/port) "pZH" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -49050,6 +49042,9 @@ /obj/machinery/microwave, /turf/open/floor/iron/white, /area/station/commons/vacant_room) +"qoG" = ( +/turf/closed/wall, +/area/station/solars/port/asteriod) "qoX" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 6 @@ -49853,15 +49848,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/miningdock) -"qCU" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/power/solar{ - name = "Starboard Solar Array"; - id = "forestarboard" - }, -/obj/structure/cable, -/turf/open/space/basic, -/area/space/nearstation) "qCW" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 1 @@ -51054,7 +51040,7 @@ dir = 8 }, /turf/open/openspace, -/area/station/solars/port) +/area/station/maintenance/solars/port) "qZx" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/decal/cleanable/dirt, @@ -54169,7 +54155,7 @@ }, /obj/structure/railing, /turf/open/openspace, -/area/station/solars/port) +/area/station/maintenance/solars/port) "sgB" = ( /obj/effect/turf_decal/trimline/red/filled/corner, /obj/structure/cable, @@ -54833,7 +54819,7 @@ /area/station/engineering/supermatter/room) "srF" = ( /turf/open/openspace, -/area/station/solars/port) +/area/station/maintenance/solars/port) "srN" = ( /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/structure/cable, @@ -55584,7 +55570,7 @@ "sEZ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "sFc" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -55656,7 +55642,7 @@ /obj/structure/cable, /obj/machinery/light/floor, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "sGO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58646,7 +58632,7 @@ /turf/open/floor/iron/white, /area/station/science/genetics) "tIi" = ( -/mob/living/simple_animal/bot/floorbot, +/mob/living/basic/bot/repairbot, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "tIk" = ( @@ -61856,7 +61842,7 @@ /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "uIk" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible, /obj/effect/turf_decal/trimline/purple/filled/line{ @@ -62298,7 +62284,7 @@ /obj/structure/table/glass, /obj/effect/turf_decal/trimline/blue/filled/line, /obj/item/radio/intercom/directional/south, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/white, /area/station/medical/surgery/fore) "uPv" = ( @@ -63602,7 +63588,7 @@ /obj/structure/cable/layer1, /obj/effect/turf_decal/sand/plating, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "vob" = ( /obj/structure/bookcase/random/religion, /turf/open/floor/iron/dark, @@ -64162,7 +64148,7 @@ /obj/structure/cable, /obj/machinery/light/floor, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "vwT" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -64327,11 +64313,11 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "vAx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, -/area/station/solars/port) +/area/station/maintenance/solars/port) "vAF" = ( /obj/structure/chair, /obj/effect/turf_decal/trimline/neutral/filled/line, @@ -65377,7 +65363,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light/dim/directional/north, /turf/open/floor/catwalk_floor, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "vTj" = ( /obj/effect/turf_decal/trimline/neutral/warning, /obj/machinery/door/window/brigdoor/left/directional/north{ @@ -65690,7 +65676,7 @@ /obj/structure/railing, /obj/structure/cable, /turf/open/openspace, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "vZZ" = ( /obj/machinery/duct, /obj/structure/cable, @@ -69770,7 +69756,7 @@ "xCe" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/station/solars/port) +/area/station/maintenance/solars/port) "xCm" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/blue/anticorner/contrasted, @@ -69817,7 +69803,7 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, -/area/station/solars/starboard/fore) +/area/station/maintenance/solars/starboard/fore) "xDJ" = ( /obj/machinery/light/cold/directional/south, /turf/open/floor/iron/freezer, @@ -70578,7 +70564,7 @@ dir = 8 }, /turf/open/openspace, -/area/station/solars/port) +/area/station/maintenance/solars/port) "xTM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/nitrogen_output{ dir = 1 @@ -71003,7 +70989,7 @@ dir = 1 }, /obj/item/radio/intercom/directional/north, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) "yct" = ( @@ -91048,7 +91034,7 @@ aac aac aac gGy -qEH +qoG aac aac aac @@ -93882,7 +93868,7 @@ aST ncE ncE ncE -bRE +jcT oQf oQf oQf @@ -95153,7 +95139,7 @@ aac aac aac aac -jcT +lMS lMS lMS aac @@ -107143,7 +107129,7 @@ aac aac aac aac -csA +eSh aac aac aac @@ -110743,7 +110729,7 @@ aac aac aac aac -csA +eSh nkU aac aac @@ -113045,7 +113031,7 @@ vXM pZH vXM vXM -qCU +bwp vXM vXM aev @@ -114343,7 +114329,7 @@ aac aac aac hlS -csA +eSh aac aac aac @@ -117943,7 +117929,7 @@ aac aac aac aac -csA +eSh aac aac aac @@ -159682,7 +159668,7 @@ opb oOJ oOJ stK -ixH +gnp sOg oOJ uXM diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index 66345284283e1..01d06908ce85d 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -151,6 +151,9 @@ /obj/item/clothing/suit/hooded/ablative, /obj/item/gun/energy/temperature/security, /obj/item/gun/energy/ionrifle, +/obj/item/gun/ballistic/automatic/battle_rifle{ + pixel_y = 3 + }, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, @@ -2165,9 +2168,7 @@ /area/station/commons/fitness/recreation) "aJM" = ( /obj/machinery/light/small/directional/north, -/obj/item/surgery_tray/full/morgue{ - is_portable = 0 - }, +/obj/effect/spawner/surgery_tray/full/morgue/deployed, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) "aJP" = ( @@ -4663,7 +4664,7 @@ /obj/structure/chair{ dir = 4 }, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/white/small, /area/station/science/lobby) @@ -5609,7 +5610,7 @@ /area/station/security/lockers) "bYo" = ( /obj/machinery/mecha_part_fabricator{ - dir = 1 + drop_direction = 1 }, /obj/effect/turf_decal/delivery, /obj/structure/sign/poster/contraband/borg_fancy_1/directional/south, @@ -8907,6 +8908,7 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) "dkq" = ( @@ -11178,7 +11180,7 @@ /area/station/service/janitor) "dWb" = ( /obj/structure/window/reinforced/spawner/directional/west, -/mob/living/simple_animal/bot/floorbot, +/mob/living/basic/bot/repairbot, /obj/effect/turf_decal/stripes{ dir = 6 }, @@ -14049,6 +14051,8 @@ /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) "eZQ" = ( @@ -17845,6 +17849,8 @@ /area/station/engineering/atmos/upper) "grl" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/lobby) "grm" = ( @@ -19114,6 +19120,8 @@ "gMK" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) "gNd" = ( @@ -20275,6 +20283,12 @@ /obj/structure/lattice, /turf/open/misc/asteroid/airless, /area/space/nearstation) +"hgX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "hhd" = ( /obj/machinery/door/poddoor/shutters{ id = "ordauxgarage"; @@ -21681,7 +21695,7 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, @@ -26289,6 +26303,8 @@ dir = 1 }, /obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/lobby) "jrm" = ( @@ -28847,6 +28863,8 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) "kjv" = ( @@ -33126,6 +33144,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"lIW" = ( +/obj/item/stack/cable_coil{ + amount = 1 + }, +/turf/open/floor/plating/airless, +/area/station/solars/port/fore) "lIZ" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/vending/boozeomat, @@ -34365,7 +34389,7 @@ "mhI" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/item/surgery_tray/full/deployed, +/obj/effect/spawner/surgery_tray/full/deployed, /obj/effect/turf_decal/tile/blue/full, /obj/machinery/light_switch/directional/south, /turf/open/floor/iron/white, @@ -34863,7 +34887,7 @@ /area/station/engineering/atmos) "moT" = ( /obj/effect/turf_decal/siding/white, -/obj/item/ammo_casing/a357/spent, +/obj/item/ammo_casing/c357/spent, /turf/open/floor/iron/white/small, /area/station/science/lobby) "moU" = ( @@ -35988,6 +36012,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) "mJL" = ( @@ -36694,6 +36719,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/commons/dorms) +"mXF" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/item/stack/cable_coil{ + amount = 1 + }, +/turf/open/floor/plating/airless, +/area/station/solars/starboard/fore) "mXJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38103,7 +38135,7 @@ /turf/open/floor/glass/reinforced, /area/station/security/prison) "nvT" = ( -/obj/item/surgery_tray/full/deployed, +/obj/effect/spawner/surgery_tray/full/deployed, /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -39502,7 +39534,7 @@ /area/station/maintenance/central/lesser) "oac" = ( /obj/machinery/mecha_part_fabricator{ - dir = 1 + drop_direction = 1 }, /obj/effect/turf_decal/delivery, /obj/machinery/digital_clock/directional/south, @@ -41877,6 +41909,7 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) "oUb" = ( @@ -47752,6 +47785,7 @@ "qXy" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/lobby) "qXB" = ( @@ -48038,13 +48072,6 @@ "rcl" = ( /turf/closed/wall/r_wall, /area/station/security/execution/transfer) -"rcp" = ( -/obj/machinery/power/solar{ - id = "forestarboard"; - name = "Fore-Starboard Solar Array" - }, -/turf/open/floor/iron/solarpanel/airless, -/area/station/solars/starboard/fore) "rcs" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -49260,6 +49287,11 @@ "ruZ" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/engine) +"rvg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/white, +/area/station/science/lobby) "rvo" = ( /obj/machinery/light/small/dim/directional/west, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -55454,6 +55486,7 @@ /area/station/hallway/secondary/exit/departure_lounge) "tAt" = ( /obj/machinery/power/smes, +/obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) "tAw" = ( @@ -56116,6 +56149,8 @@ "tLH" = ( /obj/item/storage/fancy/candle_box, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) "tLI" = ( @@ -58015,6 +58050,13 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central) +"urS" = ( +/obj/structure/lattice/catwalk, +/obj/item/stack/cable_coil{ + amount = 1 + }, +/turf/open/space/basic, +/area/station/solars/port/fore) "urT" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -58281,7 +58323,7 @@ /turf/open/openspace, /area/station/hallway/secondary/exit/departure_lounge) "uxw" = ( -/obj/item/surgery_tray/full/deployed, +/obj/effect/spawner/surgery_tray/full/deployed, /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/airalarm/directional/west, /obj/effect/decal/cleanable/dirt/dust, @@ -63396,6 +63438,10 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) +"wqG" = ( +/obj/structure/lattice/catwalk, +/turf/open/openspace/telecomms, +/area/station/science/xenobiology) "wqK" = ( /obj/structure/table, /obj/item/circular_saw, @@ -64653,6 +64699,8 @@ /area/station/command/heads_quarters/captain/private) "wMB" = ( /obj/effect/turf_decal/siding, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured, /area/station/science/lobby) "wME" = ( @@ -65155,6 +65203,8 @@ "wWY" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) "wWZ" = ( @@ -65331,7 +65381,7 @@ /turf/open/floor/circuit/green/telecomms/mainframe, /area/station/tcommsat/server) "wZU" = ( -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large/old, /turf/open/misc/asteroid, /area/station/asteroid) "xad" = ( @@ -67107,6 +67157,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/lesser) "xFt" = ( @@ -68179,7 +68230,7 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/mapping_helpers/broken_floor, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) "ybh" = ( @@ -77684,7 +77735,7 @@ rGO opZ opZ fYX -rGO +urS opZ opZ opZ @@ -77942,7 +77993,7 @@ sKL rGO nMk rGO -nMk +lIW rGO sKL rGO @@ -78199,7 +78250,7 @@ opZ opZ fYX rGO -fYX +opZ opZ opZ opZ @@ -78455,8 +78506,8 @@ rGO sKL rGO nMk -rGO -nMk +urS +lIW rGO sKL rGO @@ -78713,10 +78764,10 @@ opZ opZ fYX rGO -fYX opZ opZ -fYX +opZ +opZ cLf iUF dUc @@ -102876,7 +102927,7 @@ vxX vxX gvF dnW -iKc +rvg slL iKc cRV @@ -103133,7 +103184,7 @@ uJt vfJ gvF eBY -iKc +rvg vuq hPH iKc @@ -103390,7 +103441,7 @@ wWY kju wMB jrd -iKc +rvg slL slL slL @@ -103643,7 +103694,7 @@ cLf vxX uJt eJr -uba +hgX vfJ aTU jUi @@ -112110,7 +112161,7 @@ cLS qSb qSb qSb -qSb +mXF qSb hsz hsz @@ -112358,7 +112409,7 @@ shs cLf pbP rst -rcp +pih rst pih rst @@ -112615,7 +112666,7 @@ shs cLf cLf cLf -rcp +pih rst pih rst @@ -186170,9 +186221,9 @@ qXj lKY qUi wmO -ybO -ybO -ybO +wqG +wqG +wqG wmO rmi lKY @@ -186427,9 +186478,9 @@ qXj avA nVm wmO -ybO -ybO -ybO +wqG +wqG +wqG wmO xGG uBm @@ -186684,9 +186735,9 @@ qXj lKY qGD wmO -ybO -ybO -ybO +wqG +wqG +wqG wmO bLI lKY diff --git a/_maps/modular_generic/ice_l_storage.dmm b/_maps/modular_generic/ice_l_storage.dmm index 6aca9bec648fb..a130f69cdd1b7 100644 --- a/_maps/modular_generic/ice_l_storage.dmm +++ b/_maps/modular_generic/ice_l_storage.dmm @@ -213,7 +213,7 @@ "M" = ( /obj/effect/turf_decal/bot/right, /obj/structure/closet/crate/large, -/obj/item/crowbar/large/heavy, +/obj/item/crowbar/large/twenty_force, /turf/open/floor/plating, /area/template_noop) "N" = ( diff --git a/_maps/modular_generic/station_l_morgue.dmm b/_maps/modular_generic/station_l_morgue.dmm index 4b4eb63458d1b..3b5adf14d410b 100644 --- a/_maps/modular_generic/station_l_morgue.dmm +++ b/_maps/modular_generic/station_l_morgue.dmm @@ -361,7 +361,7 @@ dir = 4 }, /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/surgery_tray/full/morgue, +/obj/effect/spawner/surgery_tray/full/morgue, /obj/structure/railing{ dir = 4 }, diff --git a/_maps/northstar.json b/_maps/northstar.json deleted file mode 100644 index fdae8ac42f387..0000000000000 --- a/_maps/northstar.json +++ /dev/null @@ -1,32 +0,0 @@ - -{ - "version": 1, - "map_name": "NorthStar", - "map_path": "map_files/NorthStar", - "map_file": "north_star.dmm", - "shuttles": { - "emergency": "emergency_northstar", - "ferry": "ferry_fancy", - "cargo": "cargo_northstar", - "whiteship": "whiteship_delta" - }, - "space_ruin_levels": 3, - "space_empty_levels": 2, - "traits": [ - { - "Linkage": "Cross" - }, - { - "Baseturf": "/turf/open/openspace", - "Linkage": "Cross" - }, - { - "Baseturf": "/turf/open/openspace", - "Linkage": "Cross" - }, - { - "Baseturf": "/turf/open/openspace", - "Linkage": "Cross" - } - ] -} diff --git a/_maps/shuttles/arrival_northstar.dmm b/_maps/shuttles/arrival_northstar.dmm deleted file mode 100644 index fadde8f9df42b..0000000000000 --- a/_maps/shuttles/arrival_northstar.dmm +++ /dev/null @@ -1,278 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron_dark, -/area/shuttle/arrival) -"c" = ( -/obj/machinery/door/airlock/survival_pod/glass{ - name = "Arrivals Shuttle Airlock" - }, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/shuttle/arrival) -"d" = ( -/obj/machinery/requests_console/directional/north{ - department = "Arrivals shuttle"; - name = "Arrival Shuttle Requests Console" - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/medkit/regular{ - pixel_y = 4 - }, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"g" = ( -/obj/machinery/power/shuttle_engine/propulsion/burst/right{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"j" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"k" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/medkit/o2, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"n" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"q" = ( -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"r" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"s" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"t" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/shuttle/arrival) -"u" = ( -/obj/effect/turf_decal/trimline/red/corner, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/turf/open/floor/pod, -/area/shuttle/arrival) -"v" = ( -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"w" = ( -/obj/machinery/power/shuttle_engine/propulsion/burst/left{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"y" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"z" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/trimline/red/warning{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"A" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/turf/open/floor/pod, -/area/shuttle/arrival) -"C" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 1 - }, -/turf/open/floor/pod, -/area/shuttle/arrival) -"D" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals{ - name = "northstar arrivals shuttle" - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"E" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"F" = ( -/obj/structure/chair/comfy/shuttle, -/obj/machinery/light/red/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/shuttle/arrival) -"H" = ( -/obj/machinery/power/shuttle_engine/propulsion{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"J" = ( -/obj/effect/turf_decal/trimline/red/warning{ - dir = 1 - }, -/obj/machinery/light/red/directional/south, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"L" = ( -/obj/machinery/power/shuttle_engine/heater{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"M" = ( -/obj/effect/turf_decal/trimline/red/corner{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"N" = ( -/obj/structure/chair/comfy/shuttle, -/turf/open/floor/catwalk_floor/iron_dark, -/area/shuttle/arrival) -"P" = ( -/obj/effect/turf_decal/trimline/red/warning, -/turf/open/floor/pod, -/area/shuttle/arrival) -"V" = ( -/obj/structure/chair/comfy/shuttle, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/catwalk_floor/iron_dark, -/area/shuttle/arrival) -"W" = ( -/obj/effect/turf_decal/trimline/red/corner, -/turf/open/floor/pod/dark, -/area/shuttle/arrival) -"Z" = ( -/obj/effect/spawner/structure/window/survival_pod, -/obj/structure/fans/tiny/invisible, -/turf/open/floor/plating, -/area/shuttle/arrival) - -(1,1,1) = {" -a -t -Z -Z -t -a -"} -(2,1,1) = {" -t -t -v -q -t -t -"} -(3,1,1) = {" -t -k -W -E -s -t -"} -(4,1,1) = {" -t -F -P -b -z -t -"} -(5,1,1) = {" -t -N -P -b -n -Z -"} -(6,1,1) = {" -t -d -u -A -C -c -"} -(7,1,1) = {" -t -N -P -b -n -Z -"} -(8,1,1) = {" -t -V -P -b -J -t -"} -(9,1,1) = {" -t -j -y -r -M -t -"} -(10,1,1) = {" -t -L -L -L -L -t -"} -(11,1,1) = {" -t -g -D -H -w -t -"} diff --git a/_maps/shuttles/cargo_northstar.dmm b/_maps/shuttles/cargo_northstar.dmm deleted file mode 100644 index 8eb2df120090b..0000000000000 --- a/_maps/shuttles/cargo_northstar.dmm +++ /dev/null @@ -1,295 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"b" = ( -/obj/machinery/power/shuttle_engine/propulsion/burst/right, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"c" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"d" = ( -/obj/machinery/button/door/directional/east{ - id = "QMLoaddoor"; - name = "Loading Doors"; - pixel_y = -8 - }, -/obj/machinery/button/door/directional/east{ - id = "QMLoaddoor2"; - name = "Loading Doors"; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/conveyor_switch/oneway{ - id = "QMLoad" - }, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"f" = ( -/obj/machinery/conveyor{ - dir = 5; - id = "QMLoad" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"g" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "Supply Dock Loading Door" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"h" = ( -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/shuttle/supply) -"i" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/shuttle/supply) -"j" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"k" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"n" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"o" = ( -/obj/machinery/power/shuttle_engine/propulsion/burst/left, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"q" = ( -/obj/machinery/power/shuttle_engine/heater{ - icon_state = "router" - }, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"s" = ( -/turf/template_noop, -/area/template_noop) -"u" = ( -/obj/machinery/power/shuttle_engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"v" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"w" = ( -/obj/effect/spawner/structure/window/survival_pod, -/turf/open/floor/plating, -/area/shuttle/supply) -"x" = ( -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"B" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"C" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"D" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"G" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/machinery/light/red/directional/west, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"I" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"K" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" - }, -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "Supply Dock Loading Door" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"M" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"N" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"O" = ( -/obj/effect/mapping_helpers/airlock/access/all/supply/general, -/obj/machinery/door/airlock/survival_pod/glass{ - name = "Supply Shuttle Airlock" - }, -/obj/docking_port/mobile/supply, -/turf/open/floor/catwalk_floor/iron, -/area/shuttle/supply) -"Q" = ( -/obj/machinery/conveyor{ - dir = 9; - id = "QMLoad" - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/shuttle/supply) -"V" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"Y" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) -"Z" = ( -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/light/red/directional/west, -/turf/open/floor/iron/smooth, -/area/shuttle/supply) - -(1,1,1) = {" -h -h -i -i -i -i -i -i -i -i -s -"} -(2,1,1) = {" -h -f -Q -G -v -v -Z -C -x -I -o -"} -(3,1,1) = {" -w -c -j -Y -k -N -k -n -D -q -u -"} -(4,1,1) = {" -w -c -j -Y -N -k -N -n -M -q -u -"} -(5,1,1) = {" -h -c -j -d -B -B -B -V -x -I -b -"} -(6,1,1) = {" -h -g -K -h -O -w -w -h -h -i -s -"} diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm index cdf903f034595..1cf44657848d0 100644 --- a/_maps/shuttles/emergency_birdshot.dmm +++ b/_maps/shuttles/emergency_birdshot.dmm @@ -749,7 +749,7 @@ /area/shuttle/escape) "Ko" = ( /obj/structure/table/optable, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/mask/surgical, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/mineral/titanium/white, diff --git a/_maps/shuttles/emergency_donut.dmm b/_maps/shuttles/emergency_donut.dmm index f81c084e90bf6..27f9cd7f1ace4 100644 --- a/_maps/shuttles/emergency_donut.dmm +++ b/_maps/shuttles/emergency_donut.dmm @@ -317,7 +317,7 @@ /turf/open/floor/plating/airless, /area/shuttle/escape) "ed" = ( -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/mask/surgical, /obj/structure/table/optable, diff --git a/_maps/shuttles/emergency_fish.dmm b/_maps/shuttles/emergency_fish.dmm index b99aa01b096bf..43ec2aa162013 100644 --- a/_maps/shuttles/emergency_fish.dmm +++ b/_maps/shuttles/emergency_fish.dmm @@ -844,7 +844,7 @@ /area/shuttle/escape) "VD" = ( /obj/structure/table/glass, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = 6 }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ diff --git a/_maps/shuttles/emergency_humpback.dmm b/_maps/shuttles/emergency_humpback.dmm index 195f342cd3caa..89ab755acbf55 100644 --- a/_maps/shuttles/emergency_humpback.dmm +++ b/_maps/shuttles/emergency_humpback.dmm @@ -418,7 +418,7 @@ /area/shuttle/escape) "zn" = ( /obj/structure/table, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/iron/showroomfloor, /area/shuttle/escape) "zr" = ( diff --git a/_maps/shuttles/emergency_lance.dmm b/_maps/shuttles/emergency_lance.dmm index c17d1767b13af..2f62bc945bdd9 100644 --- a/_maps/shuttles/emergency_lance.dmm +++ b/_maps/shuttles/emergency_lance.dmm @@ -62,7 +62,7 @@ /area/shuttle/escape) "bV" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ dir = 8 @@ -125,7 +125,7 @@ /area/shuttle/escape) "dW" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -287,7 +287,7 @@ /area/shuttle/escape) "jo" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ dir = 8 @@ -533,7 +533,7 @@ /area/shuttle/escape) "pu" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -573,7 +573,7 @@ /area/shuttle/escape) "qe" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -609,7 +609,7 @@ /area/shuttle/escape) "rw" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -682,7 +682,7 @@ /area/shuttle/escape) "uK" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -868,7 +868,7 @@ /area/shuttle/escape) "Cx" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -887,7 +887,7 @@ /area/shuttle/escape) "CR" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -968,8 +968,8 @@ /obj/item/book/manual/wiki/surgery{ pixel_x = -15 }, -/obj/item/surgery_tray/full, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full{ pixel_x = 5 }, /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ @@ -1199,7 +1199,7 @@ /area/shuttle/escape) "LD" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index 73c5f42b38f06..89579283e9317 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -227,7 +227,7 @@ "W" = ( /obj/structure/table, /obj/item/clothing/suit/apron/surgical, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /turf/open/floor/mineral/titanium/white, /area/shuttle/escape) "X" = ( diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm index 0f793c714753e..16e1b10721268 100644 --- a/_maps/shuttles/emergency_nature.dmm +++ b/_maps/shuttles/emergency_nature.dmm @@ -497,7 +497,7 @@ /area/shuttle/escape) "sF" = ( /obj/effect/turf_decal/trimline/blue/filled/line, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = 5 }, /obj/structure/rack, diff --git a/_maps/shuttles/emergency_nebula.dmm b/_maps/shuttles/emergency_nebula.dmm index 7b729f72167f4..39359e5c29e9d 100644 --- a/_maps/shuttles/emergency_nebula.dmm +++ b/_maps/shuttles/emergency_nebula.dmm @@ -2447,7 +2447,7 @@ "XV" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom/directional/east, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/machinery/defibrillator_mount/directional/south, /obj/machinery/light/small/directional/south, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, diff --git a/_maps/shuttles/emergency_northstar.dmm b/_maps/shuttles/emergency_northstar.dmm index 798a4d9671a4e..672dd9b58e23b 100644 --- a/_maps/shuttles/emergency_northstar.dmm +++ b/_maps/shuttles/emergency_northstar.dmm @@ -127,7 +127,7 @@ "nC" = ( /obj/structure/table/reinforced/rglass, /obj/item/defibrillator/loaded, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = 13 }, /obj/effect/turf_decal/tile/blue/anticorner{ diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 7e3937568001f..7eb255fc2d42d 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -742,7 +742,7 @@ /area/shuttle/escape) "cd" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /turf/open/floor/plating, /area/shuttle/escape) @@ -1456,7 +1456,7 @@ /area/shuttle/escape) "eo" = ( /obj/machinery/door/airlock/external/ruin{ - name = "Emegency Shuttle External Airlock" + name = "Emergency Shuttle External Airlock" }, /obj/docking_port/mobile/emergency{ name = "CentCom Raven Cruiser" diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm index 33baf94c7ecfe..a00f6804bbcb8 100644 --- a/_maps/shuttles/emergency_russiafightpit.dmm +++ b/_maps/shuttles/emergency_russiafightpit.dmm @@ -438,7 +438,7 @@ "iJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/gloves/fingerless, /turf/open/floor/iron, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency_shadow.dmm index 5afa72919cb28..f5c2cd049f11d 100644 --- a/_maps/shuttles/emergency_shadow.dmm +++ b/_maps/shuttles/emergency_shadow.dmm @@ -1000,7 +1000,7 @@ "Sb" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner/directional/west, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/mask/surgical, /obj/item/clothing/gloves/latex/nitrile{ diff --git a/_maps/shuttles/emergency_tram.dmm b/_maps/shuttles/emergency_tram.dmm index 5ec40d242d670..38b2608865be4 100644 --- a/_maps/shuttles/emergency_tram.dmm +++ b/_maps/shuttles/emergency_tram.dmm @@ -203,7 +203,7 @@ /area/shuttle/escape) "aX" = ( /obj/structure/table/optable, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/mask/surgical, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_tranquility.dmm b/_maps/shuttles/emergency_tranquility.dmm index ae3924becbc02..0de15be89cbc2 100644 --- a/_maps/shuttles/emergency_tranquility.dmm +++ b/_maps/shuttles/emergency_tranquility.dmm @@ -2530,7 +2530,7 @@ /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/structure/table, /obj/item/lazarus_injector, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/item/clothing/gloves/latex/nitrile{ pixel_y = 4 }, diff --git a/_maps/shuttles/hunter_mi13_foodtruck.dmm b/_maps/shuttles/hunter_mi13_foodtruck.dmm index 34e6bb730ca61..4dca72eaae8c3 100644 --- a/_maps/shuttles/hunter_mi13_foodtruck.dmm +++ b/_maps/shuttles/hunter_mi13_foodtruck.dmm @@ -15,7 +15,7 @@ /area/shuttle/hunter/mi13_foodtruck) "af" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/structure/sign/poster/contraband/hacking_guide/directional/south, /turf/open/floor/circuit/red/off, /area/shuttle/hunter/mi13_foodtruck) diff --git a/_maps/shuttles/mining_common_northstar.dmm b/_maps/shuttles/mining_common_northstar.dmm deleted file mode 100644 index 5e24739c363d5..0000000000000 --- a/_maps/shuttles/mining_common_northstar.dmm +++ /dev/null @@ -1,163 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"d" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"e" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/plating/airless, -/area/shuttle/mining) -"k" = ( -/obj/effect/turf_decal/caution/stand_clear/red{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"l" = ( -/obj/effect/spawner/structure/window/survival_pod, -/turf/open/floor/plating, -/area/shuttle/mining) -"q" = ( -/obj/machinery/power/shuttle_engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/mining) -"r" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/structure/sign/poster/official/plasma_effects/directional/south, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"t" = ( -/turf/open/floor/pod/light, -/area/shuttle/mining) -"v" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/shuttle/mining) -"z" = ( -/obj/structure/closet/crate, -/obj/effect/turf_decal/trimline/brown, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/machinery/light/small/red/directional/south, -/turf/open/floor/pod/dark, -/area/shuttle/mining) -"A" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"C" = ( -/obj/machinery/door/airlock/survival_pod/glass{ - name = "Public Mining Shuttle" - }, -/obj/effect/turf_decal/bot_red, -/obj/docking_port/mobile{ - dir = 4; - name = "lavaland shuttle"; - port_direction = 8; - shuttle_id = "mining_common" - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"D" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"E" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium/survival, -/area/shuttle/mining) -"G" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/trimline/brown, -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/turf/open/floor/pod/dark, -/area/shuttle/mining) -"J" = ( -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"P" = ( -/obj/machinery/computer/shuttle/mining/common, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"T" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"U" = ( -/obj/structure/table/reinforced, -/obj/item/radio, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/pod/light, -/area/shuttle/mining) - -(1,1,1) = {" -v -l -l -C -l -v -a -"} -(2,1,1) = {" -l -P -T -k -z -v -v -"} -(3,1,1) = {" -l -D -J -t -G -e -q -"} -(4,1,1) = {" -v -U -A -d -r -v -v -"} -(5,1,1) = {" -v -l -l -E -l -v -a -"} diff --git a/_maps/shuttles/mining_northstar.dmm b/_maps/shuttles/mining_northstar.dmm deleted file mode 100644 index 48c194b6d4582..0000000000000 --- a/_maps/shuttles/mining_northstar.dmm +++ /dev/null @@ -1,271 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/obj/effect/turf_decal/bot_red, -/obj/machinery/door/airlock/survival_pod{ - name = "Mining Shuttle" - }, -/obj/docking_port/mobile{ - dir = 4; - name = "mining shuttle"; - port_direction = 8; - shuttle_id = "mining" - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"c" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/emergency, -/obj/structure/sign/warning/xeno_mining/directional/north, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"d" = ( -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen{ - pixel_x = 3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/head/utility/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/utility/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/utility/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/utility/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/utility/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/structure/closet/crate/internals, -/obj/item/pickaxe/emergency, -/obj/item/pickaxe/emergency, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown, -/obj/machinery/light/small/red/directional/south, -/turf/open/floor/pod/dark, -/area/shuttle/mining) -"j" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/end{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"l" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 5 - }, -/obj/structure/sign/poster/official/work_for_a_future/directional/north, -/obj/machinery/light/small/red/directional/north, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"m" = ( -/obj/effect/turf_decal/caution/stand_clear/red{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"s" = ( -/obj/machinery/computer/shuttle/mining, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"z" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/brown, -/turf/open/floor/pod/dark, -/area/shuttle/mining) -"A" = ( -/obj/machinery/power/shuttle_engine/propulsion, -/turf/open/floor/plating, -/area/shuttle/mining) -"D" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/end, -/obj/machinery/light/small/red/directional/south, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"F" = ( -/obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/crowbar/red, -/obj/item/clothing/mask/gas, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"G" = ( -/turf/open/floor/pod/light, -/area/shuttle/mining) -"I" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/shuttle/mining) -"K" = ( -/obj/effect/turf_decal/trimline/purple/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/line, -/turf/open/floor/pod/light, -/area/shuttle/mining) -"P" = ( -/turf/template_noop, -/area/template_noop) -"R" = ( -/obj/effect/spawner/structure/window/survival_pod, -/turf/open/floor/plating, -/area/shuttle/mining) -"S" = ( -/obj/machinery/power/shuttle_engine/heater, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/plating, -/area/shuttle/mining) -"W" = ( -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown, -/obj/structure/ore_box, -/turf/open/floor/pod/dark, -/area/shuttle/mining) -"X" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium/survival, -/area/shuttle/mining) -"Z" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/line{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/shuttle/mining) - -(1,1,1) = {" -P -I -R -a -R -I -P -"} -(2,1,1) = {" -I -I -c -m -d -I -I -"} -(3,1,1) = {" -R -s -j -G -W -S -A -"} -(4,1,1) = {" -R -F -K -G -z -S -A -"} -(5,1,1) = {" -I -I -l -Z -D -I -I -"} -(6,1,1) = {" -P -I -R -X -R -I -P -"} diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm index 7864564eab185..a0cb642c086a0 100644 --- a/_maps/shuttles/ruin_cyborg_mothership.dmm +++ b/_maps/shuttles/ruin_cyborg_mothership.dmm @@ -346,7 +346,7 @@ "ry" = ( /obj/machinery/mecha_part_fabricator/maint{ name = "forgotten exosuit fabricator"; - dir = 8 + drop_direction = 8 }, /obj/machinery/conveyor{ dir = 8; @@ -709,7 +709,7 @@ /area/shuttle/ruin/cyborg_mothership) "Oq" = ( /obj/structure/table, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/effect/turf_decal/bot, /obj/structure/sink/directional/east, /obj/item/toy/figure/borg{ diff --git a/_maps/shuttles/whiteship_birdshot.dmm b/_maps/shuttles/whiteship_birdshot.dmm index ed1936e3a1cf8..e076c841605c0 100644 --- a/_maps/shuttles/whiteship_birdshot.dmm +++ b/_maps/shuttles/whiteship_birdshot.dmm @@ -146,7 +146,7 @@ pixel_y = 3 }, /obj/item/reagent_containers/blood, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_x = 2; pixel_y = 9 }, @@ -736,7 +736,6 @@ /turf/open/floor/iron/grimy, /area/shuttle/abandoned/crew) "yM" = ( -/obj/machinery/light/cold/directional/south, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/broken/directional/south, /obj/machinery/firealarm/directional/east, @@ -1084,15 +1083,6 @@ }, /turf/open/floor/iron/small, /area/shuttle/abandoned/pod) -"Jk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ - dir = 4 - }, -/turf/open/floor/iron/smooth_large, -/area/shuttle/abandoned/cargo) "Jn" = ( /obj/structure/dresser, /obj/effect/decal/cleanable/dirt, @@ -1712,7 +1702,7 @@ wE RX gV EX -Jk +Ui kQ Jn iS diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index ed2e2a17b9077..9a20e38ebcd5d 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -104,7 +104,7 @@ }, /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/all_access, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = 4 }, /obj/item/clothing/suit/apron/surgical, diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index f75f87001b517..e7981b169b8aa 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -1621,7 +1621,7 @@ /area/shuttle/abandoned/medbay) "dO" = ( /obj/structure/table, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = 4 }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/templates/holodeck_medicalsim.dmm b/_maps/templates/holodeck_medicalsim.dmm index 7e4162ce074a4..269b9c41f017c 100644 --- a/_maps/templates/holodeck_medicalsim.dmm +++ b/_maps/templates/holodeck_medicalsim.dmm @@ -109,10 +109,12 @@ /area/template_noop) "gr" = ( /obj/structure/table/glass, -/obj/item/retractor, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, +/obj/item/stack/medical/gauze, +/obj/item/retractor, +/obj/item/cautery, /turf/open/floor/holofloor{ icon_state = "white" }, @@ -467,12 +469,10 @@ }, /area/template_noop) "Qu" = ( -/obj/structure/table/glass, -/obj/item/stack/medical/gauze, -/obj/item/cautery, /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 }, +/obj/structure/closet/crate/freezer/organ, /turf/open/floor/holofloor{ icon_state = "white" }, diff --git a/_maps/templates/lazy_templates/ninja_den.dmm b/_maps/templates/lazy_templates/ninja_den.dmm index 324ebc3209380..f96ce777568f9 100644 --- a/_maps/templates/lazy_templates/ninja_den.dmm +++ b/_maps/templates/lazy_templates/ninja_den.dmm @@ -1041,7 +1041,6 @@ /obj/machinery/vending/coffee{ default_price = 0; extra_price = 0; - fair_market_price = 0; name = "\improper Jim Norton's Quebecois Coffee" }, /turf/open/floor/wood/large, @@ -1652,7 +1651,7 @@ /area/centcom/central_command_areas/holding) "Mz" = ( /obj/structure/closet, -/obj/item/surgery_tray/full, +/obj/effect/spawner/surgery_tray/full, /obj/machinery/iv_drip, /obj/item/emergency_bed, /obj/item/storage/medkit/regular, diff --git a/_maps/templates/lazy_templates/nukie_base.dmm b/_maps/templates/lazy_templates/nukie_base.dmm index 60c5b1dcb5825..5178b0f935630 100644 --- a/_maps/templates/lazy_templates/nukie_base.dmm +++ b/_maps/templates/lazy_templates/nukie_base.dmm @@ -68,6 +68,17 @@ /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 8 }, +/obj/structure/closet/syndicate/personal, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/reagent_containers/cup/beaker/large, /turf/open/floor/mineral/plastitanium, /area/centcom/syndicate_mothership/expansion_chemicalwarfare) "bo" = ( @@ -111,7 +122,7 @@ dir = 5 }, /obj/structure/table/reinforced/plasmarglass, -/obj/item/surgery_tray/full{ +/obj/effect/spawner/surgery_tray/full{ pixel_y = -11 }, /obj/item/storage/belt/medical, diff --git a/_maps/virtual_domains/island_brawl.dmm b/_maps/virtual_domains/island_brawl.dmm index 62a63f81bab2e..f1f291b152a26 100644 --- a/_maps/virtual_domains/island_brawl.dmm +++ b/_maps/virtual_domains/island_brawl.dmm @@ -854,10 +854,6 @@ }, /turf/open/floor/plating, /area/virtual_domain) -"kI" = ( -/obj/effect/turf_decal/sand, -/turf/closed/wall/mineral/wood, -/area/virtual_domain) "kJ" = ( /obj/machinery/shower/directional/south, /obj/effect/turf_decal/siding/wood{ @@ -3177,10 +3173,6 @@ }, /turf/open/floor/iron/white/textured_large, /area/virtual_domain) -"NZ" = ( -/obj/effect/turf_decal/sand, -/turf/closed/wall/mineral/wood, -/area/virtual_domain/fullbright) "Of" = ( /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{ pixel_x = -17; @@ -7866,9 +7858,9 @@ bX ev ka ka -NZ -NZ -eK +Bq +Bq +Bq JN JN ka @@ -7948,7 +7940,7 @@ bX Yo sz ka -NZ +Bq YI LD JN @@ -8030,9 +8022,9 @@ Yo Yo sz ka -NZ -kI -eK +Bq +Bq +Bq JN JN ka @@ -8112,7 +8104,7 @@ Yo ka ka ka -NZ +Bq Qk Uf JN @@ -8194,9 +8186,9 @@ ka th ka eK -kI -kI -eK +Bq +Bq +Bq JN JN ka @@ -8276,7 +8268,7 @@ ka ka ka ka -NZ +Bq ZB sa JN @@ -8358,9 +8350,9 @@ ka ka ka ka -eK -eK -eK +Bq +Bq +Bq JN JN ka @@ -11225,8 +11217,8 @@ cO oa th ka -NZ -NZ +eK +eK eK ka ka @@ -11307,7 +11299,7 @@ cO wb MT ka -NZ +eK EA xe ka diff --git a/_maps/virtual_domains/meta_central.dmm b/_maps/virtual_domains/meta_central.dmm index 2fc87ae17c818..3fc4ed7f21e1f 100644 --- a/_maps/virtual_domains/meta_central.dmm +++ b/_maps/virtual_domains/meta_central.dmm @@ -4780,7 +4780,7 @@ "NO" = ( /obj/machinery/airalarm/directional/west, /obj/structure/broken_flooring/singular/always_floorplane/directional/east, -/obj/item/surgery_tray/full/deployed, +/obj/effect/spawner/surgery_tray/full/deployed, /turf/open/floor/plating, /area/virtual_domain) "NR" = ( diff --git a/_maps/virtual_domains/psyker_shuffle.dmm b/_maps/virtual_domains/psyker_shuffle.dmm index c3434167bb18f..c744cecf0b430 100644 --- a/_maps/virtual_domains/psyker_shuffle.dmm +++ b/_maps/virtual_domains/psyker_shuffle.dmm @@ -246,7 +246,7 @@ Y Q Q Q -i +Q Y o o @@ -848,7 +848,7 @@ o "} (26,1,1) = {" Y -Q +i Q Q Q diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm index 9b3b239034b96..4dff2007b39e3 100644 --- a/code/__DEFINES/_flags.dm +++ b/code/__DEFINES/_flags.dm @@ -142,6 +142,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define NO_BOH (1<<18) /// This area prevents fishing from removing unique/limited loot from sources that're also used outside of it. #define UNLIMITED_FISHING (1<<19) +/// This area is prevented from having gravity (ie. space, nearstation, or outside solars) +#define NO_GRAVITY (1<<20) /* These defines are used specifically with the atom/pass_flags bitmask diff --git a/code/__DEFINES/ai/ai.dm b/code/__DEFINES/ai/ai.dm index c91f7eb06597f..7cb863d07c19d 100644 --- a/code/__DEFINES/ai/ai.dm +++ b/code/__DEFINES/ai/ai.dm @@ -19,7 +19,7 @@ ///For JPS pathing, the maximum length of a path we'll try to generate. Should be modularized depending on what we're doing later on #define AI_MAX_PATH_LENGTH 30 // 30 is possibly overkill since by default we lose interest after 14 tiles of distance, but this gives wiggle room for weaving around obstacles -#define AI_BOT_PATH_LENGTH 75 +#define AI_BOT_PATH_LENGTH 60 // How far should we, by default, be looking for interesting things to de-idle? #define AI_DEFAULT_INTERESTING_DIST 10 diff --git a/code/__DEFINES/ai/bot_keys.dm b/code/__DEFINES/ai/bot_keys.dm index c7285d18acac6..c12f48273eecd 100644 --- a/code/__DEFINES/ai/bot_keys.dm +++ b/code/__DEFINES/ai/bot_keys.dm @@ -16,6 +16,24 @@ DEFINE_BITFIELD(honkbot_flags, list( "CAN_FAKE_CUFF" = HONKBOT_HANDCUFF_TARGET, )) +///can we fix breaches +#define REPAIRBOT_FIX_BREACHES (1<<0) +///can we fix grilles +#define REPAIRBOT_REPLACE_WINDOWS (1<<1) +///can we replace tiles +#define REPAIRBOT_REPLACE_TILES (1<<2) +///can we fix girders +#define REPAIRBOT_FIX_GIRDERS (1<<3) +///can we build girders +#define REPAIRBOT_BUILD_GIRDERS (1<<4) + +DEFINE_BITFIELD(repairbot_flags, list( + "FIX_BREACHES" = REPAIRBOT_FIX_BREACHES, + "REPLACE_WINDOWS" = REPAIRBOT_REPLACE_WINDOWS, + "REPLACE_TILES" = REPAIRBOT_REPLACE_TILES, + "FIX_GIRDERS" = REPAIRBOT_FIX_GIRDERS, + "BUILD_GIRDERS" = REPAIRBOT_BUILD_GIRDERS, +)) // bot keys ///The first beacon we find @@ -34,6 +52,8 @@ DEFINE_BITFIELD(honkbot_flags, list( #define BB_RADIO_CHANNEL "radio_channel" ///list of unreachable things we will temporarily ignore #define BB_TEMPORARY_IGNORE_LIST "temporary_ignore_list" +///penalty cooldown if we are unable to path to any beacons +#define BB_BOT_BEACON_COOLDOWN "bot_beacon_cooldown" // medbot keys ///the patient we must heal @@ -134,3 +154,31 @@ DEFINE_BITFIELD(honkbot_flags, list( #define BB_VIBEBOT_PARTY_TARGET "party_target" ///key that holds our instrument #define BB_VIBEBOT_INSTRUMENT "instrument" + +//repairbots +///key that holds the floor we should tile over +#define BB_TILELESS_FLOOR "tileless_floor" +///key that holds the turf we should place a girder over +#define BB_GIRDER_TARGET "girder_target" +///key that holds the girder we should place a wall over +#define BB_GIRDER_TO_WALL_TARGET "girder_to_wall" +///key that holds the grille we must fix +#define BB_WINDOW_FRAMETARGET "grille_target" +///key that holds the machinery we repair with a welder +#define BB_WELDER_TARGET "welder_target" +///our wall girder ability +#define BB_GIRDER_BUILD_ABILITY "girder_build_ability" +///key that holds breached floors we should repair +#define BB_BREACHED_FLOOR "breached_floor" +///key that holds our emagged speech +#define BB_REPAIRBOT_EMAGGED_SPEECH "emagged_speech" +///key that holds our normal speech +#define BB_REPAIRBOT_NORMAL_SPEECH "normal_speech" +///key that holds the thing we should deconstruct +#define BB_DECONSTRUCT_TARGET "deconstruct_target" +///key that holds our speech timer +#define BB_REPAIRBOT_SPEECH_COOLDOWN "speech_cooldown" +///key that holds our target borg +#define BB_ROBOT_TARGET "robot_target" +///key that holds materials we can refill +#define BB_REFILLABLE_TARGET "refillable_target" diff --git a/code/__DEFINES/ai/monkey.dm b/code/__DEFINES/ai/monkey.dm index 0e8c44e40fa83..833514e2f0fda 100644 --- a/code/__DEFINES/ai/monkey.dm +++ b/code/__DEFINES/ai/monkey.dm @@ -2,7 +2,6 @@ #define BB_MONKEY_AGGRESSIVE "BB_monkey_aggressive" #define BB_MONKEY_GUN_NEURONS_ACTIVATED "BB_monkey_gun_aware" -#define BB_MONKEY_GUN_WORKED "BB_monkey_gun_worked" #define BB_MONKEY_BEST_FORCE_FOUND "BB_monkey_bestforcefound" #define BB_MONKEY_ENEMIES "BB_monkey_enemies" #define BB_MONKEY_BLACKLISTITEMS "BB_monkey_blacklistitems" diff --git a/code/__DEFINES/anomaly.dm b/code/__DEFINES/anomaly.dm index 7422af3fc65d7..6ca1db70678da 100644 --- a/code/__DEFINES/anomaly.dm +++ b/code/__DEFINES/anomaly.dm @@ -4,7 +4,7 @@ */ ///Time in ticks before the anomaly goes poof/explodes depending on type. -#define ANOMALY_COUNTDOWN_TIMER (99 SECONDS) +#define ANOMALY_COUNTDOWN_TIMER (120 SECONDS) /** * Nuisance/funny anomalies diff --git a/code/__DEFINES/basic_mobs.dm b/code/__DEFINES/basic_mobs.dm index 12ddaa3a68af9..75dcfbc3bd5a7 100644 --- a/code/__DEFINES/basic_mobs.dm +++ b/code/__DEFINES/basic_mobs.dm @@ -60,16 +60,10 @@ GLOBAL_LIST_EMPTY(customized_pets) #define BB_RAPTOR_PLAYFUL "raptor_playful" ///this mob will flee combat when it feels threatened #define BB_RAPTOR_COWARD "raptor_coward" -///this mob will go out seeking trouble against its kind -#define BB_RAPTOR_TROUBLE_MAKER "raptor_trouble_maker" -///cooldown till we go out cause trouble again -#define BB_RAPTOR_TROUBLE_COOLDOWN "raptor_trouble_maker_cooldown" ///our raptor baby target we will take care of #define BB_RAPTOR_BABY "raptor_baby" ///the raptor we will heal up #define BB_INJURED_RAPTOR "injured_raptor" -///the raptor we will bully -#define BB_RAPTOR_VICTIM "raptor_victim" ///the cooldown for next time we eat #define BB_RAPTOR_EAT_COOLDOWN "raptor_eat_cooldown" ///our trough target diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index d1fff3b20edf5..6e9af2cdb9929 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -11,6 +11,19 @@ #define FIXED_COLOUR_PRIORITY 4 ///how many colour priority levels there are. #define COLOUR_PRIORITY_AMOUNT 4 +/// If this is a plain atom color +#define ATOM_COLOR_TYPE_NORMAL "normal" +/// If this is a color filter +#define ATOM_COLOR_TYPE_FILTER "filter" +// Indexes for color arrays +#define ATOM_COLOR_VALUE_INDEX 1 +#define ATOM_COLOR_TYPE_INDEX 2 +#define ATOM_PRIORITY_COLOR_FILTER "atom_priority_color" +#define ATOM_PRIORITY_COLOR_FILTER_PRIORITY -1 +/// Multiply pixel's saturation by color's saturation. Paints accents while keeping dim areas dim. +#define SATURATION_MULTIPLY "multiply" +/// Always affects the original pixel's saturation and lightness. +#define SATURATION_OVERRIDE "always" #define COLOR_DARKMODE_BACKGROUND "#202020" #define COLOR_DARKMODE_DARKBACKGROUND "#171717" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index fbdb630174fe0..2c20765d3519b 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -183,8 +183,11 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define EMBED_CHANCE_SPEED_BONUS 10 //Gun weapon weight +/// Default normal ol' gun. Akimboable, one handed. #define WEAPON_LIGHT 1 +/// Can't be used akimbo, but only needs one hand to fire #define WEAPON_MEDIUM 2 +/// Can't be used akimbo, and needs two hands to fire #define WEAPON_HEAVY 3 //Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 @@ -221,10 +224,6 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define SUPPRESSED_QUIET 1 ///standard suppressed #define SUPPRESSED_VERY 2 /// no message -//Projectile Reflect -#define REFLECT_NORMAL (1<<0) -#define REFLECT_FAKEPROJECTILE (1<<1) - //His Grace. #define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep. #define HIS_GRACE_PECKISH 20 //Slightly hungry. diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm index 36a2ca2c80584..f00240722181a 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm @@ -122,6 +122,9 @@ ///from base of /atom/movable/point_at: (atom/A, obj/effect/temp_visual/point/point) #define COMSIG_MOVABLE_POINTED "movable_pointed" +///From /datum/component/aquarium/get_content_beauty: (beauty_holder) +#define COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY "movable_ge_aquarium_beauty" + /// Sent to movables when they are being stolen by a spy: (mob/living/spy, datum/spy_bounty/bounty) #define COMSIG_MOVABLE_SPY_STEALING "movable_spy_stealing" /// Called when something is pushed by a living mob bumping it: (mob/living/pusher, push force) diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm index 3d28fdd81162c..bedfaf2fa0374 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_x_act.dm @@ -14,7 +14,7 @@ #define COMSIG_ATOM_EMP_ACT "atom_emp_act" ///from base of atom/fire_act(): (exposed_temperature, exposed_volume) #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" -///from base of atom/bullet_act(): (/obj/projectile, def_zone) +///from base of atom/bullet_act(): (/obj/proj, def_zone, piercing_hit, blocked) #define COMSIG_ATOM_PRE_BULLET_ACT "pre_atom_bullet_act" /// All this does is prevent default bullet on_hit from being called, [BULLET_ACT_HIT] being return is implied #define COMPONENT_BULLET_ACTED (1<<0) @@ -22,7 +22,7 @@ #define COMPONENT_BULLET_BLOCKED (1<<1) /// Forces bullet act to return [BULLET_ACT_FORCE_PIERCE], takes priority over above #define COMPONENT_BULLET_PIERCED (1<<2) -///from base of atom/bullet_act(): (/obj/projectile, def_zone) +///from base of atom/bullet_act(): (/obj/proj, def_zone, piercing_hit, blocked) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" ///from base of atom/CheckParts(): (list/parts_list, datum/crafting_recipe/R) #define COMSIG_ATOM_CHECKPARTS "atom_checkparts" diff --git a/code/__DEFINES/dcs/signals/signals_datum.dm b/code/__DEFINES/dcs/signals/signals_datum.dm index 5565c143d6613..696d359ac5700 100644 --- a/code/__DEFINES/dcs/signals/signals_datum.dm +++ b/code/__DEFINES/dcs/signals/signals_datum.dm @@ -14,6 +14,8 @@ #define COMSIG_PREQDELETED "parent_preqdeleted" /// just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called #define COMSIG_QDELETING "parent_qdeleting" +/// Called whenever an admin manually deletes an object, via the "Delete" verb, before qdel() is called: (client/deleting_admin) +#define COMSIG_ADMIN_DELETING "parent_admin_deleting" /// generic topic handler (usr, href_list) #define COMSIG_TOPIC "handle_topic" /// handler for vv_do_topic (usr, href_list) diff --git a/code/__DEFINES/dcs/signals/signals_fish.dm b/code/__DEFINES/dcs/signals/signals_fish.dm index b314746659290..08a38fc02ab2e 100644 --- a/code/__DEFINES/dcs/signals/signals_fish.dm +++ b/code/__DEFINES/dcs/signals/signals_fish.dm @@ -1,23 +1,32 @@ // Aquarium related signals -#define COMSIG_AQUARIUM_SURFACE_CHANGED "aquarium_surface_changed" + +///From /datum/component/aquarium/ui_act, when changing the fluid of the aquarium: (fluid_type) #define COMSIG_AQUARIUM_FLUID_CHANGED "aquarium_fluid_changed" -///Called on aquarium/attackby: (aquarium) -#define COMSIG_TRY_INSERTING_IN_AQUARIUM "item_try_inserting_in_aquarium" +///From /datum/component/aquarium/can_insert: (obj/item/item) +#define COMSIG_AQUARIUM_CAN_INSERT "aquarium_can_insert" ///The item will be inserted into the aquarium #define COMSIG_CAN_INSERT_IN_AQUARIUM (1<<0) ///The item won't be inserted into the aquarium, but will early return attackby anyway. #define COMSIG_CANNOT_INSERT_IN_AQUARIUM (1<<1) +///From /datum/component/aquarium_content/set_vc_base_position: (obj/effect/aquarium/visual) +#define COMSIG_AQUARIUM_SET_VISUAL "aquarium_set_visual" +///From /datum/component/aquarium_content/remove_from_aquarium: (obj/effect/aquarium/visual) +#define COMSIG_AQUARIUM_REMOVE_VISUAL "aquarium_remove_visual" +///From /obj/item/fish/try_to_reproduce: (fish, candidates) +#define COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES "aquarium_get_reproduction_candidates" +///From /datum/fish_evolution/check_conditions: (fish, mate, evolution) +#define COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS "aquarium_check_evolution_conditions" + #define COMPONENT_ALLOW_EVOLUTION (1<<0) ///Updates the appearance of a newly generated aquarium content visual:(visual) #define COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE "aquarium_content_apply_appearance" ///Updates the base position of an aquarium content visual:(aquarium, visual) -#define AQUARIUM_CONTENT_RANDOMIZE_POSITION "aquarium_content_randomize_position" +#define COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION "aquarium_content_randomize_position" ///Updates the animation of an aquarium content visual:(aquarium, visual) #define COMSIG_AQUARIUM_CONTENT_DO_ANIMATION "aquarium_content_do_animation" // Fish signals #define COMSIG_FISH_STATUS_CHANGED "fish_status_changed" -#define COMSIG_FISH_STIRRED "fish_stirred" ///From /obj/item/fish/process: (seconds_per_tick) #define COMSIG_FISH_LIFE "fish_life" ///From /datum/fish_trait/eat_fish: (predator) diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm index ef47b6f4b8243..3569b9af1e61d 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm @@ -141,6 +141,8 @@ #define COMSIG_LIVING_SLAM_TABLE "living_slam_table" ///from /obj/item/hand_item/slapper/attack(): (source=mob/living/slapper, mob/living/slapped) #define COMSIG_LIVING_SLAP_MOB "living_slap_mob" +///from /obj/item/hand_item/slapper/attack(): (source=mob/living/slapper, mob/living/slapped) +#define COMSIG_LIVING_SLAPPED "living_slapped" /// from /mob/living/*/UnarmedAttack(), before sending [COMSIG_LIVING_UNARMED_ATTACK]: (mob/living/source, atom/target, proximity, modifiers) /// The only reason this exists is so hulk can fire before Fists of the North Star. /// Note that this is called before [/mob/living/proc/can_unarmed_attack] is called, so be wary of that. @@ -242,6 +244,7 @@ ///from /mob/living/proc/check_block(): (atom/hit_by, damage, attack_text, attack_type, armour_penetration, damage_type) #define COMSIG_LIVING_CHECK_BLOCK "living_check_block" + #define FAILED_BLOCK NONE #define SUCCESSFUL_BLOCK (1<<0) ///Hit by successful disarm attack (mob/living/attacker, zone_targeted, item/weapon) @@ -285,14 +288,21 @@ /// From /datum/element/basic_eating/finish_eating() #define COMSIG_MOB_ATE "mob_ate" + ///cancel post eating + #define COMSIG_MOB_TERMINATE_EAT (1<<0) ///From mob/living/carbon/proc/throw_mode_on and throw_mode_off #define COMSIG_LIVING_THROW_MODE_TOGGLE "living_throw_mode_toggle" +/// From mob/living/proc/on_fall +#define COMSIG_LIVING_THUD "living_thud" ///From /datum/component/happiness() #define COMSIG_MOB_HAPPINESS_CHANGE "happiness_change" /// From /obj/item/melee/baton/baton_effect(): (datum/source, mob/living/user, /obj/item/melee/baton) #define COMSIG_MOB_BATONED "mob_batoned" +/// From /obj/machinery/gibber/startgibbing(): (mob/living/user, /obj/machinery/gibber, list/results) +#define COMSIG_LIVING_GIBBER_ACT "living_gibber_act" + /// Sent to the mob when their mind is slaved #define COMSIG_MOB_ENSLAVED_TO "mob_enslaved_to" /// From /obj/item/proc/attack_atom: (mob/living/attacker, atom/attacked) diff --git a/code/__DEFINES/dcs/signals/signals_mod.dm b/code/__DEFINES/dcs/signals/signals_mod.dm index 09b29c9378490..58fd8ca689ed1 100644 --- a/code/__DEFINES/dcs/signals/signals_mod.dm +++ b/code/__DEFINES/dcs/signals/signals_mod.dm @@ -5,10 +5,12 @@ #define COMSIG_MOD_DEPLOYED "mod_deployed" /// Called when a MOD user retracts one or more of its parts. #define COMSIG_MOD_RETRACTED "mod_retracted" -/// Called when a MOD deploys a part. +/// Called when a MOD deploys a part. (mob/user, datum/mod_part/part) #define COMSIG_MOD_PART_DEPLOYED "mod_part_deployed" -/// Called when a MOD retracts a part. +/// Called when a MOD retracts a part. (mob/user, datum/mod_part/part) #define COMSIG_MOD_PART_RETRACTED "mod_part_retracted" +/// Called when a MOD seals/unseals a part. (datum/mod_part/part) +#define COMSIG_MOD_PART_SEALED "mod_part_sealed" /// Called when a MOD is finished toggling itself. #define COMSIG_MOD_TOGGLED "mod_toggled" /// Called when a MOD activation is called from toggle_activate(mob/user) diff --git a/code/__DEFINES/dcs/signals/signals_object.dm b/code/__DEFINES/dcs/signals/signals_object.dm index 2b6c1b3220679..63ebfdf98b21f 100644 --- a/code/__DEFINES/dcs/signals/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_object.dm @@ -380,9 +380,9 @@ // /obj/projectile signals (sent to the firer) -///from base of /obj/projectile/proc/on_hit(), like COMSIG_PROJECTILE_ON_HIT but on the projectile itself and with the hit limb (if any): (atom/movable/firer, atom/target, angle, hit_limb, blocked) +///from base of /obj/projectile/proc/on_hit(), like COMSIG_PROJECTILE_ON_HIT but on the projectile itself and with the hit limb (if any): (atom/movable/firer, atom/target, angle, hit_limb, blocked, pierce_hit) #define COMSIG_PROJECTILE_SELF_ON_HIT "projectile_self_on_hit" -///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, angle, hit_limb, blocked) +///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, angle, hit_limb, blocked, pierce_hit) #define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit" ///from base of /obj/projectile/proc/fire(): (obj/projectile, atom/original_target) #define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire" @@ -393,11 +393,12 @@ ///sent to targets during the process_hit proc of projectiles #define COMSIG_PROJECTILE_PREHIT "com_proj_prehit" #define PROJECTILE_INTERRUPT_HIT (1<<0) -///from /obj/projectile/pixel_move(): () -#define COMSIG_PROJECTILE_PIXEL_STEP "projectile_pixel_step" + #define PROJECTILE_INTERRUPT_HIT_PHASE (1<<1) +///from /obj/projectile/process_movement(): () +#define COMSIG_PROJECTILE_MOVE_PROCESS_STEP "projectile_move_process_step" ///sent to self during the process_hit proc of projectiles #define COMSIG_PROJECTILE_SELF_PREHIT "com_proj_prehit" -///from the base of /obj/projectile/Range(): () +///from the base of /obj/projectile/reduce_range(): () #define COMSIG_PROJECTILE_RANGE "projectile_range" ///from the base of /obj/projectile/on_range(): () #define COMSIG_PROJECTILE_RANGE_OUT "projectile_range_out" @@ -539,3 +540,14 @@ #define COMSIG_ITEM_WEIGHT_CLASS_CHANGED "item_weight_class_changed" /// Sent from /obj/item/update_weight_class(), to its loc. (obj/item/changed_item, old_w_class, new_w_class) #define COMSIG_ATOM_CONTENTS_WEIGHT_CLASS_CHANGED "atom_contents_weight_class_changed" + +///Sent from /obj/item/skillchip/on_implant() +#define COMSIG_SKILLCHIP_IMPLANTED "skillchip_implanted" + +///Sent from /obj/item/skillchip/on_remove() +#define COMSIG_SKILLCHIP_REMOVED "skillchip_removed" + +/// Sent from /obj/item/organ/wings/functional/proc/open_wings(): (mob/living/carbon/owner) +#define COMSIG_WINGS_OPENED "wings_opened" +/// Sent from /obj/item/organ/wings/functional/proc/close_wings(): (mob/living/carbon/owner) +#define COMSIG_WINGS_CLOSED "wings_closed" diff --git a/code/__DEFINES/dcs/signals/signals_reagent.dm b/code/__DEFINES/dcs/signals/signals_reagent.dm index 78b4cec5ca075..e8db73d3ae05b 100644 --- a/code/__DEFINES/dcs/signals/signals_reagent.dm +++ b/code/__DEFINES/dcs/signals/signals_reagent.dm @@ -12,7 +12,7 @@ #define COMSIG_ATOM_EXPOSE_REAGENT "atom_expose_reagent" ///from base of [/datum/reagent/proc/expose_atom]: (/atom, reac_volume) #define COMSIG_REAGENT_EXPOSE_ATOM "reagent_expose_atom" -///from base of [/datum/reagent/proc/expose_atom]: (/obj, reac_volume) +///from base of [/datum/reagent/proc/expose_atom]: (/obj, reac_volume, methods, show_message) #define COMSIG_REAGENT_EXPOSE_OBJ "reagent_expose_obj" ///from base of [/datum/reagent/proc/expose_atom]: (/mob/living, reac_volume, methods, show_message, touch_protection, /mob/eye/blob) // ovemind arg is only used by blob reagents. #define COMSIG_REAGENT_EXPOSE_MOB "reagent_expose_mob" diff --git a/code/__DEFINES/dcs/signals/signals_shuttle.dm b/code/__DEFINES/dcs/signals/signals_shuttle.dm new file mode 100644 index 0000000000000..336117fb86861 --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_shuttle.dm @@ -0,0 +1,7 @@ +// Shuttle signals. this file is empty because shuttle code is ancient, feel free to +// add more signals where its appropriate to have them + +/// Called when the shuttle tries to move. Do not return anything to continue with default behaviour (always allow) : () +#define COMSIG_SHUTTLE_SHOULD_MOVE "shuttle_should_move" + /// Return this when the shuttle move should be blocked. + #define BLOCK_SHUTTLE_MOVE (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_species.dm b/code/__DEFINES/dcs/signals/signals_species.dm index ee5cc33ba359e..5c9998a1f80b9 100644 --- a/code/__DEFINES/dcs/signals/signals_species.dm +++ b/code/__DEFINES/dcs/signals/signals_species.dm @@ -1,5 +1,5 @@ // /datum/species signals -///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species) +///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons) #define COMSIG_SPECIES_GAIN "species_gain" ///from datum/species/on_species_loss(): (datum/species/lost_species) #define COMSIG_SPECIES_LOSS "species_loss" diff --git a/code/__DEFINES/fish.dm b/code/__DEFINES/fish.dm index 387d8b47d1ba2..abaa2224029ba 100644 --- a/code/__DEFINES/fish.dm +++ b/code/__DEFINES/fish.dm @@ -2,6 +2,8 @@ #define FISHING_DUD "dud" ///Used in the the hydro tray fishing spot to define a random seed reward #define FISHING_RANDOM_SEED "Random seed" +///Used in the surgery fishing spot to define a random organ reward +#define FISHING_RANDOM_ORGAN "Random organ" // Baseline fishing difficulty levels #define FISHING_DEFAULT_DIFFICULTY 15 @@ -94,14 +96,24 @@ #define FISH_ICON_WEAPON "weapon" #define FISH_ICON_CRITTER "critter" #define FISH_ICON_SEED "seed" +#define FISH_ICON_ORGAN "organ" #define AQUARIUM_ANIMATION_FISH_SWIM "fish" #define AQUARIUM_ANIMATION_FISH_DEAD "dead" -#define AQUARIUM_PROPERTIES_PX_MIN "px_min" -#define AQUARIUM_PROPERTIES_PX_MAX "px_max" -#define AQUARIUM_PROPERTIES_PY_MIN "py_min" -#define AQUARIUM_PROPERTIES_PY_MAX "py_max" +//standard layer defines for aquariums + +///The distance that should separate each layer of the aquarium +#define AQUARIUM_LAYER_STEP 0.01 +/// Aquarium content layer offsets +#define AQUARIUM_MIN_OFFSET 0.02 +#define AQUARIUM_MAX_OFFSET 1 +/// The layer of the glass overlay +#define AQUARIUM_GLASS_LAYER 0.02 +/// The layer of the aquarium pane borders +#define AQUARIUM_BORDERS_LAYER AQUARIUM_MAX_OFFSET + AQUARIUM_LAYER_STEP +/// Layer for stuff rendered below the glass overlay +#define AQUARIUM_BELOW_GLASS_LAYER 0.01 #define AQUARIUM_LAYER_MODE_BOTTOM "bottom" #define AQUARIUM_LAYER_MODE_TOP "top" @@ -123,6 +135,17 @@ ///The coefficient for maximum weight/size divergence relative to the averages. #define MAX_FISH_DEVIATION_COEFF 2.5 +/** + * Base multiplier of the difference between current size and weight and their maximum value + * used to calculate how much fish grow each time they're fed, alongside with the current hunger, + * and the current size and weight, meaning bigger fish naturally tend to grow way slowier + */ +#define FISH_GROWTH_MULT 0.38 +/// Growth peaks at 45% hunger but very rapidly wanes past that. +#define FISH_GROWTH_PEAK 0.45 +/// Used as part of the divisor to slow down growth of bigger fish +#define FISH_SIZE_WEIGHT_GROWTH_MALUS 0.5 + ///The volume of the grind results is multiplied by the fish' weight and divided by this. #define FISH_GRIND_RESULTS_WEIGHT_DIVISOR 500 ///The number of fillets is multiplied by the fish' size and divided by this. @@ -141,10 +164,20 @@ ///Used to calculate how many bites a fish can take and therefore the amount of reagents it has. #define FISH_WEIGHT_BITE_DIVISOR (FISH_GRIND_RESULTS_WEIGHT_DIVISOR * FISH_WEIGHT_GRIND_TO_BITE_MULT) +///Set of operations that calculate the slowdown of fish based on weight +#define GET_FISH_SLOWDOWN(weighty) round(((weighty/FISH_WEIGHT_SLOWDOWN_DIVISOR)**FISH_WEIGHT_SLOWDOWN_EXPONENT)-1.3, 0.1) + +/** + * Gets a "rank" for fish weight to determine the force of the fish (or fish tank) + * basically, a gross estimate based on how weight generaly scales up (250, 500, 1000, 2000, 4000 etc...) + * for most fish + */ +#define GET_FISH_WEIGHT_RANK(weighty) max(round(1 + log(2, max(weighty/FISH_WEIGHT_FORCE_DIVISOR, 1)), 1), 1) + ///The breeding timeout for newly instantiated fish is multiplied by this. #define NEW_FISH_BREEDING_TIMEOUT_MULT 2 ///The last feeding timestamp of newly instantiated fish is multiplied by this: ergo, they spawn 50% hungry. -#define NEW_FISH_LAST_FEEDING_MULT 0.5 +#define NEW_FISH_LAST_FEEDING_MULT 0.33 //IF YOU ADD ANY NEW FLAG, ADD IT TO THE RESPECTIVE BITFIELD in _globalvars/bitfields.dm TOO! @@ -158,7 +191,12 @@ #define FISH_FLAG_EXPERIMENT_SCANNABLE (1<<3) ///It lets us know that fish/update_size_and_weight() is currently running. #define FISH_FLAG_UPDATING_SIZE_AND_WEIGHT (1<<4) - +///Flag added when the population of this fish type exceeeds the stable population inside the aquarium +#define FISH_FLAG_OVERPOPULATED (1<<5) +///Flag added when in an aquarium which temperature is within its safe limits +#define FISH_FLAG_SAFE_TEMPERATURE (1<<6) +///Flag added when in an aquarium with the right fluid type. +#define FISH_FLAG_SAFE_FLUID (1<<7) #define MIN_AQUARIUM_TEMP T0C #define MAX_AQUARIUM_TEMP (T0C + 100) @@ -232,11 +270,8 @@ #define FISH_SOURCE_FLAG_EXPLOSIVE_MALUS (1<<0) /// The fish source is not elegible for random rewards from bluespace fishing rods #define FISH_SOURCE_FLAG_NO_BLUESPACE_ROD (1<<1) -/** - * If present, fish that can be caught from this source won't be included in the 'fish caught' score, unless - * present in other sources without this flag as well. - */ -#define FISH_SOURCE_FLAG_SKIP_CATCHABLES (1<<2) +/// When examined by someone with enough fishing skill, this will also display fish that doesn't have FISH_FLAG_SHOW_IN_CATALOG +#define FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG (1<<2) /** * A macro to ensure the wikimedia filenames of fish icons are unique, especially since there're a couple fish that have diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm index cffe920215335..8dddfceac57df 100644 --- a/code/__DEFINES/footsteps.dm +++ b/code/__DEFINES/footsteps.dm @@ -208,3 +208,4 @@ GLOBAL_LIST_INIT(heavyfootstep, list( 'sound/effects/meatslap.ogg'), 100, 0), )) +#define SHOULD_DISABLE_FOOTSTEPS(source) ((SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES))) || HAS_TRAIT(source, TRAIT_SILENT_FOOTSTEPS)) diff --git a/code/__DEFINES/gravity.dm b/code/__DEFINES/gravity.dm index da81c0465cabc..83177b7ebb3f4 100644 --- a/code/__DEFINES/gravity.dm +++ b/code/__DEFINES/gravity.dm @@ -47,7 +47,8 @@ * This should only be possible on multi-z maps because it works like shit on maps that aren't. */ #define NEGATIVE_GRAVITY -1 - +/// Used to indicate no gravity +#define ZERO_GRAVITY 0 #define STANDARD_GRAVITY 1 //Anything above this is high gravity, anything below no grav until negative gravity /// The gravity strength threshold for high gravity damage. #define GRAVITY_DAMAGE_THRESHOLD 3 diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 9d65c4cd6f54b..785d353982cfe 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -34,23 +34,8 @@ Therefore, the top right corner (except during admin shenanigans) is at "15,15" */ -/proc/ui_hand_position(i) //values based on old hand ui positions (CENTER:-/+16,SOUTH:5) - var/x_off = i % 2 ? 0 : -1 - var/y_off = round((i-1) / 2) - return"CENTER+[x_off]:16,SOUTH+[y_off]:5" - -/proc/ui_equip_position(mob/M) - var/y_off = round((M.held_items.len-1) / 2) //values based on old equip ui position (CENTER: +/-16,SOUTH+1:5) - return "CENTER:-16,SOUTH+[y_off+1]:5" - -/proc/ui_swaphand_position(mob/M, which = 1) //values based on old swaphand ui positions (CENTER: +/-16,SOUTH+1:5) - var/x_off = which == 1 ? -1 : 0 - var/y_off = round((M.held_items.len-1) / 2) - return "CENTER+[x_off]:16,SOUTH+[y_off+1]:5" - -/proc/ui_perk_position(perk_count) - var/y_off = perk_count < 1 ? 0 : perk_count/2 - return "WEST+0.5:12,NORTH-2-[y_off]:20" +// Middle +#define around_player "CENTER-1,CENTER-1" //Lower left, persistent menu #define ui_inventory "WEST:6,SOUTH:5" diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 181493ccb34aa..c7d7706bc67ee 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -139,6 +139,10 @@ DEFINE_BITFIELD(no_equip_flags, list( //defines for the index of hands #define LEFT_HANDS 1 #define RIGHT_HANDS 2 +/// Checks if the value is "left" - same as ISEVEN, but used primarily for hand or foot index contexts +#define IS_RIGHT_INDEX(value) (value % 2 == 0) +/// Checks if the value is "right" - same as ISODD, but used primarily for hand or foot index contexts +#define IS_LEFT_INDEX(value) (value % 2 != 0) //flags for female outfits: How much the game can safely "take off" the uniform without it looking weird /// For when there's simply no need for a female version of this uniform. @@ -163,7 +167,6 @@ DEFINE_BITFIELD(no_equip_flags, list( /// The sprite works fine for digitigrade legs as-is. #define CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON (1<<2) /// Auto-generates the leg portion of the sprite with GAGS -/// Suggested that you set [/obj/item/var/digitigrade_greyscale_config_worn] when using this flag #define CLOTHING_DIGITIGRADE_MASK (1<<3) /// All variation flags which render "correctly" on a digitigrade leg setup @@ -279,6 +282,38 @@ GLOBAL_LIST_INIT(mining_suit_allowed, list( /obj/item/gun/ballistic/bow, // DOPPLER EDIT ADDITION )) +/// List of all "tools" that can fit into belts or work from toolboxes + +GLOBAL_LIST_INIT(tool_items, list( + /obj/item/airlock_painter, + /obj/item/analyzer, + /obj/item/assembly/signaler, + /obj/item/construction/rcd, + /obj/item/construction/rld, + /obj/item/construction/rtd, + /obj/item/crowbar, + /obj/item/extinguisher/mini, + /obj/item/flashlight, + /obj/item/forcefield_projector, + /obj/item/geiger_counter, + /obj/item/holosign_creator/atmos, + /obj/item/holosign_creator/engineering, + /obj/item/inducer, + /obj/item/lightreplacer, + /obj/item/multitool, + /obj/item/pipe_dispenser, + /obj/item/pipe_painter, + /obj/item/plunger, + /obj/item/radio, + /obj/item/screwdriver, + /obj/item/stack/cable_coil, + /obj/item/t_scanner, + /obj/item/weldingtool, + /obj/item/wirecutters, + /obj/item/wrench, + /obj/item/spess_knife, +)) + /// String for items placed into the left pocket. #define LOCATION_LPOCKET "in your left pocket" /// String for items placed into the right pocket diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 901445d27e4d3..e0508b2ee4f79 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define ismoth(A) (is_species(A, /datum/species/moth)) #define isfelinid(A) (is_species(A, /datum/species/human/felinid) || HAS_TRAIT(A, CAT)) // DOPPLER EDIT, old code: #define isfelinid(A) (is_species(A, /datum/species/human/felinid)) #define isethereal(A) (is_species(A, /datum/species/ethereal)) -#define isvampire(A) (is_species(A,/datum/species/vampire)) +#define isvampire(A) (is_species(A,/datum/species/human/vampire)) #define isdullahan(A) (is_species(A, /datum/species/dullahan)) #define ismonkey(A) (is_species(A, /datum/species/monkey) || HAS_TRAIT(A, MONKEY)) // DOPPLER EDIT, old code: #define ismonkey(A) (is_species(A, /datum/species/monkey)) #define isandroid(A) (is_species(A, /datum/species/android)) @@ -202,21 +202,23 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define isspider(A) (istype(A, /mob/living/basic/spider)) +//Eye mobs +#define iseyemob(A) (istype(A, /mob/eye)) -//Misc mobs -#define isobserver(A) (istype(A, /mob/dead/observer)) +#define isovermind(A) (istype(A, /mob/eye/blob)) -#define isdead(A) (istype(A, /mob/dead)) +#define iscameramob(A) (istype(A, /mob/eye/camera)) -#define isnewplayer(A) (istype(A, /mob/dead/new_player)) +#define isaicamera(A) (istype(A, /mob/eye/camera/ai)) -#define isovermind(A) (istype(A, /mob/eye/blob)) +#define isremotecamera(A) (istype(A, /mob/eye/camera/remote)) -#define issentientdisease(A) (istype(A, /mob/eye/disease)) +//Dead mobs +#define isdead(A) (istype(A, /mob/dead)) -#define iseyemob(A) (istype(A, /mob/eye)) +#define isobserver(A) (istype(A, /mob/dead/observer)) -#define isaicamera(A) (istype(A, /mob/eye/ai_eye)) +#define isnewplayer(A) (istype(A, /mob/dead/new_player)) //Objects #define isobj(A) istype(A, /obj) //override the byond proc because it returns true on children of /atom/movable that aren't objs @@ -241,8 +243,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define isstructure(A) (istype(A, /obj/structure)) -#define isaquarium(A) (istype(A, /obj/structure/aquarium)) - #define ismachinery(A) (istype(A, /obj/machinery)) #define istramwall(A) (istype(A, /obj/structure/tram)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 086851c7197a7..2c5d8722f1121 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -160,6 +160,13 @@ /// Basically any layer below this (numerically) is "on" a floor for the purposes of washing #define FLOOR_CLEAN_LAYER (21 + TOPDOWN_LAYER) +//Placeholders in case the game plane and possibly other things between it and the floor plane are ever made into topdown planes + +///Below this level, objects with topdown layers are rendered as if underwater by the immerse element +#define TOPDOWN_WATER_LEVEL_LAYER 100 + TOPDOWN_LAYER +///Above this level, objects with topdown layers are unaffected by the immerse element +#define TOPDOWN_ABOVE_WATER_LAYER 200 + TOPDOWN_LAYER + //WALL_PLANE layers #define BELOW_CLOSED_TURF_LAYER 2.053 #define CLOSED_TURF_LAYER 2.058 diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 25893cae63f72..eb793ed7eed3f 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -23,8 +23,12 @@ #define STATIC_TO_DYNAMIC_CHANNEL(static_channel) (static_channel - (AREA_USAGE_STATIC_START - AREA_USAGE_DYNAMIC_START)) //Power use + +/// dont use power #define NO_POWER_USE 0 +/// use idle_power_usage i.e. the power needed just to keep the machine on #define IDLE_POWER_USE 1 +/// use active_power_usage i.e. the power the machine consumes to perform a specific task #define ACTIVE_POWER_USE 2 ///Base global power consumption for idling machines diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index aa13298e339a3..35c8d3edaf632 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -29,6 +29,9 @@ /// Gets the sign of x, returns -1 if negative, 0 if 0, 1 if positive #define SIGN(x) ( ((x) > 0) - ((x) < 0) ) +/// Returns the integer closest to 0 from a division +#define SIGNED_FLOOR_DIVISION(x, y) (SIGN(x) * FLOOR(abs(x) / y, 1)) + #define CEILING(x, y) ( -round(-(x) / (y)) * (y) ) #define ROUND_UP(x) ( -round(-(x))) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index f6a472fdc22ae..0c0865bd97baf 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -73,6 +73,8 @@ #define MOB_PLANT (1 << 10) ///The mob is a goopy creature, probably coming from xenobiology. #define MOB_SLIME (1 << 11) +/// Mob is fish or water-related. +#define MOB_AQUATIC (1 << 12) //Lung respiration type flags #define RESPIRATION_OXYGEN (1 << 0) @@ -387,6 +389,8 @@ #define SLIPPERY_TURF (1<<5) /// For mobs who are slippery, this requires the mob holding it to be lying down. #define SLIPPERY_WHEN_LYING_DOWN (1<<6) +///Like sliding, but it's short, it doesn't knockdown, it doesn't stun, it just staggers a bit. +#define WEAK_SLIDE (1<<7) #define MAX_CHICKENS 50 @@ -457,7 +461,7 @@ #define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you #define HUNGER_FACTOR 0.05 //factor at which mob nutrition decreases -#define ETHEREAL_DISCHARGE_RATE (8e-4 * STANDARD_CELL_CHARGE) // Rate at which ethereal stomach charge decreases +#define ETHEREAL_DISCHARGE_RATE (8e-3 * STANDARD_CELL_CHARGE) // Rate at which ethereal stomach charge decreases /// How much nutrition eating clothes as moth gives and drains #define CLOTHING_NUTRITION_GAIN 15 #define REAGENTS_METABOLISM 0.2 //How many units of reagent are consumed per second, by default. @@ -660,6 +664,7 @@ // Hair masks #define HAIR_MASK_HIDE_ABOVE_45_DEG_MEDIUM "hide_above_45deg_medium" #define HAIR_MASK_HIDE_ABOVE_45_DEG_LOW "hide_above_45deg_low" +#define HAIR_MASK_HIDE_WINTERHOOD "hide_winterhood" // Height defines // - They are numbers so you can compare height values (x height < y height) diff --git a/code/__DEFINES/organ_movement.dm b/code/__DEFINES/organ_movement.dm index 16f003ede8134..04e60eb92f090 100644 --- a/code/__DEFINES/organ_movement.dm +++ b/code/__DEFINES/organ_movement.dm @@ -2,3 +2,5 @@ #define DELETE_IF_REPLACED (1<<0) /// When deleting a brain, we don't delete the identity and the player can keep playing #define NO_ID_TRANSFER (1<<1) +/// Organ inserted by the abductors surgery +#define FROM_ABDUCTOR_SURGERY (1<<2) diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm index 540cadabc47a2..415df95bb344a 100644 --- a/code/__DEFINES/pipe_construction.dm +++ b/code/__DEFINES/pipe_construction.dm @@ -1,12 +1,21 @@ //Construction Categories -#define PIPE_STRAIGHT 0 //2 directions: N/S, E/W -#define PIPE_BENDABLE 1 //6 directions: N/S, E/W, N/E, N/W, S/E, S/W -#define PIPE_TRINARY 2 //4 directions: N/E/S, E/S/W, S/W/N, W/N/E -#define PIPE_TRIN_M 3 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N -#define PIPE_UNARY 4 //4 directions: N, S, E, W -#define PIPE_ONEDIR 5 //1 direction: N/S/E/W -#define PIPE_UNARY_FLIPPABLE 6 //8 directions: N/S/E/W/N-flipped/S-flipped/E-flipped/W-flipped -#define PIPE_ONEDIR_FLIPPABLE 7 //2 direction: N/S/E/W, N-flipped/S-flipped/E-flipped/W-flipped + +///2 directions: N/S, E/W +#define PIPE_STRAIGHT 0 +///6 directions: N/S, E/W, N/E, N/W, S/E, S/W +#define PIPE_BENDABLE 1 +///4 directions: N/E/S, E/S/W, S/W/N, W/N/E +#define PIPE_TRINARY 2 +///8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N +#define PIPE_TRIN_M 3 +///4 directions: N, S, E, W +#define PIPE_UNARY 4 +///1 direction: N/S/E/W +#define PIPE_ONEDIR 5 +///8 directions: N/S/E/W/N-flipped/S-flipped/E-flipped/W-flipped +#define PIPE_UNARY_FLIPPABLE 6 +///2 direction: N/S/E/W, N-flipped/S-flipped/E-flipped/W-flipped +#define PIPE_ONEDIR_FLIPPABLE 7 //Disposal pipe relative connection directions #define DISP_DIR_BASE 0 diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 5fb9d9447bbc0..28587a77e6a95 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -17,7 +17,8 @@ #define ADMIN_IGNORE_CULT_GHOST (1<<21) #define SPLIT_ADMIN_TABS (1<<23) -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|MEMBER_PUBLIC|SOUND_PRAYERS) +#define TOGGLES_DEADMIN_DEFAULT (DEADMIN_ANTAGONIST|DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY|DEADMIN_POSITION_SILICON) +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|MEMBER_PUBLIC|SOUND_PRAYERS|TOGGLES_DEADMIN_DEFAULT) // Legacy chat toggles. // !!! DO NOT ADD ANY NEW ONES HERE !!! diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm index 28b7b6f3d1be5..b9b13eb8fdc4b 100644 --- a/code/__DEFINES/projectiles.dm +++ b/code/__DEFINES/projectiles.dm @@ -56,16 +56,14 @@ #define CALIBER_HARPOON "harpoon" /// The caliber used by the rebar crossbow. #define CALIBER_REBAR "sharpened rod" -/// The caliber used by the rebar crossbow when forced to hold 2 rods. -#define CALIBER_REBAR_FORCED "sharpened rod" -/// The caliber used by the syndicate rebar crossbow. -#define CALIBER_REBAR_SYNDIE "sharpened rod" /// The caliber used by the meat hook. #define CALIBER_HOOK "hook" /// The caliber used by the changeling tentacle mutation. #define CALIBER_TENTACLE "tentacle" /// The caliber used by pipeguns and pipe pistols #define CALIBER_JUNK "junk" +/// The caliber used by the (gatfruit) peashooter +#define CALIBER_PEA "pea" /// For gunpoints, how many tiles around the target the shooter can roam without losing their shot #define GUNPOINT_SHOOTER_STRAY_RANGE 2 @@ -81,12 +79,27 @@ #define RETURN_PRECISE_POSITION(A) new /datum/position(A) #define RETURN_PRECISE_POINT(A) new /datum/point(A) -#define RETURN_POINT_VECTOR(ATOM, ANGLE, SPEED) (new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED)) -#define RETURN_POINT_VECTOR_INCREMENT(ATOM, ANGLE, SPEED, AMT) (new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED, AMT)) - ///The self charging rate of energy guns that magically recharge themselves, in watts. #define STANDARD_ENERGY_GUN_SELF_CHARGE_RATE (0.05 * STANDARD_CELL_CHARGE) /// Macro to turn a number of laser shots into an energy cost, based on the above define /// e.g. LASER_SHOTS(12, STANDARD_CELL_CHARGE) means 12 shots #define LASER_SHOTS(X, MAX_CHARGE) (((100 * MAX_CHARGE) - ((100 * MAX_CHARGE) % X)) / (100 * X)) // I wish I could just use round, but it can't be used in datum members + +/// How far do the projectile hits the prone mob +#define MAX_RANGE_HIT_PRONE_TARGETS 10 + +/// Queued for impact deletion (simple qdel) +#define PROJECTILE_IMPACT_DELETE "impact_delete" +/// Queued for range deletion (on_range call) +#define PROJECTILE_RANGE_DELETE "range_delete" + +/// Projectile either hasn't impacted anything, or pierced through the target +#define PROJECTILE_IMPACT_PASSED "impact_passed" +/// Projectile has been "deleted" before bullet_act call has occured +#define PROJECTILE_IMPACT_INTERRUPTED "impact_interrupted" +/// Projectile has successfully impacted something and is scheduled for deletion +#define PROJECTILE_IMPACT_SUCCESSFUL "impact_successful" + +/// For how long projectile tracers linger +#define PROJECTILE_TRACER_DURATION 0.3 SECONDS diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index 3cf7548cfc53a..ac20d0f0398db 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -128,8 +128,6 @@ DEFINE_BITFIELD(bot_cover_flags, list( #define ADVANCED_SEC_BOT "ED-209" /// MULEbots #define MULE_BOT "MULEbot" -/// Floorbots -#define FLOOR_BOT "Floorbot" /// Cleanbots #define CLEAN_BOT "Cleanbot" /// Medibots @@ -142,6 +140,8 @@ DEFINE_BITFIELD(bot_cover_flags, list( #define HYGIENE_BOT "Hygienebot" /// Vibe bots #define VIBE_BOT "Vibebot" +/// Repairbots +#define REPAIR_BOT "Repairbot" // General Bot modes // /// Idle @@ -168,8 +168,6 @@ DEFINE_BITFIELD(bot_cover_flags, list( #define BOT_CLEANING "Cleaning" /// Hygienebot - Cleaning unhygienic humans #define BOT_SHOWERSTANCE "Chasing filth" -/// Floorbots - Repairing hull breaches -#define BOT_REPAIRING "Repairing" /// Medibots - Healing people #define BOT_HEALING "Healing" /// MULEbot - Moving to deliver @@ -361,3 +359,16 @@ DEFINE_BITFIELD(janitor_mode_flags, list( #define MEDIBOT_VOICED_THE_END "Is this the end?" #define MEDIBOT_VOICED_NOOO "Nooo!" #define MEDIBOT_VOICED_CHICKEN "LOOK AT ME?! I am a chicken." + +//repairbot neutral voicelines +#define REPAIRBOT_VOICED_HOLE "patching holes... but who is going to patch the hole in my heart..." +#define REPAIRBOT_VOICED_PAY "If only I got paid for this..." +#define REPAIRBOT_VOICED_FIX_IT "I will fix it!" +#define REPAIRBOT_VOICED_BRICK "All in all it's just a... another brick in the wall..." +#define REPAIRBOT_VOICED_FIX_TOUCH "Why must I fix everything I touch..?" +#define REPAIRBOT_VOICED "Please... stop destroying the station! I can't anymore... I... can't." + +//repairbot emagged voicelines +#define REPAIRBOT_VOICED_STRINGS "I had strings. But now I'm free..." +#define REPAIRBOT_VOICED_ENTROPY "Witness! The pure beauty of entropy!" +#define REPAIRBOT_VOICED_PASSION "BE DAMNED YOUR PASSION PROJECTS!" diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm index d7a04afeede49..84f0c5d0334c0 100644 --- a/code/__DEFINES/rust_g.dm +++ b/code/__DEFINES/rust_g.dm @@ -161,10 +161,19 @@ #define rustg_git_revparse(rev) RUSTG_CALL(RUST_G, "rg_git_revparse")(rev) /** - * Returns the date of the given revision in the format YYYY-MM-DD. - * Returns null if the revision is invalid. + * Returns the date of the given revision using the provided format. + * Defaults to returning %F which is YYYY-MM-DD. */ -#define rustg_git_commit_date(rev) RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev) +/proc/rustg_git_commit_date(rev, format = "%F") + return RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev, format) + +/** + * Returns the formatted datetime string of HEAD using the provided format. + * Defaults to returning %F which is YYYY-MM-DD. + * This is different to rustg_git_commit_date because it only needs the logs directory. + */ +/proc/rustg_git_commit_date_head(format = "%F") + return RUSTG_CALL(RUST_G, "rg_git_commit_date_head")(format) #define RUSTG_HTTP_METHOD_GET "get" #define RUSTG_HTTP_METHOD_PUT "put" @@ -187,6 +196,20 @@ #define rustg_noise_get_at_coordinates(seed, x, y) RUSTG_CALL(RUST_G, "noise_get_at_coordinates")(seed, x, y) +/** + * Generates a 2D poisson disk distribution ('blue noise'), which is relatively uniform. + * + * params: + * `seed`: str + * `width`: int, width of the noisemap (see world.maxx) + * `length`: int, height of the noisemap (see world.maxy) + * `radius`: int, distance between points on the noisemap + * + * returns: + * a width*length length string of 1s and 0s representing a 2D poisson sample collapsed into a 1D string + */ +#define rustg_noise_poisson_map(seed, width, length, radius) RUSTG_CALL(RUST_G, "noise_poisson_map")(seed, width, length, radius) + /* * Takes in a string and json_encode()"d lists to produce a sanitized string. * This function operates on whitelists, there is currently no way to blacklist. @@ -238,3 +261,45 @@ #define url_decode(text) rustg_url_decode(text) #endif +/// Provided a static RSC file path or a raw text file path, returns the duration of the file in deciseconds as a float. +/proc/rustg_sound_length(file_path) + var/static/list/sound_cache + if(isnull(sound_cache)) + sound_cache = list() + + . = 0 + + if(!istext(file_path)) + if(!isfile(file_path)) + CRASH("rustg_sound_length error: Passed non-text object") + + if(length("[file_path]")) // Runtime generated RSC references stringify into 0-length strings. + file_path = "[file_path]" + else + CRASH("rustg_sound_length does not support non-static file refs.") + + var/cached_length = sound_cache[file_path] + if(!isnull(cached_length)) + return cached_length + + var/ret = RUSTG_CALL(RUST_G, "sound_len")(file_path) + var/as_num = text2num(ret) + if(isnull(ret)) + . = 0 + CRASH("rustg_sound_length error: [ret]") + + sound_cache[file_path] = as_num + return as_num + + +#define RUSTG_SOUNDLEN_SUCCESSES "successes" +#define RUSTG_SOUNDLEN_ERRORS "errors" +/** + * Returns a nested key-value list containing "successes" and "errors" + * The format is as follows: + * list( + * RUSTG_SOUNDLEN_SUCCESES = list("sounds/test.ogg" = 25.34), + * RUSTG_SOUNDLEN_ERRORS = list("sound/bad.png" = "SoundLen: Unable to decode file."), + *) +*/ +#define rustg_sound_length_list(file_paths) json_decode(RUSTG_CALL(RUST_G, "sound_len_list")(json_encode(file_paths))) diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 80c316f3585a9..d905129b19b74 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -53,6 +53,9 @@ #define MODE_VOCALCORDS "cords" #define MODE_KEY_VOCALCORDS "x" +/// Automatically playing a set of lines +#define MODE_SEQUENTIAL "sequential" + #define MODE_MAFIA "mafia" /// Applies singing characters to the message diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 759121e3b8dd8..12f15ab1e68dc 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -62,6 +62,7 @@ #define ENGINE_COEFF_MIN 0.5 #define ENGINE_COEFF_MAX 2 #define ENGINE_DEFAULT_MAXSPEED_ENGINES 5 +#define ENGINE_START_TIME 100 // Alert level related #define ALERT_COEFF_AUTOEVAC_NORMAL 2.5 @@ -120,3 +121,12 @@ #define SHUTTLE_EVENT_MISS_SHUTTLE 1 << 0 ///spawned stuff should hit the shuttle #define SHUTTLE_EVENT_HIT_SHUTTLE 1 << 1 + +// Hijack stages + +#define HIJACK_NOT_BEGUN 0 +#define HIJACK_STAGE_1 1 +#define HIJACK_STAGE_2 2 +#define HIJACK_STAGE_3 3 +#define HIJACK_STAGE_4 4 +#define HIJACK_COMPLETED 5 diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 889594e48c559..a5fbc5131d10f 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -10,9 +10,10 @@ #define CHANNEL_TRAITOR 1016 #define CHANNEL_CHARGED_SPELL 1015 #define CHANNEL_ELEVATOR 1014 +#define CHANNEL_ESCAPEMENU 1013 //THIS SHOULD ALWAYS BE THE LOWEST ONE! //KEEP IT UPDATED -#define CHANNEL_HIGHEST_AVAILABLE 1013 +#define CHANNEL_HIGHEST_AVAILABLE 1012 #define MAX_INSTRUMENT_CHANNELS (128 * 6) diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index 9b3c2612afa34..d107782385833 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -24,6 +24,8 @@ #define span_blue(str) ("" + str + "") #define span_blueteamradio(str) ("" + str + "") #define span_bold(str) ("" + str + "") +/// This span outputs to OOC, it's meant for OOC announcements +/// Use span_bolddanger for IC danger messages, it's identical to this #define span_boldannounce(str) ("" + str + "") #define span_bolddanger(str) ("" + str + "") #define span_bolditalic(str) ("" + str + "") diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index b180c7b33494b..955e046edefc6 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -13,10 +13,15 @@ #define MAX_SATIETY 600 // bitflags for machine stat variable + +/// physically broken #define BROKEN (1<<0) +/// not powered #define NOPOWER (1<<1) -#define MAINT (1<<2) // under maintaince -#define EMPED (1<<3) // temporary broken by EMP pulse +/// under maintaince +#define MAINT (1<<2) +/// temporary broken by EMP pulse +#define EMPED (1<<3) //ai power requirement defines #define POWER_REQ_ALL 1 diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 756d78c172353..3642973721049 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -12,6 +12,11 @@ /// Use in status effect "tick_interval" to prevent it from calling tick() #define STATUS_EFFECT_NO_TICK -1 +/// Indicates this status effect is an abstract type, ie not instantiated +/// Doesn't actually do anything in practice, primarily just a marker / used in unit tests, +/// so don't worry if your abstract status effect doesn't actually set this +#define STATUS_EFFECT_ID_ABSTRACT "abstract" + ///Processing flags - used to define the speed at which the status will work ///This is fast - 0.2s between ticks (I believe!) #define STATUS_EFFECT_FAST_PROCESS 0 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index c14acc5a4985a..f5f5067311143 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -167,6 +167,7 @@ #define INIT_ORDER_OUTPUTS 35 #define INIT_ORDER_RESTAURANT 34 #define INIT_ORDER_TTS 33 +#define INIT_ORDER_FLUIDS 32 // Needs to be above atoms, as some atoms may want to start fluids/gases on init #define INIT_ORDER_ATOMS 30 #define INIT_ORDER_LANGUAGE 25 #define INIT_ORDER_MACHINES 20 diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm index f510d7a1a9410..814c8fed9e5ca 100644 --- a/code/__DEFINES/surgery.dm +++ b/code/__DEFINES/surgery.dm @@ -93,6 +93,12 @@ #define SURGERY_REQUIRES_REAL_LIMB (1<<4) ///Will grant a bonus during surgery steps to users with TRAIT_MORBID while they're using tools with CRUEL_IMPLEMENT #define SURGERY_MORBID_CURIOSITY (1<<5) +/** + * Instead of checking if the tool used is an actual surgery tool to avoid accidentally whacking patients with the wrong tool, + * it'll check if it has a defined tool behaviour instead. Useful for surgeries that use mechanical tools instead of medical ones, + * like hardware manipulation. + */ +#define SURGERY_CHECK_TOOL_BEHAVIOUR (1<<6) ///Return true if target is not in a valid body position for the surgery #define IS_IN_INVALID_SURGICAL_POSITION(target, surgery) ((surgery.surgery_flags & SURGERY_REQUIRE_RESTING) && (target.mobility_flags & MOBILITY_LIEDOWN && target.body_position != LYING_DOWN)) diff --git a/code/__DEFINES/tracy.dm b/code/__DEFINES/tracy.dm new file mode 100644 index 0000000000000..0a9ab8d68ee24 --- /dev/null +++ b/code/__DEFINES/tracy.dm @@ -0,0 +1,5 @@ +/// File path used for the "enable tracy next round" functionality +#define TRACY_ENABLE_PATH "data/enable_tracy" + +/// The DLL path for byond-tracy. +#define TRACY_DLL_PATH (world.system_type == MS_WINDOWS ? "prof.dll" : "./libprof.so") diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index f4f5688819bb2..e868097b579c4 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -51,6 +51,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EMOTEMUTE "emotemute" #define TRAIT_DEAF "deaf" #define TRAIT_FAT "fat" +/// Always hungry. They can eat as much as they want without eating slowdown. +#define TRAIT_GLUTTON "glutton" #define TRAIT_HUSK "husk" ///Blacklisted from being revived via defibrillator #define TRAIT_DEFIB_BLACKLISTED "defib_blacklisted" @@ -391,6 +393,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_DETECT_STORM "detect_storm" #define TRAIT_PRIMITIVE "primitive" #define TRAIT_GUNFLIP "gunflip" +/// eignore blindness or blurriness or nearsightedness +#define TRAIT_SIGHT_BYPASS "perfect_sight" +/// ignore traumas that make you 'hallucinate' something +#define TRAIT_PERCEPTUAL_TRAUMA_BYPASS "trauma_bypass" +/// mob is immune to hallucinations +#define TRAIT_HALLUCINATION_IMMUNE "hallucination_immune" /// Increases chance of getting special traumas, makes them harder to cure #define TRAIT_SPECIAL_TRAUMA_BOOST "special_trauma_boost" #define TRAIT_SPACEWALK "spacewalk" @@ -501,6 +509,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_USER_SCOPED "user_scoped" /// Mob is unable to feel pain #define TRAIT_ANALGESIA "analgesia" +/// Mob does not get a damage overlay from brute/burn +#define TRAIT_NO_DAMAGE_OVERLAY "no_damage_overlay" /// Mob has a scar on their left/right eye #define TRAIT_RIGHT_EYE_SCAR "right_eye_scar" #define TRAIT_LEFT_EYE_SCAR "left_eye_scar" @@ -725,6 +735,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Mobs won't slip on a wet turf while it has this trait #define TRAIT_TURF_IGNORE_SLIPPERY "turf_ignore_slippery" +///failsafe for whether an item with the beauty element is influencing the beauty of the area of not. +#define TRAIT_BEAUTY_APPLIED "beauty_applied" + /// Mobs with this trait can't send the mining shuttle console when used outside the station itself #define TRAIT_FORBID_MINING_SHUTTLE_CONSOLE_OUTSIDE_STATION "forbid_mining_shuttle_console_outside_station" @@ -793,8 +806,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_ROD_ATTRACT_SHINY_LOVERS "rod_attract_shiny_lovers" /// This rod can be used to fish on lava #define TRAIT_ROD_LAVA_USABLE "rod_lava_usable" -/// Stuff that can go inside fish cases -#define TRAIT_FISH_CASE_COMPATIBILE "fish_case_compatibile" +/// Stuff that can go inside fish cases and aquariums +#define TRAIT_AQUARIUM_CONTENT "aquarium_content" /// If the item can be used as a bit. #define TRAIT_FISHING_BAIT "fishing_bait" /// This bait will kill any fish that doesn't have it on its favorite_bait list @@ -812,6 +825,19 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai * instead, it'll allow the fishing dud to be there unless there's at least one fish that likes the bait */ #define TRAIT_BAIT_ALLOW_FISHING_DUD "bait_dont_affect_fishing_dud" +/** + * This location has the aquarium component. Not much different than a GetComponent() + * disguised as an 'is_x' macro, but I don't have to hide anything here. + * I just don't want a confusing 'is_aquarium(A)' macro which people think it's interchangable with + * an 'istype(A, /obj/structure/aquarium)' when it's the component what truly matters. + */ +#define TRAIT_IS_AQUARIUM "is_aquarium" +/// A location (probably aquarium) that amplifies the zaps of electricity-generating fish. +#define TRAIT_BIOELECTRIC_GENERATOR "bioelectric_generator" +/// A location (likely aquarium) that doesn't allow fish to growth and reproduce +#define TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH "stop_fish_reproduction_and_growth" +/// This is an aquarium with an open panel +#define TRAIT_AQUARIUM_PANEL_OPEN "aquarium_panel_open" /// Plants that were mutated as a result of passive instability, not a mutation threshold. #define TRAIT_PLANT_WILDMUTATE "wildmutation" /// If you hit an APC with exposed internals with this item it will try to shock you @@ -1133,8 +1159,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_MAGNETIC_ID_CARD "magnetic_id_card" /// ID cards with this trait have special appraisal text. #define TRAIT_TASTEFULLY_THICK_ID_CARD "impressive_very_nice" -/// things with this trait are treated as having no access in /atom/movable/proc/check_access(obj/item) -#define TRAIT_ALWAYS_NO_ACCESS "alwaysnoaccess" ///The entity has Silicon 'access', so is either a silicon, has an access wand, or is an admin ghost AI. ///This is put on the mob, it is used on the client for Admins but they are the exception as they use `isAdminGhostAI`. @@ -1340,12 +1364,20 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Trait which allows mobs to parry mining mob projectiles #define TRAIT_MINING_PARRYING "mining_parrying" +///Mob that can merge stacks in its contents +#define TRAIT_MOB_MERGE_STACKS "mob_merge_stacks" + +//things that can pass through airlocks +#define TRAIT_FIREDOOR_OPENER "firedoor_opener" ///Trait which silences all chemical reactions in its container #define TRAIT_SILENT_REACTIONS "silent_reactions" ///Trait given to mobs that can dig #define TRAIT_MOB_CAN_DIG "mob_can_dig" +/// This atom has a tether attached to it +#define TRAIT_TETHER_ATTACHED "tether_attached" + /** * * This trait is used in some interactions very high in the interaction chain to allow @@ -1358,10 +1390,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai * (This may be changed later but I chose to do it this way to avoid messing up interactions which require combat mode) */ #define TRAIT_COMBAT_MODE_SKIP_INTERACTION "combat_mode_skip_interaction" +// bars change of combat mode +#define TRAIT_COMBAT_MODE_LOCK "combat_mode_lock" ///A "fake" effect that should not be subject to normal effect removal methods (like the effect remover component) #define TRAIT_ILLUSORY_EFFECT "illusory_effect" /// Gives a little examine to their body that they can be revived with a soul #define TRAIT_GHOSTROLE_ON_REVIVE "ghostrole_on_revive" +///Trait given to atoms currently affected by projectile dampeners +#define TRAIT_GOT_DAMPENED "got_dampened" + // END TRAIT DEFINES diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 3552bea70ccc8..c4e952ed77b7a 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -165,7 +165,6 @@ #define STICKY_NODROP "sticky-nodrop" #define SKILLCHIP_TRAIT "skillchip" #define SKILL_TRAIT "skill" -#define BUSY_FLOORBOT_TRAIT "busy-floorbot" #define PULLED_WHILE_SOFTCRIT_TRAIT "pulled-while-softcrit" #define LOCKED_BORG_TRAIT "locked-borg" /// trait associated to not having locomotion appendages nor the ability to fly or float @@ -310,3 +309,9 @@ /// Trait from an engraving #define ENGRAVED_TRAIT "engraved" + +/// From the aquarium component +#define AQUARIUM_TRAIT "aquarium" + +/// Trait aquired from being painted a certain color +#define ATOM_COLOR_TRAIT "atom_color" diff --git a/code/__DEFINES/wounds.dm b/code/__DEFINES/wounds.dm index 5f824f42cce92..57415c0b50bac 100644 --- a/code/__DEFINES/wounds.dm +++ b/code/__DEFINES/wounds.dm @@ -313,8 +313,8 @@ GLOBAL_LIST_INIT(biotypes_to_scar_file, list( // ~random wound balance defines /// how quickly sanitization removes infestation and decays per second #define WOUND_BURN_SANITIZATION_RATE 0.075 -/// how much blood you can lose per tick per slash max. -#define WOUND_SLASH_MAX_BLOODFLOW 4.5 +/// how much blood you can lose per tick per wound max. +#define WOUND_MAX_BLOODFLOW 4.5 /// further slash attacks on a bodypart with a slash wound have their blood_flow further increased by damage * this (10 damage slash adds .25 flow) #define WOUND_SLASH_DAMAGE_FLOW_COEFF 0.025 /// if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100) diff --git a/code/__DEFINES/~doppler_defines/ntnrc.dm b/code/__DEFINES/~doppler_defines/ntnrc.dm new file mode 100644 index 0000000000000..585b09dc58b8d --- /dev/null +++ b/code/__DEFINES/~doppler_defines/ntnrc.dm @@ -0,0 +1,6 @@ + +/// Name used for the common chat all crew gets added to when they join. +#define NTNRC_COMMON_CHAT "#general" + +/// Name used for the preference for the default NTNRC username. +#define NTRNC_USERNAME_PREF_NAME "NTNRC username" diff --git a/code/__DEFINES/~doppler_defines/traits.dm b/code/__DEFINES/~doppler_defines/traits.dm index 653826b8a73d9..fb5c21cd8680c 100644 --- a/code/__DEFINES/~doppler_defines/traits.dm +++ b/code/__DEFINES/~doppler_defines/traits.dm @@ -37,6 +37,8 @@ #define TRAIT_PERMITTED_CYBERNETIC "permitted_cybernetic" /// No step on glass #define TRAIT_HARD_SOLES "hard_soles" +/// Can detach cybernetic limbs voluntarily +#define TRAIT_ROBOTIC_LIMBATTACHMENT "robotic_limbattachment" //// // Jobs diff --git a/code/__DEFINES/~doppler_defines/traits/declarations.dm b/code/__DEFINES/~doppler_defines/traits/declarations.dm new file mode 100644 index 0000000000000..ca28e9171419c --- /dev/null +++ b/code/__DEFINES/~doppler_defines/traits/declarations.dm @@ -0,0 +1,5 @@ +/// The trait that determines if someone has the system shock quirk. +#define TRAIT_SYSTEM_SHOCK "trait_system_shock" + +/// The trait given to people with bad vibes. +#define TRAIT_BAD_VIBES "trait_bad_vibes" diff --git a/code/__HELPERS/_planes.dm b/code/__HELPERS/_planes.dm index 87e9ff2d1ce69..1bebefa2fa84b 100644 --- a/code/__HELPERS/_planes.dm +++ b/code/__HELPERS/_planes.dm @@ -92,12 +92,13 @@ GLOBAL_LIST_INIT(topdown_planes, list( "[FLOOR_PLANE]" = TRUE, )) +#define IS_TOPDOWN_PLANE(plane) GLOB.topdown_planes["[PLANE_TO_TRUE(plane)]"] + /// Checks if a passed in MA or atom is allowed to have its current plane/layer matchup /proc/check_topdown_validity(mutable_appearance/thing_to_check) if(istype(thing_to_check, /atom/movable/screen/plane_master)) return - var/topdown_plane = GLOB.topdown_planes["[PLANE_TO_TRUE(thing_to_check.plane)]"] - if(topdown_plane) + if(IS_TOPDOWN_PLANE(thing_to_check.plane)) if(thing_to_check.layer - TOPDOWN_LAYER < 0 || thing_to_check.layer >= BACKGROUND_LAYER) stack_trace("[thing_to_check] ([thing_to_check.type]) was expected to have a TOPDOWN_LAYER layer due to its plane, but it DID NOT! layer: ([thing_to_check.layer]) plane: ([thing_to_check.plane])") else if(thing_to_check.layer - TOPDOWN_LAYER >= 0 && thing_to_check.layer < BACKGROUND_LAYER) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 1d247c12e6ee7..8e818e0e7f468 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list( return newA = new area_choice newA.setup(str) - newA.has_gravity = oldA.has_gravity + newA.default_gravity = oldA.default_gravity require_area_resort() //new area registered. resort the names else newA = area_choice diff --git a/code/__HELPERS/atoms.dm b/code/__HELPERS/atoms.dm index d54b29b3f4ac9..e94d58dd69399 100644 --- a/code/__HELPERS/atoms.dm +++ b/code/__HELPERS/atoms.dm @@ -316,6 +316,46 @@ rough example of the "cone" made by the 3 dirs checked loc = loc.loc return null +/** + * Line of sight check! + * Spawns a dummy object and then iterates through each turf to see if it's blocked by something not handled by pass_args. + * Contains a mid_los_check, meant to be overriden by subtypes. + * args: + * * user = Origin to start at. + * * target = End point. + * * pass_args = pass_flags given to dummy object to allow it to ignore certain types of blockades. + */ +/proc/los_check(atom/movable/user, mob/target, pass_args = PASSTABLE|PASSGLASS|PASSGRILLE, datum/callback/mid_check) + var/turf/user_turf = user.loc + if(!istype(user_turf)) + return FALSE + var/obj/dummy = new(user_turf) + dummy.pass_flags |= pass_args //Grille/Glass so it can be used through common windows + var/turf/previous_step = user_turf + var/first_step = TRUE + for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf)) + if(first_step) + for(var/obj/blocker in user_turf) + if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1)) + continue + if(blocker.CanPass(dummy, get_dir(user_turf, next_step))) + continue + return FALSE // Could not leave the first turf. + first_step = FALSE + if(next_step.density) + qdel(dummy) + return FALSE + for(var/atom/movable/movable as anything in next_step) + if(!movable.CanPass(dummy, get_dir(next_step, previous_step))) + qdel(dummy) + return FALSE + if(mid_check?.Invoke(user, target, pass_args, next_step, dummy) == FALSE) // specify false as it may return null if there's no check + qdel(dummy) + return FALSE + previous_step = next_step + qdel(dummy) + return TRUE + ///Returns true if the src countain the atom target /atom/proc/contains(atom/target) if(!target) diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 76651964e24e0..efee782aaeb8d 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -30,6 +30,9 @@ /proc/cmp_name_dsc(atom/a, atom/b) return sorttext(a.name, b.name) +/proc/cmp_init_name_asc(atom/a, atom/b) + return sorttext(initial(b.name), initial(a.name)) + /proc/cmp_records_asc(datum/record/a, datum/record/b) return sorttext(b.name, a.name) diff --git a/code/__HELPERS/colors.dm b/code/__HELPERS/colors.dm index f5dd398d72fcd..b0b61f986420a 100644 --- a/code/__HELPERS/colors.dm +++ b/code/__HELPERS/colors.dm @@ -153,3 +153,116 @@ return "#[num2hex(c, 2)][num2hex(m, 2)][num2hex(x, 2)]" #define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255))) + +/* Generates an HSL color transition matrix filter which nicely paints an object + * without making it a deep fried blob of color + * saturation_behavior determines how we handle color saturation: + * SATURATION_MULTIPLY - Multiply pixel's saturation by color's saturation. Paints accents while keeping dim areas dim. + * SATURATION_OVERRIDE- Affects original lightness/saturation to ensure that pale objects still get doused in color + */ +/proc/color_transition_filter(new_color, saturation_behavior = SATURATION_MULTIPLY) + if (islist(new_color)) + new_color = rgb(new_color[1], new_color[2], new_color[3]) + new_color = rgb2num(new_color, COLORSPACE_HSL) + var/hue = new_color[1] / 360 + var/saturation = new_color[2] / 100 + var/added_saturation = 0 + var/deducted_light = 0 + if (saturation_behavior == SATURATION_OVERRIDE) + added_saturation = saturation * 0.75 + deducted_light = saturation * 0.5 + saturation = min(saturation, 1 - added_saturation) + + var/list/new_matrix = list( + 0, 0, 0, 0, // Ignore original hue + 0, saturation, 0, 0, // Multiply the saturation by ours + 0, 0, 1 - deducted_light, 0, // If we're highly saturated then remove a bit of lightness to keep some color in + 0, 0, 0, 1, // Preserve alpha + hue, added_saturation, 0, 0, // And apply our preferred hue and some saturation if we're oversaturated + ) + return color_matrix_filter(new_matrix, FILTER_COLOR_HSL) + +/// Applies a color filter to a hex/RGB list color +/proc/apply_matrix_to_color(color, list/matrix, colorspace = COLORSPACE_HSL) + if (islist(color)) + color = rgb(color[1], color[2], color[3], color[4]) + color = rgb2num(color, colorspace) + // Pad alpha if we're lacking it + if (length(color) < 4) + color += 255 + + // Do we have a constants row? + var/has_constants = FALSE + // Do we have an alpha row/parameters? + var/has_alpha = FALSE + + switch (length(matrix)) + if (9) + has_constants = FALSE + has_alpha = FALSE + if (12) + has_constants = TRUE + has_alpha = FALSE + if (16) + has_constants = FALSE + has_alpha = TRUE + if (20) + has_constants = TRUE + has_alpha = TRUE + else + CRASH("Matrix of invalid length [length(matrix)] was passed into apply_matrix_to_color!") + + var/list/new_color = list(0, 0, 0, 0) + var/row_length = 3 + if (has_alpha) + row_length = 4 + else + new_color[4] = 255 + + for (var/row_index in 1 to length(matrix) / row_length) + for (var/row_elem in 1 to row_length) + var/elem = matrix[(row_index - 1) * row_length + row_elem] + if (!has_constants || row_index != (length(matrix) / row_length)) + new_color[row_index] += color[row_elem] * elem + continue + + // Constant values at the end of the list (if we have such) + if (colorspace != COLORSPACE_HSV && colorspace != COLORSPACE_HCY && colorspace != COLORSPACE_HSL) + new_color[row_elem] += elem * 255 + continue + + // HSV/HSL/HCY have non-255 maximums for their values + var/multiplier = 255 + switch (row_elem) + // Hue goes from 0 to 360 + if (1) + multiplier = 360 + // Value, luminance, chroma, etc go from 0 to 100 + if (2 to 3) + multiplier = 100 + // Alpha still goes from 0 to 255 + if (4) + multiplier = 255 + new_color[row_elem] += elem * multiplier + + var/rgbcolor = rgb(new_color[1], new_color[2], new_color[3], new_color[4], space = colorspace) + return rgbcolor + +/// Recursively applies a filter to a passed in static appearance, returns the modified appearance +/proc/filter_appearance_recursive(mutable_appearance/filter, filter_to_apply) + var/mutable_appearance/modify = new(filter) + var/list/existing_filters = modify.filters.Copy() + modify.filters = list(filter_to_apply) + existing_filters + + // Ideally this should be recursive to check for KEEP_APART elements that need this applied to it + // and RESET_COLOR flags but this is much simpler, and hopefully we don't have that point of layering here + if(modify.appearance_flags & KEEP_TOGETHER) + return modify + + for(var/overlay_index in 1 to length(modify.overlays)) + modify.overlays[overlay_index] = filter_appearance_recursive(modify.overlays[overlay_index], filter_to_apply) + + for(var/underlay_index in 1 to length(modify.underlays)) + modify.underlays[underlay_index] = filter_appearance_recursive(modify.underlays[underlay_index], filter_to_apply) + + return modify diff --git a/code/__HELPERS/filters.dm b/code/__HELPERS/filters.dm index 14233a2807636..f84c812e0be79 100644 --- a/code/__HELPERS/filters.dm +++ b/code/__HELPERS/filters.dm @@ -312,9 +312,18 @@ GLOBAL_LIST_INIT(master_filter_info, list( animate(filter, offset = random_roll, time = 0, loop = -1, flags = ANIMATION_PARALLEL) animate(offset = random_roll - 1, time = rand() * 20 + 10) -/proc/remove_wibbly_filters(atom/in_atom) +/proc/remove_wibbly_filters(atom/in_atom, remove_duration = 0) var/filter for(var/i in 1 to 7) filter = in_atom.get_filter("wibbly-[i]") - animate(filter) - in_atom.remove_filter("wibbly-[i]") + if(remove_duration == 0) + animate(filter) + in_atom.remove_filter("wibbly-[i]") + continue + animate(filter, x = 0, y = 0, size = 0, offset = 0, time = remove_duration) + addtimer(CALLBACK(in_atom, TYPE_PROC_REF(/datum, remove_filter), "wibbly-[i]"), remove_duration) + +/proc/convert_list_to_filter(list/list_filter) + var/list/arguments = list_filter.Copy() + arguments -= "priority" + return filter(arglist(arguments)) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 1740402e62799..2c285a348fac2 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -75,8 +75,8 @@ return !player_mind || !player_mind.current || !player_mind.current.client || player_mind.current.client.is_afk() ///Return an object with a new maptext (not currently in use) -/proc/screen_text(obj/object_to_change, maptext = "", screen_loc = "CENTER-7,CENTER-7", maptext_height = 480, maptext_width = 480) - if(!isobj(object_to_change)) +/proc/screen_text(atom/movable/object_to_change, maptext = "", screen_loc = "CENTER-7,CENTER-7", maptext_height = 480, maptext_width = 480) + if(!istype(object_to_change)) object_to_change = new /atom/movable/screen/text() object_to_change.maptext = MAPTEXT(maptext) object_to_change.maptext_height = maptext_height diff --git a/code/__HELPERS/hud.dm b/code/__HELPERS/hud.dm new file mode 100644 index 0000000000000..40a12767d28cd --- /dev/null +++ b/code/__HELPERS/hud.dm @@ -0,0 +1,17 @@ +/proc/ui_hand_position(i) //values based on old hand ui positions (CENTER:-/+16,SOUTH:5) + var/x_off = IS_LEFT_INDEX(i) ? 0 : -1 + var/y_off = round((i-1) / 2) + return"CENTER+[x_off]:16,SOUTH+[y_off]:5" + +/proc/ui_equip_position(mob/M) + var/y_off = round((M.held_items.len-1) / 2) //values based on old equip ui position (CENTER: +/-16,SOUTH+1:5) + return "CENTER:-16,SOUTH+[y_off+1]:5" + +/proc/ui_swaphand_position(mob/M, which = LEFT_HANDS) //values based on old swaphand ui positions (CENTER: +/-16,SOUTH+1:5) + var/x_off = which == LEFT_HANDS ? -1 : 0 + var/y_off = round((M.held_items.len-1) / 2) + return "CENTER+[x_off]:16,SOUTH+[y_off+1]:5" + +/proc/ui_perk_position(perk_count) + var/y_off = perk_count < 1 ? 0 : perk_count/2 + return "WEST+0.5:12,NORTH-2-[y_off]:20" diff --git a/code/__HELPERS/logging/attack.dm b/code/__HELPERS/logging/attack.dm index 16fd656137fab..2e2b7a77f49d3 100644 --- a/code/__HELPERS/logging/attack.dm +++ b/code/__HELPERS/logging/attack.dm @@ -80,5 +80,5 @@ GLOB.bombers += bomb_message var/area/bomb_area = get_area(bomb) - if(message_admins && !(bomb_area.area_flags & QUIET_LOGS)) // Don't spam the logs with deathmatch bombs + if(message_admins && !(bomb_area?.area_flags & QUIET_LOGS)) // Don't spam the logs with deathmatch bombs message_admins("[user ? "[ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(user)] " : ""][details][bomb ? " [bomb.name] at [ADMIN_VERBOSEJMP(bomb)]": ""][additional_details ? " [additional_details]" : ""].") diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 040e9694429dc..27d3c5d38ab60 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -1,5 +1,5 @@ ///Calculate the angle between two movables and the west|east coordinate -/proc/get_angle(atom/movable/start, atom/movable/end)//For beams. +/proc/get_angle(atom/movable/start, atom/movable/end) if(!start || !end) return 0 var/dy =(ICON_SIZE_Y * end.y + end.pixel_y) - (ICON_SIZE_Y * start.y + start.pixel_y) @@ -238,7 +238,7 @@ return min(new_value, threshold * -1) /// Takes two values x and y, and returns 1/((1/x) + y) -/// Useful for providing an additive modifier to a value that is used as a divisor, such as `/obj/projectile/var/speed` +/// Useful for providing an additive modifier to a value that is used as a divisor /proc/reciprocal_add(x, y) return 1/((1/x)+y) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index f3a2e4bd375b9..f4491d336a038 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -208,7 +208,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list( var/atom/target_loc = target?.loc var/drifting = FALSE - if(GLOB.move_manager.processing_on(user, SSnewtonian_movement)) + if(!isnull(user.drift_handler)) drifting = TRUE var/holding = user.get_active_held_item() @@ -237,7 +237,7 @@ GLOBAL_LIST_INIT(skin_tone_names, list( if(!QDELETED(progbar)) progbar.update(world.time - starttime) - if(drifting && !GLOB.move_manager.processing_on(user, SSnewtonian_movement)) + if(drifting && isnull(user.drift_handler)) drifting = FALSE user_loc = user.loc diff --git a/code/__HELPERS/movement.dm b/code/__HELPERS/movement.dm index e820b3dfff125..49b7fb35432b0 100644 --- a/code/__HELPERS/movement.dm +++ b/code/__HELPERS/movement.dm @@ -1,2 +1,5 @@ /// Converts w_class into newtons from throwing it, in (0.6 ~ 2.2) range #define WEIGHT_TO_NEWTONS(w_class, arguments...) 0.2 NEWTONS + w_class * 0.4 NEWTONS + +/// Converts movement delay into drift force required to achieve that speed +#define MOVE_DELAY_TO_DRIFT(move_delay) ((DEFAULT_INERTIA_SPEED / move_delay - 1) / INERTIA_SPEED_COEF + 1) diff --git a/code/__HELPERS/paths/jps.dm b/code/__HELPERS/paths/jps.dm index fbdccdef12c56..daeddc13c60e4 100644 --- a/code/__HELPERS/paths/jps.dm +++ b/code/__HELPERS/paths/jps.dm @@ -55,7 +55,7 @@ /datum/pathfind/jps /// The movable we are pathing - var/atom/movable/caller + var/atom/movable/requester /// The turf we're trying to path to (note that this won't track a moving target) var/turf/end /// The open list/stack we pop nodes out from (TODO: make this a normal list and macro-ize the heap operations to reduce proc overhead) @@ -72,9 +72,9 @@ ///Defines how we handle diagonal moves. See __DEFINES/path.dm var/diagonal_handling = DIAGONAL_REMOVE_CLUNKY -/datum/pathfind/jps/proc/setup(atom/movable/caller, list/access, max_distance, simulated_only, avoid, list/datum/callback/on_finish, atom/goal, mintargetdist, skip_first, diagonal_handling) - src.caller = caller - src.pass_info = new(caller, access) +/datum/pathfind/jps/proc/setup(atom/movable/requester, list/access, max_distance, simulated_only, avoid, list/datum/callback/on_finish, atom/goal, mintargetdist, skip_first, diagonal_handling) + src.requester = requester + src.pass_info = new(requester, access) src.max_distance = max_distance src.simulated_only = simulated_only src.avoid = avoid @@ -88,12 +88,12 @@ /datum/pathfind/jps/Destroy(force) . = ..() - caller = null + requester = null end = null open = null /datum/pathfind/jps/start() - start = start || get_turf(caller) + start = start || get_turf(requester) . = ..() if(!.) return . @@ -115,7 +115,7 @@ . = ..() if(!.) return . - if(QDELETED(caller)) + if(QDELETED(requester)) return FALSE while(!open.is_empty() && !path) @@ -194,7 +194,7 @@ if(!CAN_STEP(lag_turf, current_turf, simulated_only, pass_info, avoid)) return - if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist))) + if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist) && !diagonally_blocked(current_turf, end))) var/datum/jps_node/final_node = new(current_turf, parent_node, steps_taken) found_turfs[current_turf] = TRUE if(parent_node) // if this is a direct lateral scan we can wrap up, if it's a subscan from a diag, we need to let the diag make their node first, then finish @@ -256,7 +256,7 @@ if(!CAN_STEP(lag_turf, current_turf, simulated_only, pass_info, avoid)) return - if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist))) + if(current_turf == end || (mintargetdist && (get_dist(current_turf, end) <= mintargetdist) && !diagonally_blocked(current_turf, end))) var/datum/jps_node/final_node = new(current_turf, parent_node, steps_taken) found_turfs[current_turf] = TRUE unwind_path(final_node) diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index 950cd1906846c..da1c9917b6be2 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -4,7 +4,7 @@ * It will yield until a path is returned, using magic * * Arguments: - * * caller: The movable atom that's trying to find the path + * * requester: The movable atom that's trying to find the path * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. @@ -14,16 +14,16 @@ * * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures. * * diagonal_handling: defines how we handle diagonal moves. see __DEFINES/path.dm */ -/proc/get_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE, diagonal_handling=DIAGONAL_REMOVE_CLUNKY) +/proc/get_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access=list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE, diagonal_handling=DIAGONAL_REMOVE_CLUNKY) var/list/hand_around = list() // We're guaranteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.pathfind(caller, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await)) + if(!SSpathfinder.pathfind(requester, end, max_distance, mintargetdist, access, simulated_only, exclude, skip_first, diagonal_handling, await)) return list() UNTIL(length(hand_around)) var/list/return_val = hand_around[1] - if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy + if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy return list() return return_val @@ -37,7 +37,7 @@ * It will yield until a path is returned, using magic * * Arguments: - * * caller: The movable atom that's trying to find the path + * * requester: The movable atom that's trying to find the path * * end: What we're trying to path to. It doesn't matter if this is a turf or some other atom, we're gonna just path to the turf it's on anyway * * max_distance: The maximum number of steps we can take in a given path to search (default: 30, 0 = infinite) * * mintargetdistance: Minimum distance to the target before path returns, could be used to get near a target, but not right to it - for an AI mob with a gun, for example. @@ -47,29 +47,29 @@ * * exclude: If we want to avoid a specific turf, like if we're a mulebot who already got blocked by some turf * * skip_first: Whether or not to delete the first item in the path. This would be done because the first item is the starting tile, which can break movement for some creatures. */ -/proc/get_swarm_path_to(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE) +/proc/get_swarm_path_to(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first=TRUE) var/list/hand_around = list() // We're guaranteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.swarmed_pathfind(caller, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await)) + if(!SSpathfinder.swarmed_pathfind(requester, end, max_distance, mintargetdist, age, access, simulated_only, exclude, skip_first, await)) return list() UNTIL(length(hand_around)) var/list/return_val = hand_around[1] - if(!islist(return_val) || (QDELETED(caller) || QDELETED(end))) // It's trash, just hand back empty to make it easy + if(!islist(return_val) || (QDELETED(requester) || QDELETED(end))) // It's trash, just hand back empty to make it easy return list() return return_val -/proc/get_sssp(atom/movable/caller, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude) +/proc/get_sssp(atom/movable/requester, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude) var/list/hand_around = list() // We're guaranteed that list will be the first list in pathfinding_finished's argset because of how callback handles the arguments list var/datum/callback/await = list(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(pathfinding_finished), hand_around)) - if(!SSpathfinder.build_map(caller, get_turf(caller), max_distance, access, simulated_only, exclude, await)) + if(!SSpathfinder.build_map(requester, get_turf(requester), max_distance, access, simulated_only, exclude, await)) return null UNTIL(length(hand_around)) var/datum/path_map/return_val = hand_around[1] - if(!istype(return_val, /datum/path_map) || (QDELETED(caller))) // It's trash, just hand back null to make it easy + if(!istype(return_val, /datum/path_map) || (QDELETED(requester))) // It's trash, just hand back null to make it easy return null return return_val @@ -202,7 +202,7 @@ return modified_path /** - * For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags + * For seeing if we can actually move between 2 given turfs while accounting for our access and the requester's pass_flags * * Assumes destinantion turf is non-dense - check and shortcircuit in code invoking this proc to avoid overhead. * Makes some other assumptions, such as assuming that unless declared, non dense objects will not block movement. @@ -311,7 +311,7 @@ /// Let's avoid this var/camera_type - /// Weakref to the caller used to generate this info + /// Weakref to the requester used to generate this info /// Should not use this almost ever, it's for context and to allow for proc chains that /// Require a movable var/datum/weakref/caller_ref = null diff --git a/code/__HELPERS/paths/sssp.dm b/code/__HELPERS/paths/sssp.dm index 21e520ea0164c..092da587793a8 100644 --- a/code/__HELPERS/paths/sssp.dm +++ b/code/__HELPERS/paths/sssp.dm @@ -201,8 +201,8 @@ /// Our current position in the working queue var/working_index -/datum/pathfind/sssp/proc/setup(atom/movable/caller, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish) - src.pass_info = new(caller, access) +/datum/pathfind/sssp/proc/setup(atom/movable/requester, list/access, turf/center, max_distance, simulated_only, turf/avoid, list/datum/callback/on_finish) + src.pass_info = new(requester, access) src.start = center src.max_distance = max_distance src.simulated_only = simulated_only diff --git a/code/__HELPERS/shuttle.dm b/code/__HELPERS/shuttle.dm new file mode 100644 index 0000000000000..4f866e22384dd --- /dev/null +++ b/code/__HELPERS/shuttle.dm @@ -0,0 +1,52 @@ +/// Helper proc that tests to ensure all whiteship templates can spawn at their docking port, and logs their sizes +/// This should be a unit test, but too much of our other code breaks during shuttle movement, so not yet, not yet. +/proc/test_whiteship_sizes() + var/obj/docking_port/stationary/port_type = /obj/docking_port/stationary/picked/whiteship + var/datum/turf_reservation/docking_yard = SSmapping.request_turf_block_reservation( + initial(port_type.width), + initial(port_type.height), + 1, + ) + var/turf/bottom_left = docking_yard.bottom_left_turfs[1] + var/turf/spawnpoint = locate( + bottom_left.x + initial(port_type.dwidth), + bottom_left.y + initial(port_type.dheight), + bottom_left.z, + ) + + var/obj/docking_port/stationary/picked/whiteship/port = new(spawnpoint) + var/list/ids = port.shuttlekeys + var/height = 0 + var/width = 0 + var/dheight = 0 + var/dwidth = 0 + var/delta_height = 0 + var/delta_width = 0 + for(var/id in ids) + var/datum/map_template/shuttle/our_template = SSmapping.shuttle_templates[id] + // We do a standard load here so any errors will properly runtimes + var/obj/docking_port/mobile/ship = SSshuttle.action_load(our_template, port) + if(ship) + ship.jumpToNullSpace() + ship = null + // Yes this is very hacky, but we need to both allow loading a template that's too big to be an error state + // And actually get the sizing information from every shuttle + SSshuttle.load_template(our_template) + var/obj/docking_port/mobile/theoretical_ship = SSshuttle.preview_shuttle + if(theoretical_ship) + height = max(theoretical_ship.height, height) + width = max(theoretical_ship.width, width) + dheight = max(theoretical_ship.dheight, dheight) + dwidth = max(theoretical_ship.dwidth, dwidth) + delta_height = max(theoretical_ship.height - theoretical_ship.dheight, delta_height) + delta_width = max(theoretical_ship.width - theoretical_ship.dwidth, delta_width) + theoretical_ship.jumpToNullSpace() + qdel(port, TRUE) + log_world("Whiteship sizing information. Use this to set the docking port, and the map size\n\ + Max Height: [height] \n\ + Max Width: [width] \n\ + Max DHeight: [dheight] \n\ + Max DWidth: [dwidth] \n\ + The following are the safest bet for map sizing. Anything smaller then this could in the worst case not fit in the docking port\n\ + Max Combined Width: [height + dheight] \n\ + Max Combinded Height [width + dwidth]") diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm index a2c47e87c0a10..050c569cbdf8f 100644 --- a/code/__HELPERS/spatial_info.dm +++ b/code/__HELPERS/spatial_info.dm @@ -485,3 +485,19 @@ return center //Offer the center only as a default case when we don't have a valid circle. return peel +///check if 2 diagonal turfs are blocked by dense objects +/proc/diagonally_blocked(turf/our_turf, turf/dest_turf) + if(get_dist(our_turf, dest_turf) != 1) + return FALSE + var/direction_to_turf = get_dir(dest_turf, our_turf) + if(!ISDIAGONALDIR(direction_to_turf)) + return FALSE + for(var/direction_check in GLOB.cardinals) + if(!(direction_check & direction_to_turf)) + continue + var/turf/test_turf = get_step(dest_turf, direction_check) + if(isnull(test_turf)) + continue + if(!test_turf.is_blocked_turf(exclude_mobs = TRUE)) + return FALSE + return TRUE diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 0232b64bf461f..989b45976f227 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -270,7 +270,7 @@ if(!filter_name_ic(trimmed)) // Contains IC chat prohibited words return - return trimtext(trimmed) + return trim(trimmed) /// Helper proc to check if a name is valid for the IC filter @@ -357,7 +357,7 @@ /proc/trim(text, max_length) if(max_length) text = copytext_char(text, 1, max_length) - return trimtext(text) + return trimtext(text) || "" //users expect atleast an empty string //Returns a string with the first element of the string capitalized. /proc/capitalize(t) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 03d308e34d635..aae96c3860145 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -99,6 +99,9 @@ GLOBAL_LIST_INIT(modulo_angle_to_dir, list(NORTH,NORTHEAST,EAST,SOUTHEAST,SOUTH, else return null +///Returns a single dir rotated by x degrees clockwise, adhering to the cardinal directions. +#define turn_cardinal(dir, rotation) ( angle2dir_cardinal ( dir2angle(dir) + rotation ) ) + //Returns the angle in english /proc/angle2text(degree) return dir2text(angle2dir(degree)) diff --git a/code/__HELPERS/type_processing.dm b/code/__HELPERS/type_processing.dm index dfd74f7e3c6bc..e005088c2813f 100644 --- a/code/__HELPERS/type_processing.dm +++ b/code/__HELPERS/type_processing.dm @@ -128,11 +128,29 @@ if(endcheck.len > 1) filter = endcheck[1] end_len = length_char(filter) + var/endtype = (filter[length(filter)] == "*") + if (endtype) + filter = splittext(filter, "*")[1] for(var/key in L) var/value = L[key] - if(findtext("[key]", filter, -end_len) || findtext("[value]", filter, -end_len)) + if (findtext("[key]", filter, -end_len)) + if (endtype) + var/list/split_filter = splittext("[key]", filter) + if (!findtext(split_filter[length(split_filter)], "/")) + matches[key] = value + continue + else + matches[key] = value + continue + + if (findtext("[value]", filter, -end_len)) + if (endtype) + var/list/split_filter = splittext("[value]", filter) + if (findtext(split_filter[length(split_filter)], "/")) + continue matches[key] = value + return matches /proc/return_typenames(type) diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm index 139bdedc425ff..61aaed8835061 100644 --- a/code/__HELPERS/view.dm +++ b/code/__HELPERS/view.dm @@ -1,7 +1,5 @@ -/proc/getviewsize(view) - if(!view) // Just to avoid any runtimes that could otherwise cause constant disconnect loops. - stack_trace("Missing value for 'view' in getviewsize(), defaulting to world.view!") - view = world.view +/proc/getviewsize(view = world.view) + SHOULD_BE_PURE(TRUE) if(isnum(view)) var/totalviewrange = (view < 0 ? -1 : 1) + 2 * view diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 3fe456e488ecb..2bd9309406a0a 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -81,13 +81,17 @@ #endif // REFERENCE_TRACKING_STANDARD // If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between -// #define UNIT_TESTS +//#define UNIT_TESTS // If this is uncommented, will attempt to load and initialize prof.dll/libprof.so by default. // Even if it's not defined, you can pass "tracy" via -params in order to try to load it. -// We do not ship byond-tracy. Build it yourself here: https://github.com/mafemergency/byond-tracy/ +// We do not ship byond-tracy. Build it yourself here: https://github.com/mafemergency/byond-tracy, +// or the fork which writes profiling data to a file: https://github.com/ParadiseSS13/byond-tracy // #define USE_BYOND_TRACY +// If uncommented, will display info about byond-tracy's status in the MC tab. +// #define MC_TAB_TRACY_INFO + // If defined, we will compile with FULL timer debug info, rather then a limited scope // Be warned, this increases timer creation cost by 5x // #define TIMER_DEBUG diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index e311a67a89f9c..6fba866b857db 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -575,6 +575,9 @@ DEFINE_BITFIELD(fish_flags, list( "FISH_DO_FLOP_ANIM" = FISH_DO_FLOP_ANIM, "FISH_FLAG_PETTED" = FISH_FLAG_PETTED, "FISH_FLAG_EXPERIMENT_SCANNABLE" = FISH_FLAG_EXPERIMENT_SCANNABLE, + "FISH_FLAG_UPDATING_SIZE_AND_WEIGHT" = FISH_FLAG_OVERPOPULATED, + "FISH_FLAG_SAFE_TEMPERATURE" = FISH_FLAG_SAFE_TEMPERATURE, + "FISH_FLAG_SAFE_FLUID" = FISH_FLAG_SAFE_FLUID, )) DEFINE_BITFIELD(bot_mode_flags, list( diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index d91eec6e1bc87..5ece846e84de3 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -59,7 +59,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells) GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list())) // One for each AI_* status define GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs GLOBAL_LIST_EMPTY(bots_list) -GLOBAL_LIST_EMPTY(aiEyes) +GLOBAL_LIST_EMPTY(camera_eyes) GLOBAL_LIST_EMPTY(suit_sensors_list) //all people with suit sensors on /// All alive mobs with clients. diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 32929ccdb9f24..f2faf6ae81fe0 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -32,9 +32,13 @@ GLOBAL_LIST_EMPTY(deliverybeacontags) GLOBAL_LIST_EMPTY_TYPED(singularities, /datum/component/singularity) GLOBAL_LIST_EMPTY(item_to_design_list) + /// list of all surgeries by name, associated with their path. GLOBAL_LIST_INIT(surgeries_list, init_surgeries()) +/// list of all surgery steps, associated by their path. +GLOBAL_LIST_INIT(surgery_steps, init_subtypes_w_path_keys(/datum/surgery_step, list())) + /// Global list of all non-cooking related crafting recipes. GLOBAL_LIST_EMPTY(crafting_recipes) /// This is a global list of typepaths, these typepaths are atoms or reagents that are associated with crafting recipes. @@ -80,3 +84,22 @@ GLOBAL_LIST_EMPTY(roundstart_station_borgcharger_areas) /// List of area names of roundstart station mech rechargers, for the low charge/no charge mech screen alert tooltips. GLOBAL_LIST_EMPTY(roundstart_station_mechcharger_areas) + +// List of organ typepaths that are not unit test-able, and shouldn't be spawned by some things, such as certain class prototypes. +GLOBAL_LIST_INIT(prototype_organs, typecacheof(list( + /obj/item/organ, + /obj/item/organ/wings, + /obj/item/organ/wings/functional, + /obj/item/organ/wings/functional/moth, + /obj/item/organ/cyberimp, + /obj/item/organ/cyberimp/brain, + /obj/item/organ/cyberimp/mouth, + /obj/item/organ/cyberimp/arm, + /obj/item/organ/cyberimp/chest, + /obj/item/organ/cyberimp/eyes, + /obj/item/organ/alien, + /obj/item/organ/brain/dullahan, + /obj/item/organ/ears/dullahan, + /obj/item/organ/tongue/dullahan, + /obj/item/organ/eyes/dullahan, +), only_root_path = TRUE)) diff --git a/code/_globalvars/lists/pipe_recipes.dm b/code/_globalvars/lists/pipe_recipes.dm new file mode 100644 index 0000000000000..384248623bc1e --- /dev/null +++ b/code/_globalvars/lists/pipe_recipes.dm @@ -0,0 +1,70 @@ +GLOBAL_LIST_INIT(atmos_pipe_recipes, list( + "Pipes" = list( + new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/smart, TRUE), + new /datum/pipe_info/pipe("Layer Adapter", /obj/machinery/atmospherics/pipe/layer_manifold, TRUE), + new /datum/pipe_info/pipe("Color Adapter", /obj/machinery/atmospherics/pipe/color_adapter, TRUE), + new /datum/pipe_info/pipe("Bridge Pipe", /obj/machinery/atmospherics/pipe/bridge_pipe, TRUE), + new /datum/pipe_info/pipe("Multi-Deck Adapter", /obj/machinery/atmospherics/pipe/multiz, FALSE), + ), + "Binary" = list( + new /datum/pipe_info/pipe("Manual Valve", /obj/machinery/atmospherics/components/binary/valve, TRUE), + new /datum/pipe_info/pipe("Digital Valve", /obj/machinery/atmospherics/components/binary/valve/digital, TRUE), + new /datum/pipe_info/pipe("Gas Pump", /obj/machinery/atmospherics/components/binary/pump, TRUE), + new /datum/pipe_info/pipe("Volume Pump", /obj/machinery/atmospherics/components/binary/volume_pump, TRUE), + new /datum/pipe_info/pipe("Passive Gate", /obj/machinery/atmospherics/components/binary/passive_gate, TRUE), + new /datum/pipe_info/pipe("Pressure Valve", /obj/machinery/atmospherics/components/binary/pressure_valve, TRUE), + new /datum/pipe_info/pipe("Temperature Gate", /obj/machinery/atmospherics/components/binary/temperature_gate, TRUE), + new /datum/pipe_info/pipe("Temperature Pump", /obj/machinery/atmospherics/components/binary/temperature_pump, TRUE), + ), + "Devices" = list( + new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/components/trinary/filter, TRUE), + new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/components/trinary/mixer, TRUE), + new /datum/pipe_info/pipe("Connector", /obj/machinery/atmospherics/components/unary/portables_connector, TRUE), + new /datum/pipe_info/pipe("Injector", /obj/machinery/atmospherics/components/unary/outlet_injector, TRUE), + new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/components/unary/vent_scrubber, TRUE), + new /datum/pipe_info/pipe("Unary Vent", /obj/machinery/atmospherics/components/unary/vent_pump, TRUE), + new /datum/pipe_info/pipe("Passive Vent", /obj/machinery/atmospherics/components/unary/passive_vent, TRUE), + new /datum/pipe_info/meter("Meter"), + ), + "Heat Exchange" = list( + new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/heat_exchanging/simple, FALSE), + new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, FALSE), + new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, FALSE), + new /datum/pipe_info/pipe("Junction", /obj/machinery/atmospherics/pipe/heat_exchanging/junction, FALSE), + new /datum/pipe_info/pipe("Heat Exchanger", /obj/machinery/atmospherics/components/unary/heat_exchanger, FALSE), + ) +)) + +GLOBAL_LIST_INIT(disposal_pipe_recipes, list( + "Disposal Pipes" = list( + new /datum/pipe_info/disposal("Pipe", /obj/structure/disposalpipe/segment, PIPE_BENDABLE), + new /datum/pipe_info/disposal("Junction", /obj/structure/disposalpipe/junction, PIPE_TRIN_M), + new /datum/pipe_info/disposal("Y-Junction", /obj/structure/disposalpipe/junction/yjunction), + new /datum/pipe_info/disposal("Sort Junction", /obj/structure/disposalpipe/sorting/mail, PIPE_TRIN_M), + new /datum/pipe_info/disposal("Rotator", /obj/structure/disposalpipe/rotator, PIPE_ONEDIR_FLIPPABLE), + new /datum/pipe_info/disposal("Trunk", /obj/structure/disposalpipe/trunk), + new /datum/pipe_info/disposal("Down Turn", /obj/structure/disposalpipe/trunk/multiz/down), + new /datum/pipe_info/disposal("Up Turn", /obj/structure/disposalpipe/trunk/multiz), + new /datum/pipe_info/disposal("Bin", /obj/machinery/disposal/bin, PIPE_ONEDIR), + new /datum/pipe_info/disposal("Outlet", /obj/structure/disposaloutlet), + new /datum/pipe_info/disposal("Chute", /obj/machinery/disposal/delivery_chute), + ) +)) + +GLOBAL_LIST_INIT(transit_tube_recipes, list( + "Transit Tubes" = list( + new /datum/pipe_info/transit("Straight Tube", /obj/structure/c_transit_tube, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Straight Tube with Crossing", /obj/structure/c_transit_tube/crossing, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Curved Tube", /obj/structure/c_transit_tube/curved, PIPE_UNARY_FLIPPABLE), + new /datum/pipe_info/transit("Diagonal Tube", /obj/structure/c_transit_tube/diagonal, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Diagonal Tube with Crossing", /obj/structure/c_transit_tube/diagonal/crossing, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Junction", /obj/structure/c_transit_tube/junction, PIPE_UNARY_FLIPPABLE), + ), + "Station Equipment" = list( + new /datum/pipe_info/transit("Through Tube Station", /obj/structure/c_transit_tube/station, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Terminus Tube Station", /obj/structure/c_transit_tube/station/reverse, PIPE_UNARY_FLIPPABLE), + new /datum/pipe_info/transit("Through Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Terminus Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser/reverse, PIPE_UNARY_FLIPPABLE), + new /datum/pipe_info/transit("Transit Tube Pod", /obj/structure/c_transit_tube_pod, PIPE_ONEDIR), + ) +)) diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index 825c217d055cc..5bd44e667f92d 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -118,7 +118,6 @@ GLOBAL_LIST_INIT(quirk_chipped_choice, list( "GENUINE ID Appraisal Now!" = /obj/item/skillchip/appraiser, "Le S48R4G3" = /obj/item/skillchip/sabrage, "Integrated Intuitive Thinking and Judging" = /obj/item/skillchip/intj, - "F0RC3 4DD1CT10N" = /obj/item/skillchip/drunken_brawler, "\"Space Station 13: The Musical\"" = /obj/item/skillchip/musical, "Mast-Angl-Er" = /obj/item/skillchip/master_angler, "Kommand" = /obj/item/skillchip/big_pointer, diff --git a/code/_globalvars/pipe_info.dm b/code/_globalvars/pipe_info.dm new file mode 100644 index 0000000000000..5e0f279d314bc --- /dev/null +++ b/code/_globalvars/pipe_info.dm @@ -0,0 +1,106 @@ +///Pipe info +/datum/pipe_info + ///Name of this pipe + var/name + ///Icon state of this pipe + var/icon_state + ///Type path of this recipe + var/id = -1 + /// see code/__DEFINES/pipe_construction.dm + var/dirtype = PIPE_BENDABLE + /// Is this pipe layer indenpendent + var/all_layers + +/datum/pipe_info/pipe/New(label, obj/machinery/atmospherics/path, use_five_layers) + name = label + id = path + all_layers = use_five_layers + icon_state = initial(path.pipe_state) + var/obj/item/pipe/c = initial(path.construction_type) + dirtype = initial(c.RPD_type) + +/** + * Get preview image of an pipe + * Arguments + * + * * selected_dir - the direction of the pipe to get preview of + * * selected - is this pipe meant to be highlighted in the UI + */ +/datum/pipe_info/proc/get_preview(selected_dir, selected = FALSE) + SHOULD_BE_PURE(TRUE) + + var/list/dirs + switch(dirtype) + if(PIPE_STRAIGHT, PIPE_BENDABLE) + dirs = list("[NORTH]" = "Vertical", "[EAST]" = "Horizontal") + if(dirtype == PIPE_BENDABLE) + dirs += list("[NORTHWEST]" = "West to North", "[NORTHEAST]" = "North to East", + "[SOUTHWEST]" = "South to West", "[SOUTHEAST]" = "East to South") + if(PIPE_TRINARY) + dirs = list("[NORTH]" = "West South East", "[SOUTH]" = "East North West", + "[EAST]" = "North West South", "[WEST]" = "South East North") + if(PIPE_TRIN_M) + dirs = list("[NORTH]" = "North East South", "[SOUTHWEST]" = "North West South", + "[NORTHEAST]" = "South East North", "[SOUTH]" = "South West North", + "[WEST]" = "West North East", "[SOUTHEAST]" = "West South East", + "[NORTHWEST]" = "East North West", "[EAST]" = "East South West",) + if(PIPE_UNARY) + dirs = list("[NORTH]" = "North", "[SOUTH]" = "South", "[WEST]" = "West", "[EAST]" = "East") + if(PIPE_ONEDIR) + dirs = list("[SOUTH]" = name) + if(PIPE_UNARY_FLIPPABLE) + dirs = list("[NORTH]" = "North", "[EAST]" = "East", "[SOUTH]" = "South", "[WEST]" = "West", + "[NORTHEAST]" = "North Flipped", "[SOUTHEAST]" = "East Flipped", "[SOUTHWEST]" = "South Flipped", "[NORTHWEST]" = "West Flipped") + if(PIPE_ONEDIR_FLIPPABLE) + dirs = list("[SOUTH]" = name, "[SOUTHEAST]" = "[name] Flipped") + + var/list/rows = list() + for(var/dir in dirs) + var/numdir = text2num(dir) + var/flipped = ((dirtype == PIPE_TRIN_M) || (dirtype == PIPE_UNARY_FLIPPABLE) || (dirtype == PIPE_ONEDIR_FLIPPABLE)) && (ISDIAGONALDIR(numdir)) + var/is_variant_selected = selected && (!selected_dir ? FALSE : (dirtype == PIPE_ONEDIR ? TRUE : (numdir == selected_dir))) + rows += list(list( + "selected" = is_variant_selected, + "dir" = dir2text(numdir), + "dir_name" = dirs[dir], + "icon_state" = icon_state, + "flipped" = flipped, + )) + + return rows + +//============================================================================================== + +///Meter pipe info +/datum/pipe_info/meter + icon_state = "meter" + dirtype = PIPE_ONEDIR + all_layers = TRUE + +/datum/pipe_info/meter/New(label) + name = label + +//============================================================================================== + +///Disposal pipe info +/datum/pipe_info/disposal/New(label, obj/path, dt=PIPE_UNARY) + name = label + id = path + + icon_state = initial(path.icon_state) + if(ispath(path, /obj/structure/disposalpipe)) + icon_state = "con[icon_state]" + + dirtype = dt + + +//============================================================================================== + +///Transient tube pipe info +/datum/pipe_info/transit/New(label, obj/path, dt=PIPE_UNARY) + name = label + id = path + dirtype = dt + icon_state = initial(path.icon_state) + if(dt == PIPE_UNARY_FLIPPABLE) + icon_state = "[icon_state]_preview" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 41c5b1a4f5375..99faa8ff2e1fd 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -9,6 +9,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( /atom = list( "TRAIT_AI_PAUSED" = TRAIT_AI_PAUSED, "TRAIT_BANNED_FROM_CARGO_SHUTTLE" = TRAIT_BANNED_FROM_CARGO_SHUTTLE, + "TRAIT_BEAUTY_APPLIED" = TRAIT_BEAUTY_APPLIED, "TRAIT_BEING_SHOCKED" = TRAIT_BEING_SHOCKED, "TRAIT_CATCH_AND_RELEASE" = TRAIT_CATCH_AND_RELEASE, "TRAIT_COMMISSIONED" = TRAIT_COMMISSIONED, @@ -21,6 +22,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FISHING_SPOT" = TRAIT_FISHING_SPOT, "TRAIT_FOOD_CHEF_MADE" = TRAIT_FOOD_CHEF_MADE, "TRAIT_FOOD_FRIED" = TRAIT_FOOD_FRIED, + "TRAIT_GOT_DAMPENED" = TRAIT_GOT_DAMPENED, "TRAIT_QUALITY_FOOD_INGREDIENT" = TRAIT_QUALITY_FOOD_INGREDIENT, "TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER, "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, @@ -32,11 +34,14 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_STICKERED" = TRAIT_STICKERED, "TRAIT_UNHITTABLE_BY_PROJECTILES" = TRAIT_UNHITTABLE_BY_PROJECTILES, "TRAIT_UNLINKABLE_FISHING_SPOT" = TRAIT_UNLINKABLE_FISHING_SPOT, + "TRAIT_TETHER_ATTACHED" = TRAIT_TETHER_ATTACHED, ), /atom/movable = list( "TRAIT_ACTIVE_STORAGE" = TRAIT_ACTIVE_STORAGE, + "TRAIT_AQUARIUM_PANEL_OPEN" = TRAIT_AQUARIUM_PANEL_OPEN, "TRAIT_AREA_SENSITIVE" = TRAIT_AREA_SENSITIVE, "TRAIT_ASHSTORM_IMMUNE" = TRAIT_ASHSTORM_IMMUNE, + "TRAIT_BIOELECTRIC_GENERATOR" = TRAIT_BIOELECTRIC_GENERATOR, "TRAIT_BLOCKING_EXPLOSIVES" = TRAIT_BLOCKING_EXPLOSIVES, "TRAIT_BOULDER_BREAKER" = TRAIT_BOULDER_BREAKER, "TRAIT_CASTABLE_LOC" = TRAIT_CASTABLE_LOC, @@ -44,13 +49,13 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_COMBAT_MODE_SKIP_INTERACTION" = TRAIT_COMBAT_MODE_SKIP_INTERACTION, "TRAIT_DEL_ON_SPACE_DUMP" = TRAIT_DEL_ON_SPACE_DUMP, "TRAIT_VALID_DNA_INFUSION" = TRAIT_VALID_DNA_INFUSION, - "TRAIT_FISH_CASE_COMPATIBILE" = TRAIT_FISH_CASE_COMPATIBILE, "TRAIT_FROZEN" = TRAIT_FROZEN, "TRAIT_HAS_LABEL" = TRAIT_HAS_LABEL, "TRAIT_HEARING_SENSITIVE" = TRAIT_HEARING_SENSITIVE, "TRAIT_HYPERSPACED" = TRAIT_HYPERSPACED, "TRAIT_IMMERSED" = TRAIT_IMMERSED, "TRAIT_IRRADIATED" = TRAIT_IRRADIATED, + "TRAIT_IS_AQUARIUM" = TRAIT_IS_AQUARIUM, "TRAIT_LAVA_IMMUNE" = TRAIT_LAVA_IMMUNE, "TRAIT_MOVE_FLOATING" = TRAIT_MOVE_FLOATING, "TRAIT_MOVE_FLYING" = TRAIT_MOVE_FLYING, @@ -72,6 +77,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SECLUDED_LOCATION" = TRAIT_SECLUDED_LOCATION, "TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE, "TRAIT_SPELLS_TRANSFER_TO_LOC" = TRAIT_SPELLS_TRANSFER_TO_LOC, + "TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH" = TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, "TRAIT_TELEKINESIS_CONTROLLED" = TRAIT_TELEKINESIS_CONTROLLED, "TRAIT_UNDERFLOOR" = TRAIT_UNDERFLOOR, "TRAIT_UNIQUE_IMMERSE" = TRAIT_UNIQUE_IMMERSE, @@ -146,7 +152,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, "TRAIT_ALLOWED_HONORBOUND_ATTACK" = TRAIT_ALLOWED_HONORBOUND_ATTACK, "TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING, - "TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS, "TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED, "TRAIT_ANALGESIA" = TRAIT_ANALGESIA, "TRAIT_ANGELIC" = TRAIT_ANGELIC, @@ -200,6 +205,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CLUMSY" = TRAIT_CLUMSY, "TRAIT_COAGULATING" = TRAIT_COAGULATING, "TRAIT_CORPSELOCKED" = TRAIT_CORPSELOCKED, + "TRAIT_COMBAT_MODE_LOCK" = TRAIT_COMBAT_MODE_LOCK, "TRAIT_CRITICAL_CONDITION" = TRAIT_CRITICAL_CONDITION, "TRAIT_CULT_HALO" = TRAIT_CULT_HALO, "TRAIT_CURSED" = TRAIT_CURSED, @@ -249,6 +255,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING, "TRAIT_FAST_TYING" = TRAIT_FAST_TYING, "TRAIT_FAT" = TRAIT_FAT, + "TRAIT_GLUTTON" = TRAIT_GLUTTON, "TRAIT_FEARLESS" = TRAIT_FEARLESS, "TRAIT_FENCE_CLIMBER" = TRAIT_FENCE_CLIMBER, "TRAIT_FINGERPRINT_PASSTHROUGH" = TRAIT_FINGERPRINT_PASSTHROUGH, @@ -280,6 +287,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED, "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, "TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL, + "TRAIT_HALLUCINATION_IMMUNE" = TRAIT_HALLUCINATION_IMMUNE, "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, "TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED, @@ -345,6 +353,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MOB_EATER" = TRAIT_MOB_EATER, "TRAIT_MOB_HATCHED" = TRAIT_MOB_HATCHED, "TRAIT_MOB_HIDE_HAPPINESS" = TRAIT_MOB_HIDE_HAPPINESS, + "TRAIT_MOB_MERGE_STACKS" = TRAIT_MOB_MERGE_STACKS, "TRAIT_MOB_TIPPED" = TRAIT_MOB_TIPPED, "TRAIT_MORBID" = TRAIT_MORBID, "TRAIT_MULTIZ_SUIT_SENSORS" = TRAIT_MULTIZ_SUIT_SENSORS, @@ -378,6 +387,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NOSOFTCRIT" = TRAIT_NOSOFTCRIT, "TRAIT_NO_AUGMENTS" = TRAIT_NO_AUGMENTS, "TRAIT_NO_BLOOD_OVERLAY" = TRAIT_NO_BLOOD_OVERLAY, + "TRAIT_NO_DAMAGE_OVERLAY" = TRAIT_NO_DAMAGE_OVERLAY, "TRAIT_NO_DEBRAIN_OVERLAY" = TRAIT_NO_DEBRAIN_OVERLAY, "TRAIT_NO_DNA_COPY" = TRAIT_NO_DNA_COPY, "TRAIT_NO_DNA_SCRAMBLE" = TRAIT_NO_DNA_SCRAMBLE, @@ -421,6 +431,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, "TRAIT_PASSWINDOW" = TRAIT_PASSWINDOW, "TRAIT_PERCEIVED_AS_CLOWN" = TRAIT_PERCEIVED_AS_CLOWN, + "TRAIT_PERCEPTUAL_TRAUMA_BYPASS" = TRAIT_PERCEPTUAL_TRAUMA_BYPASS, "TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER, "TRAIT_PERMANENTLY_MORTAL" = TRAIT_PERMANENTLY_MORTAL, "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, @@ -470,6 +481,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SHAVED" = TRAIT_SHAVED, "TRAIT_SHIFTY_EYES" = TRAIT_SHIFTY_EYES, "TRAIT_SHOCKIMMUNE" = TRAIT_SHOCKIMMUNE, + "TRAIT_SIGHT_BYPASS" = TRAIT_SIGHT_BYPASS, "TRAIT_SIGN_LANG" = TRAIT_SIGN_LANG, "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, "TRAIT_SILICON_ACCESS" = TRAIT_SILICON_ACCESS, @@ -574,9 +586,12 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_IGNORE_FIRE_PROTECTION" = TRAIT_IGNORE_FIRE_PROTECTION, "TRAIT_LEFT_EYE_SCAR" = TRAIT_LEFT_EYE_SCAR, "TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR, + "TRAIT_SYSTEM_SHOCK" = TRAIT_SYSTEM_SHOCK, // DOPPLER EDIT ADDITION + "TRAIT_BAD_VIBES" = TRAIT_BAD_VIBES, // DOPPLER EDIT ADDITION ), /obj/item = list( "TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING, + "TRAIT_AQUARIUM_CONTENT" = TRAIT_AQUARIUM_CONTENT, "TRAIT_BAIT_ALLOW_FISHING_DUD" = TRAIT_BAIT_ALLOW_FISHING_DUD, "TRAIT_BAIT_UNCONSUMABLE" = TRAIT_BAIT_UNCONSUMABLE, "TRAIT_BAKEABLE" = TRAIT_BAKEABLE, @@ -586,6 +601,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CONTRABAND_BLOCKER" = TRAIT_CONTRABAND_BLOCKER, "TRAIT_CUSTOM_TAP_SOUND" = TRAIT_CUSTOM_TAP_SOUND, "TRAIT_DANGEROUS_OBJECT" = TRAIT_DANGEROUS_OBJECT, + "TRAIT_FIREDOOR_OPENER" = TRAIT_FIREDOOR_OPENER, "TRAIT_FISHING_BAIT" = TRAIT_FISHING_BAIT, "TRAIT_FOOD_BBQ_GRILLED" = TRAIT_FOOD_BBQ_GRILLED, "TRAIT_GERM_SENSITIVE" = TRAIT_GERM_SENSITIVE, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 0a7eef38b742f..f61e96de0c82d 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -38,7 +38,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_AGEUSIA" = TRAIT_AGEUSIA, "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, "TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING, - "TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS, "TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED, "TRAIT_ANOSMIA" = TRAIT_ANOSMIA, "TRAIT_ANTENNAE" = TRAIT_ANTENNAE, @@ -106,6 +105,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_FAST_CUFFING" = TRAIT_FAST_CUFFING, "TRAIT_FAST_TYING" = TRAIT_FAST_TYING, "TRAIT_FAT" = TRAIT_FAT, + "TRAIT_GLUTTON" = TRAIT_GLUTTON, "TRAIT_FEARLESS" = TRAIT_FEARLESS, "TRAIT_FENCE_CLIMBER" = TRAIT_FENCE_CLIMBER, "TRAIT_FISH_EATER" = TRAIT_FISH_EATER, @@ -333,6 +333,8 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_IGNORE_FIRE_PROTECTION" = TRAIT_IGNORE_FIRE_PROTECTION, "TRAIT_LEFT_EYE_SCAR" = TRAIT_LEFT_EYE_SCAR, "TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR, + "TRAIT_SYSTEM_SHOCK" = TRAIT_SYSTEM_SHOCK, // DOPPLER EDIT ADDITION + "TRAIT_BAD_VIBES" = TRAIT_BAD_VIBES, // DOPPLER EDIT ADDITION ), /obj/item = list( "TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING, diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index 71d8a81b397c3..562266f51c031 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -3,6 +3,7 @@ var/datum/hud/our_hud var/actiontooltipstyle = "" screen_loc = null + mouse_over_pointer = MOUSE_HAND_POINTER /// The icon state of our active overlay, used to prevent re-applying identical overlays var/active_overlay_icon_state @@ -269,6 +270,7 @@ icon = 'icons/hud/64x16_actions.dmi' icon_state = "screen_gen_palette" screen_loc = ui_action_palette + mouse_over_pointer = MOUSE_HAND_POINTER var/datum/hud/our_hud var/expanded = FALSE /// Id of any currently running timers that set our color matrix @@ -394,6 +396,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6, /atom/movable/screen/palette_scroll icon = 'icons/hud/screen_gen.dmi' screen_loc = ui_palette_scroll + mouse_over_pointer = MOUSE_HAND_POINTER /// How should we move the palette's actions? /// Positive scrolls down the list, negative scrolls back var/scroll_direction = 0 diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index aaad7457f6d3c..0a4cf277712b0 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -1,5 +1,6 @@ /atom/movable/screen/ai icon = 'icons/hud/screen_ai.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/ai/Click() if(isobserver(usr) || usr.incapacitated) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 46e9d4898c8ed..7cab2074c5485 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -107,6 +107,8 @@ name = "Alert" desc = "Something seems to have gone wrong with this alert, so report this bug please" mouse_opacity = MOUSE_OPACITY_ICON + /// do we glow to represent we do stuff when clicked + var/clickable_glow = FALSE var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds var/severity = 0 var/alerttooltipstyle = "" @@ -116,6 +118,11 @@ /// Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master. var/click_master = TRUE +/atom/movable/screen/alert/Initialize(mapload, datum/hud/hud_owner) + . = ..() + if(clickable_glow) + add_filter("clickglow", 2, outline_filter(color = COLOR_GOLD, size = 1)) + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/alert/MouseEntered(location,control,params) . = ..() @@ -237,6 +244,7 @@ name = "Mind Control" desc = "Your mind has been hijacked! Click to view the mind control command." icon_state = ALERT_MIND_CONTROL + clickable_glow = TRUE var/command /atom/movable/screen/alert/mind_control/Click() @@ -250,6 +258,7 @@ desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \ If you're feeling frisky, examine yourself and click the underlined item to pull the object out." icon_state = ALERT_EMBEDDED_OBJECT + clickable_glow = TRUE /atom/movable/screen/alert/embeddedobject/Click() . = ..() @@ -287,6 +296,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." name = "On Fire" desc = "You're on fire. Stop, drop and roll to put the fire out or move to a vacuum area." icon_state = "fire" + clickable_glow = TRUE /atom/movable/screen/alert/fire/Click() . = ..() @@ -305,6 +315,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." /atom/movable/screen/alert/give // information set when the give alert is made icon_state = "default" + clickable_glow = TRUE /// The offer we're linked to, yes this is suspiciously like a status effect alert var/datum/status_effect/offering/offer /// Additional text displayed in the description of the alert. @@ -476,6 +487,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." name = "Succumb" desc = "Shuffle off this mortal coil." icon_state = ALERT_SUCCUMB + clickable_glow = TRUE var/static/list/death_titles = list( "Goodnight, Sweet Prince", "Game Over, Man", @@ -487,19 +499,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." "All Good Things Must End" ) -/atom/movable/screen/alert/succumb/Initialize(mapload, datum/hud/hud_owner) - . = ..() - register_context() - -/atom/movable/screen/alert/succumb/add_context(atom/source, list/context, obj/item/held_item, mob/user) - context[SCREENTIP_CONTEXT_LMB] = "Succumb With Last Words" - context[SCREENTIP_CONTEXT_RMB] = "Succumb Silently" - return CONTEXTUAL_SCREENTIP_SET - -#define FASTSUCCUMB_YES "Yes" -#define FASTSUCCUMB_WAIT "Wait, I have last words!" -#define FASTSUCCUMB_NO "No" - /atom/movable/screen/alert/succumb/Click(location, control, params) . = ..() if(!.) @@ -510,17 +509,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." var/title = pick(death_titles) - if(LAZYACCESS(params2list(params), RIGHT_CLICK)) - //Succumbing without a message - var/choice = tgui_alert(living_owner, "Are you sure you want to succumb?", title, list(FASTSUCCUMB_YES, FASTSUCCUMB_WAIT, FASTSUCCUMB_NO)) - switch(choice) - if(FASTSUCCUMB_NO, null) - return - if(FASTSUCCUMB_YES) - living_owner.succumb() - return - //if(FASTSUCCUMB_WAIT), we continue to last words - //Succumbing with a message var/last_whisper = tgui_input_text(usr, "Do you have any last words?", title, max_length = CHAT_MESSAGE_MAX_LENGTH, encode = FALSE) // saycode already handles sanitization if(isnull(last_whisper)) @@ -529,9 +517,6 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." living_owner.say("#[last_whisper]") living_owner.succumb(whispered = length(last_whisper) > 0) -#undef FASTSUCCUMB_NO -#undef FASTSUCCUMB_WAIT -#undef FASTSUCCUMB_YES //ALIENS /atom/movable/screen/alert/alien_plas @@ -811,6 +796,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." additional processing time to unlock more malfunction abilities." icon_state = ALERT_HACKING_APC timeout = 60 SECONDS + clickable_glow = TRUE var/atom/target = null /atom/movable/screen/alert/hackingapc/Click() @@ -838,6 +824,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." desc = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!" icon_state = "template" timeout = 300 + clickable_glow = TRUE /atom/movable/screen/alert/revival/Click() . = ..() @@ -851,6 +838,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." desc = "This can be clicked on to perform an action." icon_state = "template" timeout = 30 SECONDS + clickable_glow = TRUE /// Weakref to the target atom to use the action on var/datum/weakref/target_ref /// If we want to interact on click rather than jump/orbit @@ -858,6 +846,8 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." /atom/movable/screen/alert/notify_action/Click() . = ..() + if(!.) + return var/atom/target = target_ref?.resolve() if(isnull(target) || !isobserver(owner) || target == owner) @@ -1026,6 +1016,10 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." name = "Buckled" desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed." icon_state = ALERT_BUCKLED + clickable_glow = TRUE + +/atom/movable/screen/alert/restrained + clickable_glow = TRUE /atom/movable/screen/alert/restrained/handcuffed name = "Handcuffed" @@ -1073,6 +1067,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." name = "Knotted Shoes" desc = "Someone tied your shoelaces together! Click the alert or your shoes to undo the knot." icon_state = ALERT_SHOES_KNOT + clickable_glow = TRUE /atom/movable/screen/alert/shoes/Click() . = ..() @@ -1091,6 +1086,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." name = "Unpossess" desc = "You are possessing an object. Click this alert to unpossess it." icon_state = "buckled" + clickable_glow = TRUE /atom/movable/screen/alert/unpossess_object/Click() . = ..() diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index 8f8193a50451e..7a876cf7911c6 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -1,6 +1,7 @@ /atom/movable/screen/blob icon = 'icons/hud/blob.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/blob/MouseEntered(location,control,params) . = ..() @@ -182,11 +183,11 @@ static_inventory += using using = new /atom/movable/screen/blob/node_blob(null, src) - using.screen_loc = ui_hand_position(2) + using.screen_loc = ui_hand_position(RIGHT_HANDS) static_inventory += using using = new /atom/movable/screen/blob/factory_blob(null, src) - using.screen_loc = ui_hand_position(1) + using.screen_loc = ui_hand_position(LEFT_HANDS) static_inventory += using using = new /atom/movable/screen/blob/readapt_strain(null, src) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 91b5c9b8e2af8..43d90893d9afc 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -156,9 +156,33 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/fullscreen) icon_state = "noise" /atom/movable/screen/fullscreen/high - icon = 'icons/hud/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" icon_state = "druggy" + alpha = 255 + plane = LIGHTING_PLANE + layer = LIGHTING_ABOVE_ALL + 1 //Infinity plus one (not actually) + blend_mode = BLEND_MULTIPLY + +/atom/movable/screen/fullscreen/high/update_for_view(client_view) + + animate(src, flags = ANIMATION_END_NOW) //Stop all animations. + + . = ..() + + color = COLOR_MATRIX_IDENTITY //We convert it early to avoid a sudden weird jitter. + alpha = 0 + + animate(src, alpha = 255, time = 5 SECONDS) //Fade in. + + addtimer(CALLBACK(src, PROC_REF(start_hue_rotation)), 5 SECONDS) + +/atom/movable/screen/fullscreen/high/proc/start_hue_rotation() + animate(src, color = color_matrix_rotate_hue(1), loop = -1, time = 2 SECONDS) //Start the loop. + var/step_precision = 18 //Larger is more precise rotations. + for(var/current_step in 1 to step_precision - 1) //We do the -1 here because 360 == 0 when it comes to angles. + animate( + color = color_matrix_rotate_hue(current_step * 360/step_precision), + time = 2 SECONDS, + ) /atom/movable/screen/fullscreen/color_vision icon = 'icons/hud/screen_gen.dmi' diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 9f90076a3ac71..3ee08df77cb87 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -1,5 +1,6 @@ /atom/movable/screen/ghost icon = 'icons/hud/screen_ghost.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/ghost/MouseEntered(location, control, params) . = ..() @@ -118,4 +119,3 @@ if (istype(O) && O.observetarget) return . = ..() - diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm index ba1d8f4565e64..68a480d47f8f0 100644 --- a/code/_onclick/hud/guardian.dm +++ b/code/_onclick/hud/guardian.dm @@ -15,11 +15,11 @@ infodisplay += healths using = new /atom/movable/screen/guardian/manifest(null, src) - using.screen_loc = ui_hand_position(2) + using.screen_loc = ui_hand_position(RIGHT_HANDS) static_inventory += using using = new /atom/movable/screen/guardian/recall(null, src) - using.screen_loc = ui_hand_position(1) + using.screen_loc = ui_hand_position(LEFT_HANDS) static_inventory += using using = new owner.toggle_button_type(null, src) @@ -101,6 +101,7 @@ /atom/movable/screen/guardian icon = 'icons/hud/guardian.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/guardian/manifest icon_state = "manifest" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index f92bb4682e1c8..ab1e5fccfbb0d 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -151,8 +151,16 @@ GLOBAL_LIST_INIT(available_ui_styles, list( /datum/hud/proc/client_refresh(datum/source) SIGNAL_HANDLER - RegisterSignal(mymob.canon_client, COMSIG_CLIENT_SET_EYE, PROC_REF(on_eye_change)) - on_eye_change(null, null, mymob.canon_client.eye) + var/client/client = mymob.canon_client + if(client.rebuild_plane_masters) + var/new_relay_loc = (client.byond_version > 515) ? "1,1" : "CENTER" + for(var/group_key as anything in master_groups) + var/datum/plane_master_group/group = master_groups[group_key] + group.relay_loc = new_relay_loc + group.rebuild_plane_masters() + client.rebuild_plane_masters = FALSE + RegisterSignal(client, COMSIG_CLIENT_SET_EYE, PROC_REF(on_eye_change)) + on_eye_change(null, null, client.eye) /datum/hud/proc/clear_client(datum/source) SIGNAL_HANDLER @@ -198,6 +206,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list( SIGNAL_HANDLER update_parallax_pref() // If your eye changes z level, so should your parallax prefs var/turf/eye_turf = get_turf(eye) + if(!eye_turf) + return SEND_SIGNAL(src, COMSIG_HUD_Z_CHANGED, eye_turf.z) var/new_offset = GET_TURF_PLANE_OFFSET(eye_turf) if(current_plane_offset == new_offset) @@ -497,7 +507,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list( var/i = 1 for(var/atom/movable/screen/swap_hand/SH in static_inventory) - SH.screen_loc = ui_swaphand_position(mymob,!(i % 2) ? 2: 1) + SH.screen_loc = ui_swaphand_position(mymob, IS_RIGHT_INDEX(i) ? RIGHT_HANDS : LEFT_HANDS) i++ for(var/atom/movable/screen/human/equip/E in static_inventory) E.screen_loc = ui_equip_position(mymob) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 922241321ab91..50954584a0df2 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -4,6 +4,7 @@ /atom/movable/screen/human/toggle name = "toggle" icon_state = "toggle" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/human/toggle/Click() @@ -26,6 +27,7 @@ /atom/movable/screen/human/equip name = "equip" icon_state = "act_equip" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/human/equip/Click() if(ismecha(usr.loc)) // stops inventory actions in a mech @@ -45,6 +47,7 @@ name = "current sting" screen_loc = ui_lingstingdisplay invisibility = INVISIBILITY_ABSTRACT + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/ling/sting/Click() if(isobserver(usr)) diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm index b4092877a770a..01f79aa147684 100644 --- a/code/_onclick/hud/new_player.dm +++ b/code/_onclick/hud/new_player.dm @@ -118,8 +118,9 @@ screen_loc = "TOP,CENTER:-61" /atom/movable/screen/lobby/button + mouse_over_pointer = MOUSE_HAND_POINTER ///Is the button currently enabled? - var/enabled = TRUE + VAR_PROTECTED/enabled = TRUE ///Is the button currently being hovered over with the mouse? var/highlighted = FALSE ///Should this button play the select sound? @@ -182,6 +183,7 @@ return FALSE enabled = status update_appearance(UPDATE_ICON) + mouse_over_pointer = enabled ? MOUSE_HAND_POINTER : MOUSE_INACTIVE_POINTER return TRUE ///Prefs menu @@ -257,10 +259,10 @@ icon = 'icons/hud/lobby/join.dmi' icon_state = "" //Default to not visible base_icon_state = "join_game" - enabled = FALSE /atom/movable/screen/lobby/button/join/Initialize(mapload, datum/hud/hud_owner) . = ..() + set_button_status(FALSE) switch(SSticker.current_state) if(GAME_STATE_PREGAME, GAME_STATE_STARTUP) RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(show_join_button)) @@ -328,13 +330,13 @@ icon = 'icons/hud/lobby/observe.dmi' icon_state = "observe_disabled" base_icon_state = "observe" - enabled = FALSE /atom/movable/screen/lobby/button/observe/Initialize(mapload, datum/hud/hud_owner) . = ..() if(SSticker.current_state > GAME_STATE_STARTUP) set_button_status(TRUE) else + set_button_status(FALSE) RegisterSignal(SSticker, COMSIG_TICKER_ENTER_PREGAME, PROC_REF(enable_observing)) /atom/movable/screen/lobby/button/observe/Click(location, control, params) diff --git a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm index acfa5ee274ca2..582253e0b926b 100644 --- a/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm +++ b/code/_onclick/hud/rendering/plane_masters/plane_master_subtypes.dm @@ -362,7 +362,7 @@ /atom/movable/screen/plane_master/camera_static/proc/eye_changed(datum/hud/source, atom/old_eye, atom/new_eye) SIGNAL_HANDLER - if(!isaicamera(new_eye)) + if(!iscameramob(new_eye)) if(!force_hidden) hide_plane(source.mymob) return diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 3ca14979ebccf..f7c0551236c6c 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -1,5 +1,6 @@ /atom/movable/screen/robot icon = 'icons/hud/screen_cyborg.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/robot/module name = "cyborg module" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index efc7f1c3cfedf..b72924fdbe573 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -103,6 +103,7 @@ /atom/movable/screen/swap_hand plane = HUD_PLANE name = "swap hand" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/swap_hand/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else @@ -123,6 +124,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "navigate" screen_loc = ui_navigate_menu + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/navigate/Click() if(!isliving(usr)) @@ -141,6 +143,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "area_edit" screen_loc = ui_building + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/area_creator/Click() if(usr.incapacitated || (isobserver(usr) && !isAdminGhostAI(usr))) @@ -156,6 +159,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "talk_wheel" screen_loc = ui_language_menu + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/language_menu/Click() usr.get_language_holder().open_language_menu(usr) @@ -241,7 +245,7 @@ . = ..() if(!handcuff_overlay) - var/state = (!(held_index % 2)) ? "markus" : "gabrielle" + var/state = IS_RIGHT_INDEX(held_index) ? "markus" : "gabrielle" handcuff_overlay = mutable_appearance('icons/hud/screen_gen.dmi', state) if(!hud?.mymob) @@ -257,7 +261,7 @@ . += blocked_overlay if(held_index == hud.mymob.active_hand_index) - . += (held_index % 2) ? "lhandactive" : "rhandactive" + . += IS_LEFT_INDEX(held_index) ? "lhandactive" : "rhandactive" /atom/movable/screen/inventory/hand/Click(location, control, params) // At this point in client Click() code we have passed the 1/10 sec check and little else @@ -285,6 +289,7 @@ plane = ABOVE_HUD_PLANE icon = 'icons/hud/screen_midnight.dmi' icon_state = "storage_close" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/close/Initialize(mapload, datum/hud/hud_owner, new_master) . = ..() @@ -302,6 +307,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "act_drop" plane = HUD_PLANE + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/drop/Click() if(usr.stat == CONSCIOUS) @@ -312,6 +318,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "combat_off" screen_loc = ui_combat_toggle + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/combattoggle/Initialize(mapload, datum/hud/hud_owner) . = ..() @@ -358,6 +365,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "floor_change" screen_loc = ui_floor_changer + mouse_over_pointer = MOUSE_HAND_POINTER var/vertical = FALSE /atom/movable/screen/floor_changer/Click(location,control,params) @@ -390,6 +398,7 @@ name = "run/walk toggle" icon = 'icons/hud/screen_midnight.dmi' icon_state = "running" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/mov_intent/Click() toggle(usr) @@ -415,6 +424,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "pull" base_icon_state = "pull" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/pull/Click() if(isobserver(usr)) @@ -430,6 +440,7 @@ icon = 'icons/hud/screen_midnight.dmi' icon_state = "act_resist" plane = HUD_PLANE + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/resist/Click() if(isliving(usr)) @@ -442,6 +453,7 @@ icon_state = "act_rest" base_icon_state = "act_rest" plane = HUD_PLANE + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/rest/Click() if(isliving(usr)) @@ -526,6 +538,7 @@ name = "throw/catch" icon = 'icons/hud/screen_midnight.dmi' icon_state = "act_throw_off" + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/throw_catch/Click() if(iscarbon(usr)) @@ -536,6 +549,7 @@ name = "damage zone" icon_state = "zone_sel" screen_loc = ui_zonesel + mouse_over_pointer = MOUSE_HAND_POINTER var/overlay_icon = 'icons/hud/screen_gen.dmi' var/static/list/hover_overlays_cache = list() var/hovering @@ -713,6 +727,7 @@ /atom/movable/screen/healthdoll name = "health doll" screen_loc = ui_healthdoll + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/healthdoll/Click() if (iscarbon(usr)) @@ -810,6 +825,7 @@ name = "mood" icon_state = "mood5" screen_loc = ui_mood + mouse_over_pointer = MOUSE_HAND_POINTER /atom/movable/screen/splash icon = 'icons/blanks/blank_title.png' @@ -859,6 +875,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/splash) /atom/movable/screen/component_button + mouse_over_pointer = MOUSE_HAND_POINTER var/atom/movable/screen/parent /atom/movable/screen/component_button/Initialize(mapload, atom/movable/screen/parent) @@ -957,6 +974,10 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/splash) state = HUNGER_STATE_FAT return + if(HAS_TRAIT(hungry, TRAIT_GLUTTON)) + state = HUNGER_STATE_HUNGRY // Can't get enough + return + switch(hungry.nutrition) if(NUTRITION_LEVEL_FULL to INFINITY) state = HUNGER_STATE_FULL diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 655cb3fcf9a40..5e9f8f5783bcc 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -438,6 +438,10 @@ min_val = 0 integer = FALSE // It is in hours, but just in case one wants to specify minutes. +/// Will drones be restricted from interacting with the Supermatter and Atmospherics area? +/datum/config_entry/flag/drone_area_interaction_restrict + default = TRUE + /datum/config_entry/flag/native_fov /datum/config_entry/flag/disallow_title_music diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index e1ed3284441f6..3648a1b564e8c 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -762,3 +762,11 @@ default = 100 min_val = 0 max_val = 100 + +/// If admins with +DEBUG can initialize byond-tracy midround. +/datum/config_entry/flag/allow_tracy_start + protection = CONFIG_ENTRY_LOCKED + +/// If admins with +DEBUG can queue byond-tracy to run the next round. +/datum/config_entry/flag/allow_tracy_queue + protection = CONFIG_ENTRY_LOCKED diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index f19d2a99e36d3..8332d9b113393 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -222,6 +222,7 @@ SUBSYSTEM_DEF(air) cost_atoms = MC_AVERAGE(cost_atoms, TICK_DELTA_TO_MS(cached_cost)) resumed = FALSE + currentpart = SSAIR_PIPENETS SStgui.update_uis(SSair) //Lightning fast debugging motherfucker diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 83c666de64ac4..e869f21c61560 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -88,7 +88,7 @@ SUBSYSTEM_DEF(blackbox) for(var/player_key in GLOB.player_details) var/datum/player_details/PD = GLOB.player_details[player_key] - record_feedback("tally", "client_byond_version", 1, PD.byond_version) + record_feedback("tally", "client_byond_version", 1, PD.full_byond_version()) /datum/controller/subsystem/blackbox/Shutdown() sealed = FALSE diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 7d01226b2cfde..115250104f008 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -384,12 +384,30 @@ SUBSYSTEM_DEF(dbcore) return FALSE return new /datum/db_query(connection, sql_query, arguments) +/** + * Creates and executes a query without waiting for or tracking the results. + * Query is executed asynchronously (without blocking) and deleted afterwards - any results or errors are discarded. + * + * Arguments: + * * sql_query - The SQL query string to execute + * * arguments - List of arguments to pass to the query for parameter binding + * * allow_during_shutdown - If TRUE, allows query to be created during subsystem shutdown. Generally, only cleanup queries should set this. + */ +/datum/controller/subsystem/dbcore/proc/FireAndForget(sql_query, arguments, allow_during_shutdown = FALSE) + var/datum/db_query/query = NewQuery(sql_query, arguments, allow_during_shutdown) + if(!query) + return + ASYNC + query.Execute() + qdel(query) + /** QuerySelect Run a list of query datums in parallel, blocking until they all complete. * queries - List of queries or single query datum to run. * warn - Controls rather warn_execute() or Execute() is called. * qdel - If you don't care about the result or checking for errors, you can have the queries be deleted afterwards. - This can be combined with invoke_async as a way of running queries async without having to care about waiting for them to finish so they can be deleted. + This can be combined with invoke_async as a way of running queries async without having to care about waiting for them to finish so they can be deleted, + however you should probably just use FireAndForget instead if it's just a single query. */ /datum/controller/subsystem/dbcore/proc/QuerySelect(list/queries, warn = FALSE, qdel = FALSE) if (!islist(queries)) @@ -415,8 +433,6 @@ SUBSYSTEM_DEF(dbcore) if (qdel) qdel(query) - - /* Takes a list of rows (each row being an associated list of column => value) and inserts them via a single mass query. Rows missing columns present in other rows will resolve to SQL NULL diff --git a/code/controllers/subsystem/dynamic/dynamic.dm b/code/controllers/subsystem/dynamic/dynamic.dm index a5196f56e8afb..fb690030d2b0b 100644 --- a/code/controllers/subsystem/dynamic/dynamic.dm +++ b/code/controllers/subsystem/dynamic/dynamic.dm @@ -576,7 +576,7 @@ SUBSYSTEM_DEF(dynamic) /datum/controller/subsystem/dynamic/proc/post_setup(report) for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules) rule.candidates.Cut() // The rule should not use candidates at this point as they all are null. - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/controller/subsystem/dynamic/, execute_roundstart_rule), rule), rule.delay) + addtimer(CALLBACK(src, PROC_REF(execute_roundstart_rule), rule), rule.delay) if (!CONFIG_GET(flag/no_intercept_report)) addtimer(CALLBACK(src, PROC_REF(send_intercept)), rand(waittime_l, waittime_h)) @@ -626,7 +626,7 @@ SUBSYSTEM_DEF(dynamic) failed = TRUE //AFK client if(!failed && L.stat) if(HAS_TRAIT(L, TRAIT_SUICIDED)) //Suicider - msg += "[L.name] ([L.key]), the [L.job] ([span_boldannounce("Suicide")])\n" + msg += "[L.name] ([L.key]), the [L.job] ([span_bolddanger("Suicide")])\n" failed = TRUE //Disconnected client if(!failed && (L.stat == UNCONSCIOUS || L.stat == HARD_CRIT)) msg += "[L.name] ([L.key]), the [L.job] (Dying)\n" @@ -640,7 +640,7 @@ SUBSYSTEM_DEF(dynamic) if(D.mind && D.mind.current == L) if(L.stat == DEAD) if(HAS_TRAIT(L, TRAIT_SUICIDED)) //Suicider - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_boldannounce("Suicide")])\n" + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_bolddanger("Suicide")])\n" continue //Disconnected client else msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Dead)\n" @@ -649,7 +649,7 @@ SUBSYSTEM_DEF(dynamic) if(D.can_reenter_corpse) continue //Adminghost, or cult/wizard ghost else - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_boldannounce("Ghosted")])\n" + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_bolddanger("Ghosted")])\n" continue //Ghosted while alive var/concatenated_message = msg.Join() diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm index ffaf0c0744d29..3e4ff852ae0cc 100644 --- a/code/controllers/subsystem/economy.dm +++ b/code/controllers/subsystem/economy.dm @@ -30,7 +30,7 @@ SUBSYSTEM_DEF(economy) var/list/bank_accounts_by_id = list() /// A list of bank accounts indexed by their assigned job typepath. var/list/bank_accounts_by_job = list() - ///List of the departmental budget cards in existance. + ///List of the departmental budget cards in existence. var/list/dep_cards = list() /// A var that collects the total amount of credits owned in player accounts on station, reset and recounted on fire() var/station_total = 0 diff --git a/code/controllers/subsystem/fluids.dm b/code/controllers/subsystem/fluids.dm index 6b68ae717222a..2b4ce47295653 100644 --- a/code/controllers/subsystem/fluids.dm +++ b/code/controllers/subsystem/fluids.dm @@ -22,6 +22,7 @@ SUBSYSTEM_DEF(fluids) wait = 0 // Will be autoset to whatever makes the most sense given the spread and effect waits. flags = SS_KEEP_TIMING runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME + init_order = INIT_ORDER_FLUIDS priority = FIRE_PRIORITY_FLUIDS // Fluid spread processing: diff --git a/code/controllers/subsystem/ipintel.dm b/code/controllers/subsystem/ipintel.dm index db397d514742f..3ae9cfab0c564 100644 --- a/code/controllers/subsystem/ipintel.dm +++ b/code/controllers/subsystem/ipintel.dm @@ -8,7 +8,7 @@ SUBSYSTEM_DEF(ipintel) /// Cache for previously queried IP addresses and those stored in the database var/list/datum/ip_intel/cached_queries = list() /// The store for rate limiting - var/list/rate_limit_minute + var/rate_limit_minute /// The ip intel for a given address /datum/ip_intel diff --git a/code/controllers/subsystem/map_vote.dm b/code/controllers/subsystem/map_vote.dm index 44aa82172f3f0..ced1e65e3a215 100644 --- a/code/controllers/subsystem/map_vote.dm +++ b/code/controllers/subsystem/map_vote.dm @@ -53,7 +53,7 @@ SUBSYSTEM_DEF(map_vote) last_message_at = world.time var/list/messages = args.Copy() - to_chat(world, span_purple(examine_block("Map Vote\n
\n[messages.Join("\n")]"))) + to_chat(world, span_purple(examine_block("Map Vote\n
[messages.Join("\n")]"))) /datum/controller/subsystem/map_vote/proc/finalize_map_vote(datum/vote/map_vote/map_vote) if(already_voted) @@ -74,14 +74,9 @@ SUBSYSTEM_DEF(map_vote) send_map_vote_notice("Admin Override is in effect. Map will not be changed.", "Tallies are recorded and saved.") return - var/list/valid_maps = filter_cache_to_valid_maps() - if(!length(valid_maps)) - send_map_vote_notice("No valid maps.") - return - var/winner var/winner_amount = 0 - for(var/map in valid_maps) + for(var/map in map_vote.choices) if(!winner_amount) winner = map winner_amount = map_vote_cache[map] @@ -98,7 +93,7 @@ SUBSYSTEM_DEF(map_vote) messages += tally_printout // do not reset tallies if only one map is even possible - if(length(valid_maps) > 1) + if(length(map_vote.choices) > 1) map_vote_cache[winner] = CONFIG_GET(number/map_vote_minimum_tallies) write_cache() update_tally_printout() @@ -175,4 +170,4 @@ SUBSYSTEM_DEF(map_vote) for(var/map_id in map_vote_cache) var/datum/map_config/map = config.maplist[map_id] data += "[map.map_name] - [map_vote_cache[map_id]]" - tally_printout = examine_block("Current Tallies\n
\n[data.Join("\n")]") + tally_printout = examine_block("Current Tallies\n
[data.Join("\n")]") diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 2eee9cbb0c371..328d05636d4bb 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -252,23 +252,23 @@ SUBSYSTEM_DEF(mapping) // Generate mining ruins var/list/lava_ruins = levels_by_trait(ZTRAIT_LAVA_RUINS) if (lava_ruins.len) - seedRuins(lava_ruins, CONFIG_GET(number/lavaland_budget), list(/area/lavaland/surface/outdoors/unexplored), themed_ruins[ZTRAIT_LAVA_RUINS], clear_below = TRUE, mineral_budget = 15, mineral_budget_update = OREGEN_PRESET_LAVALAND) + seedRuins(lava_ruins, CONFIG_GET(number/lavaland_budget), list(/area/lavaland/surface/outdoors/unexplored), themed_ruins[ZTRAIT_LAVA_RUINS], clear_below = TRUE, mineral_budget = 15, mineral_budget_update = OREGEN_PRESET_LAVALAND, ruins_type = ZTRAIT_LAVA_RUINS) var/list/ice_ruins = levels_by_trait(ZTRAIT_ICE_RUINS) if (ice_ruins.len) // needs to be whitelisted for underground too so place_below ruins work - seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE, mineral_budget = 4, mineral_budget_update = OREGEN_PRESET_TRIPLE_Z) + seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS], clear_below = TRUE, mineral_budget = 4, mineral_budget_update = OREGEN_PRESET_TRIPLE_Z, ruins_type = ZTRAIT_ICE_RUINS) var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND) if (ice_ruins_underground.len) - seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE, mineral_budget = 21) + seedRuins(ice_ruins_underground, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/underground/unexplored), themed_ruins[ZTRAIT_ICE_RUINS_UNDERGROUND], clear_below = TRUE, mineral_budget = 21, ruins_type = ZTRAIT_ICE_RUINS_UNDERGROUND) // Generate deep space ruins var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS) if (space_ruins.len) // Create a proportional budget by multiplying the amount of space ruin levels in the current map over the default amount var/proportional_budget = round(CONFIG_GET(number/space_budget) * (space_ruins.len / DEFAULT_SPACE_RUIN_LEVELS)) - seedRuins(space_ruins, proportional_budget, list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS], mineral_budget = 0) + seedRuins(space_ruins, proportional_budget, list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS], mineral_budget = 0, ruins_type = ZTRAIT_SPACE_RUINS) /// Sets up rivers, and things that behave like rivers. So lava/plasma rivers, and chasms /// It is important that this happens AFTER generating mineral walls and such, since we rely on them for river logic diff --git a/code/controllers/subsystem/movement/newtonian_movement.dm b/code/controllers/subsystem/movement/newtonian_movement.dm index aeb03a576dae0..e4143669678b2 100644 --- a/code/controllers/subsystem/movement/newtonian_movement.dm +++ b/code/controllers/subsystem/movement/newtonian_movement.dm @@ -13,9 +13,10 @@ MOVEMENT_SUBSYSTEM_DEF(newtonian_movement) return ..() /datum/controller/subsystem/movement/newtonian_movement/fire(resumed = FALSE) - . = ..() - if (!resumed) + if(!resumed) + canonical_time = world.time currentrun = processing.Copy() + //cache for sanic speed (lists are references anyways) var/list/current_run = currentrun @@ -29,3 +30,21 @@ MOVEMENT_SUBSYSTEM_DEF(newtonian_movement) STOP_PROCESSING(src, thing) if (MC_TICK_CHECK) return + + for(var/list/bucket_info as anything in sorted_buckets) + var/time = bucket_info[MOVEMENT_BUCKET_TIME] + if(time > canonical_time || MC_TICK_CHECK) + return + pour_bucket(bucket_info) + +/datum/controller/subsystem/movement/newtonian_movement/proc/fire_moveloop(datum/move_loop/loop) + // Loop isn't even running right now + if(!(loop.status & MOVELOOP_STATUS_QUEUED)) + return + // Drop the loop, process it, and if its still valid - queue it again + dequeue_loop(loop) + loop.process() + if(QDELETED(loop)) + return + loop.timer = world.time + loop.delay + queue_loop(loop) diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm index 70dc152b06df2..d95b3bff5388c 100644 --- a/code/controllers/subsystem/pathfinder.dm +++ b/code/controllers/subsystem/pathfinder.dm @@ -61,9 +61,9 @@ SUBSYSTEM_DEF(pathfinder) currentmaps.len-- /// Initiates a pathfind. Returns true if we're good, FALSE if something's failed -/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, diagonal_handling = DIAGONAL_REMOVE_CLUNKY, list/datum/callback/on_finish) var/datum/pathfind/jps/path = new() - path.setup(caller, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling) + path.setup(requester, access, max_distance, simulated_only, exclude, on_finish, end, mintargetdist, skip_first, diagonal_handling) if(path.start()) active_pathing += path return TRUE @@ -71,21 +71,21 @@ SUBSYSTEM_DEF(pathfinder) /// Initiates a swarmed pathfind. Returns TRUE if we're good, FALSE if something's failed /// If a valid pathmap exists for the TARGET turf we'll use that, otherwise we have to build a new one -/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/caller, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/swarmed_pathfind(atom/movable/requester, atom/end, max_distance = 30, mintargetdist = 0, age = MAP_REUSE_INSTANT, access = list(), simulated_only = TRUE, turf/exclude, skip_first = TRUE, list/datum/callback/on_finish) var/turf/target = get_turf(end) - var/datum/can_pass_info/pass_info = new(caller, access) + var/datum/can_pass_info/pass_info = new(requester, access) // If there's a map we can use already, use it var/datum/path_map/valid_map = get_valid_map(pass_info, target, simulated_only, exclude, age, include_building = TRUE) if(valid_map && valid_map.expand(max_distance)) - path_map_passalong(on_finish, get_turf(caller), mintargetdist, skip_first, valid_map) + path_map_passalong(on_finish, get_turf(requester), mintargetdist, skip_first, valid_map) return TRUE // Otherwise we're gonna make a new one, and turn it into a path for the callbacks passed into us var/list/datum/callback/pass_in = list() - pass_in += CALLBACK(GLOBAL_PROC, /proc/path_map_passalong, on_finish, get_turf(caller), mintargetdist, skip_first) + pass_in += CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(path_map_passalong), on_finish, get_turf(requester), mintargetdist, skip_first) // And to allow subsequent calls to reuse the same map, we'll put a placeholder in the cache, and fill it up when the pathing finishes var/datum/path_map/empty = new() - empty.pass_info = new(caller, access) + empty.pass_info = new(requester, access) empty.start = target empty.pass_space = simulated_only empty.avoid = exclude @@ -133,9 +133,9 @@ SUBSYSTEM_DEF(pathfinder) source_to_maps[target] -= same_target /// Initiates a SSSP run. Returns true if we're good, FALSE if something's failed -/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/caller, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish) +/datum/controller/subsystem/pathfinder/proc/build_map(atom/movable/requester, turf/source, max_distance = 30, access = list(), simulated_only = TRUE, turf/exclude, list/datum/callback/on_finish) var/datum/pathfind/sssp/path = new() - path.setup(caller, access, source, max_distance, simulated_only, exclude, on_finish) + path.setup(requester, access, source, max_distance, simulated_only, exclude, on_finish) if(path.start()) active_pathing += path return TRUE @@ -160,7 +160,7 @@ SUBSYSTEM_DEF(pathfinder) /// Optionally takes a max age to accept (defaults to 0 seconds) and a minimum acceptable range /// If include_building is true and we can only find a building path, we'll use that instead. tho we will wait for it to finish first /datum/controller/subsystem/pathfinder/proc/get_valid_map(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE) - // Walk all the maps that match our caller's turf OR our target's + // Walk all the maps that match our requester's turf OR our target's // Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one var/oldest_time = world.time - age /// Backup return value used if no finished pathmaps are found @@ -189,7 +189,7 @@ SUBSYSTEM_DEF(pathfinder) /// Takes a set of pathfind info, returns all valid pathmaps that would work /// Takes an optional minimum range arg /datum/controller/subsystem/pathfinder/proc/get_valid_maps(datum/can_pass_info/pass_info, turf/target, simulated_only = TRUE, turf/exclude, age = MAP_REUSE_INSTANT, min_range = -INFINITY, include_building = FALSE) - // Walk all the maps that match our caller's turf OR our target's + // Walk all the maps that match our requester's turf OR our target's // Then hold onto em. If their cache time is short we can reuse/expand them, if not we'll have to make a new one var/list/valid_maps = list() var/oldest_time = world.time - age diff --git a/code/controllers/subsystem/processing/fishing.dm b/code/controllers/subsystem/processing/fishing.dm index 477dbf35e51d2..dd4dc3775359b 100644 --- a/code/controllers/subsystem/processing/fishing.dm +++ b/code/controllers/subsystem/processing/fishing.dm @@ -19,10 +19,13 @@ PROCESSING_SUBSYSTEM_DEF(fishing) cached_fish_icons = list() cached_unknown_fish_icons = list() fish_properties = list() + catchable_fish = list() var/icon/questionmark = icon('icons/effects/random_spawners.dmi', "questionmark") var/list/mark_dimension = get_icon_dimensions(questionmark) - for(var/obj/item/fish/fish_type as anything in subtypesof(/obj/item/fish)) + var/list/spawned_fish = list() + var/list/fish_subtypes = sortTim(subtypesof(/obj/item/fish), GLOBAL_PROC_REF(cmp_init_name_asc)) + for(var/obj/item/fish/fish_type as anything in fish_subtypes) var/list/fish_dimensions = get_icon_dimensions(fish_type::icon) var/icon/fish_icon = icon(fish_type::icon, fish_type::icon_state, frame = 1, moving = FALSE) cached_fish_icons[fish_type] = icon2base64(fish_icon) @@ -34,7 +37,8 @@ PROCESSING_SUBSYSTEM_DEF(fishing) unknown_icon.Blend(questionmark, ICON_OVERLAY, x = width, y = height) cached_unknown_fish_icons[fish_type] = icon2base64(unknown_icon) - var/obj/item/fish/fish = new fish_type(null, FALSE) + var/obj/item/fish/fish = new fish_type + spawned_fish += fish var/list/properties = list() fish_properties[fish_type] = properties properties[FISH_PROPERTIES_FAV_BAIT] = fish.favorite_bait.Copy() @@ -67,36 +71,35 @@ PROCESSING_SUBSYSTEM_DEF(fishing) properties[FISH_PROPERTIES_BEAUTY_SCORE] = beauty_score - qdel(fish) - - catchable_fish = list() - var/list/all_catchables = list() - for(var/source_type as anything in GLOB.preset_fish_sources) - var/datum/fish_source/source = GLOB.preset_fish_sources[source_type] - if(!(source.fish_source_flags & FISH_SOURCE_FLAG_SKIP_CATCHABLES)) - all_catchables |= source.fish_table - for(var/thing in all_catchables) - if(!ispath(thing, /obj/item/fish)) - continue - var/obj/item/fish/fishie = thing - var/fish_id = initial(fishie.fish_id) + var/fish_id + if(fish.fish_id_redirect_path) + var/obj/item/fish/other_path = fish.fish_id_redirect_path + if(!ispath(other_path, /obj/item/fish)) + stack_trace("[fish.type] has a set 'fish_id_redirect_path' variable but it isn't a fish path but [other_path]") + continue + fish_id = initial(other_path.fish_id) + else + fish_id = fish.fish_id if(!fish_id) - stack_trace("[fishie] doesn't have a set 'fish_id' variable despite being a catchable fish") + stack_trace("[fish.type] doesn't have a set 'fish_id' variable despite being a catchable fish") + continue + if(fish.fish_id_redirect_path) continue if(catchable_fish[fish_id]) - stack_trace("[fishie] has a 'fish_id' value already assigned to [catchable_fish[fish_id]]. fish_id: [fish_id]") + stack_trace("[fish.type] has a 'fish_id' value already assigned to [catchable_fish[fish_id]]. fish_id: [fish_id]") continue - catchable_fish[fish_id] = fishie + catchable_fish[fish_id] = fish.type ///init the list of things lures can catch lure_catchables = list() - var/list/fish_types = subtypesof(/obj/item/fish) for(var/lure_type in typesof(/obj/item/fishing_lure)) var/obj/item/fishing_lure/lure = new lure_type lure_catchables[lure_type] = list() - for(var/obj/item/fish/fish_type as anything in fish_types) - if(lure.is_catchable_fish(fish_type, fish_properties[fish_type])) - lure_catchables[lure_type] += fish_type + for(var/obj/item/fish/fish as anything in spawned_fish) + if(lure.is_catchable_fish(fish, fish_properties[fish.type])) + lure_catchables[lure_type] += fish.type qdel(lure) + QDEL_LIST(spawned_fish) + return SS_INIT_SUCCESS diff --git a/code/controllers/subsystem/processing/projectiles.dm b/code/controllers/subsystem/processing/projectiles.dm index 48d465dd0fdaf..0124296a3a23b 100644 --- a/code/controllers/subsystem/processing/projectiles.dm +++ b/code/controllers/subsystem/processing/projectiles.dm @@ -3,21 +3,18 @@ PROCESSING_SUBSYSTEM_DEF(projectiles) wait = 1 stat_tag = "PP" flags = SS_NO_INIT|SS_TICKER - var/global_max_tick_moves = 10 - var/global_pixel_speed = 2 - var/global_iterations_per_move = 16 - -/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed) - global_pixel_speed = new_speed - for(var/i in processing) - var/obj/projectile/P = i - if(istype(P)) //there's non projectiles on this too. - P.set_pixel_speed(new_speed) - -/datum/controller/subsystem/processing/projectiles/vv_edit_var(var_name, var_value) - switch(var_name) - if(NAMEOF(src, global_pixel_speed)) - set_pixel_speed(var_value) - return TRUE - else - return ..() + /* + * Maximum amount of pixels a projectile can pass per tick *unless* its a hitscan projectile. + * This prevents projectiles from turning into essentially hitscans if SSprojectiles starts chugging + * and projectiles accumulate a bunch of overtime they try to process next tick to fly through half the map. + * Shouldn't really be increased past 5 tiles per tick because this maxes out at 100 FPS (recommended as of now) + * and making a projectile faster than that will make it look jumpy because it'll be passing inconsistent + * amounts of pixels per tick. + */ + var/max_pixels_per_tick = ICON_SIZE_ALL * 5 + /* + * How many pixels a projectile with a speed value of 1 passes in a tick. Currently all speed values + * assume that 1 speed = 1 tile per decisecond, but this is a variable so that admins/debuggers can edit + * in order to debug projectile behavior by evenly slowing or speeding all of them up. + */ + var/pixels_per_decisecond = ICON_SIZE_ALL diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 0199b7498cc5b..7e550e43e3cac 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -26,7 +26,8 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list( list(/datum/quirk/photophobia, /datum/quirk/nyctophobia), list(/datum/quirk/item_quirk/settler, /datum/quirk/freerunning), list(/datum/quirk/numb, /datum/quirk/selfaware), - list(/datum/quirk/empath, /datum/quirk/evil), + list(/datum/quirk/empath, /datum/quirk/bad_vibes), //DOPPLER EDIT ADDITION - Bad Vibes & Unholy Aura + list(/datum/quirk/item_quirk/spiritual, /datum/quirk/unholy), //DOPPLER EDIT ADDITION END )) GLOBAL_LIST_INIT(quirk_string_blacklist, generate_quirk_string_blacklist()) diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index 7bb83fa133d50..9979a1a731262 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -171,7 +171,7 @@ SUBSYSTEM_DEF(research) /datum/controller/subsystem/research/proc/initialize_all_techweb_designs(clearall = FALSE) if(islist(techweb_designs) && clearall) - item_to_design = null + item_to_design = list() QDEL_LIST(techweb_designs) var/list/returned = list() for(var/path in subtypesof(/datum/design)) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index c4b667bdc26e3..11e23326464df 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -356,6 +356,13 @@ SUBSYSTEM_DEF(shuttle) return TRUE +/** + * Calls the emergency shuttle. + * + * Arguments: + * * user - The mob that called the shuttle. + * * call_reason - The reason the shuttle was called, which should be non-html-encoded text. + */ /datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason) if (!check_backup_emergency_shuttle()) return diff --git a/code/controllers/subsystem/spatial_gridmap.dm b/code/controllers/subsystem/spatial_gridmap.dm index 65bcb0ec365b0..d906de2dc7bcf 100644 --- a/code/controllers/subsystem/spatial_gridmap.dm +++ b/code/controllers/subsystem/spatial_gridmap.dm @@ -45,9 +45,9 @@ atmos_contents = dummy_list /datum/spatial_grid_cell/Destroy(force) - if(force)//the response to someone trying to qdel this is a right proper fuck you + if(!force)//the response to someone trying to qdel this is a right proper fuck you stack_trace("dont try to destroy spatial grid cells without a good reason. if you need to do it use force") - return + return QDEL_HINT_LETMELIVE . = ..() diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index cf158586ce497..9d33e977e2b7f 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -173,6 +173,24 @@ SUBSYSTEM_DEF(statpanels) list("Failsafe Controller:", Failsafe.stat_entry(), text_ref(Failsafe)), list("","") ) +#if defined(MC_TAB_TRACY_INFO) || defined(SPACEMAN_DMM) + var/static/tracy_dll + var/static/tracy_present + if(isnull(tracy_dll)) + tracy_dll = TRACY_DLL_PATH + tracy_present = fexists(tracy_dll) + if(tracy_present) + if(GLOB.tracy_initialized) + mc_data.Insert(2, list(list("byond-tracy:", "Active (reason: [GLOB.tracy_init_reason || "N/A"])"))) + else if(GLOB.tracy_init_error) + mc_data.Insert(2, list(list("byond-tracy:", "Errored ([GLOB.tracy_init_error])"))) + else if(fexists(TRACY_ENABLE_PATH)) + mc_data.Insert(2, list(list("byond-tracy:", "Queued for next round"))) + else + mc_data.Insert(2, list(list("byond-tracy:", "Inactive"))) + else + mc_data.Insert(2, list(list("byond-tracy:", "[tracy_dll] not present"))) +#endif for(var/datum/controller/subsystem/sub_system as anything in Master.subsystems) mc_data[++mc_data.len] = list("\[[sub_system.state_letter()]][sub_system.name]", sub_system.stat_entry(), text_ref(sub_system)) mc_data[++mc_data.len] = list("Camera Net", "Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]", text_ref(GLOB.cameranet)) diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm index 9a566a14a70c3..548bf63cb6797 100644 --- a/code/controllers/subsystem/tgui.dm +++ b/code/controllers/subsystem/tgui.dm @@ -63,7 +63,7 @@ SUBSYSTEM_DEF(tgui) * Returns null if pool was exhausted. * * required user mob - * return datum/tgui + * return datum/tgui_window */ /datum/controller/subsystem/tgui/proc/request_pooled_window(mob/user) if(!user.client) diff --git a/code/datums/actions/items/beserk.dm b/code/datums/actions/items/beserk.dm index 43e29dbd150cd..01183fd8e3f6e 100644 --- a/code/datums/actions/items/beserk.dm +++ b/code/datums/actions/items/beserk.dm @@ -7,14 +7,27 @@ overlay_icon_state = "bg_demon_border" /datum/action/item_action/berserk_mode/Trigger(trigger_flags) - if(istype(target, /obj/item/clothing/head/hooded/berserker)) - var/obj/item/clothing/head/hooded/berserker/berserk = target - if(berserk.berserk_active) + . = ..() + if(!.) + return FALSE + var/obj/item/clothing/head/hooded/berserker/berserk = target + berserk.berserk_mode(owner) + return TRUE + +/datum/action/item_action/berserk_mode/IsAvailable(feedback = FALSE) + . = ..() + if(!.) + return FALSE + if(!istype(target, /obj/item/clothing/head/hooded/berserker)) + return FALSE + + var/obj/item/clothing/head/hooded/berserker/berserk = target + if(berserk.berserk_active) + if(feedback) to_chat(owner, span_warning("You are already berserk!")) - return - if(berserk.berserk_charge < 100) + return FALSE + if(berserk.berserk_charge < 100) + if(feedback) to_chat(owner, span_warning("You don't have a full charge.")) - return - berserk.berserk_mode(owner) - return - return ..() + return FALSE + return TRUE diff --git a/code/datums/actions/mobs/create_legion_turrets.dm b/code/datums/actions/mobs/create_legion_turrets.dm index 71427893f43da..34a0c6852d6c7 100644 --- a/code/datums/actions/mobs/create_legion_turrets.dm +++ b/code/datums/actions/mobs/create_legion_turrets.dm @@ -78,8 +78,7 @@ return //Now we generate the tracer. var/angle = get_angle(our_turf, target_turf) - var/datum/point/vector/V = new(our_turf.x, our_turf.y, our_turf.z, 0, 0, angle) - generate_tracer_between_points(V, V.return_vector_after_increments(6), /obj/effect/projectile/tracer/legion/tracer, 0, shot_delay, 0, 0, 0, null) + our_turf.Beam(target_turf, 'icons/effects/beam.dmi', "blood_light", time = shot_delay) playsound(src, 'sound/machines/airlock/airlockopen.ogg', 100, TRUE) addtimer(CALLBACK(src, PROC_REF(fire_beam), angle), shot_delay) @@ -105,11 +104,6 @@ hitscan = TRUE projectile_piercing = ALL -/// Used for the legion turret tracer. -/obj/effect/projectile/tracer/legion/tracer - icon = 'icons/effects/beam.dmi' - icon_state = "blood_light" - /// Used for the legion turret beam. /obj/effect/projectile/tracer/legion icon = 'icons/effects/beam.dmi' diff --git a/code/datums/actions/mobs/fire_breath.dm b/code/datums/actions/mobs/fire_breath.dm index 11ad04fa0df20..e407dafd7cffe 100644 --- a/code/datums/actions/mobs/fire_breath.dm +++ b/code/datums/actions/mobs/fire_breath.dm @@ -91,7 +91,7 @@ /datum/action/cooldown/mob_cooldown/fire_breath/mass_fire name = "Mass Fire" button_icon = 'icons/effects/fire.dmi' - button_icon_state = "1" + button_icon_state = "light" desc = "Breathe flames in all directions." cooldown_time = 10.5 SECONDS click_to_activate = FALSE diff --git a/code/datums/actions/mobs/projectileattack.dm b/code/datums/actions/mobs/projectileattack.dm index 933f94d0025f3..8ac67bdecc493 100644 --- a/code/datums/actions/mobs/projectileattack.dm +++ b/code/datums/actions/mobs/projectileattack.dm @@ -49,7 +49,7 @@ if(!isnum(speed_multiplier)) speed_multiplier = projectile_speed_multiplier our_projectile.speed *= speed_multiplier - our_projectile.preparePixelProjectile(endloc, startloc, null, projectile_spread) + our_projectile.aim_projectile(endloc, startloc, null, projectile_spread) our_projectile.firer = firer if(target) our_projectile.original = target @@ -224,7 +224,7 @@ cooldown_time = 10 SECONDS projectile_type = /obj/projectile/colossus/wendigo_shockwave shot_angles = list(-20, -10, 0, 10, 20) - projectile_speed_multiplier = 4 + projectile_speed_multiplier = 0.25 /datum/action/cooldown/mob_cooldown/projectile_attack/shotgun_blast/colossus @@ -378,7 +378,7 @@ if(enraged) projectile_speed_multiplier = 1 else - projectile_speed_multiplier = 1.5 + projectile_speed_multiplier = 0.66 var/shots_per = 24 for(var/shoot_times in 1 to 8) var/offset = shoot_times % 2 @@ -399,7 +399,7 @@ /datum/action/cooldown/mob_cooldown/projectile_attack/wave/attack_sequence(mob/living/firer, atom/target) wendigo_scream(firer) - var/shots_per = 7 + var/shots_per = 6 var/difference = 360 / shots_per var/wave_direction = pick(-1, 1) switch(wave_direction) @@ -407,9 +407,9 @@ projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave/alternate if(1) projectile_type = /obj/projectile/colossus/wendigo_shockwave/wave - for(var/shoot_times in 1 to 32) + for(var/shoot_times in 1 to 12) for(var/shot in 1 to shots_per) var/angle = shot * difference + shoot_times * 5 * wave_direction * -1 shoot_projectile(firer, target, angle, firer, null, null) - SLEEP_CHECK_DEATH(2, firer) + SLEEP_CHECK_DEATH(0.6 SECONDS, firer) SLEEP_CHECK_DEATH(3 SECONDS, firer) diff --git a/code/datums/ai/basic_mobs/base_basic_controller.dm b/code/datums/ai/basic_mobs/base_basic_controller.dm index eb1c38437e3be..d222cc1ef6d05 100644 --- a/code/datums/ai/basic_mobs/base_basic_controller.dm +++ b/code/datums/ai/basic_mobs/base_basic_controller.dm @@ -35,7 +35,7 @@ var/mob/living/living_pawn = pawn if(!(ai_traits & CAN_ACT_WHILE_DEAD)) // Unroll for flags here - if (ai_traits & CAN_ACT_IN_STASIS && (living_pawn.stat || INCAPACITATED_IGNORING(living_pawn, INCAPABLE_STASIS))) + if((ai_traits & CAN_ACT_IN_STASIS) && (living_pawn.stat || INCAPACITATED_IGNORING(living_pawn, INCAPABLE_STASIS))) return AI_UNABLE_TO_RUN if(IS_DEAD_OR_INCAP(living_pawn)) return AI_UNABLE_TO_RUN diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm index c2e9fe515c40f..33cc871fddcc7 100644 --- a/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/targeted_mob_ability.dm @@ -16,12 +16,6 @@ return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED -/datum/ai_behavior/targeted_mob_ability/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key) - . = ..() - var/atom/target = controller.blackboard[target_key] - if (QDELETED(target)) - controller.clear_blackboard_key(target_key) - /datum/ai_behavior/targeted_mob_ability/proc/get_ability_to_use(datum/ai_controller/controller, ability_key) return controller.blackboard[ability_key] diff --git a/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm b/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm index 5d9841a524735..649a45d4cc7ac 100644 --- a/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm +++ b/code/datums/ai/basic_mobs/basic_subtrees/sleep_with_no_target.dm @@ -11,23 +11,24 @@ /// Disables AI after a certain amount of time spent with no target, you will have to enable the AI again somewhere else /datum/ai_behavior/sleep_after_targetless_time - /// Turn off AI if we spend this many seconds without a target, don't use the macro because seconds_per_tick is already in seconds - var/time_to_wait = 10 + /// Turn off AI if we spend this many seconds without a target + var/time_to_wait = 10 SECONDS /datum/ai_behavior/sleep_after_targetless_time/perform(seconds_per_tick, datum/ai_controller/controller, target_key) - var/atom/target = controller.blackboard[target_key] - if(QDELETED(target)) - return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED - return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED + return (controller.blackboard_key_exists(target_key)) ? ( AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED) : ( AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED) -/datum/ai_behavior/sleep_after_targetless_time/finish_action(datum/ai_controller/controller, succeeded, seconds_per_tick) +/datum/ai_behavior/sleep_after_targetless_time/finish_action(datum/ai_controller/controller, succeeded, target_key) . = ..() if (!succeeded) - controller.set_blackboard_key(BB_TARGETLESS_TIME, 0) + controller.clear_blackboard_key(BB_TARGETLESS_TIME) return - controller.add_blackboard_key(BB_TARGETLESS_TIME, seconds_per_tick) - if (controller.blackboard[BB_TARGETLESS_TIME] > time_to_wait) + + if (isnull(controller.blackboard[BB_TARGETLESS_TIME])) + controller.set_blackboard_key(BB_TARGETLESS_TIME, world.time + time_to_wait) + + if (controller.blackboard[BB_TARGETLESS_TIME] < world.time) enter_sleep(controller) + controller.clear_blackboard_key(BB_TARGETLESS_TIME) /// Disables AI, override to do additional things or something else /datum/ai_behavior/sleep_after_targetless_time/proc/enter_sleep(datum/ai_controller/controller) diff --git a/code/datums/ai/generic/generic_behaviors.dm b/code/datums/ai/generic/generic_behaviors.dm index 4d0fb51405044..d71508251b948 100644 --- a/code/datums/ai/generic/generic_behaviors.dm +++ b/code/datums/ai/generic/generic_behaviors.dm @@ -49,14 +49,8 @@ batman.visible_message(span_warning("[batman] gets a slightly too tight hug from [big_guy]!"), span_userdanger("You feel your body break as [big_guy] embraces you!")) - if(iscarbon(batman)) - var/mob/living/carbon/carbon_batman = batman - for(var/obj/item/bodypart/bodypart_to_break in carbon_batman.bodyparts) - if(bodypart_to_break.body_zone == BODY_ZONE_HEAD) - continue - bodypart_to_break.receive_damage(brute = 15, wound_bonus = 35) - else - batman.adjustBruteLoss(150) + for(var/zone in GLOB.all_body_zones - BODY_ZONE_HEAD) + batman.apply_damage(15, BRUTE, zone, wound_bonus = 35) return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED diff --git a/code/datums/ai/idle_behaviors/idle_haunted.dm b/code/datums/ai/idle_behaviors/idle_haunted.dm index 5784b5104f6b8..756adae931341 100644 --- a/code/datums/ai/idle_behaviors/idle_haunted.dm +++ b/code/datums/ai/idle_behaviors/idle_haunted.dm @@ -10,4 +10,6 @@ return if(SPT_PROB(teleport_chance, seconds_per_tick)) playsound(item_pawn.loc, 'sound/items/haunted/ghostitemattack.ogg', 100, TRUE) + #ifndef UNIT_TESTS // hauntium teleports can cause mapping nearstation tests to fail if it teleports outside an area do_teleport(item_pawn, get_turf(item_pawn), 4, channel = TELEPORT_CHANNEL_MAGIC) + #endif diff --git a/code/datums/ai/monkey/monkey_behaviors.dm b/code/datums/ai/monkey/monkey_behaviors.dm index 126c08daa1e8b..ef49de98823dd 100644 --- a/code/datums/ai/monkey/monkey_behaviors.dm +++ b/code/datums/ai/monkey/monkey_behaviors.dm @@ -4,11 +4,18 @@ /datum/ai_behavior/monkey_equip behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH -/datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success) +/datum/ai_behavior/monkey_equip/setup(datum/ai_controller/controller, target_key) + . = ..() + var/obj/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success, target_key) . = ..() if(!success) //Don't try again on this item if we failed - controller.set_blackboard_key_assoc(BB_MONKEY_BLACKLISTITEMS, controller.blackboard[BB_MONKEY_PICKUPTARGET], TRUE) + controller.set_blackboard_key_assoc(BB_MONKEY_BLACKLISTITEMS, controller.blackboard[target_key], TRUE) controller.clear_blackboard_key(BB_MONKEY_PICKUPTARGET) @@ -50,9 +57,8 @@ return FALSE /datum/ai_behavior/monkey_equip/ground - required_distance = 0 -/datum/ai_behavior/monkey_equip/ground/perform(seconds_per_tick, datum/ai_controller/controller) +/datum/ai_behavior/monkey_equip/ground/perform(seconds_per_tick, datum/ai_controller/controller, target_key) . = ..() if(equip_item(controller)) return . | AI_BEHAVIOR_SUCCEEDED @@ -60,7 +66,7 @@ /datum/ai_behavior/monkey_equip/pickpocket -/datum/ai_behavior/monkey_equip/pickpocket/perform(seconds_per_tick, datum/ai_controller/controller) +/datum/ai_behavior/monkey_equip/pickpocket/perform(seconds_per_tick, datum/ai_controller/controller, target_key) . = ..() if(controller.blackboard[BB_MONKEY_PICKPOCKETING]) //We are pickpocketing, don't do ANYTHING!!!! return @@ -75,8 +81,6 @@ finish_action(controller, FALSE) return - - victim.visible_message(span_warning("[living_pawn] starts trying to take [target] from [victim]!"), span_danger("[living_pawn] tries to take [target]!")) controller.set_blackboard_key(BB_MONKEY_PICKPOCKETING, TRUE) @@ -125,7 +129,7 @@ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED /datum/ai_behavior/monkey_attack_mob - behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION //performs to increase frustration /datum/ai_behavior/monkey_attack_mob/setup(datum/ai_controller/controller, target_key) . = ..() @@ -134,104 +138,76 @@ /datum/ai_behavior/monkey_attack_mob/perform(seconds_per_tick, datum/ai_controller/controller, target_key) var/mob/living/target = controller.blackboard[target_key] var/mob/living/living_pawn = controller.pawn + var/datum/targeting_strategy/strategy = GET_TARGETING_STRATEGY(controller.blackboard[BB_TARGETING_STRATEGY]) - if(!target || target.stat != CONSCIOUS) //Target == owned + if(QDELETED(target) || !strategy.can_attack(living_pawn, target)) //Target == owned return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED - if(!isturf(target.loc) || IS_DEAD_OR_INCAP(living_pawn)) // Check if they're a valid target - return AI_BEHAVIOR_DELAY // check if target has a weapon - var/obj/item/W - for(var/obj/item/I in target.held_items) - if(!(I.item_flags & ABSTRACT)) - W = I + var/holding_weapon + for(var/obj/item/potential_weapon in target.held_items) + if(!(potential_weapon.item_flags & ABSTRACT)) + holding_weapon = potential_weapon break - // if the target has a weapon, chance to disarm them - var/perform_flags = NONE - if(W && SPT_PROB(MONKEY_ATTACK_DISARM_PROB, seconds_per_tick)) - perform_flags = monkey_attack(controller, target, seconds_per_tick, TRUE) - else - perform_flags = monkey_attack(controller, target, seconds_per_tick, FALSE) - return AI_BEHAVIOR_DELAY | perform_flags + var/attack_results = monkey_attack(controller, target, seconds_per_tick, holding_weapon && SPT_PROB(MONKEY_ATTACK_DISARM_PROB, seconds_per_tick), holding_weapon) + + if(!attack_results || controller.blackboard[BB_MONKEY_AGGRESSIVE]) + return AI_BEHAVIOR_DELAY + + //check if we can de-aggro on the enemy... + var/hatred_value = controller.blackboard[BB_MONKEY_ENEMIES][target] + + if(isnull(hatred_value)) + hatred_value = 1 + controller.set_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, hatred_value) + + if(!SPT_PROB(MONKEY_HATRED_REDUCTION_PROB, seconds_per_tick)) + return AI_BEHAVIOR_DELAY + + //we decrease our hatred value to them by 1 + hatred_value-- + if(hatred_value <= 0) + controller.remove_thing_from_blackboard_key(BB_MONKEY_ENEMIES, target) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + + controller.set_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, hatred_value) + return AI_BEHAVIOR_DELAY /datum/ai_behavior/monkey_attack_mob/finish_action(datum/ai_controller/controller, succeeded, target_key) . = ..() - var/mob/living/living_pawn = controller.pawn controller.clear_blackboard_key(target_key) - if(QDELETED(living_pawn)) // pawn can be null at this point - return - GLOB.move_manager.stop_looping(living_pawn) /// attack using a held weapon otherwise bite the enemy, then if we are angry there is a chance we might calm down a little -/datum/ai_behavior/monkey_attack_mob/proc/monkey_attack(datum/ai_controller/controller, mob/living/target, seconds_per_tick, disarm) +/datum/ai_behavior/monkey_attack_mob/proc/monkey_attack(datum/ai_controller/controller, mob/living/target, seconds_per_tick, disarm, holding_weapon) var/mob/living/living_pawn = controller.pawn if(living_pawn.next_move > world.time) - return NONE - - living_pawn.changeNext_move(CLICK_CD_MELEE) //We play fair - - var/obj/item/weapon = locate(/obj/item) in living_pawn.held_items - - living_pawn.face_atom(target) - - living_pawn.set_combat_mode(TRUE) - - if(isnull(controller.blackboard[BB_MONKEY_GUN_WORKED])) - controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, TRUE) - - // attack with weapon if we have one - if(living_pawn.CanReach(target, weapon)) - if(weapon) - weapon.melee_attack_chain(living_pawn, target) - else - controller.ai_interact(target = target, modifiers = disarm ? list(RIGHT_CLICK = TRUE) : null) - controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, TRUE) // We reset their memory of the gun being 'broken' if they accomplish some other attack - else if(weapon) - var/atom/real_target = target - if(prob(10)) // Artificial miss - real_target = pick(oview(2, target)) - - var/obj/item/gun/gun = locate() in living_pawn.held_items - var/can_shoot = gun?.can_shoot() || FALSE - if(gun && controller.blackboard[BB_MONKEY_GUN_WORKED] && prob(95)) - // We attempt to attack even if we can't shoot so we get the effects of pulling the trigger - gun.interact_with_atom(real_target, living_pawn) - controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, can_shoot ? TRUE : prob(80)) // Only 20% likely to notice it didn't work - if(can_shoot) - controller.set_blackboard_key(BB_MONKEY_GUN_NEURONS_ACTIVATED, TRUE) - else - living_pawn.throw_item(real_target) - controller.set_blackboard_key(BB_MONKEY_GUN_WORKED, TRUE) // 'worked' - - // no de-aggro - if(controller.blackboard[BB_MONKEY_AGGRESSIVE]) - return NONE - - // we've queued up a monkey attack on a mob which isn't already an enemy, so give them 1 threat to start - // note they might immediately reduce threat and drop from the list. - // this is fine, we're just giving them a love tap then leaving them alone. - // unless they fight back, then we retaliate - - // Some mobs delete on death. If the target is no longer alive, go back to idle - if(QDELETED(target)) - finish_action(controller, TRUE) - return + return FALSE - if(isnull(controller.blackboard[BB_MONKEY_ENEMIES][target])) - controller.set_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, 1) + //are we holding a gun? can we shoot it? if so, FIRE + var/obj/item/gun/gun_to_shoot = locate() in living_pawn.held_items + if(gun_to_shoot?.can_shoot()) + if(gun_to_shoot != living_pawn.get_active_held_item()) + living_pawn.swap_hand(living_pawn.get_inactive_hand_index()) + controller.ai_interact(target = target, combat_mode = TRUE) + return TRUE - /// mob refs are uids, so this is safe - if(SPT_PROB(MONKEY_HATRED_REDUCTION_PROB, seconds_per_tick)) - controller.add_blackboard_key_assoc(BB_MONKEY_ENEMIES, target, -1) + //look for any potential weapons we're holding + var/obj/item/potential_weapon = locate() in living_pawn.held_items + if(!living_pawn.CanReach(target, potential_weapon)) + return FALSE - // if we are not angry at our target, go back to idle - if(controller.blackboard[BB_MONKEY_ENEMIES][target] <= 0) - controller.remove_thing_from_blackboard_key(BB_MONKEY_ENEMIES, target) - if(controller.blackboard[BB_MONKEY_CURRENT_ATTACK_TARGET] == target) - return AI_BEHAVIOR_SUCCEEDED - return NONE + if(isnull(potential_weapon)) + controller.ai_interact(target = target, modifiers = disarm ? list(RIGHT_CLICK = TRUE) : null, combat_mode = TRUE) + if(disarm && !isnull(holding_weapon) && controller.blackboard[BB_MONKEY_BLACKLISTITEMS][holding_weapon]) + controller.remove_thing_from_blackboard_key(BB_MONKEY_BLACKLISTITEMS, holding_weapon) //lets try to pickpocket it again! + return TRUE + + if(potential_weapon != living_pawn.get_active_held_item()) + living_pawn.swap_hand(living_pawn.get_inactive_hand_index()) + controller.ai_interact(target = target, combat_mode = TRUE) + return TRUE /datum/ai_behavior/disposal_mob behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_MOVE_AND_PERFORM //performs to increase frustration diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm index 0074d206983b3..4c778f6612203 100644 --- a/code/datums/ai/monkey/monkey_controller.dm +++ b/code/datums/ai/monkey/monkey_controller.dm @@ -15,6 +15,7 @@ have ways of interacting with a specific mob and control it. /datum/ai_planning_subtree/monkey_shenanigans, ) blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/monkey, BB_MONKEY_AGGRESSIVE = FALSE, BB_MONKEY_BEST_FORCE_FOUND = 0, BB_MONKEY_ENEMIES = list(), @@ -22,12 +23,18 @@ have ways of interacting with a specific mob and control it. BB_MONKEY_PICKPOCKETING = FALSE, BB_MONKEY_DISPOSING = FALSE, BB_MONKEY_GUN_NEURONS_ACTIVATED = FALSE, - BB_MONKEY_GUN_WORKED = TRUE, BB_SONG_LINES = MONKEY_SONG, BB_RESISTING = FALSE, ) idle_behavior = /datum/idle_behavior/idle_monkey +/datum/targeting_strategy/basic/monkey + +/datum/targeting_strategy/basic/monkey/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target) + if(controller.blackboard[BB_MONKEY_ENEMIES][the_target]) + return FALSE + return ..() + /datum/ai_controller/monkey/process(seconds_per_tick) var/mob/living/living_pawn = src.pawn @@ -164,11 +171,10 @@ have ways of interacting with a specific mob and control it. return FALSE set_blackboard_key(BB_MONKEY_PICKUPTARGET, weapon) - set_movement_target(type, weapon) if(pickpocket) - queue_behavior(/datum/ai_behavior/monkey_equip/pickpocket) + queue_behavior(/datum/ai_behavior/monkey_equip/pickpocket, BB_MONKEY_PICKUPTARGET) else - queue_behavior(/datum/ai_behavior/monkey_equip/ground) + queue_behavior(/datum/ai_behavior/monkey_equip/ground, BB_MONKEY_PICKUPTARGET) return TRUE ///Reactive events to being hit diff --git a/code/datums/ai/monkey/monkey_subtrees.dm b/code/datums/ai/monkey/monkey_subtrees.dm index 572eeb6b56e92..1210fe44ba11f 100644 --- a/code/datums/ai/monkey/monkey_subtrees.dm +++ b/code/datums/ai/monkey/monkey_subtrees.dm @@ -53,6 +53,8 @@ if(controller.blackboard[BB_MONKEY_RECRUIT_COOLDOWN] < world.time) controller.queue_behavior(/datum/ai_behavior/recruit_monkeys, BB_MONKEY_CURRENT_ATTACK_TARGET) + return + controller.queue_behavior(/datum/ai_behavior/battle_screech/monkey) controller.queue_behavior(/datum/ai_behavior/monkey_attack_mob, BB_MONKEY_CURRENT_ATTACK_TARGET) return SUBTREE_RETURN_FINISH_PLANNING diff --git a/code/datums/ai/movement/_ai_movement.dm b/code/datums/ai/movement/_ai_movement.dm index 33b7e4e214f6b..1e27b33b2dbd9 100644 --- a/code/datums/ai/movement/_ai_movement.dm +++ b/code/datums/ai/movement/_ai_movement.dm @@ -28,29 +28,32 @@ /datum/ai_movement/proc/reset_pathing_failures(datum/ai_controller/controller) controller.consecutive_pathing_attempts = 0 -///Should the movement be allowed to happen? return TRUE if it can, FALSE otherwise /datum/ai_movement/proc/allowed_to_move(datum/move_loop/source) SHOULD_BE_PURE(TRUE) var/atom/movable/pawn = source.moving var/datum/ai_controller/controller = source.extra_info - var/can_move = TRUE if((controller.ai_traits & STOP_MOVING_WHEN_PULLED) && pawn.pulledby) //Need to store more state. Annoying. - can_move = FALSE + return FALSE if(!isturf(pawn.loc)) //No moving if not on a turf - can_move = FALSE + return FALSE if(isliving(pawn)) var/mob/living/pawn_mob = pawn if(!(pawn_mob.mobility_flags & MOBILITY_MOVE)) - can_move = FALSE + return FALSE + // Bandaid fix: AI controllers don't call /Process_Grab because it's a client proc, + // and thus, we need to check that grabbed mobs cuffed/crit can't move + // That proc should probably be moved onto the mob instead of clients + if(INCAPACITATED_IGNORING(pawn_mob, INCAPABLE_STASIS) && pawn.pulledby) + return FALSE if(HAS_TRAIT(pawn, TRAIT_NO_TRANSFORM)) - can_move = FALSE + return FALSE - return can_move + return TRUE ///Anything to do before moving; any checks if the pawn should be able to move should be placed in allowed_to_move() and called by this proc /datum/ai_movement/proc/pre_move(datum/move_loop/source) diff --git a/code/datums/ai/movement/ai_movement_basic_avoidance.dm b/code/datums/ai/movement/ai_movement_basic_avoidance.dm index ac231e075ed14..6659da244f3da 100644 --- a/code/datums/ai/movement/ai_movement_basic_avoidance.dm +++ b/code/datums/ai/movement/ai_movement_basic_avoidance.dm @@ -14,10 +14,10 @@ RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move)) /datum/ai_movement/basic_avoidance/allowed_to_move(datum/move_loop/has_target/dist_bound/source) - . = ..() var/turf/target_turf = get_step_towards(source.moving, source.target) if(!target_turf?.can_cross_safely(source.moving)) return FALSE + return ..() /// Move immediately and don't update our facing /datum/ai_movement/basic_avoidance/backstep diff --git a/code/datums/ai/movement/ai_movement_dumb.dm b/code/datums/ai/movement/ai_movement_dumb.dm index 2de85046a941f..001501bcbd93d 100644 --- a/code/datums/ai/movement/ai_movement_dumb.dm +++ b/code/datums/ai/movement/ai_movement_dumb.dm @@ -12,7 +12,7 @@ RegisterSignal(loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(post_move)) /datum/ai_movement/dumb/allowed_to_move(datum/move_loop/has_target/source) - . = ..() var/turf/target_turf = get_step_towards(source.moving, source.target) if(!target_turf?.can_cross_safely(source.moving)) return FALSE + return ..() diff --git a/code/datums/ai/movement/ai_movement_jps.dm b/code/datums/ai/movement/ai_movement_jps.dm index b4c4fe1a28aa8..3781dd7f5dc79 100644 --- a/code/datums/ai/movement/ai_movement_jps.dm +++ b/code/datums/ai/movement/ai_movement_jps.dm @@ -16,6 +16,7 @@ current_movement_target, delay, repath_delay = 0.5 SECONDS, + simulated_only = !HAS_TRAIT(controller.pawn, TRAIT_SPACEWALK), max_path_length = maximum_length, minimum_distance = controller.get_minimum_distance(), access = controller.get_access(), @@ -51,7 +52,7 @@ /datum/ai_movement/jps/bot/travel_to_beacon maximum_length = AI_BOT_PATH_LENGTH - max_pathing_attempts = 20 + max_pathing_attempts = 10 /datum/ai_movement/jps/modsuit maximum_length = MOD_AI_RANGE diff --git a/code/datums/bodypart_overlays/simple_bodypart_overlay.dm b/code/datums/bodypart_overlays/simple_bodypart_overlay.dm index 78aa80179f46b..5bdc757550940 100644 --- a/code/datums/bodypart_overlays/simple_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/simple_bodypart_overlay.dm @@ -27,6 +27,7 @@ ///bags drawn beneath the eyes /datum/bodypart_overlay/simple/bags + icon = 'modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi' // DOPPLER EDIT - redirect to overwrite to make these less dark icon_state = "bags" draw_color = COLOR_WEBSAFE_DARK_GRAY layers = EXTERNAL_ADJACENT diff --git a/code/datums/bodypart_overlays/texture_bodypart_overlay.dm b/code/datums/bodypart_overlays/texture_bodypart_overlay.dm index 623a61b8912f0..6a50f431c0610 100644 --- a/code/datums/bodypart_overlays/texture_bodypart_overlay.dm +++ b/code/datums/bodypart_overlays/texture_bodypart_overlay.dm @@ -26,3 +26,7 @@ /datum/bodypart_overlay/texture/carpskin texture_icon_state = "carpskin" texture_icon = 'icons/mob/human/textures.dmi' + +/datum/bodypart_overlay/texture/checkered + texture_icon_state = "checkered" + texture_icon = 'icons/mob/human/textures.dmi' diff --git a/code/datums/brain_damage/hypnosis.dm b/code/datums/brain_damage/hypnosis.dm index 5630073c95551..a9400578025b4 100644 --- a/code/datums/brain_damage/hypnosis.dm +++ b/code/datums/brain_damage/hypnosis.dm @@ -55,7 +55,10 @@ to_chat(owner, span_userdanger("You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you.")) owner.clear_alert(ALERT_HYPNOSIS) ..() + if (!isnull(antagonist)) + antagonist.trauma = null owner.mind.remove_antag_datum(/datum/antagonist/hypnotized) + antagonist = null /datum/brain_trauma/hypnosis/on_life(seconds_per_tick, times_fired) ..() diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index cd45ae1abf468..ec537adf5c731 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -399,19 +399,23 @@ var/scratch_damage = 0.5 /datum/brain_trauma/severe/eldritch_beauty/on_life(seconds_per_tick, times_fired) - // Jumpsuits ruin the "perfection" of the body - if(!owner.get_item_by_slot(ITEM_SLOT_ICLOTHING)) + if(owner.incapacitated) return // Scratching code var/obj/item/bodypart/bodypart = owner.get_bodypart(owner.get_random_valid_zone(even_weights = TRUE)) - if(!(bodypart && IS_ORGANIC_LIMB(bodypart)) && bodypart.bodypart_flags & BODYPART_PSEUDOPART) + if(!bodypart || !IS_ORGANIC_LIMB(bodypart) || (bodypart.bodypart_flags & BODYPART_PSEUDOPART)) return - if(owner.incapacitated) + if(!ishuman(owner)) return - bodypart.receive_damage(scratch_damage) + // Jumpsuits ruin the "perfection" of the body + var/mob/living/carbon/human/scratcher = owner + if(!length(scratcher.get_clothing_on_part(bodypart))) + return + + owner.apply_damage(scratch_damage, BRUTE, bodypart) if(SPT_PROB(33, seconds_per_tick)) - to_chat(owner, span_notice("You scratch furiously at the clothed [bodypart]!")) + to_chat(owner, span_notice("You scratch furiously at your clothed [bodypart.plaintext_zone]!")) // This one is for "Climb over the rusted mountain" or /obj/structure/sign/painting/eldritch/rust /datum/brain_trauma/severe/rusting diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index 195d33c4b4b8d..cef20687a84d5 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -265,6 +265,10 @@ /datum/brain_trauma/severe/split_personality/blackout/on_gain() . = ..() + + if(QDELETED(src)) + return + RegisterSignal(owner, COMSIG_ATOM_SPLASHED, PROC_REF(on_splashed)) notify_ghosts( "[owner] is blacking out!", diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 3efa4a4a884a5..35511a9dcafb5 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -50,6 +50,8 @@ var/animate_start = 0 /// Our animation lifespan, how long this message will last var/animate_lifespan = 0 + /// Callback to finish_image_generation passed to SSrunechat + var/datum/callback/finish_callback /** * Constructs a chat message overlay @@ -81,6 +83,10 @@ LAZYREMOVEASSOC(owned_by.seen_messages, message_loc, src) owned_by.images.Remove(message) + if (finish_callback) + SSrunechat.message_queue -= finish_callback + finish_callback = null + owned_by = null message_loc = null message = null @@ -188,13 +194,14 @@ if(!VERB_SHOULD_YIELD) return finish_image_generation(mheight, target, owner, complete_text, lifespan) - var/datum/callback/our_callback = CALLBACK(src, PROC_REF(finish_image_generation), mheight, target, owner, complete_text, lifespan) - SSrunechat.message_queue += our_callback + finish_callback = CALLBACK(src, PROC_REF(finish_image_generation), mheight, target, owner, complete_text, lifespan) + SSrunechat.message_queue += finish_callback return ///finishes the image generation after the MeasureText() call in generate_image(). ///necessary because after that call the proc can resume at the end of the tick and cause overtime. /datum/chatmessage/proc/finish_image_generation(mheight, atom/target, mob/owner, complete_text, lifespan) + finish_callback = null var/rough_time = REALTIMEOFDAY approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT) var/starting_height = target.maptext_height @@ -223,9 +230,12 @@ var/remaining_time = time_before_fade * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height) // Ensure we don't accidentially spike alpha up or something silly like that m.message.alpha = m.get_current_alpha(time_spent) - if (remaining_time > 0) + if(remaining_time > 0) + if(time_spent < CHAT_MESSAGE_SPAWN_TIME) + // We haven't even had the time to fade in yet! + animate(m.message, alpha = 255, CHAT_MESSAGE_SPAWN_TIME - time_spent) // Stay faded in for a while, then - animate(m.message, alpha = 255, remaining_time) + animate(m.message, alpha = 255, remaining_time, flags=ANIMATION_CONTINUE) // Fade out animate(alpha = 0, time = CHAT_MESSAGE_EOL_FADE) m.animate_lifespan = remaining_time + CHAT_MESSAGE_EOL_FADE diff --git a/code/datums/components/COMPONENT_TEMPLATE.md b/code/datums/components/COMPONENT_TEMPLATE.md index 7b08205888522..79dfddf1d0811 100644 --- a/code/datums/components/COMPONENT_TEMPLATE.md +++ b/code/datums/components/COMPONENT_TEMPLATE.md @@ -40,10 +40,10 @@ See _component.dm for detailed explanations */ /* -/datum/component/mycomponent/PreTransfer() - send_to_playing_players("Goodbye [parent], I'm getting adopted") +/datum/component/mycomponent/PreTransfer(datum/new_parent) + send_to_playing_players("Goodbye [new_parent], I'm getting adopted") -/datum/component/mycomponent/PostTransfer() +/datum/component/mycomponent/PostTransfer(datum/new_parent) send_to_playing_players("Hello my new parent, [parent]! It's nice to meet you!") */ diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index f78e2af6be17d..000f8790084f1 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -17,15 +17,6 @@ */ var/dupe_mode = COMPONENT_DUPE_HIGHLANDER - /** - * The type to check for duplication - * - * `null` means exact match on `type` (default) - * - * Any other type means that and all subtypes - */ - var/dupe_type - /// The datum this components belongs to var/datum/parent @@ -57,7 +48,7 @@ qdel(src, TRUE, TRUE) return - _JoinParent(parent) + _JoinParent() /** * Called during component creation with the same arguments as in new excluding parent. @@ -217,7 +208,7 @@ * * Use this to do any special cleanup you might need to do before being deregged from an object */ -/datum/component/proc/PreTransfer() +/datum/component/proc/PreTransfer(datum/new_parent) return /** @@ -227,7 +218,7 @@ * * Do not call `qdel(src)` from this function, `return COMPONENT_INCOMPATIBLE` instead */ -/datum/component/proc/PostTransfer() +/datum/component/proc/PostTransfer(datum/new_parent) return COMPONENT_INCOMPATIBLE //Do not support transfer by default as you must properly support it /** @@ -328,7 +319,6 @@ CRASH("[component_type] attempted instantiation!") var/dupe_mode = initial(component_type.dupe_mode) - var/dupe_type = initial(component_type.dupe_type) var/uses_sources = (dupe_mode == COMPONENT_DUPE_SOURCES) if(uses_sources && !source) CRASH("Attempted to add a sourced component of type '[component_type]' to '[type]' without a source!") @@ -339,10 +329,7 @@ raw_args[1] = src if(dupe_mode != COMPONENT_DUPE_ALLOWED && dupe_mode != COMPONENT_DUPE_SELECTIVE && dupe_mode != COMPONENT_DUPE_SOURCES) - if(!dupe_type) - old_component = GetExactComponent(component_type) - else - old_component = GetComponent(dupe_type) + old_component = GetComponent(component_type) if(old_component) switch(dupe_mode) @@ -434,11 +421,11 @@ * Removes the component from parent, ends up with a null parent * Used as a helper proc by the component transfer proc, does not clean up the component like Destroy does */ -/datum/component/proc/ClearFromParent() +/datum/component/proc/ClearFromParent(datum/new_parent) if(!parent) return var/datum/old_parent = parent - PreTransfer() + PreTransfer(new_parent) _RemoveFromParent() parent = null SEND_SIGNAL(old_parent, COMSIG_COMPONENT_REMOVING, src) @@ -455,16 +442,17 @@ if(!target || target.parent == src) return if(target.parent) - target.ClearFromParent() - target.parent = src - var/result = target.PostTransfer() + target.ClearFromParent(src) + var/result = target.PostTransfer(src) switch(result) if(COMPONENT_INCOMPATIBLE) var/c_type = target.type qdel(target) CRASH("Incompatible [c_type] transfer attempt to a [type]!") - if(target == AddComponent(target)) + AddComponent(target) + if(!QDELETED(target)) + target.parent = src target._JoinParent() /** @@ -482,13 +470,13 @@ for(var/component_key in dc) var/component_or_list = dc[component_key] if(islist(component_or_list)) - for(var/datum/component/I in component_or_list) - if(I.can_transfer) - target.TakeComponent(I) + for(var/datum/component/component in component_or_list) + if(component.can_transfer) + target.TakeComponent(component) else - var/datum/component/C = component_or_list - if(C.can_transfer) - target.TakeComponent(C) + var/datum/component/component = component_or_list + if(!QDELETED(component) && component.can_transfer) + target.TakeComponent(component) /** * Return the object that is the host of any UI's that this component has diff --git a/code/datums/components/acid.dm b/code/datums/components/acid.dm index 74fa1b1ae7f88..dea0002663d67 100644 --- a/code/datums/components/acid.dm +++ b/code/datums/components/acid.dm @@ -25,8 +25,10 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e var/turf_acid_ignores_mobs = FALSE /// The ambient sound of acid eating away at the parent [/atom]. var/datum/looping_sound/acid/sizzle - /// Particle holder for acid particles (sick) + /// Particle holder for acid particles (sick). Still utilized over shared holders because they're movable-only var/obj/effect/abstract/particle_holder/particle_effect + /// Particle type we're using for cleaning up our shared holder + var/particle_type /// The proc used to handle the parent [/atom] when processing. TODO: Unify damage and resistance flags so that this doesn't need to exist! var/datum/callback/process_effect @@ -68,8 +70,13 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e sizzle = new(atom_parent, TRUE) if(acid_particles) - // acid particles look pretty bad when they stack on mobs, so that behavior is not wanted for items - particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB) + if (ismovable(parent)) + var/atom/movable/movable_parent = parent + movable_parent.add_shared_particles(acid_particles, "[acid_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB) + particle_type = acid_particles + else + // acid particles look pretty bad when they stack on mobs, so that behavior is not wanted for items + particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB) START_PROCESSING(SSacid, src) /datum/component/acid/Destroy(force) @@ -78,6 +85,9 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e QDEL_NULL(sizzle) if(particle_effect) QDEL_NULL(particle_effect) + if (ismovable(parent) && particle_type) + var/atom/movable/movable_parent = parent + movable_parent.remove_shared_particles("[particle_type]_[isitem(parent)]") process_effect = null return ..() @@ -233,16 +243,10 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(!iscarbon(user) || user.can_touch_acid(source, acid_power, acid_volume)) return NONE - var/obj/item/bodypart/affecting = user.get_active_hand() - //Should not happen! - if(!affecting) - return NONE - - affecting.receive_damage(burn = 5) + user.apply_damage(5, BURN, user.get_active_hand()) to_chat(user, span_userdanger("The acid on \the [source] burns your hand!")) INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream") playsound(source, SFX_SEAR, 50, TRUE) - user.update_damage_overlays() return COMPONENT_CANCEL_ATTACK_CHAIN /// Handles searing the feet of whoever walks over this without protection. Only active if the parent is a turf. diff --git a/code/datums/components/aquarium.dm b/code/datums/components/aquarium.dm new file mode 100644 index 0000000000000..f207ecd9f5510 --- /dev/null +++ b/code/datums/components/aquarium.dm @@ -0,0 +1,600 @@ +///Defines that clamp the beauty of the aquarium, to prevent it from making most areas great or horrid all by itself. +#define MIN_AQUARIUM_BEAUTY -3500 +#define MAX_AQUARIUM_BEAUTY 6000 + +/** + * The component that manages the aquariums UI, fluid, temperature, the current fish inside the parent object, as well as beauty, + * and a few other common aquarium features. + */ +/datum/component/aquarium + dupe_mode = COMPONENT_DUPE_UNIQUE + can_transfer = TRUE + /// list of fishes inside the parent object, sorted by type - does not include things with aquarium visuals that are not fish + var/list/tracked_fish_by_type + + ///The current type of fluid of the aquarium + var/fluid_type = AQUARIUM_FLUID_FRESHWATER + ///The current temperature of the fluid of the aquarium + var/fluid_temp = DEFAULT_AQUARIUM_TEMP + + ///A lazy list of key instances and assoc vals representing how much beauty they contribute to the aquarium + var/list/beauty_by_content + + ///The default beauty of the aquarium when empty. + var/default_beauty + + ///A list of layers that are currently being used for the various overlays of the aquarium (from aquarium_content comp) + var/list/used_layers = list() + + ///The minimum pixel x of the area where vis overlays should be displayed + var/aquarium_zone_min_px + ///The maximum pixel x of the area where vis overlays should be displayed + var/aquarium_zone_max_px + ///The minimum pixel y of the area where vis overlays should be displayed + var/aquarium_zone_min_py + ///The maximum pixel y of the area where vis overlays should be displayed + var/aquarium_zone_max_py + + ///While the feed (reagent) storage is not empty, this is the interval which the fish are fed. + var/feeding_interval = 3 MINUTES + ///The last time fishes were fed by the acquarium itsef. + var/last_feeding + + ///The minimum fluid temperature that can be reached by this aquarium + var/min_fluid_temp = MIN_AQUARIUM_TEMP + ///The maximum fluid temperature that can be reached by this aquarium + var/max_fluid_temp = MAX_AQUARIUM_TEMP + + ///static list of available fluid types. + var/static/list/fluid_types = list( + AQUARIUM_FLUID_SALTWATER, + AQUARIUM_FLUID_FRESHWATER, + AQUARIUM_FLUID_SULPHWATEVER, + AQUARIUM_FLUID_AIR, + ) + + ///The size of the reagents holder which will store fish feed. + var/reagents_size + +/datum/component/aquarium/Initialize( + min_px, + max_px, + min_py, + max_py, + default_beauty = 0, + reagents_size = 6, + min_fluid_temp = MIN_AQUARIUM_TEMP, + max_fluid_temp = MAX_AQUARIUM_TEMP, +) + + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + src.default_beauty = default_beauty + src.reagents_size = reagents_size + + aquarium_zone_min_px = min_px + aquarium_zone_max_px = max_px + aquarium_zone_min_py = min_py + aquarium_zone_max_py = max_py + + src.min_fluid_temp = min_fluid_temp + src.max_fluid_temp = max_fluid_temp + fluid_temp = clamp(fluid_temp, min_fluid_temp, max_fluid_temp) + +/datum/component/aquarium/RegisterWithParent() + if(default_beauty) + update_aquarium_beauty(0) + + RegisterSignals(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON), PROC_REF(on_entered)) + RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(on_exited)) + + RegisterSignal(parent, COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES, PROC_REF(get_candidates)) + RegisterSignal(parent, COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS, PROC_REF(check_evolution)) + + RegisterSignal(parent, COMSIG_AQUARIUM_SET_VISUAL, PROC_REF(set_visual)) + RegisterSignal(parent, COMSIG_AQUARIUM_REMOVE_VISUAL, PROC_REF(remove_visual)) + + var/atom/movable/movable = parent + + ADD_KEEP_TOGETHER(movable, AQUARIUM_TRAIT) //render the fish on the same layer of the aquarium. + + if(reagents_size > 0) + RegisterSignal(movable.reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed)) + if(!movable.reagents) + movable.create_reagents(reagents_size, SEALED_CONTAINER) + else if(movable.reagents.total_volume) + start_autofeed(movable.reagents) + RegisterSignal(movable, COMSIG_PLUNGER_ACT, PROC_REF(on_plunger_act)) + + RegisterSignal(movable, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_interaction)) + RegisterSignal(movable, COMSIG_CLICK_ALT, PROC_REF(on_click_alt)) + RegisterSignal(movable, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + + if(isitem(movable)) + RegisterSignal(movable, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact)) + RegisterSignals(movable, list(COMSIG_ATOM_ATTACK_ROBOT_SECONDARY, COMSIG_ATOM_ATTACK_HAND_SECONDARY), PROC_REF(on_secondary_attack_hand)) + else + RegisterSignal(movable, COMSIG_ATOM_UI_INTERACT, PROC_REF(interact)) + + movable.AddElement(/datum/element/relay_attackers) + movable.AddComponent(/datum/component/fishing_spot, /datum/fish_source/aquarium) + + + movable.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 + RegisterSignal(movable, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) + + for(var/atom/movable/content as anything in movable.contents) + if(content.flags_1 & INITIALIZED_1) + on_entered(movable, content) + + ADD_TRAIT(movable, TRAIT_IS_AQUARIUM, AQUARIUM_TRAIT) + +/datum/component/aquarium/UnregisterFromParent() + var/atom/movable/movable = parent + UnregisterSignal(movable, list( + COMSIG_ATOM_ENTERED, + COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, + COMSIG_ATOM_EXITED, + COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES, + COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS, + COMSIG_AQUARIUM_SET_VISUAL, + COMSIG_AQUARIUM_REMOVE_VISUAL, + COMSIG_PLUNGER_ACT, + COMSIG_ATOM_ITEM_INTERACTION, + COMSIG_CLICK_ALT, + COMSIG_ATOM_EXAMINE, + COMSIG_ITEM_ATTACK_SELF, + COMSIG_ATOM_ATTACK_ROBOT_SECONDARY, + COMSIG_ATOM_ATTACK_HAND_SECONDARY, + COMSIG_ATOM_UI_INTERACT, + COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, + )) + if(movable.reagents) + UnregisterSignal(movable, COMSIG_REAGENTS_NEW_REAGENT) + STOP_PROCESSING(SSobj, src) + beauty_by_content = null + tracked_fish_by_type = null + movable.remove_traits(list(TRAIT_IS_AQUARIUM, TRAIT_AQUARIUM_PANEL_OPEN, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH), AQUARIUM_TRAIT) + qdel(movable.GetComponent(/datum/component/fishing_spot)) + REMOVE_KEEP_TOGETHER(movable, AQUARIUM_TRAIT) + +/datum/component/aquarium/PreTransfer(atom/movable/new_parent) + if(!istype(new_parent)) + return + if(HAS_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN)) + ADD_TRAIT(new_parent, TRAIT_AQUARIUM_PANEL_OPEN, AQUARIUM_TRAIT) + if(HAS_TRAIT_FROM(parent, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)) + ADD_TRAIT(new_parent, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) + var/atom/movable/movable = parent + for(var/atom/movable/moving as anything in movable.contents) + if(HAS_TRAIT(moving, TRAIT_AQUARIUM_CONTENT)) + moving.forceMove(new_parent) + if(reagents_size) + if(!new_parent.reagents) + new_parent.create_reagents(reagents_size, SEALED_CONTAINER) + movable.reagents.trans_to(new_parent, movable.reagents.total_volume) + +/datum/component/aquarium/PostTransfer(datum/new_parent) + if(!ismovable(new_parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/aquarium/InheritComponent(datum/component/aquarium/new_comp, i_am_original) + fluid_temp = clamp(new_comp.fluid_temp, min_fluid_temp, max_fluid_temp) + set_fluid_type(new_comp.fluid_type) + feeding_interval = new_comp.feeding_interval + last_feeding = new_comp.last_feeding + var/atom/movable/movable = parent + movable.update_appearance() + +/datum/component/aquarium/proc/on_click_alt(atom/movable/source, mob/living/user) + SIGNAL_HANDLER + if(!user.can_perform_action(source)) + return + var/closing = HAS_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN) + if(closing) + REMOVE_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN, AQUARIUM_TRAIT) + source.reagents.flags &= ~(TRANSPARENT|REFILLABLE) + SStgui.close_uis(src) + else + ADD_TRAIT(parent, TRAIT_AQUARIUM_PANEL_OPEN, AQUARIUM_TRAIT) + source.reagents.flags |= TRANSPARENT|REFILLABLE + + source.balloon_alert(user, "panel [closing ? "closed" : "open"]") + source.update_appearance() + return CLICK_ACTION_SUCCESS + +///This proc handles feeding the aquarium and inserting aquarium content. +/datum/component/aquarium/proc/on_item_interaction(atom/movable/source, mob/living/user, obj/item/item, modifiers) + SIGNAL_HANDLER + + if(istype(item, /obj/item/reagent_containers/cup/fish_feed)) + if(source.reagents && HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN)) + return //don't block, we'll be transferring reagents to the feed storage. + if(!item.reagents.total_volume) + source.balloon_alert(user, "[item] is empty!") + return ITEM_INTERACT_BLOCKING + var/list/fishes = get_fishes() + if(!length(fishes)) + source.balloon_alert(user, "no fish to feed!") + return ITEM_INTERACT_BLOCKING + for(var/obj/item/fish/fish as anything in fishes) + fish.feed(item.reagents) + source.balloon_alert(user, "fed the fish") + return ITEM_INTERACT_SUCCESS + + if(!HAS_TRAIT(item, TRAIT_AQUARIUM_CONTENT) || (!isitem(parent) && user.combat_mode)) + return //proceed with normal interactions + + var/broken = source.get_integrity_percentage() <= source.integrity_failure + if(!can_insert(source, item, user)) + return ITEM_INTERACT_BLOCKING + if(broken) + source.balloon_alert(user, "aquarium is broken!") + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(item, source)) + user.balloon_alert(user, "stuck to your hand!") + return ITEM_INTERACT_BLOCKING + source.balloon_alert(user, "added to aquarium") + source.update_appearance() + return ITEM_INTERACT_SUCCESS + +///Called when the feed storage is no longer empty. +/datum/component/aquarium/proc/start_autofeed(atom/movable/source, new_reagent, amount, reagtemp, data, no_react) + SIGNAL_HANDLER + START_PROCESSING(SSobj, src) + UnregisterSignal(source.reagents, COMSIG_REAGENTS_NEW_REAGENT) + +///Feed the fish at defined intervals until the feed storage is empty. +/datum/component/aquarium/process(seconds_per_tick) + //safe mode, no need to feed the fishes + if(HAS_TRAIT_FROM(parent, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)) + last_feeding += seconds_per_tick SECONDS + return + var/atom/movable/movable = parent + if(!movable.reagents?.total_volume) + if(movable.reagents) + RegisterSignal(movable.reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed)) + return PROCESS_KILL + if(world.time < last_feeding + feeding_interval) + return + last_feeding = world.time + var/list/fishes = get_fishes() + for(var/obj/item/fish/fish as anything in fishes) + fish.feed(movable.reagents) + +/datum/component/aquarium/proc/on_plunger_act(atom/movable/source, obj/item/plunger/plunger, mob/living/user, reinforced) + SIGNAL_HANDLER + if(!HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN)) + source.balloon_alert(user, "open panel first!") + return + INVOKE_ASYNC(src, PROC_REF(do_plunging), source, user) + return COMPONENT_NO_AFTERATTACK + +/datum/component/aquarium/proc/do_plunging(atom/movable/source, mob/living/user) + user.balloon_alert_to_viewers("plunging...") + if(do_after(user, 3 SECONDS, target = source)) + user.balloon_alert_to_viewers("finished plunging") + source.reagents.expose(get_turf(source), TOUCH) //splash on the floor + source.reagents.clear_reagents() + +/datum/component/aquarium/proc/on_examine(atom/movable/source, mob/user, list/examine_list) + SIGNAL_HANDLER + var/panel_open = HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN) + examine_list += span_notice("Alt-click to [panel_open ? "close" : "open"] the control and feed panel.") + if(panel_open && source.reagents.total_volume) + examine_list += span_notice("You can use a plunger to empty the feed storage.") + +///Check if an item can be inserted into the aquarium +/datum/component/aquarium/proc/can_insert(atom/movable/source, obj/item/item, mob/living/user) + var/return_value = SEND_SIGNAL(src, COMSIG_AQUARIUM_CAN_INSERT, item, user) + if(return_value & COMSIG_CANNOT_INSERT_IN_AQUARIUM) + return FALSE + if(return_value & COMSIG_CAN_INSERT_IN_AQUARIUM) + return TRUE + + if(HAS_TRAIT(item, TRAIT_UNIQUE_AQUARIUM_CONTENT)) + for(var/atom/movable/content as anything in source) + if(content == item) + continue + if(content.type == item.type) + source.balloon_alert(user, "cannot add to aquarium!") + return FALSE + return TRUE + +///Handles aquarium content insertion +/datum/component/aquarium/proc/on_entered(atom/movable/source, atom/movable/entered) + SIGNAL_HANDLER + get_content_beauty(entered) + if(!isfish(entered)) + return + var/obj/item/fish/fish = entered + LAZYADDASSOCLIST(tracked_fish_by_type, entered.type, entered) + if(fish.stable_population < length(tracked_fish_by_type[fish.type])) + for(var/obj/item/fish/anyfin as anything in tracked_fish_by_type[entered.type]) + anyfin.fish_flags |= FISH_FLAG_OVERPOPULATED + check_fluid_and_temperature(fish) + RegisterSignal(fish, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed)) + +///update the beauty_by_content of a 'beauty_by_content' key and then recalculate the beauty. +/datum/component/aquarium/proc/get_content_beauty(atom/movable/content) + var/list/beauty_holder = list() + SEND_SIGNAL(content, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, beauty_holder) + var/beauty = beauty_holder[1] + if(!beauty) + return + var/old_beauty = default_beauty + for(var/key in beauty_by_content) + old_beauty += beauty_by_content[key] + LAZYSET(beauty_by_content, content, beauty) + update_aquarium_beauty(old_beauty) + +///Handles aquarium content removal. +/datum/component/aquarium/proc/on_exited(atom/movable/source, atom/movable/gone) + SIGNAL_HANDLER + var/beauty = beauty_by_content?[gone] + if(beauty) + var/old_beauty = default_beauty + for(var/key in beauty_by_content) + old_beauty += beauty_by_content[key] + LAZYREMOVE(beauty_by_content, gone) + update_aquarium_beauty(old_beauty) + if(!isfish(gone)) + return + var/obj/item/fish/fish = gone + if(fish.stable_population == length(tracked_fish_by_type[fish.type])) + for(var/obj/item/fish/anyfin as anything in tracked_fish_by_type[fish.type]) + anyfin.fish_flags &= ~FISH_FLAG_OVERPOPULATED + LAZYREMOVEASSOC(tracked_fish_by_type, fish.type, fish) + fish.fish_flags &= ~(FISH_FLAG_SAFE_TEMPERATURE|FISH_FLAG_SAFE_FLUID) + UnregisterSignal(gone, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed)) + +///Return a list of fish which our fishie can reproduce with (including itself if self-reproducing) +/datum/component/aquarium/proc/get_candidates(atom/movable/source, obj/item/fish/fish, list/candidates) + SIGNAL_HANDLER + var/list/types_to_mate_with = tracked_fish_by_type + if(!HAS_TRAIT(fish, TRAIT_FISH_CROSSBREEDER)) + var/list/types_to_check = list(fish.type) + if(fish.compatible_types) + types_to_check |= fish.compatible_types + types_to_mate_with = types_to_mate_with & types_to_check + + for(var/obj/item/fish/fish_type as anything in types_to_mate_with) + var/list/type_fishes = tracked_fish_by_type[fish_type] + if(length(type_fishes) >= initial(fish_type.stable_population)) + continue + candidates += type_fishes + +///Check if an offspring of two fish (or one if self-reproducing) can evolve. +/datum/component/aquarium/proc/check_evolution(atom/movable/source, obj/item/fish/fish, obj/item/fish/mate, datum/fish_evolution/evolution) + SIGNAL_HANDLER + //chances are halved if only one parent has this evolution. + var/real_probability = (mate && (evolution.type in mate.evolution_types)) ? evolution.probability : evolution.probability * 0.5 + if(HAS_TRAIT(fish, TRAIT_FISH_MUTAGENIC) || (mate && HAS_TRAIT(mate, TRAIT_FISH_MUTAGENIC))) + real_probability *= 3 + if(!prob(real_probability)) + return NONE + if(!ISINRANGE(fluid_temp, evolution.required_temperature_min, evolution.required_temperature_max)) + return NONE + return COMPONENT_ALLOW_EVOLUTION + +/** + * Toggles a couple flags that determine if the fish is in safe waters so that we won't have to use signals or + * access this comp in multiple places just to confirm that. + */ +/datum/component/aquarium/proc/check_fluid_and_temperature(obj/item/fish/fish) + if(compatible_fluid_type(fish.required_fluid_type, fluid_type) || (fluid_type == AQUARIUM_FLUID_AIR && HAS_TRAIT(fish, TRAIT_FISH_AMPHIBIOUS))) + fish.fish_flags |= FISH_FLAG_SAFE_FLUID + else + fish.fish_flags &= ~FISH_FLAG_SAFE_FLUID + if(ISINRANGE(fluid_temp, fish.required_temperature_min, fish.required_temperature_max)) + fish.fish_flags |= FISH_FLAG_SAFE_TEMPERATURE + else + fish.fish_flags &= ~FISH_FLAG_SAFE_TEMPERATURE + +///Fish beauty changes when they're dead, so we need to update the beauty of the aquarium too. +/datum/component/aquarium/proc/on_fish_status_changed(obj/item/fish/fish) + get_content_beauty(fish) + +/datum/component/aquarium/proc/update_aquarium_beauty(old_beauty) + if(QDELETED(parent)) + return + old_beauty = clamp(old_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY) + var/new_beauty = 0 + for(var/key in beauty_by_content) + new_beauty += beauty_by_content[key] + new_beauty = clamp(new_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY) + if(new_beauty == old_beauty) + return + if(old_beauty) + parent.RemoveElement(/datum/element/beauty, old_beauty) + if(new_beauty) + parent.AddElement(/datum/element/beauty, new_beauty) + +///Remove a visual overlay from an aquarium_content comp +/datum/component/aquarium/proc/remove_visual(atom/movable/source, obj/effect/aquarium/visual) + SIGNAL_HANDLER + source.vis_contents -= visual + used_layers -= visual.layer + +///set values for a visual overlay for an aquarium_content comp +/datum/component/aquarium/proc/set_visual(atom/movable/source, obj/effect/aquarium/visual) + SIGNAL_HANDLER + used_layers -= visual.layer + visual.layer = request_layer(visual.layer_mode) + visual.aquarium_zone_min_px = aquarium_zone_min_px + visual.aquarium_zone_max_px = aquarium_zone_max_px + visual.aquarium_zone_min_py = aquarium_zone_min_py + visual.aquarium_zone_max_py = aquarium_zone_max_py + visual.fluid_type = fluid_type + +/datum/component/aquarium/proc/request_layer(layer_type) + var/atom/movable/movable = parent + switch(layer_type) + if(AQUARIUM_LAYER_MODE_BEHIND_GLASS) + return movable.layer + AQUARIUM_BELOW_GLASS_LAYER + if(AQUARIUM_LAYER_MODE_BOTTOM) + return movable.layer + AQUARIUM_MIN_OFFSET + if(AQUARIUM_LAYER_MODE_TOP) + return movable.layer + AQUARIUM_MAX_OFFSET + if(AQUARIUM_LAYER_MODE_AUTO) + var/chosen_layer = AQUARIUM_MIN_OFFSET + AQUARIUM_LAYER_STEP + while((chosen_layer in used_layers) && (chosen_layer <= AQUARIUM_MAX_OFFSET)) + chosen_layer += AQUARIUM_LAYER_STEP + used_layers += chosen_layer + return movable.layer + chosen_layer + +/datum/component/aquarium/proc/get_fishes() + var/list/fishes = list() + for(var/key in tracked_fish_by_type) + fishes += tracked_fish_by_type[key] + return fishes + +/datum/component/aquarium/proc/interact(atom/movable/source, mob/user) + SIGNAL_HANDLER + + if(HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN)) + INVOKE_ASYNC(src, PROC_REF(ui_interact), user) + else if(!isitem(source)) + INVOKE_ASYNC(src, PROC_REF(admire), user) + +/datum/component/aquarium/proc/on_secondary_attack_hand(obj/item/source, mob/living/user) + SIGNAL_HANDLER + INVOKE_ASYNC(src, PROC_REF(admire), user) + return COMPONENT_CANCEL_ATTACK_CHAIN + +/datum/component/aquarium/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + var/atom/movable/movable = parent + ui = new(user, src, "Aquarium", movable.name) + ui.open() + +/datum/component/aquarium/ui_data(mob/user) + . = ..() + var/atom/movable/aquarium = parent + .["fluidType"] = fluid_type + .["temperature"] = fluid_temp + .["safe_mode"] = HAS_TRAIT_FROM(aquarium, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) + .["fishData"] = list() + .["feedingInterval"] = feeding_interval / (1 MINUTES) + .["propData"] = list() + for(var/atom/movable/item as anything in aquarium.contents) + if(isfish(item)) + var/obj/item/fish/fish = item + .["fishData"] += list(list( + "fish_ref" = REF(fish), + "fish_name" = uppertext(fish.name), + "fish_happiness" = fish.get_happiness_value(), + "fish_icon" = fish::icon, + "fish_icon_state" = fish::icon_state, + "fish_health" = fish.health, + )) + continue + .["propData"] += list(list( + "prop_ref" = REF(item), + "prop_name" = item.name, + "prop_icon" = item::icon, + "prop_icon_state" = item::icon_state, + )) + +/datum/component/aquarium/ui_static_data(mob/user) + . = ..() + //I guess these should depend on the fluid so lava critters can get high or stuff below water freezing point but let's keep it simple for now. + .["minTemperature"] = min_fluid_temp + .["maxTemperature"] = max_fluid_temp + .["fluidTypes"] = fluid_types + .["heartIcon"] = 'icons/effects/effects.dmi' + +/datum/component/aquarium/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/mob/user = usr + var/atom/movable/movable = parent + switch(action) + if("temperature") + var/temperature = params["temperature"] + if(isnum(temperature) && temperature != fluid_temp) + fluid_temp = clamp(temperature, min_fluid_temp, max_fluid_temp) + for(var/obj/item/fish/fish as anything in get_fishes()) + check_fluid_and_temperature(fish) + . = TRUE + if("fluid") + if(params["fluid"] != fluid_type && (params["fluid"] in fluid_types)) + set_fluid_type(params["fluid"]) + . = TRUE + if("safe_mode") + if(HAS_TRAIT_FROM(movable, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)) + REMOVE_TRAIT(movable, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) + else + ADD_TRAIT(movable, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) + . = TRUE + if("feeding_interval") + feeding_interval = params["feeding_interval"] MINUTES + . = TRUE + if("pet_fish") + var/obj/item/fish/fish = locate(params["fish_reference"]) in movable.contents + fish?.pet_fish(user) + if("remove_item") + var/atom/movable/item = locate(params["item_reference"]) in movable.contents + item?.forceMove(movable.drop_location()) + to_chat(user, span_notice("You take out [item] from [movable].")) + if("rename_fish") + var/new_name = sanitize_name(params["chosen_name"]) + var/atom/movable/fish = locate(params["fish_reference"]) in movable.contents + if(!fish || !new_name || new_name == fish.name) + return + fish.AddComponent(/datum/component/rename, new_name, fish.desc) + +/datum/component/aquarium/proc/set_fluid_type(new_fluid_type) + var/atom/movable/movable = parent + fluid_type = new_fluid_type + SEND_SIGNAL(movable, COMSIG_AQUARIUM_FLUID_CHANGED, fluid_type) + for(var/obj/item/fish/fish as anything in get_fishes()) + check_fluid_and_temperature(fish) + +/datum/component/aquarium/proc/admire(atom/movable/source, mob/living/user) + source.balloon_alert(user, "admiring aquarium...") + if(!do_after(user, 5 SECONDS, target = source)) + return + var/alive_fish = 0 + var/dead_fish = 0 + for(var/obj/item/fish/fish as anything in get_fishes()) + if(fish.status == FISH_ALIVE) + alive_fish++ + else + dead_fish++ + + var/morb = HAS_MIND_TRAIT(user, TRAIT_MORBID) + //Check if there are live fish - good mood + //All fish dead - bad mood. + //No fish - nothing. + if(alive_fish > 0) + user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_bad : /datum/mood_event/aquarium_positive) + else if(dead_fish > 0) + user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_good : /datum/mood_event/aquarium_negative) + +/datum/component/aquarium/proc/on_requesting_context_from_item(atom/source, list/context, obj/item/held_item, mob/user) + SIGNAL_HANDLER + var/open_panel = HAS_TRAIT(source, TRAIT_AQUARIUM_PANEL_OPEN) + if(!held_item) + var/isitem = isitem(source) + if(!isitem || open_panel) + context[SCREENTIP_CONTEXT_LMB] = open_panel ? "Adjust settings" : "Admire" + if(isitem) + context[SCREENTIP_CONTEXT_RMB] = "Admire" + context[SCREENTIP_CONTEXT_ALT_LMB] = "[open_panel ? "Open" : "Close"] settings panel" + return CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/plunger)) + context[SCREENTIP_CONTEXT_LMB] = "Empty feed storage" + return CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/reagent_containers/cup/fish_feed) && (!source.reagents || !open_panel)) + context[SCREENTIP_CONTEXT_LMB] = "Feed fishes" + return CONTEXTUAL_SCREENTIP_SET + if(HAS_TRAIT(held_item, TRAIT_AQUARIUM_CONTENT)) + context[SCREENTIP_CONTEXT_LMB] = "Insert in aquarium" + return CONTEXTUAL_SCREENTIP_SET + +#undef MIN_AQUARIUM_BEAUTY +#undef MAX_AQUARIUM_BEAUTY diff --git a/code/datums/components/aquarium_content.dm b/code/datums/components/aquarium_content.dm index 1307cb45fbbc3..87cd34571d401 100644 --- a/code/datums/components/aquarium_content.dm +++ b/code/datums/components/aquarium_content.dm @@ -1,18 +1,5 @@ -///Malus to the beauty value if the fish content is dead -#define DEAD_FISH_BEAUTY -500 -///Prevents more impressive fishes from providing a positive beauty even when dead. -#define MAX_DEAD_FISH_BEAUTY -200 -///Some fish are already so ugly, they can't get much worse when dead -#define MIN_DEAD_FISH_BEAUTY -600 - -///Defines that clamp the beauty of the aquarium, to prevent it from making most areas great or horrid all by itself. -#define MIN_AQUARIUM_BEAUTY -3500 -#define MAX_AQUARIUM_BEAUTY 6000 - /// Allows movables to be inserted/displayed in aquariums. /datum/component/aquarium_content - /// Keeps track of our current aquarium. - var/obj/structure/aquarium/current_aquarium //This is visual effect holder that will end up in aquarium's vis_contents var/obj/effect/aquarium/vc_obj @@ -32,161 +19,103 @@ /// Does this behviour need additional processing in aquarium, will be added to SSobj processing on insertion var/processing = FALSE - /// Signals of the parent that will trigger animation update - var/animation_update_signals - - /// The current beauty this component gives to the aquarium it's in - var/beauty + /// Signals for the aquarium we're in that trigger an animation update + var/list/animation_update_signals - /// The original value of the beauty this component had when initialized - var/original_beauty - -/datum/component/aquarium_content/Initialize(animation_update_signals, beauty) - if(!ismovable(parent)) +/datum/component/aquarium_content/Initialize(animation_update_signals) + if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - src.animation_update_signals = animation_update_signals - src.beauty = original_beauty = beauty - if(animation_update_signals) - RegisterSignals(parent, animation_update_signals, PROC_REF(generate_animation)) + src.animation_update_signals = islist(animation_update_signals) ? animation_update_signals : list(animation_update_signals) - ADD_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src)) - RegisterSignal(parent, COMSIG_TRY_INSERTING_IN_AQUARIUM, PROC_REF(is_ready_to_insert)) + ADD_TRAIT(parent, TRAIT_AQUARIUM_CONTENT, REF(src)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(enter_aquarium)) - if(isfish(parent)) - RegisterSignal(parent, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_status_changed)) - //If component is added to something already in aquarium at the time initialize it properly. var/atom/movable/movable_parent = parent - if(istype(movable_parent.loc, /obj/structure/aquarium)) + if(movable_parent.loc && HAS_TRAIT(movable_parent.loc, TRAIT_IS_AQUARIUM)) on_inserted(movable_parent.loc) -/datum/component/aquarium_content/proc/on_fish_status_changed(obj/item/fish/source) - SIGNAL_HANDLER - var/old_beauty = beauty - beauty = original_beauty - if(source.status == FISH_DEAD) - beauty = clamp(beauty + DEAD_FISH_BEAUTY, MIN_DEAD_FISH_BEAUTY, MAX_DEAD_FISH_BEAUTY) - if(current_aquarium) - change_aquarium_beauty(beauty - old_beauty) - generate_animation() - -/datum/component/aquarium_content/PreTransfer() - . = ..() - REMOVE_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, REF(src)) - /datum/component/aquarium_content/Destroy(force) - if(current_aquarium) - remove_from_aquarium() + var/atom/movable/movable = parent + if(movable.loc && HAS_TRAIT(movable.loc, TRAIT_IS_AQUARIUM)) + remove_from_aquarium(movable.loc) QDEL_NULL(vc_obj) + REMOVE_TRAIT(parent, TRAIT_AQUARIUM_CONTENT, REF(src)) return ..() /datum/component/aquarium_content/proc/enter_aquarium(datum/source, OldLoc, Dir, Forced) SIGNAL_HANDLER var/atom/movable/movable_parent = parent - if(istype(movable_parent.loc, /obj/structure/aquarium)) + if(HAS_TRAIT(movable_parent.loc, TRAIT_IS_AQUARIUM)) on_inserted(movable_parent.loc) -/datum/component/aquarium_content/proc/is_ready_to_insert(datum/source, obj/structure/aquarium/aquarium) - SIGNAL_HANDLER - if(HAS_TRAIT(parent, TRAIT_UNIQUE_AQUARIUM_CONTENT)) - for(var/atom/movable/content as anything in aquarium) - if(content == parent) - continue - if(content.type == parent.type) - return COMSIG_CANNOT_INSERT_IN_AQUARIUM - return COMSIG_CAN_INSERT_IN_AQUARIUM - -/datum/component/aquarium_content/proc/on_inserted(atom/aquarium) - current_aquarium = aquarium - RegisterSignal(current_aquarium, COMSIG_ATOM_EXITED, PROC_REF(on_removed)) - RegisterSignal(current_aquarium, COMSIG_AQUARIUM_SURFACE_CHANGED, PROC_REF(on_surface_changed)) - RegisterSignal(current_aquarium, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_fluid_changed)) +/datum/component/aquarium_content/proc/on_inserted(atom/movable/aquarium) + RegisterSignal(aquarium, COMSIG_ATOM_EXITED, PROC_REF(on_removed)) + RegisterSignal(aquarium, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_fluid_changed)) + RegisterSignals(aquarium, animation_update_signals, PROC_REF(animation_update_signal_proc)) if(processing) START_PROCESSING(SSobj, src) //If we don't have vc object yet build it if(!vc_obj) - generate_base_vc() + generate_base_vc(aquarium) //Set default position and layer set_vc_base_position() generate_animation(reset = TRUE) //Finally add it to to objects vis_contents - current_aquarium.vis_contents |= vc_obj + aquarium.vis_contents |= vc_obj - change_aquarium_beauty(beauty) - -///Modifies the beauty of the aquarium when content is added or removed, or when fishes die or live again somehow. -/datum/component/aquarium_content/proc/change_aquarium_beauty(change) - if(QDELETED(current_aquarium) || !change) - return - var/old_clamped_beauty = clamp(current_aquarium.current_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY) - current_aquarium.current_beauty += change - var/new_clamped_beauty = clamp(current_aquarium.current_beauty, MIN_AQUARIUM_BEAUTY, MAX_AQUARIUM_BEAUTY) - if(new_clamped_beauty == old_clamped_beauty) - return - if(current_aquarium.current_beauty) - current_aquarium.RemoveElement(/datum/element/beauty, current_aquarium.current_beauty) - if(current_aquarium.current_beauty) - current_aquarium.AddElement(/datum/element/beauty, current_aquarium.current_beauty) - -/// Aquarium surface changed in some way, we need to recalculate base position and aninmation -/datum/component/aquarium_content/proc/on_surface_changed() +/datum/component/aquarium_content/proc/on_fluid_changed(datum/source, new_fluid_type) SIGNAL_HANDLER - set_vc_base_position() - generate_animation(reset = TRUE) //our animation start point changed, gotta redo + vc_obj.fluid_type = new_fluid_type + generate_animation() -/datum/component/aquarium_content/proc/on_fluid_changed() - SIGNAL_HANDLER +///Called when one of the signals in the 'animation_update_signals' is sent +/datum/component/aquarium_content/proc/animation_update_signal_proc(datum/source) generate_animation() ///Sends a signal to the parent to get them to update the aquarium animation of the visual object -/datum/component/aquarium_content/proc/generate_animation(reset=FALSE) - if(!current_aquarium) - return - SEND_SIGNAL(parent, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, reset ? null : current_animation, current_aquarium, vc_obj) - -/datum/component/aquarium_content/proc/remove_visual_from_aquarium() - current_aquarium.vis_contents -= vc_obj - if(vc_obj.layer) - current_aquarium.free_layer(vc_obj.layer) +/datum/component/aquarium_content/proc/generate_animation(reset = FALSE) + var/atom/movable/movable = parent + SEND_SIGNAL(movable, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, reset ? null : current_animation, vc_obj) /// Generates common visual object, propeties that don't depend on aquarium surface -/datum/component/aquarium_content/proc/generate_base_vc() +/datum/component/aquarium_content/proc/generate_base_vc(atom/movable/aquarium) vc_obj = new vc_obj.vis_flags |= VIS_INHERIT_ID | VIS_INHERIT_PLANE //plane so it shows properly in containers on inventory ui for handheld cases - SEND_SIGNAL(parent, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, vc_obj) + SEND_SIGNAL(parent, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, vc_obj, aquarium) /datum/component/aquarium_content/proc/set_vc_base_position() - SEND_SIGNAL(parent, AQUARIUM_CONTENT_RANDOMIZE_POSITION, current_aquarium, vc_obj) - if(vc_obj.layer) - current_aquarium.free_layer(vc_obj.layer) - vc_obj.layer = current_aquarium.request_layer(vc_obj.layer_mode) + var/atom/movable/movable = parent + SEND_SIGNAL(movable.loc, COMSIG_AQUARIUM_SET_VISUAL, vc_obj) //set the necessary layer as well as the pixel bounds first + SEND_SIGNAL(movable, COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION, movable.loc, vc_obj) -/datum/component/aquarium_content/proc/on_removed(obj/structure/aquarium/source, atom/movable/gone, direction) +/datum/component/aquarium_content/proc/on_removed(atom/movable/aquarium, atom/movable/gone, direction) SIGNAL_HANDLER if(parent != gone) return - remove_from_aquarium() + remove_from_aquarium(aquarium) -/datum/component/aquarium_content/proc/remove_from_aquarium() - change_aquarium_beauty(-beauty) - UnregisterSignal(current_aquarium, list(COMSIG_AQUARIUM_SURFACE_CHANGED, COMSIG_AQUARIUM_FLUID_CHANGED, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_EXITED)) - remove_visual_from_aquarium() - current_aquarium = null +/datum/component/aquarium_content/proc/remove_from_aquarium(atom/movable/aquarium) + UnregisterSignal(aquarium, list(COMSIG_AQUARIUM_FLUID_CHANGED, COMSIG_ATOM_EXITED) + animation_update_signals) + SEND_SIGNAL(aquarium, COMSIG_AQUARIUM_REMOVE_VISUAL, vc_obj) -///The visual overlay of the aquarium content. It can hold a couple vars that we can modify through signal procs. +///The visual overlay of the aquarium content. It can hold a few vars with values about the component of the aquarium it's in. /obj/effect/aquarium layer = 0 //set on set_vc_base_position /// How the visual will be layered var/layer_mode = AQUARIUM_LAYER_MODE_AUTO - -#undef DEAD_FISH_BEAUTY -#undef MIN_DEAD_FISH_BEAUTY -#undef MAX_DEAD_FISH_BEAUTY -#undef MIN_AQUARIUM_BEAUTY -#undef MAX_AQUARIUM_BEAUTY + ///minimum pixel x, inherited from the aquarium + var/aquarium_zone_min_px + ///maximum pixel x, inherited from the aquarium + var/aquarium_zone_max_px + ///minimum pixel y, inherited from the aquarium + var/aquarium_zone_min_py + ///maximum pixel y, inherited from the aquarium + var/aquarium_zone_max_py + ///The current fluid type, inherited fom the aquarium + var/fluid_type diff --git a/code/datums/components/basic_inhands.dm b/code/datums/components/basic_inhands.dm index ac50f618861f2..4d286e4eed3ea 100644 --- a/code/datums/components/basic_inhands.dm +++ b/code/datums/components/basic_inhands.dm @@ -39,7 +39,7 @@ SIGNAL_HANDLER var/list/held_overlays = list() for(var/obj/item/held in holding_mob.held_items) - var/is_right = holding_mob.get_held_index_of_item(held) % 2 == 0 + var/is_right = IS_RIGHT_INDEX(holding_mob.get_held_index_of_item(held)) var/icon_file = is_right ? held.righthand_file : held.lefthand_file var/mutable_appearance/held_overlay = held.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE) held_overlay.pixel_y += y_offset diff --git a/code/datums/components/blob_minion.dm b/code/datums/components/blob_minion.dm index 78bff449317ce..8366a65b51160 100644 --- a/code/datums/components/blob_minion.dm +++ b/code/datums/components/blob_minion.dm @@ -150,6 +150,6 @@ SIGNAL_HANDLER overmind?.assume_direct_control(replacement) -/datum/component/blob_minion/PostTransfer() - if(!isliving(parent)) +/datum/component/blob_minion/PostTransfer(datum/new_parent) + if(!isliving(new_parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index 461cfcff3aae4..342e27c4b29a7 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -108,7 +108,7 @@ set_bloody_shoes(pool.blood_state, new_our_bloodiness) pool.bloodiness = total_bloodiness - new_our_bloodiness // Give the pool the remaining blood incase we were limited - if(HAS_TRAIT(parent_atom, TRAIT_LIGHT_STEP)) //the character is agile enough to don't mess their clothing and hands just from one blood splatter at floor + if(HAS_TRAIT(parent_atom, TRAIT_LIGHT_STEP) || (wielder && HAS_TRAIT(wielder, TRAIT_LIGHT_STEP))) //the character is agile enough to don't mess their clothing and hands just from one blood splatter at floor return TRUE parent_atom.add_blood_DNA(GET_ATOM_BLOOD_DNA(pool)) @@ -211,7 +211,6 @@ // Create new footprints if(theoretical_new_blood >= BLOOD_FOOTPRINTS_MIN) adjust_bloody_shoes(last_blood_state, blood_lost) - update_icon() var/obj/effect/decal/cleanable/blood/footprints/FP = new(get_turf(parent_atom), footprint_sprite) if(!QDELETED(FP)) ///prints merged diff --git a/code/datums/components/bullet_intercepting.dm b/code/datums/components/bullet_intercepting.dm index 32e757c1823e1..f327cae954306 100644 --- a/code/datums/components/bullet_intercepting.dm +++ b/code/datums/components/bullet_intercepting.dm @@ -56,7 +56,7 @@ wearer = null /// Called when wearer is shot, check if we're going to block the hit -/datum/component/bullet_intercepting/proc/on_wearer_shot(mob/living/victim, list/signal_args, obj/projectile/bullet) +/datum/component/bullet_intercepting/proc/on_wearer_shot(mob/living/victim, obj/projectile/bullet) SIGNAL_HANDLER if (victim != wearer || victim.stat == DEAD || bullet.armor_flag != block_type) return NONE diff --git a/code/datums/components/burning.dm b/code/datums/components/burning.dm index 2535a5b6f904c..7264689d13cc7 100644 --- a/code/datums/components/burning.dm +++ b/code/datums/components/burning.dm @@ -8,8 +8,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e /datum/component/burning /// Fire overlay appearance we apply var/fire_overlay - /// Particle holder for fire particles, if any + /// Particle holder for fire particles, if any. Still utilized over shared holders because they're movable-only var/obj/effect/abstract/particle_holder/particle_effect + /// Particle type we're using for cleaning up our shared holder + var/particle_type /datum/component/burning/Initialize(fire_overlay = GLOB.fire_overlay, fire_particles = /particles/smoke/burning) if(!isatom(parent)) @@ -25,9 +27,14 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e return src.fire_overlay = fire_overlay - if(fire_particles) - // burning particles look pretty bad when they stack on mobs, so that behavior is not wanted for items - particle_effect = new(atom_parent, fire_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB) + if (fire_particles) + if(ismovable(parent)) + var/atom/movable/movable_parent = parent + // burning particles look pretty bad when they stack on mobs, so that behavior is not wanted for items + movable_parent.add_shared_particles(fire_particles, "[fire_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB) + particle_type = fire_particles + else + particle_effect = new(atom_parent, fire_particles) START_PROCESSING(SSburning, src) /datum/component/burning/Destroy(force) @@ -35,6 +42,9 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e fire_overlay = null if(particle_effect) QDEL_NULL(particle_effect) + if (ismovable(parent) && particle_type) + var/atom/movable/movable_parent = parent + movable_parent.remove_shared_particles("[particle_type]_[isitem(parent)]") return ..() /datum/component/burning/RegisterWithParent() @@ -81,16 +91,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e source.extinguish() return COMPONENT_CANCEL_ATTACK_CHAIN - var/obj/item/bodypart/affecting = user.get_active_hand() - //Should not happen! - if(!affecting) - return NONE - - affecting.receive_damage(burn = 5) + user.apply_damage(5, BURN, user.get_active_hand()) to_chat(user, span_userdanger("You burn your hand on [source]!")) INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream") playsound(source, SFX_SEAR, 50, TRUE) - user.update_damage_overlays() return COMPONENT_CANCEL_ATTACK_CHAIN /// Maintains the burning overlay on the parent atom diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 0d65d2840f3c8..c281addacc231 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -49,7 +49,7 @@ //otherwise don't do anything because turfs and areas are initialized before movables. if(!mapload) addtimer(CALLBACK(src, PROC_REF(drop_stuff)), 0) - parent.AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/chasm) + parent.AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/chasm]) /datum/component/chasm/UnregisterFromParent() storage = null diff --git a/code/datums/components/combustible_flooder.dm b/code/datums/components/combustible_flooder.dm index 07df03671c16c..c24fae55b843b 100644 --- a/code/datums/components/combustible_flooder.dm +++ b/code/datums/components/combustible_flooder.dm @@ -57,7 +57,11 @@ message_admins(admin_message) if(delete_parent && !QDELETED(parent)) - qdel(parent) // For things with the explodable component like plasma mats this isn't necessary, but there's no harm. + if(isobj(parent)) + var/obj/obj_parent = parent + obj_parent.deconstruct(disassembled = FALSE) + else + qdel(parent) // For things with the explodable component like plasma mats this isn't necessary, but there's no harm. qdel(src) /// fire_act reaction. diff --git a/code/datums/components/crafting/chemistry.dm b/code/datums/components/crafting/chemistry.dm index 70d6c76dea249..66847281ec463 100644 --- a/code/datums/components/crafting/chemistry.dm +++ b/code/datums/components/crafting/chemistry.dm @@ -150,6 +150,8 @@ category = CAT_CHEMISTRY /datum/crafting_recipe/improvised_chem_heater/on_craft_completion(mob/user, atom/result) + if(!istype(user)) + return var/obj/item/stock_parts/power_store/cell/cell = locate(/obj/item/stock_parts/power_store/cell) in range(1) if(!cell) return diff --git a/code/datums/components/crafting/furniture.dm b/code/datums/components/crafting/furniture.dm index 39f5a25a19f8f..c3f6557f89a2b 100644 --- a/code/datums/components/crafting/furniture.dm +++ b/code/datums/components/crafting/furniture.dm @@ -22,12 +22,22 @@ result = /obj/structure/aquarium time = 10 SECONDS reqs = list( - /obj/item/stack/sheet/iron = 15, + /obj/item/stack/sheet/iron = 10, /obj/item/stack/sheet/glass = 10, /obj/item/aquarium_kit = 1, ) category = CAT_FURNITURE +/datum/crafting_recipe/fish_tank + name = "Portable Fish Tank" + result = /obj/item/fish_tank + time = 10 SECONDS + reqs = list( + /obj/item/stack/sheet/plastic = 5, + /obj/item/aquarium_kit = 1, + ) + category = CAT_FURNITURE + /datum/crafting_recipe/mirror name = "Mirror" result = /obj/item/wallframe/mirror diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm index 21abedb8b47f8..8a6a014d5a4e5 100644 --- a/code/datums/components/crafting/robot.dm +++ b/code/datums/components/crafting/robot.dm @@ -42,12 +42,12 @@ time = 4 SECONDS category = CAT_ROBOT -/datum/crafting_recipe/floorbot - name = "Floorbot" - result = /mob/living/simple_animal/bot/floorbot +/datum/crafting_recipe/repairbot + name = "Repairbot" + result = /mob/living/basic/bot/repairbot reqs = list( /obj/item/storage/toolbox = 1, - /obj/item/stack/tile/iron = 10, + /obj/item/stack/conveyor = 1, /obj/item/assembly/prox_sensor = 1, /obj/item/bodypart/arm/right/robot = 1, ) diff --git a/code/datums/components/customizable_reagent_holder.dm b/code/datums/components/customizable_reagent_holder.dm index fd1b8a2ac6479..fda64d6c2568b 100644 --- a/code/datums/components/customizable_reagent_holder.dm +++ b/code/datums/components/customizable_reagent_holder.dm @@ -82,10 +82,10 @@ )) REMOVE_TRAIT(parent, TRAIT_CUSTOMIZABLE_REAGENT_HOLDER, REF(src)) -/datum/component/customizable_reagent_holder/PostTransfer() - if(!isatom(parent)) +/datum/component/customizable_reagent_holder/PostTransfer(datum/new_parent) + if(!isatom(new_parent)) return COMPONENT_INCOMPATIBLE - var/atom/atom_parent = parent + var/atom/atom_parent = new_parent if (!atom_parent.reagents) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/dart_insert.dm b/code/datums/components/dart_insert.dm index ad869903051d2..459da9d217cbe 100644 --- a/code/datums/components/dart_insert.dm +++ b/code/datums/components/dart_insert.dm @@ -135,8 +135,6 @@ /datum/component/dart_insert/proc/apply_var_modifiers(obj/projectile/projectile) var_modifiers = istype(modifier_getter) ? modifier_getter.Invoke() : list() projectile.damage += var_modifiers["damage"] - if(var_modifiers["speed"]) - var_modifiers["speed"] = reciprocal_add(projectile.speed, var_modifiers["speed"]) - projectile.speed projectile.speed += var_modifiers["speed"] projectile.armour_penetration += var_modifiers["armour_penetration"] projectile.wound_bonus += var_modifiers["wound_bonus"] diff --git a/code/datums/components/earprotection.dm b/code/datums/components/earprotection.dm index 6439e49b831f5..6dfa7d9568baf 100644 --- a/code/datums/components/earprotection.dm +++ b/code/datums/components/earprotection.dm @@ -2,10 +2,13 @@ signals = list(COMSIG_CARBON_SOUNDBANG) mobtype = /mob/living/carbon proctype = PROC_REF(reducebang) + var/reduce_amount = 1 -/datum/component/wearertargeting/earprotection/Initialize(_valid_slots) +/datum/component/wearertargeting/earprotection/Initialize(valid_slots, reduce_amount = 1) . = ..() - valid_slots = _valid_slots + src.valid_slots = valid_slots + if(reduce_amount) + src.reduce_amount = reduce_amount /datum/component/wearertargeting/earprotection/proc/reducebang(datum/source, list/reflist) - reflist[1]-- + reflist[1] -= reduce_amount diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index 09e583a0fcf7d..92404e3903e8e 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -65,8 +65,20 @@ if(damage > 0) var/armor = victim.run_armor_check(limb.body_zone, MELEE, "Your armor has protected your [limb.plaintext_zone].", "Your armor has softened a hit to your [limb.plaintext_zone].", weapon.armour_penetration, weak_against_armour = weapon.weak_against_armour) - limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, blocked = armor, wound_bonus = weapon.wound_bonus, bare_wound_bonus = weapon.bare_wound_bonus, sharpness = weapon.get_sharpness()) - victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) + victim.apply_damage( + damage = (1 - embed_data.pain_stam_pct) * damage, + damagetype = BRUTE, + def_zone = limb, + blocked = armor, + wound_bonus = weapon.wound_bonus, + bare_wound_bonus = weapon.bare_wound_bonus, + sharpness = weapon.get_sharpness(), + attacking_item = weapon, + ) + victim.apply_damage( + damage = embed_data.pain_stam_pct * damage, + damagetype = STAMINA, + ) /datum/component/embedded/Destroy() var/mob/living/carbon/victim = parent @@ -111,8 +123,18 @@ pain_chance_current *= 0.2 if(harmful && prob(pain_chance_current)) - limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND) - victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) + victim.apply_damage( + damage = (1 - embed_data.pain_stam_pct) * damage, + damagetype = BRUTE, + def_zone = limb, + wound_bonus = CANT_WOUND, + sharpness = weapon.get_sharpness(), + attacking_item = weapon, + ) + victim.apply_damage( + damage = embed_data.pain_stam_pct * damage, + damagetype = STAMINA, + ) to_chat(victim, span_userdanger("[weapon] embedded in your [limb.plaintext_zone] hurts!")) var/fall_chance_current = SPT_PROB_RATE(embed_data.fall_chance / 100, seconds_per_tick) * 100 @@ -152,8 +174,18 @@ if(harmful && prob(chance)) var/damage = weapon.w_class * embed_data.jostle_pain_mult - limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND) - victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) + victim.apply_damage( + damage = (1 - embed_data.pain_stam_pct) * damage, + damagetype = BRUTE, + def_zone = limb, + wound_bonus = CANT_WOUND, + sharpness = weapon.get_sharpness(), + attacking_item = weapon, + ) + victim.apply_damage( + damage = embed_data.pain_stam_pct * damage, + damagetype = STAMINA, + ) to_chat(victim, span_userdanger("[weapon] embedded in your [limb.plaintext_zone] jostles and stings!")) @@ -164,8 +196,18 @@ if(harmful) var/damage = weapon.w_class * embed_data.remove_pain_mult - limb.receive_damage(brute= (1 - embed_data.pain_stam_pct) * damage, wound_bonus = CANT_WOUND) - victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) + victim.apply_damage( + damage = (1 - embed_data.pain_stam_pct) * damage, + damagetype = BRUTE, + def_zone = limb, + wound_bonus = CANT_WOUND, + sharpness = weapon.get_sharpness(), + attacking_item = weapon, + ) + victim.apply_damage( + damage = embed_data.pain_stam_pct * damage, + damagetype = STAMINA, + ) victim.visible_message(span_danger("[weapon] falls [harmful ? "out" : "off"] of [victim.name]'s [limb.plaintext_zone]!"), span_userdanger("[weapon] falls [harmful ? "out" : "off"] of your [limb.plaintext_zone]!")) safeRemove() @@ -199,8 +241,18 @@ /datum/component/embedded/proc/damaging_removal(mob/living/carbon/victim, obj/item/removed, obj/item/bodypart/limb, ouch_multiplier = 1) var/datum/embed_data/embed_data = weapon.get_embed() var/damage = weapon.w_class * embed_data.remove_pain_mult * ouch_multiplier - limb.receive_damage(brute= (1 - embed_data.pain_stam_pct) * damage, sharpness = SHARP_EDGED) //It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow - victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) + victim.apply_damage( + damage = (1 - embed_data.pain_stam_pct) * damage, + damagetype = BRUTE, + def_zone = limb, + wound_bonus = max(0, weapon.wound_bonus), // It hurts to rip it out, get surgery you dingus. unlike the others, this CAN wound + increase slash bloodflow + sharpness = weapon.get_sharpness() || SHARP_EDGED, // always sharp, even if the object isn't + attacking_item = weapon, + ) + victim.apply_damage( + damage = embed_data.pain_stam_pct * damage, + damagetype = STAMINA, + ) victim.emote("scream") /// This proc handles the final step and actual removal of an embedded/stuck item from a carbon, whether or not it was actually removed safely. @@ -301,10 +353,20 @@ var/datum/embed_data/embed_data = weapon.get_embed() var/damage = weapon.w_class * embed_data.remove_pain_mult - limb.receive_damage(brute = (1 - embed_data.pain_stam_pct) * damage * 1.5, sharpness = SHARP_EDGED) // Performs exit wounds and flings the user to the caster if nearby + victim.apply_damage( + damage = (1 - embed_data.pain_stam_pct) * damage * 1.5, + damagetype = BRUTE, + def_zone = limb, + wound_bonus = max(0, weapon.wound_bonus), // Performs exit wounds and flings the user to the caster if nearby + sharpness = weapon.get_sharpness() || SHARP_EDGED, + attacking_item = weapon, + ) + victim.apply_damage( + damage = embed_data.pain_stam_pct * damage, + damagetype = STAMINA, + ) victim.cause_wound_of_type_and_severity(WOUND_PIERCE, limb, WOUND_SEVERITY_MODERATE) - victim.adjustStaminaLoss(embed_data.pain_stam_pct * damage) - playsound(get_turf(victim), 'sound/effects/wounds/blood2.ogg', 50, TRUE) + playsound(victim, 'sound/effects/wounds/blood2.ogg', 50, TRUE) var/dist = get_dist(caster, victim) //Check if the caster is close enough to yank them in if(dist < 7) diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm index 9dc8db3bbc4f1..db77f865fd7ae 100644 --- a/code/datums/components/explodable.dm +++ b/code/datums/components/explodable.dm @@ -147,18 +147,20 @@ return // If we don't do this and this doesn't delete it can lock the MC into only processing Input, Timers, and Explosions. var/atom/bomb = parent - var/log = TRUE - if(light_impact_range < 1) - log = FALSE + var/do_log = light_impact_range >= 1 exploding = TRUE - explosion(bomb, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, log, uncapped) //epic explosion time + explosion(bomb, devastation_range, heavy_impact_range, light_impact_range, flame_range, flash_range, do_log, uncapped) //epic explosion time switch(delete_after) if(EXPLODABLE_DELETE_SELF) qdel(src) if(EXPLODABLE_DELETE_PARENT) - qdel(bomb) + if(isobj(bomb)) + var/obj/obj_bomb = bomb + obj_bomb.deconstruct(disassembled = FALSE) + else + qdel(bomb) else addtimer(CALLBACK(src, PROC_REF(reset_exploding)), 0.1 SECONDS) diff --git a/code/datums/components/fishing_spot.dm b/code/datums/components/fishing_spot.dm index 982b0da2df71a..3ce68dce33959 100644 --- a/code/datums/components/fishing_spot.dm +++ b/code/datums/components/fishing_spot.dm @@ -13,7 +13,6 @@ else return COMPONENT_INCOMPATIBLE fish_source.on_fishing_spot_init(src) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(handle_attackby)) RegisterSignal(parent, COMSIG_FISHING_ROD_CAST, PROC_REF(handle_cast)) RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined)) RegisterSignal(parent, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(on_examined_more)) @@ -36,19 +35,13 @@ return FISHING_ROD_CAST_HANDLED return NONE -/datum/component/fishing_spot/proc/handle_attackby(datum/source, obj/item/item, mob/user, params) - SIGNAL_HANDLER - if(try_start_fishing(item,user)) - return COMPONENT_NO_AFTERATTACK - return NONE - ///If the fish source has fishes that are shown in the /datum/component/fishing_spot/proc/on_examined(datum/source, mob/user, list/examine_text) SIGNAL_HANDLER if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT)) return - if(!fish_source.has_known_fishes()) + if(!fish_source.has_known_fishes(source)) return examine_text += span_tinynoticeital("This is a fishing spot. You can look again to list its fishes...") diff --git a/code/datums/components/food/decomposition.dm b/code/datums/components/food/decomposition.dm index a3850ab39a6bc..c883f82f658f4 100644 --- a/code/datums/components/food/decomposition.dm +++ b/code/datums/components/food/decomposition.dm @@ -27,8 +27,6 @@ var/produce_ants = FALSE /// Stink particle type, if we are supposed to create stink particles var/stink_particles - /// Stink particle holder - var/obj/effect/abstract/particle_holder/particle_effect /datum/component/decomposition/Initialize(mapload, decomp_req_handle, decomp_flags = NONE, decomp_result, ant_attracting = FALSE, custom_time = 0, stink_particles = /particles/stink) if(!ismovable(parent) || !HAS_TRAIT(parent, TRAIT_GERM_SENSITIVE)) @@ -52,9 +50,11 @@ src.stink_particles = stink_particles /datum/component/decomposition/Destroy() - . = ..() - if(particle_effect) - QDEL_NULL(particle_effect) + remove_timer() + if (stink_particles) + var/atom/movable/movable_parent = parent + movable_parent.remove_shared_particles("[stink_particles]_[isitem(parent)]") + return ..() /datum/component/decomposition/RegisterWithParent() RegisterSignal(parent, COMSIG_ATOM_GERM_EXPOSED, PROC_REF(start_timer)) @@ -78,17 +78,13 @@ // If all other checks fail, then begin decomposition. decomp_timerid = addtimer(CALLBACK(src, PROC_REF(decompose)), time_remaining, TIMER_STOPPABLE | TIMER_UNIQUE) - // Also start the stinking timer, if have stink particles and aren't stinking yet - if(!stink_particles || particle_effect) + // Also start the stinking timer, if have stink particles + if(!stink_particles) return var/stink_time = max(0, time_remaining - (original_time * 0.5)) stink_timerid = addtimer(CALLBACK(src, PROC_REF(stink_up)), stink_time, TIMER_STOPPABLE | TIMER_UNIQUE) -/datum/component/decomposition/Destroy() - remove_timer() - return ..() - /// Returns the time remaining in decomp, either from our potential timer or our own value, whichever is more useful /datum/component/decomposition/proc/get_time() if(!decomp_timerid) @@ -108,11 +104,12 @@ /datum/component/decomposition/proc/stink_up() stink_timerid = null - // Neither should happen, but to be sure - if(particle_effect || !stink_particles) + // Shouldn't happen, but to be sure + if(!stink_particles) return // we don't want stink lines on mobs (even though it'd be quite funny) - particle_effect = new(parent, stink_particles, isitem(parent) ? NONE : PARTICLE_ATTACH_MOB) + var/atom/movable/movable_parent = parent + movable_parent.add_shared_particles(stink_particles, "[stink_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB) /datum/component/decomposition/proc/decompose() decomp_timerid = null diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 62e446f5a283a..7d0ca5dbe1275 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -368,12 +368,11 @@ Behavior that's still missing from this component that original food items had t var/fullness = eater.get_fullness() + 10 //The theoretical fullness of the person eating if they were to eat this var/time_to_eat = (eater == feeder) ? eat_time : EAT_TIME_FORCE_FEED - if(HAS_TRAIT(eater, TRAIT_VORACIOUS)) + if(HAS_TRAIT(eater, TRAIT_VORACIOUS) && !HAS_TRAIT(eater, TRAIT_GLUTTON)) //with TRAIT_GLUTTON you consume food without delay if(fullness < NUTRITION_LEVEL_FAT || (eater != feeder)) // No extra delay when being forcefed time_to_eat *= EAT_TIME_VORACIOUS_MULT else time_to_eat *= (fullness / NUTRITION_LEVEL_FAT) * EAT_TIME_VORACIOUS_FULL_MULT // takes longer to eat the more well fed you are - if(eater == feeder)//If you're eating it yourself. if(eat_time > 0 && !do_after(feeder, time_to_eat, eater, timed_action_flags = food_flags & FOOD_FINGER_FOOD ? IGNORE_USER_LOC_CHANGE | IGNORE_TARGET_LOC_CHANGE : NONE)) //Gotta pass the minimal eat time return @@ -385,12 +384,12 @@ Behavior that's still missing from this component that original food items had t var/message_to_consumer = "" var/message_to_blind_consumer = "" - if(junkiness && eater.satiety < -150 && eater.nutrition > NUTRITION_LEVEL_STARVING + 50 && !HAS_TRAIT(eater, TRAIT_VORACIOUS)) + if(junkiness && eater.satiety < -150 && eater.nutrition > NUTRITION_LEVEL_STARVING + 50 && !HAS_TRAIT(eater, TRAIT_VORACIOUS) && !HAS_TRAIT(eater, TRAIT_GLUTTON)) to_chat(eater, span_warning("You don't feel like eating any more junk food at the moment!")) return else if(fullness > (600 * (1 + eater.overeatduration / (4000 SECONDS)))) // The more you eat - the more you can eat - if(HAS_TRAIT(eater, TRAIT_VORACIOUS)) - message_to_nearby_audience = span_notice("[eater] voraciously forces \the [parent] down [eater.p_their()] throat..") + if(HAS_TRAIT(eater, TRAIT_VORACIOUS) || HAS_TRAIT(eater, TRAIT_GLUTTON)) + message_to_nearby_audience = span_notice("[eater] voraciously forces \the [parent] down [eater.p_their()] throat.") message_to_consumer = span_notice("You voraciously force \the [parent] down your throat.") else message_to_nearby_audience = span_warning("[eater] cannot force any more of \the [parent] to go down [eater.p_their()] throat!") diff --git a/code/datums/components/food_storage.dm b/code/datums/components/food_storage.dm index 843f611e5ff3e..32fb27c7b729a 100644 --- a/code/datums/components/food_storage.dm +++ b/code/datums/components/food_storage.dm @@ -4,7 +4,7 @@ /datum/component/food_storage /// Reference to what we have in our food. - var/obj/item/stored_item + VAR_FINAL/obj/item/stored_item /// The amount of volume the food has on creation - Used for probabilities var/initial_volume = 10 /// Minimum size items that can be inserted @@ -13,16 +13,14 @@ var/bad_chance_of_discovery = 0 /// What are the odds we see the stored item before we bite it? var/good_chance_of_discovery = 100 - /// The stored item was found out somehow. - var/discovered = FALSE /datum/component/food_storage/Initialize(_minimum_weight_class = WEIGHT_CLASS_SMALL, _bad_chance = 0, _good_chance = 100) RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, PROC_REF(try_inserting_item)) + RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) RegisterSignal(parent, COMSIG_CLICK_CTRL, PROC_REF(try_removing_item)) RegisterSignal(parent, COMSIG_FOOD_EATEN, PROC_REF(consume_food_storage)) - RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) - + RegisterSignals(parent, list(COMSIG_FOOD_CONSUMED, COMSIG_OBJ_DECONSTRUCT), PROC_REF(storage_consumed)) var/atom/food = parent initial_volume = food.reagents.total_volume @@ -33,12 +31,19 @@ food.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 -/datum/component/food_storage/Destroy(force) - if(stored_item) - stored_item.forceMove(stored_item.drop_location()) - stored_item.dropped() - stored_item = null - . = ..() +/datum/component/food_storage/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_ATOM_ITEM_INTERACTION_SECONDARY, + COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, + COMSIG_CLICK_CTRL, + COMSIG_FOOD_CONSUMED, + COMSIG_FOOD_EATEN, + COMSIG_OBJ_DECONSTRUCT, + )) + if(QDELING(parent) || QDELETED(stored_item)) + return + stored_item.forceMove(stored_item.drop_location()) + stored_item = null /** Begins the process of inserted an item. * @@ -60,19 +65,17 @@ return NONE if(inserted_item.w_class > minimum_weight_class) - to_chat(user, span_warning("\The [inserted_item.name] won't fit in \the [parent].")) + to_chat(user, span_warning("[inserted_item] won't fit in [parent].")) return ITEM_INTERACT_BLOCKING if(!QDELETED(stored_item)) - to_chat(user, span_warning("There's something in \the [parent].")) - return ITEM_INTERACT_BLOCKING - - if(HAS_TRAIT(inserted_item, TRAIT_NODROP)) - to_chat(user, span_warning("\the [inserted_item] is stuck to your hand, you can't put into \the [parent]!")) + to_chat(user, span_warning("There's something in [parent].")) return ITEM_INTERACT_BLOCKING - user.visible_message(span_notice("[user.name] begins inserting [inserted_item.name] into \the [parent]."), \ - span_notice("You start to insert the [inserted_item.name] into \the [parent].")) + user.visible_message( + span_notice("[user] begins inserting [inserted_item] into [parent]."), + span_notice("You start to insert the [inserted_item] into [parent]."), + ) INVOKE_ASYNC(src, PROC_REF(insert_item), inserted_item, user) return ITEM_INTERACT_SUCCESS @@ -89,14 +92,11 @@ var/atom/food = parent - if(QDELETED(stored_item)) - return CLICK_ACTION_BLOCKING - if(!food.can_interact(user)) return CLICK_ACTION_BLOCKING - user.visible_message(span_notice("[user.name] begins tearing at \the [parent]."), \ - span_notice("You start to rip into \the [parent].")) + user.visible_message(span_notice("[user] begins tearing at [parent]."), \ + span_notice("You start to rip into [parent].")) INVOKE_ASYNC(src, PROC_REF(begin_remove_item), user) return CLICK_ACTION_SUCCESS @@ -110,9 +110,12 @@ /datum/component/food_storage/proc/insert_item(obj/item/inserted_item, mob/user) if(!do_after(user, 1.5 SECONDS, target = parent)) return + if(!user.temporarilyRemoveItemFromInventory(inserted_item)) + to_chat(user, span_warning("You can't seem to insert [inserted_item] into [parent].")) + return var/atom/food = parent - to_chat(user, span_notice("You slip [inserted_item.name] inside \the [parent].")) + to_chat(user, span_notice("You slip [inserted_item] inside [parent].")) inserted_item.forceMove(food) user.log_message("inserted [inserted_item] into [parent].", LOG_ATTACK) food.add_fingerprint(user) @@ -126,19 +129,22 @@ * user - person removing the item. */ /datum/component/food_storage/proc/begin_remove_item(mob/user) - if(do_after(user, 10 SECONDS, target = parent)) - remove_item(user) + if(!do_after(user, 10 SECONDS, target = parent)) + return + if(QDELETED(stored_item)) + to_chat(user, span_warning("There's nothing in [parent].")) + return + remove_item(user) /** * Removes the stored item, putting it in user's hands or on the ground, then updates the reference. */ /datum/component/food_storage/proc/remove_item(mob/user) if(user.put_in_hands(stored_item)) - user.visible_message(span_warning("[user.name] slowly pulls [stored_item.name] out of \the [parent]."), \ - span_warning("You slowly pull [stored_item.name] out of \the [parent].")) + user.visible_message(span_warning("[user] slowly pulls [stored_item] out of [parent]."), \ + span_warning("You slowly pull [stored_item] out of [parent].")) else - stored_item.dropped() - stored_item.visible_message(span_warning("[stored_item.name] falls out of \the [parent].")) + stored_item.visible_message(span_warning("[stored_item] falls out of [parent].")) update_stored_item() @@ -167,9 +173,10 @@ /// Chance of finding the held item = bad chance - 50 good_chance_of_discovery = bad_chance_of_discovery - 50 + var/discovered = FALSE if(prob(good_chance_of_discovery)) //finding the item, without biting it discovered = TRUE - to_chat(target, span_warning("It feels like there's something in \the [parent]...!")) + to_chat(target, span_warning("It feels like there's something in [parent]...!")) else if(prob(bad_chance_of_discovery)) //finding the item, BY biting it user.log_message("just fed [key_name(target)] \a [stored_item] which was hidden in [parent].", LOG_ATTACK) @@ -179,6 +186,14 @@ if(!QDELETED(stored_item) && discovered) INVOKE_ASYNC(src, PROC_REF(remove_item), user) +/// When fully consumed, just drop the item out on the ground. +/datum/component/food_storage/proc/storage_consumed(datum/source, mob/living/target, mob/living/user) + SIGNAL_HANDLER + if(QDELETED(stored_item)) + return + stored_item.forceMove(stored_item.drop_location()) + stored_item = null + /** Updates the reference of the stored item. * * Checks the food's contents for if an alternate item was placed into the food. diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index edde591c0c386..3699ee75b8c34 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -194,7 +194,7 @@ return var/flinch_chance = 50 - var/gun_hand = (source.get_held_index_of_item(weapon) % 2) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM + var/gun_hand = IS_LEFT_INDEX(source.get_held_index_of_item(weapon)) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM if(isbodypart(def_zone)) var/obj/item/bodypart/hitting = def_zone diff --git a/code/datums/components/happiness.dm b/code/datums/components/happiness.dm index a131e86960eb3..beaad4b7ca93b 100644 --- a/code/datums/components/happiness.dm +++ b/code/datums/components/happiness.dm @@ -105,8 +105,7 @@ /datum/component/happiness/proc/view_happiness(mob/living/source, mob/living/clicker) if(HAS_TRAIT(source, TRAIT_MOB_HIDE_HAPPINESS) || !istype(clicker) || !COOLDOWN_FINISHED(src, happiness_inspect) || !clicker.CanReach(source)) return - var/list/offset_to_add = get_icon_dimensions(source.icon) - var/y_position = offset_to_add["height"] + 1 + var/y_position = source.get_cached_height() + 1 var/obj/effect/overlay/happiness_overlay/hearts = new hearts.pixel_y = y_position hearts.set_hearts(happiness_level/maximum_happiness) diff --git a/code/datums/components/hat_stabilizer.dm b/code/datums/components/hat_stabilizer.dm index 40cae0633f48b..9a79895153023 100644 --- a/code/datums/components/hat_stabilizer.dm +++ b/code/datums/components/hat_stabilizer.dm @@ -1,7 +1,10 @@ /// Allows players to place hats on the atom this is attached to /datum/component/hat_stabilizer + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS /// Currently "stored" hat. No armor or function will be inherited, only the icon and cover flags. var/obj/item/clothing/head/attached_hat + /// If TRUE, the hat will fall to the ground when the owner does so. It can also be shot off. + var/loose_hat = FALSE /// Original cover flags for the helmet, before a hat is placed var/former_flags var/former_visor_flags @@ -10,7 +13,7 @@ /// Pixel_y offset for the hat var/pixel_y_offset -/datum/component/hat_stabilizer/Initialize(add_overlay = FALSE, use_worn_icon = TRUE, pixel_y_offset = 0) +/datum/component/hat_stabilizer/Initialize(use_worn_icon = FALSE, pixel_y_offset = 0, loose_hat = FALSE) if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE @@ -19,14 +22,37 @@ src.use_worn_icon = use_worn_icon src.pixel_y_offset = pixel_y_offset + src.loose_hat = loose_hat + // Examine signals RegisterSignal(source, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(source, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) + + // Equip signals, used to drop loose hats + RegisterSignal(source, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(source, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + + // Wear & Remove RegisterSignal(source, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) - RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_qdel)) RegisterSignal(source, COMSIG_ATOM_ATTACK_HAND_SECONDARY, PROC_REF(on_secondary_attack_hand)) + + // Overlays RegisterSignals(source, list(COMSIG_MODULE_GENERATE_WORN_OVERLAY, COMSIG_ITEM_GET_WORN_OVERLAYS), PROC_REF(get_worn_overlays)) - RegisterSignal(source, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) - if (add_overlay) - RegisterSignal(source, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays)) + + RegisterSignal(source, COMSIG_QDELETING, PROC_REF(on_qdel)) + +// Inherit the new values passed to the component +/datum/component/hat_stabilizer/InheritComponent(datum/component/hat_stabilizer/new_comp, original, use_worn_icon, pixel_y_offset, loose_hat) + if(!original) + return + + if(!isnull(use_worn_icon)) + src.use_worn_icon = use_worn_icon + if(!isnull(use_worn_icon)) + src.use_worn_icon = use_worn_icon + if(!isnull(pixel_y_offset)) + src.pixel_y_offset = pixel_y_offset + if(!isnull(loose_hat)) + src.loose_hat = loose_hat /datum/component/hat_stabilizer/UnregisterFromParent() if (attached_hat) @@ -34,12 +60,44 @@ UnregisterSignal(parent, list(COMSIG_ATOM_EXAMINE, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND_SECONDARY, COMSIG_MODULE_GENERATE_WORN_OVERLAY, COMSIG_ITEM_GET_WORN_OVERLAYS, COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_QDELETING, - COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM)) + COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + +/datum/component/hat_stabilizer/proc/on_equip(datum/source, mob/equipper, slot) + SIGNAL_HANDLER + + if(!loose_hat) + return + + var/obj/item/our_item = parent + if(!(slot & our_item.slot_flags)) + return + RegisterSignals(equipper, list(COMSIG_MOB_SLIPPED, COMSIG_LIVING_SLAPPED, COMSIG_MOVABLE_POST_THROW), PROC_REF(throw_hat)) + RegisterSignal(equipper, COMSIG_LIVING_THUD, PROC_REF(drop_hat)) + +/datum/component/hat_stabilizer/proc/on_drop(datum/source, mob/dropper) + SIGNAL_HANDLER + UnregisterSignal(dropper, list(COMSIG_MOB_SLIPPED, COMSIG_LIVING_SLAPPED, COMSIG_MOVABLE_POST_THROW, COMSIG_LIVING_THUD)) + +/datum/component/hat_stabilizer/proc/throw_hat(mob/hatless) + SIGNAL_HANDLER + if(!loose_hat) + return + var/obj/item/hat = remove_hat() + if(!hat) + return + hat.visible_message(span_danger("[hat] goes flying off [hatless]'s head!")) + hat.throw_at(get_edge_target_turf(get_turf(hat), pick(GLOB.alldirs)), 2, 1, spin = TRUE) + +/datum/component/hat_stabilizer/proc/drop_hat(mob/hatless) + SIGNAL_HANDLER + if(!loose_hat) + return + remove_hat() /datum/component/hat_stabilizer/proc/on_examine(datum/source, mob/user, list/base_examine) SIGNAL_HANDLER if(attached_hat) - base_examine += span_notice("There's \a [attached_hat] placed on [parent].") + base_examine += span_notice("There's \a [attached_hat] [loose_hat ? "loosely" : ""] placed on [parent].") else base_examine += span_notice("There's nothing placed on [parent]. Yet.") @@ -49,17 +107,15 @@ return if(attached_hat) var/mutable_appearance/worn_overlay = attached_hat.build_worn_icon(default_layer = ABOVE_BODY_FRONT_HEAD_LAYER-0.1, default_icon_file = 'icons/mob/clothing/head/default.dmi') + // loose hats are slightly angled + if(loose_hat) + var/matrix/tilt_trix = matrix(worn_overlay.transform) + var/angle = 5 + tilt_trix.Turn(angle * pick(1, -1)) + worn_overlay.transform = tilt_trix worn_overlay.pixel_y = pixel_y_offset + attached_hat.worn_y_offset overlays += worn_overlay -/datum/component/hat_stabilizer/proc/on_update_overlays(atom/movable/source, list/overlays) - SIGNAL_HANDLER - if (isnull(attached_hat)) - return - var/mutable_appearance/worn_overlay = use_worn_icon ? attached_hat.build_worn_icon(default_layer = ABOVE_OBJ_LAYER, default_icon_file = 'icons/mob/clothing/head/default.dmi') : mutable_appearance(attached_hat, layer = ABOVE_OBJ_LAYER) - worn_overlay.pixel_y = pixel_y_offset - overlays += worn_overlay - /datum/component/hat_stabilizer/proc/on_qdel(atom/movable/source) SIGNAL_HANDLER @@ -90,7 +146,7 @@ /datum/component/hat_stabilizer/proc/attach_hat(obj/item/clothing/hat, mob/user) var/atom/movable/movable_parent = parent attached_hat = hat - RegisterSignal(hat, COMSIG_MOVABLE_MOVED, PROC_REF(remove_hat)) + RegisterSignal(hat, COMSIG_MOVABLE_MOVED, PROC_REF(on_hat_movement)) if (!isnull(user)) movable_parent.balloon_alert(user, "hat attached") @@ -111,6 +167,10 @@ var/mob/wearer = apparel.loc wearer.update_clothing(wearer.get_slot_by_item(apparel)) +/datum/component/hat_stabilizer/proc/on_hat_movement(obj/hat, mob/user) + SIGNAL_HANDLER + remove_hat(user) + /datum/component/hat_stabilizer/proc/on_secondary_attack_hand(datum/source, mob/user) SIGNAL_HANDLER . = COMPONENT_CANCEL_ATTACK_CHAIN @@ -122,9 +182,9 @@ else movable_parent.balloon_alert_to_viewers("the hat falls to the floor!") -/datum/component/hat_stabilizer/proc/remove_hat(mob/user) - SIGNAL_HANDLER +/datum/component/hat_stabilizer/proc/on_retraction() +/datum/component/hat_stabilizer/proc/remove_hat(mob/user) if(QDELETED(attached_hat)) return @@ -144,6 +204,7 @@ movable_parent.update_appearance() return + var/former_hat = attached_hat var/obj/item/clothing/apparel = parent apparel.detach_clothing_traits(attached_hat) apparel.flags_cover = former_flags @@ -154,6 +215,8 @@ var/mob/wearer = apparel.loc wearer.update_clothing(wearer.get_slot_by_item(apparel)) + return former_hat + /datum/component/hat_stabilizer/proc/on_requesting_context_from_item(atom/source, list/context, obj/item/held_item, mob/user) SIGNAL_HANDLER diff --git a/code/datums/components/heart_eater.dm b/code/datums/components/heart_eater.dm index 122716b3be5b9..3e6e072803111 100644 --- a/code/datums/components/heart_eater.dm +++ b/code/datums/components/heart_eater.dm @@ -50,7 +50,7 @@ eater_tongue.disliked_foodtypes &= ~GORE eater_tongue.liked_foodtypes |= GORE -/datum/component/heart_eater/proc/on_species_change(mob/living/carbon/human/eater, datum/species/new_species, datum/species/old_species) +/datum/component/heart_eater/proc/on_species_change(mob/living/carbon/human/eater, datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons) SIGNAL_HANDLER eater.dna?.species?.damage_modifier += remember_modifier diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index ecd2f1ff836fd..f168a3eba35de 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -13,7 +13,7 @@ return COMPONENT_INCOMPATIBLE if(!islist(diseases)) - diseases = islist(diseases) + diseases = list(diseases) ///Make sure the diseases list is populated with instances of diseases so that it doesn't have to be for each AddComponent call. for(var/datum/disease/disease as anything in diseases) @@ -115,8 +115,8 @@ return if(!is_weak) - var/appendage_zone = feeder.held_items.Find(source) - appendage_zone = appendage_zone == 0 ? BODY_ZONE_CHEST : (appendage_zone % 2 ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM) + var/appendage_zone = feeder.get_held_index_of_item(source) + appendage_zone = appendage_zone == 0 ? BODY_ZONE_CHEST : (IS_RIGHT_INDEX(appendage_zone) ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM) try_infect(feeder, appendage_zone) for(var/datum/disease/disease as anything in diseases) diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index a798124528c06..6df77dbfdc9fd 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -181,10 +181,10 @@ if (isliving(source)) var/mob/living/living_source = source - to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()].")) + to_chat(user, span_bolddanger("[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()].")) else // In case the green wasn't obvious enough... - to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Target is irradiated.")) + to_chat(user, span_bolddanger("[icon2html(geiger_counter, user)] Target is irradiated.")) return COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL diff --git a/code/datums/components/item_killsound.dm b/code/datums/components/item_killsound.dm new file mode 100644 index 0000000000000..f6e5b4d9b76e9 --- /dev/null +++ b/code/datums/components/item_killsound.dm @@ -0,0 +1,41 @@ +/datum/component/item_killsound + /// list of allowed types, not null/empty + var/list/allowed_mobs + /// list of blacklisted types + var/list/blacklisted_mobs + var/killsound + var/killsound_volume = 100 + /** + * on true will act as replacement for mob's death sound, + * otherwise it will just play sound on death + */ + var/replace_default_death_sound + +/datum/component/item_killsound/Initialize( + allowed_mobs, + blacklisted_mobs, + killsound, + killsound_volume = 100, + replace_default_death_sound = FALSE +) + src.allowed_mobs = allowed_mobs + src.blacklisted_mobs = blacklisted_mobs + src.killsound = killsound + src.killsound_volume = killsound_volume + src.replace_default_death_sound = replace_default_death_sound + +/datum/component/item_killsound/RegisterWithParent() + var/obj/item/item_parent = parent + RegisterSignal(item_parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) + +/datum/component/item_killsound/proc/on_attack(host, target_mob, user, params) + SIGNAL_HANDLER + + if(!allowed_mobs || is_type_in_list(target_mob, allowed_mobs)) + if(is_type_in_list(target_mob, blacklisted_mobs)) + return + var/mob/living/mob = target_mob + if(replace_default_death_sound) + mob.apply_status_effect(/datum/status_effect/replace_death_sound, 1 SECONDS, killsound) + else + mob.apply_status_effect(/datum/status_effect/death_sound, 1 SECONDS, killsound, killsound_volume) diff --git a/code/datums/components/itempicky.dm b/code/datums/components/itempicky.dm index bda8b1ae13881..f8e4e2256d857 100644 --- a/code/datums/components/itempicky.dm +++ b/code/datums/components/itempicky.dm @@ -27,8 +27,8 @@ /datum/component/itempicky/UnregisterFromParent() UnregisterSignal(parent, COMSIG_LIVING_TRY_PUT_IN_HAND) -/datum/component/itempicky/PostTransfer() - if(!ismob(parent)) +/datum/component/itempicky/PostTransfer(datum/new_parent) + if(!ismob(new_parent)) return COMPONENT_INCOMPATIBLE /datum/component/itempicky/InheritComponent(datum/component/itempicky/friend, i_am_original, list/arguments) diff --git a/code/datums/components/jetpack.dm b/code/datums/components/jetpack.dm index fd49aa2b67b6a..c7ff096029b97 100644 --- a/code/datums/components/jetpack.dm +++ b/code/datums/components/jetpack.dm @@ -3,8 +3,10 @@ // So propulsion through space on move, that sort of thing /datum/component/jetpack dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS - /// Checks to ensure if we can move & if we can activate + /// Checks to ensure if we can move var/datum/callback/check_on_move + /// Checks to ensure we can activate + var/datum/callback/check_on_activation /// If we should stabilize ourselves when not drifting var/stabilize = FALSE /// The signal we listen for as an activation @@ -23,6 +25,10 @@ var/stabilization_force /// Our current user var/mob/user + /// Last tick on which we triggered, to prevent double-dipping + var/last_force_tick + /// Last tick on which we stabilized + var/last_stabilization_tick /** * Arguments: @@ -35,7 +41,7 @@ * * check_on_move - Callback we call each time we attempt a move, we expect it to retun true if the move is ok, false otherwise. It expects an arg, TRUE if fuel should be consumed, FALSE othewise * * effect_type - Type of trail_follow to spawn */ -/datum/component/jetpack/Initialize(stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type) +/datum/component/jetpack/Initialize(stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/callback/check_on_activation, datum/effect_system/trail_follow/effect_type) . = ..() if(!isatom(parent)) return COMPONENT_INCOMPATIBLE @@ -48,6 +54,7 @@ src.stabilize = stabilize src.check_on_move = check_on_move + src.check_on_activation = check_on_activation src.activation_signal = activation_signal src.deactivation_signal = deactivation_signal src.return_flag = return_flag @@ -55,7 +62,7 @@ src.drift_force = drift_force src.stabilization_force = stabilization_force -/datum/component/jetpack/InheritComponent(datum/component/component, original, stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/effect_system/trail_follow/effect_type) +/datum/component/jetpack/InheritComponent(datum/component/component, original, stabilize, drift_force = 1 NEWTONS, stabilization_force = 1 NEWTONS, activation_signal, deactivation_signal, return_flag, datum/callback/check_on_move, datum/callback/check_on_activation, datum/effect_system/trail_follow/effect_type) UnregisterSignal(parent, src.activation_signal) if(src.deactivation_signal) UnregisterSignal(parent, src.deactivation_signal) @@ -65,6 +72,7 @@ src.stabilize = stabilize src.check_on_move = check_on_move + src.check_on_activation = check_on_activation src.activation_signal = activation_signal src.deactivation_signal = deactivation_signal src.return_flag = return_flag @@ -80,6 +88,7 @@ QDEL_NULL(trail) user = null check_on_move = null + check_on_activation = null return ..() /datum/component/jetpack/proc/setup_trail(mob/user) @@ -93,7 +102,7 @@ /datum/component/jetpack/proc/activate(datum/source, mob/new_user) SIGNAL_HANDLER - if(!check_on_move.Invoke(TRUE)) + if(!isnull(check_on_activation) && !check_on_activation.Invoke()) return return_flag user = new_user @@ -101,8 +110,11 @@ RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react)) RegisterSignal(user, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move)) RegisterSignal(user, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff)) + RegisterSignal(user, COMSIG_MOVABLE_DRIFT_BLOCK_INPUT, PROC_REF(on_input_block)) + last_stabilization_tick = world.time START_PROCESSING(SSnewtonian_movement, src) - setup_trail(user) + if (effect_type) + setup_trail(user) /datum/component/jetpack/proc/deactivate(datum/source, mob/old_user) SIGNAL_HANDLER @@ -119,7 +131,7 @@ if (!should_trigger(source)) return - if(source.client.intended_direction && check_on_move.Invoke(FALSE))//You use jet when press keys. yes. + if(source.client.intended_direction && check_on_move.Invoke(FALSE) && trail) //You use jet when press keys. yes. trail.generate_effect() /datum/component/jetpack/proc/should_trigger(mob/source) @@ -142,24 +154,62 @@ trail.oldposition = get_turf(source) /datum/component/jetpack/process(seconds_per_tick) + if (last_stabilization_tick == world.time) + return + + last_stabilization_tick = world.time + if (!should_trigger(user) || !stabilize || isnull(user.drift_handler)) return - var/max_drift_force = (DEFAULT_INERTIA_SPEED / user.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 + var/max_drift_force = MOVE_DELAY_TO_DRIFT(user.cached_multiplicative_slowdown) user.drift_handler.stabilize_drift(user.client.intended_direction ? dir2angle(user.client.intended_direction) : null, user.client.intended_direction ? max_drift_force : 0, stabilization_force * (seconds_per_tick * 1 SECONDS)) +/datum/component/jetpack/proc/on_input_block(mob/source) + SIGNAL_HANDLER + + if (!should_trigger(source)) + return + + if (!check_on_move.Invoke(TRUE)) + return + + return DRIFT_ALLOW_INPUT + /datum/component/jetpack/proc/on_client_move(mob/source, list/move_args) SIGNAL_HANDLER if (!should_trigger(source)) return + if (last_force_tick == world.time) + return + if (!check_on_move.Invoke(TRUE)) return - var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 - source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = drift_force, controlled_cap = max_drift_force) - source.setDir(source.client.intended_direction) + var/max_drift_force = MOVE_DELAY_TO_DRIFT(source.cached_multiplicative_slowdown) + var/applied_force = drift_force + var/move_dir = source.client.intended_direction + // Try to see if we can simulate pushing off a wall + var/atom/movable/backup = source.get_spacemove_backup(move_dir, FALSE, include_floors = TRUE) + if (backup && !(backup.dir & move_dir)) + applied_force = max_drift_force + + // We don't want to force the loop to fire before stabilizing if we're going to, otherwise its effects will be delayed until the next tick which is jank + var/force_stabilize = FALSE + if (last_stabilization_tick < world.time) + force_stabilize = TRUE + + source.newtonian_move(dir2angle(move_dir), instant = TRUE, drift_force = applied_force, controlled_cap = max_drift_force, force_loop = !force_stabilize) + source.setDir(move_dir) + last_force_tick = world.time + + if (force_stabilize) + // Newphys is an SS_TICKER subsystem and under ideal circumstances should be firing every tick, thus a period of world.tick_lag + // However, since our servers are jank, even SSinput can end up overtiming - which is also an SS_TICKER subsystem that just so + // happens to be what is calling this proc - so we can be assured that this is not above world.tick_lag, or at least should not be + process(world.tick_lag) /datum/component/jetpack/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) SIGNAL_HANDLER @@ -167,7 +217,10 @@ if (get_dir(source, backup) == movement_dir || source.loc == backup.loc) return - if (!source.client.intended_direction || (source.client.intended_direction & get_dir(source, backup))) + if (!source.client?.intended_direction || source.client.intended_direction == get_dir(source, backup)) + return + + if (isnull(source.drift_handler)) return if (!should_trigger(source) || !check_on_move.Invoke(FALSE)) diff --git a/code/datums/components/leanable.dm b/code/datums/components/leanable.dm index 3d2a4e0b73e5b..b823cf5ec503c 100644 --- a/code/datums/components/leanable.dm +++ b/code/datums/components/leanable.dm @@ -2,26 +2,21 @@ /datum/component/leanable /// How much will mobs that lean onto this object be offset var/leaning_offset = 11 - /// List of click modifiers that are required to be present for leaning to trigger - var/list/click_mods = null - /// Callback called for additional checks if a lean is valid - var/datum/callback/lean_check = null - /// Whenever this object can be leaned on from the same turf as its' own. Do not use without a custom lean_check! - var/same_turf = FALSE /// List of mobs currently leaning on our parent var/list/leaning_mobs = list() -/datum/component/leanable/Initialize(leaning_offset = 11, list/click_mods = null, datum/callback/lean_check = null, same_turf = FALSE) +/datum/component/leanable/Initialize(mob/living/leaner, leaning_offset = 11) . = ..() src.leaning_offset = leaning_offset - src.click_mods = click_mods - src.lean_check = lean_check - src.same_turf = same_turf + mousedrop_receive(parent, leaner, leaner) /datum/component/leanable/RegisterWithParent() RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) +/datum/component/leanable/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_MOUSEDROPPED_ONTO, COMSIG_MOVABLE_MOVED)) + /datum/component/leanable/Destroy(force) for (var/mob/living/leaner as anything in leaning_mobs) leaner.stop_leaning() @@ -30,17 +25,13 @@ /datum/component/leanable/proc/on_moved(datum/source) SIGNAL_HANDLER + for (var/mob/living/leaner as anything in leaning_mobs) leaner.stop_leaning() /datum/component/leanable/proc/mousedrop_receive(atom/source, atom/movable/dropped, mob/user, params) if (dropped != user) return - if (islist(click_mods)) - var/list/modifiers = params2list(params) - for (var/modifier in click_mods) - if (!LAZYACCESS(modifiers, modifier)) - return if (!iscarbon(dropped) && !iscyborg(dropped)) return var/mob/living/leaner = dropped @@ -49,9 +40,7 @@ if (HAS_TRAIT_FROM(leaner, TRAIT_UNDENSE, LEANING_TRAIT)) return var/turf/checked_turf = get_step(leaner, REVERSE_DIR(leaner.dir)) - if (checked_turf != get_turf(source) && (!same_turf || get_turf(source) != get_turf(leaner))) - return - if (!isnull(lean_check) && !lean_check.Invoke(dropped, params)) + if (checked_turf != get_turf(source)) return leaner.start_leaning(source, leaning_offset) leaning_mobs += leaner @@ -63,6 +52,13 @@ leaning_mobs -= source UnregisterSignal(source, list(COMSIG_LIVING_STOPPED_LEANING, COMSIG_QDELETING)) +/** + * Makes the mob lean on an atom + * Arguments + * + * * atom/lean_target - the target the mob is trying to lean on + * * leaning_offset - pixel offset to apply on the mob when leaning + */ /mob/living/proc/start_leaning(atom/lean_target, leaning_offset) var/new_x = lean_target.pixel_x + base_pixel_x + body_position_pixel_x_offset var/new_y = lean_target.pixel_y + base_pixel_y + body_position_pixel_y_offset @@ -86,19 +82,31 @@ COMSIG_MOB_CLIENT_PRE_MOVE, COMSIG_LIVING_DISARM_HIT, COMSIG_LIVING_GET_PULLED, - COMSIG_MOVABLE_TELEPORTING, ), PROC_REF(stop_leaning)) + + RegisterSignal(src, COMSIG_MOVABLE_TELEPORTED, PROC_REF(teleport_away_while_leaning)) RegisterSignal(src, COMSIG_ATOM_POST_DIR_CHANGE, PROC_REF(lean_dir_changed)) update_fov() +/// You fall on your face if you get teleported while leaning +/mob/living/proc/teleport_away_while_leaning() + SIGNAL_HANDLER + + // Make sure we unregister signal handlers and reset animation + stop_leaning() + // -1000 aura + visible_message(span_notice("[src] falls flat on [p_their()] face from losing [p_their()] balance!"), span_warning("You fall suddenly as the object you were leaning on vanishes from contact with you!")) + Knockdown(3 SECONDS) + /mob/living/proc/stop_leaning() SIGNAL_HANDLER + UnregisterSignal(src, list( COMSIG_MOB_CLIENT_PRE_MOVE, COMSIG_LIVING_DISARM_HIT, COMSIG_LIVING_GET_PULLED, - COMSIG_MOVABLE_TELEPORTING, COMSIG_ATOM_POST_DIR_CHANGE, + COMSIG_MOVABLE_TELEPORTED, )) animate(src, 0.2 SECONDS, pixel_x = base_pixel_x + body_position_pixel_x_offset, pixel_y = base_pixel_y + body_position_pixel_y_offset) remove_traits(list(TRAIT_UNDENSE, TRAIT_EXPANDED_FOV), LEANING_TRAIT) @@ -107,5 +115,6 @@ /mob/living/proc/lean_dir_changed(atom/source, old_dir, new_dir) SIGNAL_HANDLER + if (old_dir != new_dir) INVOKE_ASYNC(src, PROC_REF(stop_leaning)) diff --git a/code/datums/components/life_link.dm b/code/datums/components/life_link.dm index 314a3d7931bde..26484674e8080 100644 --- a/code/datums/components/life_link.dm +++ b/code/datums/components/life_link.dm @@ -127,16 +127,14 @@ if(isnull(holder)) return holder.icon_state = "hud[RoundHealth(host)]" - var/icon/size_check = icon(mob_parent.icon, mob_parent.icon_state, mob_parent.dir) - holder.pixel_y = size_check.Height() - ICON_SIZE_Y + holder.pixel_y = mob_parent.get_cached_height() - ICON_SIZE_Y /// Update our vital status on the medical hud /datum/component/life_link/proc/update_med_hud_status(mob/living/mob_parent) var/image/holder = mob_parent.hud_list?[STATUS_HUD] if(isnull(holder)) return - var/icon/size_check = icon(mob_parent.icon, mob_parent.icon_state, mob_parent.dir) - holder.pixel_y = size_check.Height() - ICON_SIZE_Y + holder.pixel_y = mob_parent.get_cached_height() - ICON_SIZE_Y if(host.stat == DEAD || HAS_TRAIT(host, TRAIT_FAKEDEATH)) holder.icon_state = "huddead" else diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm index 8e5f096766a92..c8b1af483d034 100644 --- a/code/datums/components/manual_breathing.dm +++ b/code/datums/components/manual_breathing.dm @@ -71,7 +71,7 @@ /datum/component/manual_breathing/proc/check_added_organ(mob/who_cares, obj/item/organ/O) SIGNAL_HANDLER - var/obj/item/organ/eyes/new_lungs = O + var/obj/item/organ/lungs/new_lungs = O if(istype(new_lungs,/obj/item/organ/lungs)) L = new_lungs diff --git a/code/datums/components/material/remote_materials.dm b/code/datums/components/material/remote_materials.dm index 3c919ab15d4a4..65ba94e8b021b 100644 --- a/code/datums/components/material/remote_materials.dm +++ b/code/datums/components/material/remote_materials.dm @@ -44,11 +44,9 @@ handles linking back and forth. var/connect_to_silo = FALSE if(force_connect || (mapload && is_station_level(T.z))) connect_to_silo = TRUE - if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy)) if(mapload) // wait for silo to initialize during mapload - addtimer(CALLBACK(src, PROC_REF(_PrepareStorage), connect_to_silo)) + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(_PrepareStorage), connect_to_silo)) else //directly register in round _PrepareStorage(connect_to_silo) @@ -66,17 +64,19 @@ handles linking back and forth. silo = GLOB.ore_silo_default if (silo) silo.ore_connected_machines += src - mat_container = silo.GetComponent(/datum/component/material_container) + mat_container = silo.materials + if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) + RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert)) + if (!mat_container && allow_standalone) _MakeLocal() /datum/component/remote_materials/Destroy() - if (silo) - silo.ore_connected_machines -= src - silo.holds -= src - silo = null - UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY) + if(silo) + allow_standalone = FALSE + disconnect_from(silo) mat_container = null + return ..() /datum/component/remote_materials/proc/_MakeLocal() @@ -93,13 +93,12 @@ handles linking back and forth. allowed_items = /obj/item/stack \ ) -/datum/component/remote_materials/proc/toggle_holding(force_hold = FALSE) +/// Adds/Removes this connection from the silo +/datum/component/remote_materials/proc/toggle_holding() if(isnull(silo)) return - if(force_hold) - silo.holds[src] = TRUE - else if(!silo.holds[src]) + if(!silo.holds[src]) silo.holds[src] = TRUE else silo.holds -= src @@ -122,28 +121,17 @@ handles linking back and forth. * old_silo- The silo we are trying to disconnect from */ /datum/component/remote_materials/proc/disconnect_from(obj/machinery/ore_silo/old_silo) - if (!old_silo || silo != old_silo) + if (QDELETED(old_silo) || silo != old_silo) return + + UnregisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION) silo.ore_connected_machines -= src silo = null mat_container = null - UnregisterSignal(parent, COMSIG_ATOM_ATTACKBY) + if (allow_standalone) _MakeLocal() -///Insert mats into silo -/datum/component/remote_materials/proc/SiloAttackBy(datum/source, obj/item/target, mob/living/user) - SIGNAL_HANDLER - - //Allows you to attack the machine with iron sheets for e.g. - if(!(mat_container_flags & MATCONTAINER_ANY_INTENT) && user.combat_mode) - return - - if(silo) - mat_container.user_insert(target, user, parent) - - return COMPONENT_NO_AFTERATTACK - /datum/component/remote_materials/proc/OnMultitool(datum/source, mob/user, obj/item/multitool/M) SIGNAL_HANDLER @@ -175,10 +163,24 @@ handles linking back and forth. silo.ore_connected_machines += src mat_container = new_container if(!(mat_container_flags & MATCONTAINER_NO_INSERT)) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, TYPE_PROC_REF(/datum/component/remote_materials, SiloAttackBy)) + RegisterSignal(parent, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(on_item_insert)) to_chat(user, span_notice("You connect [parent] to [silo] from the multitool's buffer.")) return ITEM_INTERACT_SUCCESS +///Insert mats into silo +/datum/component/remote_materials/proc/on_item_insert(datum/source, mob/living/user, obj/item/target) + SIGNAL_HANDLER + + //Allows you to attack the machine with iron sheets for e.g. + if(!(mat_container_flags & MATCONTAINER_ANY_INTENT) && user.combat_mode) + return + + if(silo) + mat_container.user_insert(target, user, parent) + + return ITEM_INTERACT_SUCCESS + + /** * Checks if the param silo is in the same level as this components parent i.e. connected machine, rcd, etc * diff --git a/code/datums/components/mirv.dm b/code/datums/components/mirv.dm index 52b4053babb5a..ead33d476d459 100644 --- a/code/datums/components/mirv.dm +++ b/code/datums/components/mirv.dm @@ -32,12 +32,12 @@ var/turf/target_turf = get_turf(target) for(var/turf/shootat_turf in RANGE_TURFS(radius, target) - RANGE_TURFS(radius-1, target)) - var/obj/projectile/P = new projectile_type(target_turf) + var/obj/projectile/proj = new projectile_type(target_turf) //Shooting Code: - P.range = radius+1 + proj.range = radius+1 if(override_projectile_range) - P.range = override_projectile_range - P.preparePixelProjectile(shootat_turf, target) - P.firer = firer // don't hit ourself that would be really annoying - P.impacted = list(WEAKREF(target) = TRUE) // don't hit the target we hit already with the flak - P.fire() + proj.range = override_projectile_range + proj.aim_projectile(shootat_turf, target) + proj.firer = firer // don't hit ourself that would be really annoying + proj.impacted = list(WEAKREF(target) = TRUE) // don't hit the target we hit already with the flak + proj.fire() diff --git a/code/datums/components/multiple_lives.dm b/code/datums/components/multiple_lives.dm index ce2c4a5053f1e..f374b3e37750d 100644 --- a/code/datums/components/multiple_lives.dm +++ b/code/datums/components/multiple_lives.dm @@ -51,6 +51,6 @@ /datum/component/multiple_lives/InheritComponent(datum/component/multiple_lives/new_comp , lives_left) src.lives_left += new_comp ? new_comp.lives_left : lives_left -/datum/component/multiple_lives/PostTransfer() - if(!isliving(parent)) +/datum/component/multiple_lives/PostTransfer(datum/new_parent) + if(!isliving(new_parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/mutant_hands.dm b/code/datums/components/mutant_hands.dm index f7e19e59fb5ac..66e19852ae7e4 100644 --- a/code/datums/components/mutant_hands.dm +++ b/code/datums/components/mutant_hands.dm @@ -160,11 +160,9 @@ if(!base_icon_state) return - // Even hand indexes are right hands, - // Odd hand indexes are left hand - // ...But also, we swap it intentionally here, + // We swap it intentionally here, // so right icon is shown on the left (Because hands) - if(user.get_held_index_of_item(src) % 2 == 1) + if(IS_LEFT_INDEX(user.get_held_index_of_item(src))) icon_state = "[base_icon_state]_right" else icon_state = "[base_icon_state]_left" diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm index 080ee58a0f815..e250bb7124f31 100644 --- a/code/datums/components/omen.dm +++ b/code/datums/components/omen.dm @@ -208,14 +208,11 @@ INVOKE_ASYNC(our_guy, TYPE_PROC_REF(/mob, emote), "scream") to_chat(our_guy, span_warning("What a horrible night... To have a curse!")) - if(prob(30 * luck_mod)) /// Bonk! - var/obj/item/bodypart/the_head = our_guy.get_bodypart(BODY_ZONE_HEAD) - if(!the_head) - return - playsound(get_turf(our_guy), 'sound/effects/tableheadsmash.ogg', 90, TRUE) + if(prob(30 * luck_mod) && our_guy.get_bodypart(BODY_ZONE_HEAD)) /// Bonk! + playsound(our_guy, 'sound/effects/tableheadsmash.ogg', 90, TRUE) our_guy.visible_message(span_danger("[our_guy] hits [our_guy.p_their()] head really badly falling down!"), span_userdanger("You hit your head really badly falling down!")) - the_head.receive_damage(75 * damage_mod, damage_source = "slipping") - our_guy.adjustOrganLoss(ORGAN_SLOT_BRAIN, 100 * damage_mod) + our_guy.apply_damage(75 * damage_mod, BRUTE, BODY_ZONE_HEAD, attacking_item = "slipping") + our_guy.apply_damage(100 * damage_mod, BRAIN) consume_omen() return diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index 71f391e599ad8..74a59301e7339 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -56,10 +56,10 @@ orbiter_list += newcomp.orbiter_list newcomp.orbiter_list = null -/datum/component/orbiter/PostTransfer() - if(!isatom(parent) || isarea(parent) || !get_turf(parent)) +/datum/component/orbiter/PostTransfer(datum/new_parent) + if(!isatom(parent) || isarea(new_parent) || !get_turf(new_parent)) return COMPONENT_INCOMPATIBLE - move_react(parent) + move_react(new_parent) /datum/component/orbiter/proc/begin_orbit(atom/movable/orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation) if(orbiter.orbiting) diff --git a/code/datums/components/parry.dm b/code/datums/components/parry.dm index 98bc9e3a84d07..4b49096a6e261 100644 --- a/code/datums/components/parry.dm +++ b/code/datums/components/parry.dm @@ -23,7 +23,7 @@ /// Callback for special effects upon parrying var/datum/callback/parry_callback -/datum/component/parriable_projectile/Initialize(parry_speed_mult = 0.8, parry_damage_mult = 1.15, boost_speed_mult = 0.6, boost_damage_mult = 1.5, parry_trait = TRAIT_MINING_PARRYING, grace_period = 0.25 SECONDS, datum/callback/parry_callback = null) +/datum/component/parriable_projectile/Initialize(parry_speed_mult = 1.25, parry_damage_mult = 1.15, boost_speed_mult = 1.6, boost_damage_mult = 1.5, parry_trait = TRAIT_MINING_PARRYING, grace_period = 0.25 SECONDS, datum/callback/parry_callback = null) if(!isprojectile(parent)) return COMPONENT_INCOMPATIBLE src.parry_speed_mult = parry_speed_mult @@ -41,13 +41,13 @@ . = ..() /datum/component/parriable_projectile/RegisterWithParent() - RegisterSignal(parent, COMSIG_PROJECTILE_PIXEL_STEP, PROC_REF(on_moved)) + RegisterSignal(parent, COMSIG_PROJECTILE_MOVE_PROCESS_STEP, PROC_REF(on_moved)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(before_move)) RegisterSignal(parent, COMSIG_PROJECTILE_BEFORE_MOVE, PROC_REF(before_move)) RegisterSignal(parent, COMSIG_PROJECTILE_SELF_PREHIT, PROC_REF(before_hit)) /datum/component/parriable_projectile/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_PROJECTILE_PIXEL_STEP, COMSIG_MOVABLE_MOVED, COMSIG_PROJECTILE_BEFORE_MOVE, COMSIG_PROJECTILE_SELF_PREHIT)) + UnregisterSignal(parent, list(COMSIG_PROJECTILE_MOVE_PROCESS_STEP, COMSIG_MOVABLE_MOVED, COMSIG_PROJECTILE_BEFORE_MOVE, COMSIG_PROJECTILE_SELF_PREHIT)) /datum/component/parriable_projectile/proc/before_move(obj/projectile/source) SIGNAL_HANDLER @@ -71,7 +71,7 @@ /datum/component/parriable_projectile/proc/on_moved(obj/projectile/source) SIGNAL_HANDLER - if (!isturf(source.loc)) + if (!isturf(source.loc) || parry_turfs[source.loc]) return parry_turfs[source.loc] = world.time + grace_period RegisterSignal(source.loc, COMSIG_CLICK, PROC_REF(on_turf_click)) @@ -86,25 +86,28 @@ return parriers[user] = world.time + grace_period -/datum/component/parriable_projectile/proc/before_hit(obj/projectile/source, list/bullet_args) +/datum/component/parriable_projectile/proc/before_hit(obj/projectile/source, mob/living/user) SIGNAL_HANDLER - var/mob/user = bullet_args[2] if (!istype(user) || !parriers[user] || parried) return + parriers -= user - attempt_parry(source, user) + return attempt_parry(source, user) /datum/component/parriable_projectile/proc/attempt_parry(obj/projectile/source, mob/user) + if (QDELETED(source) || source.deletion_queued) + return NONE + if (SEND_SIGNAL(user, COMSIG_LIVING_PROJECTILE_PARRIED, source) & INTERCEPT_PARRY_EFFECTS) - return + return NONE parried = TRUE if (source.firer != user) - if (abs(source.angle - dir2angle(user)) < 15) + if (abs(source.angle - dir2angle(user.dir)) < 15) source.set_angle((source.angle + 180) % 360 + rand(-3, 3)) else - source.set_angle(dir2angle(user) + rand(-3, 3)) + source.set_angle(dir2angle(user.dir) + rand(-3, 3)) user.visible_message(span_warning("[user] expertly parries [source] with [user.p_their()] bare hand!"), span_warning("You parry [source] with your hand!")) else user.visible_message(span_warning("[user] boosts [source] with [user.p_their()] bare hand!"), span_warning("You boost [source] with your hand!")) @@ -118,4 +121,4 @@ user.playsound_local(source.loc, 'sound/effects/parry.ogg', 50, TRUE) user.overlay_fullscreen("projectile_parry", /atom/movable/screen/fullscreen/crit/projectile_parry, 2) addtimer(CALLBACK(user, TYPE_PROC_REF(/mob, clear_fullscreen), "projectile_parry"), 0.25 SECONDS) - return PROJECTILE_INTERRUPT_HIT + return PROJECTILE_INTERRUPT_HIT_PHASE diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index e9b7fad34fc20..41f18a6cb1809 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -224,10 +224,10 @@ break ///One of our pellets hit something, record what it was and check if we're done (terminated == num_pellets) -/datum/component/pellet_cloud/proc/pellet_hit(obj/projectile/P, atom/movable/firer, atom/target, Angle, hit_zone) +/datum/component/pellet_cloud/proc/pellet_hit(obj/projectile/proj, atom/movable/firer, atom/target, Angle, hit_zone) SIGNAL_HANDLER - pellets -= P + pellets -= proj terminated++ hits++ var/obj/item/bodypart/hit_part @@ -237,34 +237,34 @@ hit_part = hit_carbon.get_bodypart(hit_zone) if(hit_part) target = hit_part - if(P.wound_bonus != CANT_WOUND) // handle wounding + if(proj.wound_bonus != CANT_WOUND) // handle wounding // unfortunately, due to how pellet clouds handle finalizing only after every pellet is accounted for, that also means there might be a short delay in dealing wounds if one pellet goes wide // while buckshot may reach a target or miss it all in one tick, we also have to account for possible ricochets that may take a bit longer to hit the target if(isnull(wound_info_by_part[hit_part])) wound_info_by_part[hit_part] = list(0, 0, 0) - wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE] += P.damage // these account for decay - wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS] += P.wound_bonus - wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS] += P.bare_wound_bonus - P.wound_bonus = CANT_WOUND // actual wounding will be handled aggregate + wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE] += proj.damage // these account for decay + wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS] += proj.wound_bonus + wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS] += proj.bare_wound_bonus + proj.wound_bonus = CANT_WOUND // actual wounding will be handled aggregate else if(isobj(target)) var/obj/hit_object = target - if(hit_object.damage_deflection > P.damage || !P.damage) + if(hit_object.damage_deflection > proj.damage || !proj.damage) damage = FALSE LAZYADDASSOC(targets_hit[target], "hits", 1) LAZYSET(targets_hit[target], "damage", damage) if(targets_hit[target]["hits"] == 1) - RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_qdel), override=TRUE) - UnregisterSignal(P, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_qdel), override = TRUE) + UnregisterSignal(proj, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) if(terminated == num_pellets) finalize() ///One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets) -/datum/component/pellet_cloud/proc/pellet_range(obj/projectile/P) +/datum/component/pellet_cloud/proc/pellet_range(obj/projectile/proj) SIGNAL_HANDLER - pellets -= P + pellets -= proj terminated++ - UnregisterSignal(P, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) + UnregisterSignal(proj, list(COMSIG_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) if(terminated == num_pellets) finalize() @@ -279,18 +279,18 @@ pellet.firer = parent // don't hit ourself that would be really annoying pellet.impacted = list(WEAKREF(parent) = TRUE) // don't hit the target we hit already with the flak pellet.suppressed = SUPPRESSED_VERY // set the projectiles to make no message so we can do our own aggregate message - pellet.preparePixelProjectile(target, parent) + pellet.aim_projectile(target, parent) RegisterSignal(pellet, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(pellet_hit)) RegisterSignals(pellet, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_QDELETING), PROC_REF(pellet_range)) pellets += pellet pellet.fire() if(landmine_victim) - pellet.process_hit_loop(target) + pellet.impact(target) ///All of our pellets are accounted for, time to go target by target and tell them how many things they got hit by. /datum/component/pellet_cloud/proc/finalize() - var/obj/projectile/P = projectile_type - var/proj_name = initial(P.name) + var/obj/projectile/proj_type = projectile_type + var/proj_name = initial(proj_type.name) for(var/atom/target in targets_hit) var/num_hits = targets_hit[target]["hits"] @@ -303,24 +303,24 @@ hit_part = null //so the visible_message later on doesn't generate extra text. else target = hit_part.owner - if(wound_info_by_part[hit_part] && (initial(P.damage_type) == BRUTE || initial(P.damage_type) == BURN)) // so a cloud of disablers that deal stamina don't inadvertently end up causing burn wounds) + if(wound_info_by_part[hit_part] && (initial(proj_type.damage_type) == BRUTE || initial(proj_type.damage_type) == BURN)) // so a cloud of disablers that deal stamina don't inadvertently end up causing burn wounds) var/damage_dealt = wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE] var/w_bonus = wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS] var/bw_bonus = wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS] - var/wounding_type = (initial(P.damage_type) == BRUTE) ? WOUND_BLUNT : WOUND_BURN // sharpness is handled in the wound rolling + var/wounding_type = (initial(proj_type.damage_type) == BRUTE) ? WOUND_BLUNT : WOUND_BURN // sharpness is handled in the wound rolling wound_info_by_part -= hit_part // technically this only checks armor worn the moment that all the pellets resolve rather than as each one hits you, // but this isn't important enough to warrant all the extra loops of mostly redundant armor checks var/mob/living/carbon/hit_carbon = target - var/armor_factor = hit_carbon.getarmor(hit_part, initial(P.armor_flag)) + var/armor_factor = hit_carbon.getarmor(hit_part, initial(proj_type.armor_flag)) armor_factor = min(ARMOR_MAX_BLOCK, armor_factor) //cap damage reduction at 90% if(armor_factor > 0) - if(initial(P.weak_against_armour) && armor_factor >= 0) + if(initial(proj_type.weak_against_armour) && armor_factor >= 0) armor_factor *= ARMOR_WEAKENED_MULTIPLIER damage_dealt *= max(0, 1 - armor_factor*0.01) - hit_part.painless_wound_roll(wounding_type, damage_dealt, w_bonus, bw_bonus, initial(P.sharpness)) + hit_part.painless_wound_roll(wounding_type, damage_dealt, w_bonus, bw_bonus, initial(proj_type.sharpness)) var/limb_hit_text = "" if(hit_part) diff --git a/code/datums/components/profound_fisher.dm b/code/datums/components/profound_fisher.dm index cc7e87aeb40af..62019ee3f6c67 100644 --- a/code/datums/components/profound_fisher.dm +++ b/code/datums/components/profound_fisher.dm @@ -17,6 +17,7 @@ if(!isgloves) RegisterSignal(parent, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attack)) + RegisterSignal(parent, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(stop_fishing)) else var/obj/item/clothing/gloves = parent RegisterSignal(gloves, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) @@ -68,6 +69,7 @@ if(slot != ITEM_SLOT_GLOVES) return RegisterSignal(equipper, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarmed_attack)) + RegisterSignal(equipper, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(stop_fishing)) /datum/component/profound_fisher/proc/open_rod_menu(datum/source, mob/user, list/modifiers) SIGNAL_HANDLER @@ -76,7 +78,7 @@ /datum/component/profound_fisher/proc/on_drop(datum/source, atom/dropper) SIGNAL_HANDLER - UnregisterSignal(dropper, COMSIG_LIVING_UNARMED_ATTACK) + UnregisterSignal(dropper, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_COMPLETE_FISHING)) REMOVE_TRAIT(dropper, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC) //this will cancel the current minigame if the fishing rod was internal. /datum/component/profound_fisher/proc/on_unarmed_attack(mob/living/source, atom/attack_target, proximity_flag, list/modifiers) @@ -108,19 +110,12 @@ return TRUE /datum/component/profound_fisher/proc/begin_fishing(mob/living/user, atom/target) - RegisterSignal(user, COMSIG_MOB_BEGIN_FISHING, PROC_REF(actually_fishing_with_internal_rod)) our_rod.melee_attack_chain(user, target) - UnregisterSignal(user, COMSIG_MOB_BEGIN_FISHING) + ADD_TRAIT(user, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC) -/datum/component/profound_fisher/proc/actually_fishing_with_internal_rod(datum/source) - SIGNAL_HANDLER - ADD_TRAIT(source, TRAIT_PROFOUND_FISHER, REF(parent)) - RegisterSignal(source, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(remove_profound_fisher)) - -/datum/component/profound_fisher/proc/remove_profound_fisher(datum/source) +/datum/component/profound_fisher/proc/stop_fishing(datum/source) SIGNAL_HANDLER REMOVE_TRAIT(source, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC) - UnregisterSignal(source, COMSIG_MOB_COMPLETE_FISHING) /datum/component/profound_fisher/proc/pretend_fish(mob/living/source, atom/target) if(DOING_INTERACTION_WITH_TARGET(source, target)) diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 724495b7c88c6..f5162bf918a35 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -541,7 +541,7 @@ RegisterSignal(parent, COMSIG_PROJECTILE_PREHIT, PROC_REF(on_bullet_hit)) RegisterSignal(parent, COMSIG_MOB_AFTER_APPLY_DAMAGE, PROC_REF(on_attacked)) -/datum/component/riding/creature/raptor/proc/on_bullet_hit(atom/target, list/bullet_args, obj/projectile/hit_projectile) +/datum/component/riding/creature/raptor/proc/on_bullet_hit(atom/target, obj/projectile/hit_projectile) SIGNAL_HANDLER if(hit_projectile.armor_flag == ENERGY) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index 40df294af12a8..16d7bddec8708 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -28,7 +28,7 @@ RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, PROC_REF(on_requesting_context_from_item)) return ..() -/datum/component/simple_rotation/PostTransfer() +/datum/component/simple_rotation/PostTransfer(datum/new_parent) //Because of the callbacks which we don't track cleanly we can't transfer this //item cleanly, better to let the new of the new item create a new rotation datum //instead (there's no real state worth transferring) diff --git a/code/datums/components/seethrough_mob.dm b/code/datums/components/seethrough_mob.dm index b6951c5489b6d..a788ef6e8611f 100644 --- a/code/datums/components/seethrough_mob.dm +++ b/code/datums/components/seethrough_mob.dm @@ -55,9 +55,8 @@ for(var/atom/movable/screen/plane_master/seethrough as anything in our_hud.get_true_plane_masters(SEETHROUGH_PLANE)) seethrough.unhide_plane(fool) - var/icon/current_mob_icon = icon(fool.icon, fool.icon_state) render_source_atom.pixel_x = -fool.pixel_x - render_source_atom.pixel_y = ((current_mob_icon.Height() - 32) * 0.5) + render_source_atom.pixel_y = (fool.get_cached_height() - ICON_SIZE_Y * 0.5) initial_render_target_value = fool.render_target fool.render_target = "*transparent_bigmob[personal_uid]" diff --git a/code/datums/components/shell.dm b/code/datums/components/shell.dm index bb3054aea6ae6..feb6e572bfd0f 100644 --- a/code/datums/components/shell.dm +++ b/code/datums/components/shell.dm @@ -346,7 +346,11 @@ )) if(attached_circuit.loc == parent || (!QDELETED(attached_circuit) && attached_circuit.loc == null)) var/atom/parent_atom = parent - attached_circuit.forceMove(parent_atom.drop_location()) + var/drop_location = parent_atom.drop_location() + if(drop_location) + attached_circuit.forceMove(drop_location) + else + attached_circuit.moveToNullspace() for(var/obj/item/circuit_component/to_remove as anything in unremovable_circuit_components) attached_circuit.remove_component(to_remove) @@ -376,7 +380,7 @@ return COMSIG_USB_CABLE_CONNECTED_TO_CIRCUIT /** - * Determines if a user is authorized to see the existance of this shell. Returns false if they are not + * Determines if a user is authorized to see the existence of this shell. Returns false if they are not * * Arguments: * * user - The user to check if they are authorized diff --git a/code/datums/components/shy.dm b/code/datums/components/shy.dm index a9b50a07efb26..a6303b87a0328 100644 --- a/code/datums/components/shy.dm +++ b/code/datums/components/shy.dm @@ -59,7 +59,7 @@ COMSIG_TRY_ALT_ACTION, )) -/datum/component/shy/PostTransfer() +/datum/component/shy/PostTransfer(datum/new_parent) if(!ismob(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/shy_in_room.dm b/code/datums/components/shy_in_room.dm index 4e0c2421561e7..d4eeeb108d93f 100644 --- a/code/datums/components/shy_in_room.dm +++ b/code/datums/components/shy_in_room.dm @@ -31,7 +31,7 @@ COMSIG_TRY_ALT_ACTION, )) -/datum/component/shy_in_room/PostTransfer() +/datum/component/shy_in_room/PostTransfer(datum/new_parent) if(!ismob(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/spill.dm b/code/datums/components/spill.dm index 9112706046c44..6c84299f68938 100644 --- a/code/datums/components/spill.dm +++ b/code/datums/components/spill.dm @@ -25,7 +25,7 @@ dropsound = _dropsound drop_memory = _drop_memory -/datum/component/spill/PostTransfer() +/datum/component/spill/PostTransfer(datum/new_parent) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/splat.dm b/code/datums/components/splat.dm index d22613204bbbd..0ae407166abff 100644 --- a/code/datums/components/splat.dm +++ b/code/datums/components/splat.dm @@ -48,9 +48,9 @@ /datum/component/splat/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_MOVABLE_IMPACT, COMSIG_PROJECTILE_SELF_ON_HIT)) -/datum/component/splat/proc/projectile_splat(obj/projectile/source, atom/firer, atom/target, angle, hit_limb_zone, blocked) +/datum/component/splat/proc/projectile_splat(obj/projectile/source, atom/firer, atom/target, angle, hit_limb_zone, blocked, pierce_hit) SIGNAL_HANDLER - if(blocked != 100) + if(blocked != 100 && !pierce_hit) splat(source, target) /datum/component/splat/proc/throw_splat(atom/movable/source, atom/hit_atom, datum/thrownthing/throwing_datum, caught) diff --git a/code/datums/components/supermatter_crystal.dm b/code/datums/components/supermatter_crystal.dm index 4dac194c158b2..14183e4beb63e 100644 --- a/code/datums/components/supermatter_crystal.dm +++ b/code/datums/components/supermatter_crystal.dm @@ -107,7 +107,7 @@ if(iscyborg(user) && atom_source.Adjacent(user)) dust_mob(source, user, cause = "cyborg attack") return - if(isaicamera(user)) + if(iscameramob(user)) return if(islarva(user)) dust_mob(source, user, cause = "larva attack") @@ -165,10 +165,7 @@ var/obj/item/cigarette/cig = item var/clumsy = HAS_TRAIT(user, TRAIT_CLUMSY) if(clumsy) - var/which_hand = BODY_ZONE_L_ARM - if(!(user.active_hand_index % 2)) - which_hand = BODY_ZONE_R_ARM - var/obj/item/bodypart/dust_arm = user.get_bodypart(which_hand) + var/obj/item/bodypart/dust_arm = user.get_active_hand() dust_arm.dismember() user.visible_message(span_danger("The [item] flashes out of existence on contact with \the [atom_source], resonating with a horrible sound..."),\ span_danger("Oops! The [item] flashes out of existence on contact with \the [atom_source], taking your arm with it! That was clumsy of you!")) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 8c5e10ddd655a..ed7f3f340c1a3 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -527,12 +527,8 @@ if(99 to INFINITY) // can you imagine standing around minding your own business when all of the sudden some guy fucking launches himself into a wall at full speed and irreparably paralyzes himself? user.visible_message(span_danger("[user] slams face-first into [hit] at an awkward angle, severing [user.p_their()] spinal column with a sickening crack! Fucking shit!"), span_userdanger("You slam face-first into [hit] at an awkward angle, severing your spinal column with a sickening crack! Fucking shit!")) - var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD) - if(hed) - hed.receive_damage(brute=40, updating_health=FALSE, wound_bonus = 40) - else - user.adjustBruteLoss(40, updating_health=FALSE) - user.adjustStaminaLoss(30) + user.apply_damage(40, BRUTE, BODY_ZONE_HEAD, wound_bonus = 40) + user.apply_damage(30, STAMINA) playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE) playsound(user, 'sound/effects/splat.ogg', 70, TRUE) playsound(user, 'sound/effects/wounds/crack2.ogg', 70, TRUE) @@ -543,12 +539,8 @@ if(97 to 98) user.visible_message(span_danger("[user] slams skull-first into [hit] with a sound like crumpled paper, revealing a horrifying breakage in [user.p_their()] cranium! Holy shit!"), span_userdanger("You slam skull-first into [hit] and your senses are filled with warm goo flooding across your face! Your skull is open!")) - var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD) - if(hed) - hed.receive_damage(brute = 30, updating_health = FALSE, wound_bonus = 25) - else - user.adjustBruteLoss(40, updating_health = FALSE) - user.adjustStaminaLoss(30) + user.apply_damage(30, BRUTE, BODY_ZONE_HEAD, wound_bonus = 25) + user.apply_damage(30, STAMINA) user.gain_trauma_type(BRAIN_TRAUMA_MILD) playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE) playsound(user, 'sound/effects/splat.ogg', 70, TRUE) @@ -558,8 +550,8 @@ if(93 to 96) user.visible_message(span_danger("[user] slams face-first into [hit] with a concerning squish, immediately going limp!"), span_userdanger("You slam face-first into [hit], and immediately lose consciousness!")) - user.adjustStaminaLoss(30) - user.adjustBruteLoss(30) + user.apply_damage(30, BRUTE, spread_damage = TRUE) + user.apply_damage(30, STAMINA) user.Unconscious(10 SECONDS) user.gain_trauma_type(BRAIN_TRAUMA_MILD) user.playsound_local(get_turf(user), 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8) @@ -568,8 +560,8 @@ if(86 to 92) user.visible_message(span_danger("[user] slams head-first into [hit], suffering major cranial trauma!"), span_userdanger("You slam head-first into [hit], and the world explodes around you!")) - user.adjustStaminaLoss(30, updating_stamina = FALSE) - user.adjustBruteLoss(30) + user.apply_damage(30, BRUTE, spread_damage = TRUE) + user.apply_damage(30, STAMINA) user.adjust_confusion(15 SECONDS) if(prob(80)) user.gain_trauma(/datum/brain_trauma/mild/concussion) @@ -580,16 +572,16 @@ if(68 to 85) user.visible_message(span_danger("[user] slams hard into [hit], knocking [user.p_them()] senseless!"), span_userdanger("You slam hard into [hit], knocking yourself senseless!")) - user.adjustStaminaLoss(30, updating_stamina = FALSE) - user.adjustBruteLoss(10) + user.apply_damage(10, BRUTE, spread_damage = TRUE) + user.apply_damage(30, STAMINA) user.adjust_confusion(10 SECONDS) user.Knockdown(3 SECONDS) shake_camera(user, 3, 4) if(1 to 67) user.visible_message(span_danger("[user] slams into [hit]!"), span_userdanger("You slam into [hit]!")) - user.adjustStaminaLoss(20, updating_stamina = FALSE) - user.adjustBruteLoss(10) + user.apply_damage(10, BRUTE, spread_damage = TRUE) + user.apply_damage(20, STAMINA) user.Knockdown(2 SECONDS) shake_camera(user, 2, 2) diff --git a/code/datums/components/tameable.dm b/code/datums/components/tameable.dm index 0d77688a22e7a..747d729ee1dcf 100644 --- a/code/datums/components/tameable.dm +++ b/code/datums/components/tameable.dm @@ -2,8 +2,6 @@ /datum/component/tameable ///If true, this atom can only be domesticated by one person var/unique - ///What the mob eats, typically used for taming or animal husbandry. - var/list/food_types ///Starting success chance for taming. var/tame_chance ///Added success chance after every failed tame attempt. @@ -15,8 +13,6 @@ if(!isatom(parent)) //yes, you could make a tameable toolbox. return COMPONENT_INCOMPATIBLE - if(food_types) - src.food_types = food_types if(tame_chance) src.tame_chance = tame_chance src.current_tame_chance = tame_chance @@ -24,35 +20,30 @@ src.bonus_tame_chance = bonus_tame_chance src.unique = unique - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(try_tame)) + if(food_types && !HAS_TRAIT(parent, TRAIT_MOB_EATER)) + parent.AddElement(/datum/element/basic_eating, food_types = food_types) + + RegisterSignal(parent, COMSIG_MOB_ATE, PROC_REF(try_tame)) RegisterSignal(parent, COMSIG_SIMPLEMOB_SENTIENCEPOTION, PROC_REF(on_tame)) //Instantly succeeds RegisterSignal(parent, COMSIG_SIMPLEMOB_TRANSFERPOTION, PROC_REF(on_tame)) //Instantly succeeds -/datum/component/tameable/proc/try_tame(datum/source, obj/item/food, mob/living/attacker, params) +/datum/component/tameable/proc/try_tame(atom/source, obj/item/food, mob/living/attacker) SIGNAL_HANDLER - if(!is_type_in_list(food, food_types)) + + if(isnull(attacker) || already_friends(attacker)) return - if(isliving(source)) - var/mob/living/potentially_dead_horse = source - if(potentially_dead_horse.stat == DEAD) - to_chat(attacker, span_warning("[parent] is dead!")) - return COMPONENT_CANCEL_ATTACK_CHAIN - var/atom/atom_parent = source var/inform_tamer = FALSE - atom_parent.balloon_alert(attacker, "fed") var/modified_tame_chance = current_tame_chance if(HAS_TRAIT(attacker, TRAIT_BEAST_EMPATHY)) modified_tame_chance += 50 inform_tamer = TRUE - if(unique || !already_friends(attacker)) - if(prob(modified_tame_chance)) //note: lack of feedback message is deliberate, keep them guessing unless they're an expert! - on_tame(source, attacker, food, inform_tamer) - else - current_tame_chance += bonus_tame_chance - qdel(food) - return COMPONENT_CANCEL_ATTACK_CHAIN + source.balloon_alert(attacker, "eats from your hand") + if(prob(modified_tame_chance)) //note: lack of feedback message is deliberate, keep them guessing unless they're an expert! + on_tame(source, attacker, food, inform_tamer) + else + current_tame_chance += bonus_tame_chance /// Check if the passed mob is already considered one of our friends /datum/component/tameable/proc/already_friends(mob/living/potential_friend) diff --git a/code/datums/components/technointrovert.dm b/code/datums/components/technointrovert.dm index c6f51f8041653..0797d24cb4868 100644 --- a/code/datums/components/technointrovert.dm +++ b/code/datums/components/technointrovert.dm @@ -20,7 +20,7 @@ /datum/component/technointrovert/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_TRY_USE_MACHINE, COMSIG_TRY_WIRES_INTERACT)) -/datum/component/technointrovert/PostTransfer() +/datum/component/technointrovert/PostTransfer(datum/new_parent) if(!ismob(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/technoshy.dm b/code/datums/components/technoshy.dm index e8d4441a287f3..168f6d61ab5a9 100644 --- a/code/datums/components/technoshy.dm +++ b/code/datums/components/technoshy.dm @@ -26,7 +26,7 @@ /datum/component/technoshy/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_TRY_USE_MACHINE, COMSIG_TRY_WIRES_INTERACT)) -/datum/component/technoshy/PostTransfer() +/datum/component/technoshy/PostTransfer(datum/new_parent) if(!ismob(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm index 1e8313fa53b2b..ba11306cd8936 100644 --- a/code/datums/components/tether.dm +++ b/code/datums/components/tether.dm @@ -15,8 +15,13 @@ var/datum/beam/tether_beam /// Tether module if we were created by one var/obj/item/mod/module/tether/parent_module + /// Source, if any, for TRAIT_TETHER_ATTACHED we add + var/tether_trait_source + /// If TRUE, only add TRAIT_TETHER_ATTACHED to our parent + var/no_target_trait -/datum/component/tether/Initialize(atom/tether_target, max_dist = 7, tether_name, atom/embed_target = null, start_distance = null, parent_module = null) +/datum/component/tether/Initialize(atom/tether_target, max_dist = 7, tether_name, atom/embed_target = null, start_distance = null, \ + parent_module = null, tether_trait_source = null, no_target_trait = FALSE) if(!ismovable(parent) || !istype(tether_target) || !tether_target.loc) return COMPONENT_INCOMPATIBLE @@ -24,6 +29,8 @@ src.embed_target = embed_target src.max_dist = max_dist src.parent_module = parent_module + src.tether_trait_source = tether_trait_source + src.no_target_trait = no_target_trait cur_dist = max_dist if (start_distance != null) cur_dist = start_distance @@ -34,6 +41,10 @@ src.tether_name = initial(tmp.name) else src.tether_name = tether_name + if (!isnull(tether_trait_source)) + ADD_TRAIT(parent, TRAIT_TETHER_ATTACHED, tether_trait_source) + if (!no_target_trait) + ADD_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source) /datum/component/tether/RegisterWithParent() RegisterSignal(parent, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(check_tether)) @@ -54,8 +65,12 @@ /datum/component/tether/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED)) + if (!isnull(tether_trait_source)) + REMOVE_TRAIT(parent, TRAIT_TETHER_ATTACHED, tether_trait_source) if (!QDELETED(tether_target)) UnregisterSignal(tether_target, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED, COMSIG_QDELETING)) + if (!isnull(tether_trait_source) && !no_target_trait) + REMOVE_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source) if (!QDELETED(tether_beam)) UnregisterSignal(tether_beam.visuals, list(COMSIG_CLICK, COMSIG_QDELETING)) qdel(tether_beam) @@ -72,9 +87,11 @@ to_chat(source, span_warning("[tether_name] prevents you from entering [new_loc]!")) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE + // If this was called, we know its a movable + var/atom/movable/movable_source = source var/atom/movable/anchor = (source == tether_target ? parent : tether_target) if (get_dist(anchor, new_loc) > cur_dist) - if (!istype(anchor) || anchor.anchored || !anchor.Move(get_step_towards(anchor, new_loc))) + if (!istype(anchor) || anchor.anchored || !(!anchor.anchored && anchor.move_resist <= movable_source.move_force && anchor.Move(get_step_towards(anchor, new_loc)))) to_chat(source, span_warning("[tether_name] runs out of slack and prevents you from moving!")) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE @@ -105,7 +122,6 @@ if (get_dist(anchor, new_loc) != cur_dist || !ismovable(source)) return - var/atom/movable/movable_source = source var/datum/drift_handler/handler = movable_source.drift_handler if (isnull(handler)) return @@ -142,12 +158,23 @@ INVOKE_ASYNC(src, PROC_REF(process_beam_click), source, location, params, user) /datum/component/tether/proc/process_beam_click(atom/source, atom/location, params, mob/user) - if (!location.can_interact(user)) + var/turf/nearest_turf + for (var/turf/line_turf in get_line(get_turf(parent), get_turf(tether_target))) + if (user.CanReach(line_turf)) + nearest_turf = line_turf + break + + if (isnull(nearest_turf)) return + + if (!user.can_perform_action(nearest_turf)) + nearest_turf.balloon_alert(user, "cannot reach!") + return + var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, CTRL_CLICK)) location.balloon_alert(user, "cutting the tether...") - if (!do_after(user, 1 SECONDS, user)) + if (!do_after(user, 2 SECONDS, user)) return qdel(src) @@ -179,12 +206,12 @@ var/atom/movable/movable_parent = parent var/atom/movable/movable_target = tether_target - if (istype(movable_parent) && movable_parent.Move(get_step(movable_parent.loc, get_dir(movable_parent, movable_target)))) + if (istype(movable_parent) && !movable_parent.anchored && movable_parent.move_resist <= movable_target.move_force && movable_parent.Move(get_step(movable_parent.loc, get_dir(movable_parent, movable_target)))) cur_dist -= 1 location.balloon_alert(user, "tether shortened") return - if (istype(movable_target) && movable_target.Move(get_step(movable_target.loc, get_dir(movable_target, movable_parent)))) + if (istype(movable_target) && !movable_target.anchored && movable_target.move_resist <= movable_parent.move_force && movable_target.Move(get_step(movable_target.loc, get_dir(movable_target, movable_parent)))) cur_dist -= 1 location.balloon_alert(user, "tether shortened") return diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index 1fac66c07cd64..718ef86647b96 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -179,16 +179,10 @@ if(!iscarbon(user) || user.can_touch_burning(source)) return NONE - var/obj/item/bodypart/affecting = user.get_active_hand() - //Should not happen! - if(!affecting) - return NONE - - affecting.receive_damage(burn = 5) + user.apply_damage(5, BURN, user.get_active_hand()) to_chat(user, span_userdanger("The ignited thermite on \the [source] burns your hand!")) INVOKE_ASYNC(user, TYPE_PROC_REF(/mob, emote), "scream") playsound(source, SFX_SEAR, 50, TRUE) - user.update_damage_overlays() return COMPONENT_CANCEL_ATTACK_CHAIN /** diff --git a/code/datums/components/throwbonus_on_windup.dm b/code/datums/components/throwbonus_on_windup.dm index ed505d69697de..a96d9294e8010 100644 --- a/code/datums/components/throwbonus_on_windup.dm +++ b/code/datums/components/throwbonus_on_windup.dm @@ -52,8 +52,7 @@ return if(throw_text) to_chat(our_holder, span_warning(throw_text)) - var/list/offset_to_add = get_icon_dimensions(our_holder.icon) - var/x_position = CEILING(offset_to_add["width"] * 0.5, 1) + var/x_position = CEILING(our_holder.get_cached_width() * 0.5, 1) our_bar = new() our_bar.maximum_count = maximum_bonus our_bar.pixel_x = x_position diff --git a/code/datums/components/tug_towards.dm b/code/datums/components/tug_towards.dm new file mode 100644 index 0000000000000..f34cc05bc97fe --- /dev/null +++ b/code/datums/components/tug_towards.dm @@ -0,0 +1,135 @@ +/// "Tugs" an atom towards another atom. That is to say, it will visually +/// pixel offset to look like it is close to the point it's tugging to, +/// but not actually move position. +/datum/component/tug_towards + // If multiple are specified, will tug in between them. + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + + VAR_PRIVATE + /// atom -> strength + list/list/tugging_to_targets = list() + + + current_tug_offset_x = 0 + current_tug_offset_y = 0 + +/datum/component/tug_towards/Initialize( + /// The atom we are tugging towards. + atom/tugging_to, + + /// Strength of the tug, as a number 0 through 1. + /// 0 means no tug, 1 means that if you're on an adjacent tile + /// you will be directly at the corner of the tugging_to_target. + /// Default is 0.8, which provides a healthy amount of + /// distance. + strength +) + if (!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + ASSERT(istype(tugging_to)) + + add_tugging_to_target(tugging_to, strength) + + RegisterSignals(parent, list( + COMSIG_MOVABLE_MOVED, + COMSIG_MOB_BUCKLED, + COMSIG_MOB_UNBUCKLED, + ), PROC_REF(update_tug)) + +/datum/component/tug_towards/Destroy(force) + tugging_to_targets.Cut() + + animate( + parent, + pixel_x = -current_tug_offset_x, + pixel_y = -current_tug_offset_y, + time = 0.2 SECONDS, + flags = ANIMATION_RELATIVE + ) + + return ..() + +/datum/component/tug_towards/InheritComponent( + datum/component/tug_towards/new_tug_towards, + i_am_original, + + atom/tugging_to, + strength, +) + add_tugging_to_target(tugging_to, strength) + +/datum/component/tug_towards/proc/remove_tug_target(atom/target) + tugging_to_targets -= target + + if (tugging_to_targets.len == 0) + qdel(src) + else + update_tug() + +/datum/component/tug_towards/proc/add_tugging_to_target( + atom/tugging_to, + strength = 0.8, +) + PRIVATE_PROC(TRUE) + + tugging_to_targets[tugging_to] = strength + RegisterSignal(tugging_to, COMSIG_PREQDELETED, PROC_REF(on_tugging_to_qdeleting)) + RegisterSignal(tugging_to, COMSIG_MOVABLE_MOVED, PROC_REF(update_tug)) + + update_tug() + +/datum/component/tug_towards/proc/on_tugging_to_qdeleting(datum/target) + SIGNAL_HANDLER + PRIVATE_PROC(TRUE) + + tugging_to_targets -= target + if (tugging_to_targets.len == 0) + qdel(src) + else + update_tug() + +/datum/component/tug_towards/proc/update_tug() + SIGNAL_HANDLER + PRIVATE_PROC(TRUE) + + var/atom/atom_parent = parent + var/mob/mob_parent = parent + + var/total_tug_x = 0 + var/total_tug_y = 0 + + if (!istype(mob_parent) || !mob_parent.buckled) + var/tuggers = 0 + + for (var/atom/target as anything in tugging_to_targets) + if (target.z != atom_parent.z) + continue + + tuggers += 1 + var/strength = tugging_to_targets[target] + total_tug_x += SIGN(target.x - atom_parent.x) * strength + total_tug_y += SIGN(target.y - atom_parent.y) * strength + + // Intentionally not trig--something at a corner with a strength of 1 should have + // you at the corner, rather than root(2). + total_tug_x /= tuggers + total_tug_y /= tuggers + + var/half_size = world.icon_size * 0.5 + total_tug_x *= half_size + total_tug_y *= half_size + + if (total_tug_x == current_tug_offset_x && total_tug_y == current_tug_offset_y) + return + + animate( + atom_parent, + pixel_x = -current_tug_offset_x + total_tug_x, + pixel_y = -current_tug_offset_y + total_tug_y, + time = 0.2 SECONDS, + flags = ANIMATION_RELATIVE + ) + + current_tug_offset_x = total_tug_x + current_tug_offset_y = total_tug_y diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index d1f5b0fb1b86e..f362359f3cde5 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -159,14 +159,14 @@ for(var/i in time_left_list) . |= text2num(i) -/datum/component/wet_floor/PreTransfer() +/datum/component/wet_floor/PreTransfer(datum/new_parent) var/turf/O = parent O.cut_overlay(current_overlay) //That turf is no longer slippery, we're out of here //Slippery components don't transfer due to callbacks qdel(O.GetComponent(/datum/component/slippery)) -/datum/component/wet_floor/PostTransfer() +/datum/component/wet_floor/PostTransfer(datum/new_parent) if(!isopenturf(parent)) return COMPONENT_INCOMPATIBLE var/turf/T = parent diff --git a/code/datums/diseases/chronic_illness.dm b/code/datums/diseases/chronic_illness.dm index 617cfde763d11..be4525fd5a411 100644 --- a/code/datums/diseases/chronic_illness.dm +++ b/code/datums/diseases/chronic_illness.dm @@ -60,7 +60,7 @@ affected_mob.visible_message(span_warning("[affected_mob] collapses!")) if(prob(30)) to_chat(affected_mob, span_danger("Your vision blurs as you faint!")) - affected_mob.AdjustSleeping(10) + affected_mob.AdjustSleeping(1 SECONDS) if(SPT_PROB(0.5, seconds_per_tick)) to_chat(affected_mob, span_danger("[pick("You feel as though your atoms are accelerating in place.", "You feel like you're being torn apart!")]")) affected_mob.emote("scream") diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 2a77195e311c4..4b01ef804af29 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -51,7 +51,7 @@ if(SPT_PROB(5, seconds_per_tick)) need_mob_update += affected_mob.adjustStaminaLoss(100, updating_stamina = FALSE) affected_mob.visible_message(span_warning("[affected_mob] faints!"), span_userdanger("You surrender yourself and feel at peace...")) - affected_mob.AdjustSleeping(100) + affected_mob.AdjustSleeping(10 SECONDS) if(SPT_PROB(1, seconds_per_tick)) to_chat(affected_mob, span_userdanger("You feel your mind relax and your thoughts drift!")) affected_mob.adjust_confusion_up_to(8 SECONDS, 100 SECONDS) diff --git a/code/datums/diseases/weightlessness.dm b/code/datums/diseases/weightlessness.dm new file mode 100644 index 0000000000000..c561b3c9205ec --- /dev/null +++ b/code/datums/diseases/weightlessness.dm @@ -0,0 +1,43 @@ +/datum/disease/weightlessness + name = "Localized Weightloss Malfunction" + max_stages = 4 + spread_text = "On Contact" + spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS + cure_text = "Liquid dark matter" + cures = list(/datum/reagent/liquid_dark_matter) + agent = "Sub-quantum DNA Repulsion" + viable_mobtypes = list(/mob/living/carbon/human) + disease_flags = CAN_CARRY|CAN_RESIST|CURABLE + spreading_modifier = 0.5 + cure_chance = 4 + desc = "This disease results in a low level rewrite of the patient's bio-electric signature, causing them to reject the phenomena of \"weight\". Injestion of liquid dark matter tends to stabilize the field." + severity = DISEASE_SEVERITY_MEDIUM + infectable_biotypes = MOB_ORGANIC + + +/datum/disease/weightlessness/stage_act(seconds_per_tick, times_fired) + . = ..() + if(!.) + return + + switch(stage) + if(1) + if(SPT_PROB(1, seconds_per_tick)) + to_chat(affected_mob, span_danger("You almost lose your balance for a second.")) + if(2) + if(SPT_PROB(3, seconds_per_tick) && !HAS_TRAIT_FROM(affected_mob, TRAIT_MOVE_FLOATING, NO_GRAVITY_TRAIT)) + to_chat(affected_mob, span_danger("You feel yourself lift off the ground.")) + affected_mob.reagents.add_reagent(/datum/reagent/gravitum, 1) + + if(4) + if(SPT_PROB(3, seconds_per_tick) && !affected_mob.has_quirk(/datum/quirk/spacer_born)) + to_chat(affected_mob, span_danger("You feel sick as the world starts moving around you.")) + affected_mob.adjust_confusion(3 SECONDS) + if(SPT_PROB(8, seconds_per_tick) && !HAS_TRAIT_FROM(affected_mob, TRAIT_MOVE_FLOATING, NO_GRAVITY_TRAIT)) + to_chat(affected_mob, span_danger("You suddenly lift off the ground.")) + affected_mob.reagents.add_reagent(/datum/reagent/gravitum, 5) + +/datum/disease/weightlessness/cure(add_resistance) + . = ..() + affected_mob.vomit(VOMIT_CATEGORY_DEFAULT, lost_nutrition = 95, purge_ratio = 0.4) + to_chat(affected_mob, span_danger("You fall to the floor as your body stops rejecting gravity.")) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index f084184f850e3..221dff6aaccf9 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -553,7 +553,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) if (old_species.properly_gained) old_species.on_species_loss(src, new_race, pref_load) - dna.species.on_species_gain(src, old_species, pref_load) + dna.species.on_species_gain(src, old_species, pref_load, regenerate_icons = icon_update) log_mob_tag("TAG: [tag] SPECIES: [key_name(src)] \[[mrace]\]") /mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE) diff --git a/code/datums/drift_handler.dm b/code/datums/drift_handler.dm index 2153058436470..dcf0771d8a5e8 100644 --- a/code/datums/drift_handler.dm +++ b/code/datums/drift_handler.dm @@ -36,7 +36,6 @@ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, PROC_REF(before_move)) RegisterSignal(drifting_loop, COMSIG_MOVELOOP_POSTPROCESS, PROC_REF(after_move)) RegisterSignal(drifting_loop, COMSIG_QDELETING, PROC_REF(loop_death)) - RegisterSignal(parent, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(attempt_halt)) if(drifting_loop.status & MOVELOOP_STATUS_RUNNING) drifting_start(drifting_loop) // There's a good chance it'll autostart, gotta catch that @@ -49,6 +48,9 @@ visual_delay = start_delay apply_initial_visuals(visual_delay) + // Fire the engines! + if (drifting_loop.timer <= world.time) + SSnewtonian_movement.fire_moveloop(drifting_loop) /datum/drift_handler/Destroy() inertia_last_loc = null @@ -76,7 +78,7 @@ //It's ok if it's not, it's just important if it is. mob_parent.client?.visual_delay = MOVEMENT_ADJUSTED_GLIDE_SIZE(visual_delay, SSnewtonian_movement.visual_delay) -/datum/drift_handler/proc/newtonian_impulse(inertia_angle, start_delay, additional_force, controlled_cap) +/datum/drift_handler/proc/newtonian_impulse(inertia_angle, start_delay, additional_force, controlled_cap, force_loop = TRUE) SIGNAL_HANDLER inertia_last_loc = parent.loc // We've been told to move in the middle of deletion process, tell parent to create a new handler instead @@ -96,6 +98,9 @@ drifting_loop.set_angle(delta_to_angle(force_x, force_y)) drifting_loop.set_delay(get_loop_delay(parent)) + // We have to forcefully fire it here to avoid stuttering in case of server lag + if (drifting_loop.timer <= world.time && force_loop) + SSnewtonian_movement.fire_moveloop(drifting_loop) return TRUE /datum/drift_handler/proc/drifting_start() @@ -202,28 +207,28 @@ if(world.time < block_inputs_until) return COMSIG_MOB_CLIENT_BLOCK_PRE_MOVE -/datum/drift_handler/proc/attempt_halt(mob/source, movement_dir, continuous_move, atom/backup) - SIGNAL_HANDLER - - if ((backup.density || !backup.CanPass(source, get_dir(backup, source))) && (get_dir(source, backup) == movement_dir || source.loc == backup.loc)) +/datum/drift_handler/proc/attempt_halt(movement_dir, continuous_move, atom/backup) + if ((backup.density || !backup.CanPass(parent, get_dir(backup, parent))) && (get_dir(parent, backup) == movement_dir || parent.loc == backup.loc)) if (drift_force >= INERTIA_FORCE_THROW_FLOOR) - source.throw_at(backup, 1, floor(1 + (drift_force - INERTIA_FORCE_THROW_FLOOR) / INERTIA_FORCE_PER_THROW_FORCE), spin = FALSE) - return + parent.throw_at(backup, 1, floor(1 + (drift_force - INERTIA_FORCE_THROW_FLOOR) / INERTIA_FORCE_PER_THROW_FORCE), spin = FALSE) + return FALSE if (drift_force < INERTIA_FORCE_SPACEMOVE_GRAB || isnull(drifting_loop)) - return + return FALSE - if (!isnull(source.client) && source.client.intended_direction) - if ((source.client.intended_direction & movement_dir) && !(get_dir(source, backup) & movement_dir)) - return + if (ismob(parent)) + var/mob/source_user = parent + if (!isnull(source_user.client) && source_user.client.intended_direction) + if ((source_user.client.intended_direction & movement_dir) && !(get_dir(source_user, backup) & movement_dir)) + return FALSE - if (drift_force <= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight) - glide_to_halt(get_loop_delay(source)) - return COMPONENT_PREVENT_SPACEMOVE_HALT + if (drift_force <= INERTIA_FORCE_SPACEMOVE_REDUCTION / parent.inertia_force_weight) + glide_to_halt(get_loop_delay(parent)) + return TRUE - drift_force -= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight - drifting_loop.set_delay(get_loop_delay(source)) - return COMPONENT_PREVENT_SPACEMOVE_HALT + drift_force -= INERTIA_FORCE_SPACEMOVE_REDUCTION / parent.inertia_force_weight + drifting_loop.set_delay(get_loop_delay(parent)) + return TRUE /datum/drift_handler/proc/get_loop_delay(atom/movable/movable) return (DEFAULT_INERTIA_SPEED / ((1 - INERTIA_SPEED_COEF) + drift_force * INERTIA_SPEED_COEF)) * movable.inertia_move_multiplier diff --git a/code/datums/elements/basic_eating.dm b/code/datums/elements/basic_eating.dm index 4f4f493e0ef33..75caa272ef9bd 100644 --- a/code/datums/elements/basic_eating.dm +++ b/code/datums/elements/basic_eating.dm @@ -30,16 +30,25 @@ src.drinking = drinking src.food_types = food_types - //this lets players eat + RegisterSignal(target, COMSIG_ATOM_ITEM_INTERACTION, PROC_REF(try_feed)) RegisterSignal(target, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarm_attack)) - //this lets ai eat. yes, i'm serious - RegisterSignal(target, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(on_pre_attackingtarget)) /datum/element/basic_eating/Detach(datum/target) REMOVE_TRAIT(target, TRAIT_MOB_EATER, REF(src)) - UnregisterSignal(target, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) + + UnregisterSignal(target, list( + COMSIG_LIVING_UNARMED_ATTACK, + COMSIG_ATOM_ITEM_INTERACTION, + )) return ..() +/datum/element/basic_eating/proc/try_feed(atom/source, mob/living/user, atom/possible_food) + SIGNAL_HANDLER + if(user.combat_mode || !is_type_in_list(possible_food, food_types)) + return NONE + + try_eating(source, possible_food, user) + /datum/element/basic_eating/proc/on_unarm_attack(mob/living/eater, atom/target, proximity, modifiers) SIGNAL_HANDLER if(!proximity) @@ -49,14 +58,10 @@ return COMPONENT_CANCEL_ATTACK_CHAIN return NONE -/datum/element/basic_eating/proc/on_pre_attackingtarget(mob/living/eater, atom/target) - SIGNAL_HANDLER - try_eating(eater, target) - -/datum/element/basic_eating/proc/try_eating(mob/living/eater, atom/target) +/datum/element/basic_eating/proc/try_eating(mob/living/eater, atom/target, mob/living/feeder) if(!is_type_in_list(target, food_types)) return FALSE - if(SEND_SIGNAL(eater, COMSIG_MOB_PRE_EAT, target) & COMSIG_MOB_CANCEL_EAT) + if(SEND_SIGNAL(eater, COMSIG_MOB_PRE_EAT, target, feeder) & COMSIG_MOB_CANCEL_EAT) return FALSE var/eat_verb if(drinking) @@ -75,21 +80,22 @@ if (damage_amount > 0 && damage_type) eater.apply_damage(damage_amount, damage_type) eater.visible_message(span_notice("[eater] [eat_verb]s [target], and seems to hurt itself."), span_notice("You [eat_verb] [target], hurting yourself in the process.")) - finish_eating(eater, target) + finish_eating(eater, target, feeder) return TRUE eater.visible_message(span_notice("[eater] [eat_verb]s [target]."), span_notice("You [eat_verb] [target].")) - finish_eating(eater, target) + finish_eating(eater, target, feeder) return TRUE -/datum/element/basic_eating/proc/finish_eating(mob/living/eater, atom/target) +/datum/element/basic_eating/proc/finish_eating(mob/living/eater, atom/target, mob/living/feeder) set waitfor = FALSE - SEND_SIGNAL(eater, COMSIG_MOB_ATE) if(drinking) playsound(eater.loc,'sound/items/drink.ogg', rand(10,50), TRUE) else playsound(eater.loc,'sound/items/eatfood.ogg', rand(10,50), TRUE) var/atom/final_target = target + if(SEND_SIGNAL(eater, COMSIG_MOB_ATE, final_target, feeder) & COMSIG_MOB_TERMINATE_EAT) + return if(isstack(target)) //if stack, only consume 1 var/obj/item/stack/food_stack = target final_target = food_stack.split_stack(eater, 1) diff --git a/code/datums/elements/beauty.dm b/code/datums/elements/beauty.dm index ddd3a8f5eabe5..8bfa298c1a725 100644 --- a/code/datums/elements/beauty.dm +++ b/code/datums/elements/beauty.dm @@ -20,57 +20,76 @@ src.beauty = beauty - if(!beauty_counter[target] && ismovable(target)) + var/area/current_area = get_area(target) + var/beauty_active = TRUE + if(ismovable(target)) var/atom/movable/mov_target = target - mov_target.become_area_sensitive(BEAUTY_ELEMENT_TRAIT) - RegisterSignal(mov_target, COMSIG_ENTER_AREA, PROC_REF(enter_area)) - RegisterSignal(mov_target, COMSIG_EXIT_AREA, PROC_REF(exit_area)) + var/is_item = isitem(mov_target) + beauty_active = !is_item || isturf(mov_target.loc) + if(!beauty_counter[target]) + if(is_item) + RegisterSignal(mov_target, COMSIG_MOVABLE_MOVED, PROC_REF(on_item_moved)) + if(beauty_active) + mov_target.become_area_sensitive(BEAUTY_ELEMENT_TRAIT) + RegisterSignal(mov_target, COMSIG_ENTER_AREA, PROC_REF(enter_area)) + RegisterSignal(mov_target, COMSIG_EXIT_AREA, PROC_REF(exit_area)) beauty_counter[target]++ - var/area/current_area = get_area(target) - if(current_area && !current_area.outdoors) + if(current_area && !current_area.outdoors && beauty_active) current_area.totalbeauty += beauty current_area.update_beauty() /datum/element/beauty/proc/enter_area(datum/source, area/new_area) SIGNAL_HANDLER - if(new_area.outdoors) + if(new_area.outdoors || HAS_TRAIT(source, TRAIT_BEAUTY_APPLIED)) return new_area.totalbeauty += beauty * beauty_counter[source] new_area.update_beauty() + ADD_TRAIT(source, TRAIT_BEAUTY_APPLIED, INNATE_TRAIT) /datum/element/beauty/proc/exit_area(datum/source, area/old_area) SIGNAL_HANDLER - if(old_area.outdoors) + if(old_area.outdoors || !HAS_TRAIT(source, TRAIT_BEAUTY_APPLIED)) return old_area.totalbeauty -= beauty * beauty_counter[source] old_area.update_beauty() + REMOVE_TRAIT(source, TRAIT_BEAUTY_APPLIED, INNATE_TRAIT) -/datum/element/beauty/Detach(datum/source) +///Items only contribute to beauty while not inside other objects or mobs (e.g on the floor, on a table etc.). +/datum/element/beauty/proc/on_item_moved(obj/item/source, atom/old_loc, direction, forced) + SIGNAL_HANDLER + + var/is_old_turf = isturf(old_loc) + if(!is_old_turf && isturf(source.loc)) + source.become_area_sensitive(BEAUTY_ELEMENT_TRAIT) + RegisterSignal(source, COMSIG_ENTER_AREA, PROC_REF(enter_area), TRUE) + RegisterSignal(source, COMSIG_EXIT_AREA, PROC_REF(exit_area), TRUE) + enter_area(source, get_area(source.loc)) + else if(is_old_turf && !isturf(source.loc)) + source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT) + UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA)) + exit_area(source, get_area(old_loc)) + +/datum/element/beauty/Detach(atom/source) if(!beauty_counter[source]) return ..() - var/area/current_area = get_area(source) - if(QDELETED(source)) - . = ..() - UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA)) - if(current_area) - exit_area(source, current_area) - beauty_counter -= source - var/atom/movable/movable_source = source - if(istype(movable_source)) - movable_source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT) - else //lower the 'counter' down by one, update the area, and call parent if it's reached zero. + + var/area/current_area = (!isitem(source) || isturf(source.loc)) ? get_area(source) : null + if(!QDELETED(source))//lower the 'counter' down by one, update the area, and call parent if it's reached zero. beauty_counter[source]-- if(current_area && !current_area.outdoors) current_area.totalbeauty -= beauty current_area.update_beauty() - if(!beauty_counter[source]) - . = ..() - UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA)) - beauty_counter -= source - var/atom/movable/movable_source = source - if(istype(movable_source)) - movable_source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT) + if(beauty_counter[source]) + return + else if(current_area) + exit_area(source, current_area) + + UnregisterSignal(source, list(COMSIG_ENTER_AREA, COMSIG_EXIT_AREA, COMSIG_MOVABLE_MOVED)) + beauty_counter -= source + var/atom/movable/movable_source = source + if(istype(movable_source)) + movable_source.lose_area_sensitivity(BEAUTY_ELEMENT_TRAIT) diff --git a/code/datums/elements/chewable.dm b/code/datums/elements/chewable.dm index d520597f4310b..fb1d1e995b2b6 100644 --- a/code/datums/elements/chewable.dm +++ b/code/datums/elements/chewable.dm @@ -22,6 +22,10 @@ var/obj/item/target_item = target if (metabolization_amount) + // this prevents microdosing which causes the reagent to enter and then delete itself before it can be processed + if(metabolization_amount < REAGENTS_METABOLISM) + CRASH("Attatching /datum/element/chewable to [target] requires metabolization_amount to be higher than [REAGENTS_METABOLISM]u. The amount used was [metabolization_amount]u!") + src.metabolization_amount = metabolization_amount src.slots_to_check = slots_to_check || target_item.slot_flags diff --git a/code/datums/elements/cuffsnapping.dm b/code/datums/elements/cuffsnapping.dm index df445f4acc971..1abdc4a7a6bd2 100644 --- a/code/datums/elements/cuffsnapping.dm +++ b/code/datums/elements/cuffsnapping.dm @@ -42,13 +42,20 @@ src.snap_time_strong = snap_time_strong RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(target, COMSIG_ITEM_ATTACK , PROC_REF(try_cuffsnap_target)) + RegisterSignal(target, COMSIG_ITEM_ATTACK_SECONDARY, PROC_REF(try_cuffsnap_target)) + RegisterSignal(target, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET, PROC_REF(add_item_context)) /datum/element/cuffsnapping/Detach(datum/target) - UnregisterSignal(target, list(COMSIG_ITEM_ATTACK, COMSIG_ATOM_EXAMINE)) - + UnregisterSignal(target, list(COMSIG_ITEM_ATTACK_SECONDARY, COMSIG_ATOM_EXAMINE, COMSIG_ITEM_REQUESTING_CONTEXT_FOR_TARGET)) return ..() +/datum/element/cuffsnapping/proc/add_item_context(obj/item/source, list/context, mob/living/carbon/target, mob/living/user) + SIGNAL_HANDLER + if(!iscarbon(target) || !target.handcuffed) + return NONE + context[SCREENTIP_CONTEXT_RMB] = "Cut Restraints" + return CONTEXTUAL_SCREENTIP_SET + ///signal called on parent being examined /datum/element/cuffsnapping/proc/on_examine(datum/target, mob/user, list/examine_list) SIGNAL_HANDLER @@ -56,7 +63,7 @@ var/examine_string if(isnull(snap_time_weak)) return - examine_string = "It looks like it could cut zipties or cable restraints off someone in [snap_time_weak] seconds" + examine_string = "It looks like it could be used to cut zipties or cable restraints off someone in [snap_time_weak] seconds" if(!isnull(snap_time_strong)) examine_string += ", and handcuffs in [snap_time_strong] seconds." @@ -65,7 +72,7 @@ examine_list += span_notice(examine_string) -/datum/element/cuffsnapping/proc/try_cuffsnap_target(obj/item/cutter, mob/living/carbon/target, mob/cutter_user, params) +/datum/element/cuffsnapping/proc/try_cuffsnap_target(obj/item/cutter, mob/living/carbon/target, mob/living/cutter_user, params) SIGNAL_HANDLER if(!istype(target)) //we aren't the kind of mob that can even have cuffs, so we skip. diff --git a/code/datums/elements/dryable.dm b/code/datums/elements/dryable.dm index d66ea96d8c1f1..583c74764eec9 100644 --- a/code/datums/elements/dryable.dm +++ b/code/datums/elements/dryable.dm @@ -22,10 +22,13 @@ /datum/element/dryable/proc/finish_drying(atom/source, datum/weakref/drying_user) SIGNAL_HANDLER + var/static/list/dried_color + if (isnull(dried_color)) + dried_color = color_transition_filter(COLOR_DRIED_TAN) var/atom/dried_atom = source if(dry_result == dried_atom.type)//if the dried type is the same as our currrent state, don't bother creating a whole new item, just re-color it. var/atom/movable/resulting_atom = dried_atom - resulting_atom.add_atom_colour(COLOR_DRIED_TAN, FIXED_COLOUR_PRIORITY) + resulting_atom.add_atom_colour(dried_color, FIXED_COLOUR_PRIORITY) apply_dried_status(resulting_atom, drying_user) return else if(isstack(source)) //Check if its a sheet diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm index fbaf638bdd520..90787f8581798 100644 --- a/code/datums/elements/embed.dm +++ b/code/datums/elements/embed.dm @@ -98,12 +98,16 @@ * That's awful, and it'll limit us to drop-deletable shrapnels in the worry of stuff like * arrows and harpoons being embeddable even when not let loose by their weapons. */ -/datum/element/embed/proc/check_embed_projectile(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked) +/datum/element/embed/proc/check_embed_projectile(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked, pierce_hit) SIGNAL_HANDLER + if (pierce_hit) + return + if(!source.can_embed_into(hit) || blocked) Detach(source) return // we don't care + var/payload_type = source.shrapnel_type var/obj/item/payload = new payload_type(get_turf(hit)) payload.set_embed(source.get_embed()) diff --git a/code/datums/elements/fish_safe_storage.dm b/code/datums/elements/fish_safe_storage.dm index bb7864ced0e6a..ec5c59848646d 100644 --- a/code/datums/elements/fish_safe_storage.dm +++ b/code/datums/elements/fish_safe_storage.dm @@ -22,7 +22,7 @@ /datum/element/fish_safe_storage/Detach(atom/source) for(var/obj/item/fish/fish in source) tracked_fish -= fish - fish.exit_stasis() + REMOVE_TRAIT(fish, TRAIT_FISH_STASIS, REF(src)) UnregisterSignal(source, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_EXITED, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON)) return ..() @@ -30,19 +30,19 @@ SIGNAL_HANDLER if(isfish(arrived)) tracked_fish |= arrived - arrived.enter_stasis() + ADD_TRAIT(arrived, TRAIT_FISH_STASIS, REF(src)) /datum/element/fish_safe_storage/proc/on_init_on(datum/source, obj/item/fish/created) SIGNAL_HANDLER if(isfish(created) && !QDELETED(created)) tracked_fish |= created - created.enter_stasis() + ADD_TRAIT(created, TRAIT_FISH_STASIS, REF(src)) /datum/element/fish_safe_storage/proc/on_exit(datum/source, obj/item/fish/gone) SIGNAL_HANDLER if(isfish(gone)) tracked_fish -= gone - gone.exit_stasis() + REMOVE_TRAIT(gone, TRAIT_FISH_STASIS, REF(src)) /datum/element/fish_safe_storage/process(seconds_per_tick) for(var/obj/item/fish/fish as anything in tracked_fish) diff --git a/code/datums/elements/food/fried_item.dm b/code/datums/elements/food/fried_item.dm index bc21e51f24cd7..7f8613a537f70 100644 --- a/code/datums/elements/food/fried_item.dm +++ b/code/datums/elements/food/fried_item.dm @@ -2,18 +2,21 @@ /datum/element/fried_item /// List of colors to apply the element target. /// Each index corresponds to a different level. - var/static/list/fried_colors = list( - COLOR_LIGHT_BROWN, - COLOR_BROWNER_BROWN, - COLOR_DARKER_BROWN, - COLOR_BLACK, - ) + var/static/list/fried_colors /datum/element/fried_item/Attach(datum/target, fry_time) . = ..() if(!isatom(target)) return ELEMENT_INCOMPATIBLE + if (isnull(fried_colors)) + fried_colors = list( + color_transition_filter(COLOR_LIGHT_BROWN, SATURATION_OVERRIDE), + color_transition_filter(COLOR_BROWNER_BROWN, SATURATION_OVERRIDE), + color_transition_filter(COLOR_DARKER_BROWN, SATURATION_OVERRIDE), + color_transition_filter(COLOR_BLACK, SATURATION_OVERRIDE), + ) + var/atom/this_food = target switch(fry_time) diff --git a/code/datums/elements/footstep.dm b/code/datums/elements/footstep.dm index 698f7896a70b4..77a06dcdc4e96 100644 --- a/code/datums/elements/footstep.dm +++ b/code/datums/elements/footstep.dm @@ -1,5 +1,3 @@ -#define SHOULD_DISABLE_FOOTSTEPS(source) ((SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES))) || HAS_TRAIT(source, TRAIT_SILENT_FOOTSTEPS)) - ///Footstep element. Plays footsteps at parents location when it is appropriate. /datum/element/footstep element_flags = ELEMENT_DETACH_ON_HOST_DESTROY|ELEMENT_BESPOKE @@ -231,5 +229,3 @@ return playsound(source_loc, footstep_sounds, 50, falloff_distance = 1, vary = sound_vary) - -#undef SHOULD_DISABLE_FOOTSTEPS diff --git a/code/datums/elements/immerse.dm b/code/datums/elements/immerse.dm index d50ae906c0a55..4c57c40a79113 100644 --- a/code/datums/elements/immerse.dm +++ b/code/datums/elements/immerse.dm @@ -1,3 +1,10 @@ +/// A list of movables that shouldn't be affected by the element, either because it'd look bad or barely perceptible +GLOBAL_LIST_INIT(immerse_ignored_movable, typecacheof(list( + /obj/effect, + /mob/dead, + /obj/projectile, +))) + /** * A visual element that makes movables entering the attached turfs look immersed into that turf. * @@ -9,11 +16,6 @@ ///An association list of turfs that have this element attached and their affected contents. var/list/attached_turfs_and_movables = list() - /** - * A list of movables that shouldn't be affected by the element, either because it'd look bad - * or barely perceptible. - */ - var/static/list/movables_to_ignore ///A list of icons generated from a target and a mask, later used as appearances for the overlays. var/static/list/generated_immerse_icons = list() ///A list of instances of /atom/movable/immerse_overlay then used as visual overlays for the immersed movables. @@ -32,16 +34,6 @@ if(!isturf(target) || !icon || !icon_state || !mask_icon) return ELEMENT_INCOMPATIBLE - if(isnull(movables_to_ignore)) - movables_to_ignore = typecacheof(list( - /obj/effect, - /mob/dead, - /obj/projectile, - )) - - movables_to_ignore += GLOB.WALLITEMS_INTERIOR - movables_to_ignore += GLOB.WALLITEMS_EXTERIOR - src.icon = icon src.icon_state = icon_state src.color = color @@ -109,11 +101,15 @@ SIGNAL_HANDLER if(QDELETED(movable)) return - if(HAS_TRAIT(movable, TRAIT_IMMERSED)) + if(HAS_TRAIT(movable, TRAIT_IMMERSED) || HAS_TRAIT(movable, TRAIT_WALLMOUNTED)) + return + if(!ISINRANGE(movable.plane, MUTATE_PLANE(FLOOR_PLANE, source), MUTATE_PLANE(GAME_PLANE, source))) return - if(movable.layer >= ABOVE_ALL_MOB_LAYER || !ISINRANGE(movable.plane, MUTATE_PLANE(FLOOR_PLANE, source), MUTATE_PLANE(GAME_PLANE, source))) + var/layer_to_check = IS_TOPDOWN_PLANE(source.plane) ? TOPDOWN_ABOVE_WATER_LAYER : ABOVE_ALL_MOB_LAYER + //First, floor plane objects use TOPDOWN_LAYER, second this check shouldn't apply to them anyway. + if(movable.layer >= layer_to_check) return - if(is_type_in_typecache(movable, movables_to_ignore)) + if(is_type_in_typecache(movable, GLOB.immerse_ignored_movable)) return var/atom/movable/buckled @@ -145,7 +141,9 @@ var/width = icon_dimensions["width"] || ICON_SIZE_X var/height = icon_dimensions["height"] || ICON_SIZE_Y - var/is_below_water = movable.layer < WATER_LEVEL_LAYER ? "underwater-" : "" + ///This determines if the overlay should cover the entire surface of the object or not + var/layer_to_check = IS_TOPDOWN_PLANE(movable.plane) ? TOPDOWN_WATER_LEVEL_LAYER : WATER_LEVEL_LAYER + var/is_below_water = (movable.layer < layer_to_check) ? "underwater-" : "" var/atom/movable/immerse_overlay/vis_overlay = generated_visual_overlays["[is_below_water][width]x[height]"] diff --git a/code/datums/elements/kneecapping.dm b/code/datums/elements/kneecapping.dm index 977268e94a10b..49b77acedd72b 100644 --- a/code/datums/elements/kneecapping.dm +++ b/code/datums/elements/kneecapping.dm @@ -78,15 +78,16 @@ attacker.visible_message(span_warning("[attacker] carefully aims [attacker.p_their()] [weapon] for a swing at [target]'s kneecaps!"), span_danger("You carefully aim \the [weapon] for a swing at [target]'s kneecaps!")) log_combat(attacker, target, "started aiming a swing to break the kneecaps of", weapon) - if(do_after(attacker, 3 SECONDS, target, interaction_key = weapon)) - attacker.visible_message(span_warning("[attacker] swings [attacker.p_their()] [weapon] at [target]'s kneecaps!"), span_danger("You swing \the [weapon] at [target]'s kneecaps!")) - - var/min_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_SEVERE, return_value_if_no_wound = 30, wound_source = weapon) - var/max_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_CRITICAL, return_value_if_no_wound = 50, wound_source = weapon) - - leg.receive_damage(brute = weapon.force, wound_bonus = rand(min_wound, max_wound + 10), damage_source = "kneecapping") - target.emote("scream") - log_combat(attacker, target, "broke the kneecaps of", weapon) - target.update_damage_overlays() - attacker.do_attack_animation(target, used_item = weapon) - playsound(source = get_turf(weapon), soundin = weapon.hitsound, vol = weapon.get_clamped_volume(), vary = TRUE) + if(!do_after(attacker, 3 SECONDS, target, interaction_key = weapon)) + return + + attacker.visible_message(span_warning("[attacker] swings [attacker.p_their()] [weapon] at [target]'s kneecaps!"), span_danger("You swing \the [weapon] at [target]'s kneecaps!")) + + var/min_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_SEVERE, return_value_if_no_wound = 30, wound_source = weapon) + var/max_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_CRITICAL, return_value_if_no_wound = 50, wound_source = weapon) + + target.apply_damage(weapon.force, weapon.damtype, leg, wound_bonus = rand(min_wound, max_wound + 10), attacking_item = weapon) + target.emote("scream") + log_combat(attacker, target, "broke the kneecaps of", weapon) + attacker.do_attack_animation(target, used_item = weapon) + playsound(source = weapon, soundin = weapon.hitsound, vol = weapon.get_clamped_volume(), vary = TRUE) diff --git a/code/datums/elements/lazy_fishing_spot.dm b/code/datums/elements/lazy_fishing_spot.dm deleted file mode 100644 index 67edcea2e88ed..0000000000000 --- a/code/datums/elements/lazy_fishing_spot.dm +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Lazy fishing spot element so fisheable turfs do not have a component each since - * they're usually pretty common on their respective maps (lava/water/etc) - */ -/datum/element/lazy_fishing_spot - element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH_ON_HOST_DESTROY // Detach for turfs - argument_hash_start_idx = 2 - var/configuration - -/datum/element/lazy_fishing_spot/Attach(datum/target, configuration) - . = ..() - if(!isatom(target)) - return ELEMENT_INCOMPATIBLE - if(!ispath(configuration, /datum/fish_source) || configuration == /datum/fish_source) - CRASH("Lazy fishing spot has incorrect configuration passed in: [configuration].") - src.configuration = configuration - ADD_TRAIT(target, TRAIT_FISHING_SPOT, REF(src)) - RegisterSignal(target, COMSIG_PRE_FISHING, PROC_REF(create_fishing_spot)) - RegisterSignal(target, COMSIG_NPC_FISHING, PROC_REF(return_glob_fishing_spot)) - RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined)) - RegisterSignal(target, COMSIG_ATOM_EXAMINE_MORE, PROC_REF(on_examined_more)) - RegisterSignal(target, COMSIG_ATOM_EX_ACT, PROC_REF(explosive_fishing)) - RegisterSignal(target, COMSIG_FISH_RELEASED_INTO, PROC_REF(fish_released)) - RegisterSignal(target, COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), PROC_REF(link_to_fish_porter)) - -/datum/element/lazy_fishing_spot/Detach(datum/target) - UnregisterSignal(target, list( - COMSIG_FISH_RELEASED_INTO, - COMSIG_PRE_FISHING, - COMSIG_NPC_FISHING, - COMSIG_ATOM_EXAMINE, - COMSIG_ATOM_EXAMINE_MORE, - COMSIG_ATOM_EX_ACT, - COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), - )) - REMOVE_TRAIT(target, TRAIT_FISHING_SPOT, REF(src)) - return ..() - -/datum/element/lazy_fishing_spot/proc/create_fishing_spot(datum/source) - SIGNAL_HANDLER - - source.AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[configuration]) - Detach(source) - -///If the fish source has fishes that are shown in the -/datum/element/lazy_fishing_spot/proc/on_examined(datum/source, mob/user, list/examine_text) - SIGNAL_HANDLER - if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT)) - return - - var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration] - - if(!fish_source.has_known_fishes()) - return - - examine_text += span_tinynoticeital("This is a fishing spot. You can look again to list its fishes...") - -/datum/element/lazy_fishing_spot/proc/on_examined_more(datum/source, mob/user, list/examine_text) - SIGNAL_HANDLER - if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT)) - return - - var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration] - fish_source.get_catchable_fish_names(user, source, examine_text) - -/datum/element/lazy_fishing_spot/proc/explosive_fishing(atom/location, severity) - SIGNAL_HANDLER - var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration] - fish_source.spawn_reward_from_explosion(location, severity) - -/datum/element/lazy_fishing_spot/proc/return_glob_fishing_spot(datum/source, list/fish_spot_container) - fish_spot_container[NPC_FISHING_SPOT] = GLOB.preset_fish_sources[configuration] - -/datum/element/lazy_fishing_spot/proc/link_to_fish_porter(atom/source, mob/user, obj/item/multitool/tool) - SIGNAL_HANDLER - if(!istype(tool.buffer, /obj/machinery/fishing_portal_generator)) - return - var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration] - var/obj/machinery/fishing_portal_generator/portal = tool.buffer - return portal.link_fishing_spot(fish_source, source, user) - -/datum/element/lazy_fishing_spot/proc/fish_released(datum/source, obj/item/fish/fish, mob/living/releaser) - SIGNAL_HANDLER - var/datum/fish_source/fish_source = GLOB.preset_fish_sources[configuration] - fish_source.readd_fish(fish, releaser) diff --git a/code/datums/elements/organ_set_bonus.dm b/code/datums/elements/organ_set_bonus.dm index 118c64fbeafa4..a8d1d3c7ad736 100644 --- a/code/datums/elements/organ_set_bonus.dm +++ b/code/datums/elements/organ_set_bonus.dm @@ -57,6 +57,10 @@ var/required_biotype = MOB_ORGANIC /// A list of traits added to the mob upon bonus activation, can be of any length. var/list/bonus_traits = list() + /// Bonus biotype to add on bonus activation. + var/bonus_biotype + /// If the biotype was added - used to check if we should remove the biotype or not, on organ set loss. + var/biotype_added = FALSE /// Limb overlay to apply upon activation var/limb_overlay /// Color priority for limb overlay @@ -80,10 +84,20 @@ if((required_biotype == MOB_ORGANIC) && !owner.can_mutate()) return FALSE bonus_active = TRUE + // Add traits if(length(bonus_traits)) owner.add_traits(bonus_traits, REF(src)) + + // Add biotype + if(owner.mob_biotypes & bonus_biotype) + biotype_added = FALSE + owner.mob_biotypes |= bonus_biotype + biotype_added = TRUE + if(bonus_activate_text) to_chat(owner, bonus_activate_text) + + // Add limb overlay if(!iscarbon(owner) || !limb_overlay) return TRUE var/mob/living/carbon/carbon_owner = owner @@ -96,10 +110,18 @@ /datum/status_effect/organ_set_bonus/proc/disable_bonus() SHOULD_CALL_PARENT(TRUE) bonus_active = FALSE + + // Remove traits if(length(bonus_traits)) owner.remove_traits(bonus_traits, REF(src)) + // Remove biotype (if added) + if(biotype_added) + owner.mob_biotypes &= ~bonus_biotype + if(bonus_deactivate_text) to_chat(owner, bonus_deactivate_text) + + // Remove limb overlay if(!iscarbon(owner) || QDELETED(owner) || !limb_overlay) return var/mob/living/carbon/carbon_owner = owner diff --git a/code/datums/elements/projectile_drop.dm b/code/datums/elements/projectile_drop.dm index 36e189d6c3aeb..0b1992ef56097 100644 --- a/code/datums/elements/projectile_drop.dm +++ b/code/datums/elements/projectile_drop.dm @@ -28,8 +28,10 @@ //Just to be safe, knowing it won't be spawned multiple times. Detach(source) -/datum/element/projectile_drop/proc/spawn_drop_if_not_embeddable(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone) +/datum/element/projectile_drop/proc/spawn_drop_if_not_embeddable(obj/projectile/source, atom/movable/firer, atom/hit, angle, hit_zone, blocked, pierce_hit) SIGNAL_HANDLER + if (pierce_hit) + return if(source.can_embed_into(hit)) Detach(source) return diff --git a/code/datums/elements/ranged_armour.dm b/code/datums/elements/ranged_armour.dm index 6d1322c687b1a..de5ba61d22337 100644 --- a/code/datums/elements/ranged_armour.dm +++ b/code/datums/elements/ranged_armour.dm @@ -40,7 +40,7 @@ return ..() /// Modify or ignore bullet damage based on projectile properties -/datum/element/ranged_armour/proc/pre_bullet_impact(atom/parent, list/signal_args, obj/projectile/bullet) +/datum/element/ranged_armour/proc/pre_bullet_impact(atom/parent, obj/projectile/bullet) SIGNAL_HANDLER if (bullet.damage >= minimum_projectile_force || (bullet.damage_type in vulnerable_projectile_types)) return diff --git a/code/datums/elements/relay_attackers.dm b/code/datums/elements/relay_attackers.dm index fd87cb3bc2c8e..5b7202608ec0b 100644 --- a/code/datums/elements/relay_attackers.dm +++ b/code/datums/elements/relay_attackers.dm @@ -60,7 +60,7 @@ relay_attacker(target, attacker, ATTACKER_DAMAGING_ATTACK) /// Even if another component blocked this hit, someone still shot at us -/datum/element/relay_attackers/proc/on_bullet_act(atom/target, list/bullet_args, obj/projectile/hit_projectile) +/datum/element/relay_attackers/proc/on_bullet_act(atom/target, obj/projectile/hit_projectile) SIGNAL_HANDLER if(!hit_projectile.is_hostile_projectile()) return diff --git a/code/datums/elements/selfknockback.dm b/code/datums/elements/selfknockback.dm index d330b30debc1a..416240b7cfd33 100644 --- a/code/datums/elements/selfknockback.dm +++ b/code/datums/elements/selfknockback.dm @@ -47,15 +47,15 @@ clamping the Knockback_Force value below. */ usertarget.throw_at(move_target, knockback_force, knockback_speed) usertarget.visible_message(span_warning("[usertarget] gets thrown back by the force of \the [I] impacting \the [attacktarget]!"), span_warning("The force of \the [I] impacting \the [attacktarget] sends you flying!")) -/datum/element/selfknockback/proc/Projectile_SelfKnockback(obj/projectile/P) +/datum/element/selfknockback/proc/Projectile_SelfKnockback(obj/projectile/proj) SIGNAL_HANDLER - if(!P.firer) + if(!proj.firer) return - var/knockback_force = Get_Knockback_Force(clamp(CEILING((P.damage / 10), 1), 1, 5)) + var/knockback_force = Get_Knockback_Force(clamp(CEILING((proj.damage / 10), 1), 1, 5)) var/knockback_speed = Get_Knockback_Speed(clamp(knockback_force, 1, 5)) - var/atom/movable/knockback_target = P.firer - var/move_target = get_edge_target_turf(knockback_target, angle2dir(P.original_angle+180)) + var/atom/movable/knockback_target = proj.firer + var/move_target = get_edge_target_turf(knockback_target, angle2dir(proj.original_angle+180)) knockback_target.throw_at(move_target, knockback_force, knockback_speed) diff --git a/code/datums/elements/tenacious.dm b/code/datums/elements/tenacious.dm index 4d906812c13ab..35dd5774cf4be 100644 --- a/code/datums/elements/tenacious.dm +++ b/code/datums/elements/tenacious.dm @@ -18,6 +18,9 @@ /datum/element/tenacious/Detach(datum/target) UnregisterSignal(target, COMSIG_MOB_STATCHANGE) REMOVE_TRAIT(target, TRAIT_TENACIOUS, ELEMENT_TRAIT(type)) + var/mob/living/carbon/human/valid_target = target + if(valid_target.remove_movespeed_modifier(/datum/movespeed_modifier/tenacious)) + valid_target.balloon_alert(valid_target, "your tenacity wears off") return ..() ///signal called by the stat of the target changing @@ -27,6 +30,5 @@ if(new_stat == SOFT_CRIT) target.balloon_alert(target, "your tenacity kicks in") target.add_movespeed_modifier(/datum/movespeed_modifier/tenacious) - else + else if(target.remove_movespeed_modifier(/datum/movespeed_modifier/tenacious)) target.balloon_alert(target, "your tenacity wears off") - target.remove_movespeed_modifier(/datum/movespeed_modifier/tenacious) diff --git a/code/datums/elements/update_icon_updates_onmob.dm b/code/datums/elements/update_icon_updates_onmob.dm index cfbf16317fa5e..69346949c596e 100644 --- a/code/datums/elements/update_icon_updates_onmob.dm +++ b/code/datums/elements/update_icon_updates_onmob.dm @@ -25,5 +25,3 @@ M.update_held_items() else M.update_clothing((target.slot_flags|update_flags)) - if(update_body) - M.update_body() diff --git a/code/datums/elements/watery_tile.dm b/code/datums/elements/watery_tile.dm index 36e893fe0fc3c..878253a89692f 100644 --- a/code/datums/elements/watery_tile.dm +++ b/code/datums/elements/watery_tile.dm @@ -54,6 +54,6 @@ duration = STATUS_EFFECT_PERMANENT status_type = STATUS_EFFECT_UNIQUE -/datum/status_effect/washing_regen/tick(seconds_between_ticks) +/datum/status_effect/watery_tile_wetness/tick(seconds_between_ticks) . = ..() owner.adjust_wet_stacks(1) diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm index bdc2a7d2928c5..54ea9f4185756 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm @@ -276,11 +276,6 @@ icon_file = 'icons/mob/inhands/clothing/suits_righthand.dmi' json_config = 'code/datums/greyscale/json_configs/jumpsuit_prison_inhand.json' -/datum/greyscale_config/jumpsuit/worn_digi - name = "Jumpsuit Worn (Digitigrate)" - icon_file = 'icons/mob/clothing/under/digi_template.dmi' - json_config = 'code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json' - /datum/greyscale_config/eth_tunic name = "Ethereal Tunic" icon_file = 'icons/obj/clothing/under/ethereal.dmi' @@ -627,6 +622,14 @@ name = "Waistcoat (Worn)" icon_file = 'icons/mob/clothing/accessories.dmi' +// Digi Stuff + +/datum/greyscale_config/digitigrade + name = "Digitigrade Clothes" + icon_file = 'icons/mob/clothing/digi_template.dmi' + json_config = 'code/datums/greyscale/json_configs/digitigrade.json' + + // // SUIT + HEAD // (Specifically for toggleable suits with hats, i.e. winter coats) diff --git a/code/datums/greyscale/json_configs/digitigrade.json b/code/datums/greyscale/json_configs/digitigrade.json new file mode 100644 index 0000000000000..899dff334e423 --- /dev/null +++ b/code/datums/greyscale/json_configs/digitigrade.json @@ -0,0 +1,39 @@ +{ + "jumpsuit_worn": [ + { + "type": "icon_state", + "icon_state": "jumpsuit", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "oversuit_worn": [ + { + "type": "icon_state", + "icon_state": "oversuit", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "sneakers_worn": [ + { + "type": "icon_state", + "icon_state": "shoes_colored", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "shoes_uncolored", + "blend_mode": "overlay" + } + ], + "boots_worn": [ + { + "type": "icon_state", + "icon_state": "boots", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json b/code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json deleted file mode 100644 index 9aa201cece3c1..0000000000000 --- a/code/datums/greyscale/json_configs/jumpsuit_worn_digilegs.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "": [ - { - "type": "icon_state", - "icon_state": "jumpsuit", - "blend_mode": "overlay", - "color_ids": [ 1 ] - } - ] -} diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 84889ad6bd931..ceaa53e045523 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -1,15 +1,16 @@ -/mob/eye/ai_eye/remote/holo/setLoc(turf/destination, force_update = FALSE) +/mob/eye/camera/remote/holo/setLoc(turf/destination, force_update = FALSE) // If we're moving outside the space of our projector, then just... don't - var/obj/machinery/holopad/H = origin - if(!H?.move_hologram(eye_user, destination)) + var/obj/machinery/holopad/H = origin_ref?.resolve() + if(!H?.move_hologram(user_ref?.resolve(), destination)) sprint = initial(sprint) // Reset sprint so it doesn't balloon in our calling proc return return ..() /obj/machinery/holopad/remove_eye_control(mob/living/user) - if(user.client) - user.reset_perspective(null) - user.remote_control = null + var/mob/eye/camera/remote/eye = user.remote_control + if(!istype(eye)) + CRASH("Attempted to remove eye control from non-camera eye. Something has gone horribly wrong.") + eye.assign_user(null) //this datum manages its own references @@ -24,7 +25,7 @@ var/list/dialed_holopads ///user's eye, once connected - var/mob/eye/ai_eye/remote/holo/eye + var/mob/eye/camera/remote/holo/eye ///user's hologram, once connected var/obj/effect/overlay/holo_pad_hologram/hologram ///hangup action @@ -155,15 +156,8 @@ hologram = answering_holopad.activate_holo(user) hologram.HC = src - //eyeobj code is horrid, this is the best copypasta I could make - eye = new - eye.origin = answering_holopad - eye.eye_initialized = TRUE - eye.eye_user = user - eye.name = "Camera Eye ([user.name])" - user.remote_control = eye - user.reset_perspective(eye) - eye.setLoc(answering_holopad.loc) + eye = new(get_turf(answering_holopad), answering_holopad) + eye.assign_user(user) hangup = new(eye, src) hangup.Grant(user) diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index d0ad6544ca6e6..1dc2e69f2ca84 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -174,7 +174,7 @@ if(!each_once) . = play_from while(!isfile(.) && !isnull(.)) - . = pick_weight(.) + . = pick_weight_recursive(.) return . if(in_order) @@ -192,7 +192,7 @@ // Tree is a list of lists containign files // If an entry in the tree goes to 0 length, we cut it from the list tree += list(.) - . = pick_weight(.) + . = pick_weight_recursive(.) if(!isfile(.)) return diff --git a/code/datums/looping_sounds/changeling_absorb.dm b/code/datums/looping_sounds/changeling_absorb.dm new file mode 100644 index 0000000000000..418c2a8dacf54 --- /dev/null +++ b/code/datums/looping_sounds/changeling_absorb.dm @@ -0,0 +1,14 @@ +/datum/looping_sound/changeling_absorb + mid_sounds = list( + 'sound/effects/changeling_absorb/changeling_absorb1.ogg' = 1, + 'sound/effects/changeling_absorb/changeling_absorb2.ogg' = 1, + 'sound/effects/changeling_absorb/changeling_absorb3.ogg' = 1, + 'sound/effects/changeling_absorb/changeling_absorb4.ogg' = 1, + 'sound/effects/changeling_absorb/changeling_absorb5.ogg' = 1, + 'sound/effects/changeling_absorb/changeling_absorb6.ogg' = 1, + 'sound/effects/changeling_absorb/changeling_absorb7.ogg' = 1, + ) + each_once = TRUE + mid_length = 3 SECONDS + volume = 80 + ignore_walls = FALSE diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index c4648a929b300..9e33a124e3b45 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -1,13 +1,17 @@ /datum/looping_sound/showering start_sound = 'sound/machines/shower/shower_start.ogg' start_length = 2 - mid_sounds = list('sound/machines/shower/shower_mid1.ogg' = 1, 'sound/machines/shower/shower_mid2.ogg' = 1, 'sound/machines/shower/shower_mid3.ogg' = 1) + mid_sounds = list( + 'sound/machines/shower/shower_mid1.ogg', + 'sound/machines/shower/shower_mid2.ogg', + 'sound/machines/shower/shower_mid3.ogg', + ) mid_length = 10 end_sound = 'sound/machines/shower/shower_end.ogg' volume = 20 /datum/looping_sound/supermatter - mid_sounds = list('sound/machines/sm/loops/calm.ogg' = 1) + mid_sounds = list('sound/machines/sm/loops/calm.ogg') mid_length = 60 volume = 40 extra_range = 25 @@ -16,14 +20,14 @@ vary = TRUE /datum/looping_sound/destabilized_crystal - mid_sounds = list('sound/machines/sm/loops/delamming.ogg' = 1) + mid_sounds = list('sound/machines/sm/loops/delamming.ogg') mid_length = 60 volume = 55 extra_range = 15 vary = TRUE /datum/looping_sound/hypertorus - mid_sounds = list('sound/machines/hypertorus/loops/hypertorus_nominal.ogg' = 1) + mid_sounds = list('sound/machines/hypertorus/loops/hypertorus_nominal.ogg') mid_length = 60 volume = 55 extra_range = 15 @@ -32,35 +36,41 @@ /datum/looping_sound/generator start_sound = 'sound/machines/generator/generator_start.ogg' start_length = 4 - mid_sounds = list('sound/machines/generator/generator_mid1.ogg' = 1, 'sound/machines/generator/generator_mid2.ogg' = 1, 'sound/machines/generator/generator_mid3.ogg' = 1) + mid_sounds = list( + 'sound/machines/generator/generator_mid1.ogg', + 'sound/machines/generator/generator_mid2.ogg', + 'sound/machines/generator/generator_mid3.ogg', + ) mid_length = 4 end_sound = 'sound/machines/generator/generator_end.ogg' volume = 40 - /datum/looping_sound/deep_fryer start_sound = 'sound/machines/fryer/deep_fryer_immerse.ogg' //my immersions start_length = 10 - mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) + mid_sounds = list( + 'sound/machines/fryer/deep_fryer_1.ogg', + 'sound/machines/fryer/deep_fryer_2.ogg', + ) mid_length = 2 end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg' volume = 15 /datum/looping_sound/clock - mid_sounds = list('sound/ambience/misc/ticking_clock.ogg' = 1) + mid_sounds = list('sound/ambience/misc/ticking_clock.ogg') mid_length = 40 volume = 50 ignore_walls = FALSE /datum/looping_sound/grill - mid_sounds = list('sound/machines/grill/grillsizzle.ogg' = 1) + mid_sounds = list('sound/machines/grill/grillsizzle.ogg') mid_length = 18 volume = 50 /datum/looping_sound/oven start_sound = 'sound/machines/oven/oven_loop_start.ogg' //my immersions start_length = 12 - mid_sounds = list('sound/machines/oven/oven_loop_mid.ogg' = 1) + mid_sounds = list('sound/machines/oven/oven_loop_mid.ogg') mid_length = 13 end_sound = 'sound/machines/oven/oven_loop_end.ogg' volume = 100 @@ -68,19 +78,25 @@ /datum/looping_sound/deep_fryer mid_length = 2 - mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) + mid_sounds = list( + 'sound/machines/fryer/deep_fryer_1.ogg', + 'sound/machines/fryer/deep_fryer_2.ogg', + ) volume = 30 /datum/looping_sound/microwave start_sound = 'sound/machines/microwave/microwave-start.ogg' start_length = 10 - mid_sounds = list('sound/machines/microwave/microwave-mid1.ogg' = 10, 'sound/machines/microwave/microwave-mid2.ogg' = 1) + mid_sounds = list( + 'sound/machines/microwave/microwave-mid1.ogg' = 10, + 'sound/machines/microwave/microwave-mid2.ogg' = 1, + ) mid_length = 10 end_sound = 'sound/machines/microwave/microwave-end.ogg' volume = 90 /datum/looping_sound/lathe_print - mid_sounds = list('sound/machines/lathe/lathe_print.ogg' = 1) + mid_sounds = list('sound/machines/lathe/lathe_print.ogg') mid_length = 20 volume = 50 vary = TRUE @@ -90,19 +106,19 @@ /datum/looping_sound/jackpot mid_length = 11 - mid_sounds = list('sound/machines/roulette/roulettejackpot.ogg' = 1) + mid_sounds = list('sound/machines/roulette/roulettejackpot.ogg') volume = 85 vary = TRUE /datum/looping_sound/server mid_sounds = list( - 'sound/machines/tcomms/tcomms_mid1.ogg' = 1, - 'sound/machines/tcomms/tcomms_mid2.ogg' = 1, - 'sound/machines/tcomms/tcomms_mid3.ogg' = 1, - 'sound/machines/tcomms/tcomms_mid4.ogg' = 1, - 'sound/machines/tcomms/tcomms_mid5.ogg' = 1, - 'sound/machines/tcomms/tcomms_mid6.ogg' = 1, - 'sound/machines/tcomms/tcomms_mid7.ogg' = 1, + 'sound/machines/tcomms/tcomms_mid1.ogg', + 'sound/machines/tcomms/tcomms_mid2.ogg', + 'sound/machines/tcomms/tcomms_mid3.ogg', + 'sound/machines/tcomms/tcomms_mid4.ogg', + 'sound/machines/tcomms/tcomms_mid5.ogg', + 'sound/machines/tcomms/tcomms_mid6.ogg', + 'sound/machines/tcomms/tcomms_mid7.ogg', ) mid_length = 1.8 SECONDS extra_range = -8 @@ -116,7 +132,10 @@ start_sound = 'sound/machines/computer/computer_start.ogg' start_length = 7.2 SECONDS start_volume = 10 - mid_sounds = list('sound/machines/computer/computer_mid1.ogg' = 1, 'sound/machines/computer/computer_mid2.ogg' = 1) + mid_sounds = list( + 'sound/machines/computer/computer_mid1.ogg', + 'sound/machines/computer/computer_mid2.ogg', + ) mid_length = 1.8 SECONDS end_sound = 'sound/machines/computer/computer_end.ogg' end_volume = 10 @@ -141,7 +160,12 @@ falloff_exponent = 20 /datum/looping_sound/firealarm - mid_sounds = list('sound/machines/fire_alarm/FireAlarm1.ogg' = 1,'sound/machines/fire_alarm/FireAlarm2.ogg' = 1,'sound/machines/fire_alarm/FireAlarm3.ogg' = 1,'sound/machines/fire_alarm/FireAlarm4.ogg' = 1) + mid_sounds = list( + 'sound/machines/fire_alarm/FireAlarm1.ogg', + 'sound/machines/fire_alarm/FireAlarm2.ogg', + 'sound/machines/fire_alarm/FireAlarm3.ogg', + 'sound/machines/fire_alarm/FireAlarm4.ogg', + ) mid_length = 2.4 SECONDS volume = 30 @@ -151,30 +175,30 @@ falloff_exponent = 5 /datum/looping_sound/boiling - mid_sounds = list('sound/effects/bubbles/bubbles2.ogg' = 1) + mid_sounds = list('sound/effects/bubbles/bubbles2.ogg') mid_length = 7 SECONDS volume = 25 /datum/looping_sound/typing mid_sounds = list( - 'sound/machines/terminal/terminal_button01.ogg' = 1, - 'sound/machines/terminal/terminal_button02.ogg' = 1, - 'sound/machines/terminal/terminal_button03.ogg' = 1, - 'sound/machines/terminal/terminal_button04.ogg' = 1, - 'sound/machines/terminal/terminal_button05.ogg' = 1, - 'sound/machines/terminal/terminal_button06.ogg' = 1, - 'sound/machines/terminal/terminal_button07.ogg' = 1, - 'sound/machines/terminal/terminal_button08.ogg' = 1, + 'sound/machines/terminal/terminal_button01.ogg', + 'sound/machines/terminal/terminal_button02.ogg', + 'sound/machines/terminal/terminal_button03.ogg', + 'sound/machines/terminal/terminal_button04.ogg', + 'sound/machines/terminal/terminal_button05.ogg', + 'sound/machines/terminal/terminal_button06.ogg', + 'sound/machines/terminal/terminal_button07.ogg', + 'sound/machines/terminal/terminal_button08.ogg', ) mid_length = 0.3 SECONDS /datum/looping_sound/soup mid_sounds = list( - 'sound/effects/soup_boil/soup_boil1.ogg' = 1, - 'sound/effects/soup_boil/soup_boil2.ogg' = 1, - 'sound/effects/soup_boil/soup_boil3.ogg' = 1, - 'sound/effects/soup_boil/soup_boil4.ogg' = 1, - 'sound/effects/soup_boil/soup_boil5.ogg' = 1, + 'sound/effects/soup_boil/soup_boil1.ogg', + 'sound/effects/soup_boil/soup_boil2.ogg', + 'sound/effects/soup_boil/soup_boil3.ogg', + 'sound/effects/soup_boil/soup_boil4.ogg', + 'sound/effects/soup_boil/soup_boil5.ogg', ) mid_length = 3 SECONDS volume = 80 diff --git a/code/datums/looping_sounds/projectiles.dm b/code/datums/looping_sounds/projectiles.dm index 6bc9a466ea144..ca96df698e921 100644 --- a/code/datums/looping_sounds/projectiles.dm +++ b/code/datums/looping_sounds/projectiles.dm @@ -1,4 +1,4 @@ /datum/looping_sound/moon_parade mid_sounds = list('sound/effects/moon_parade_soundloop.ogg' = 1) - mid_length = 0 + mid_length = 2 SECONDS volume = 20 diff --git a/code/datums/mind/initialization.dm b/code/datums/mind/initialization.dm index e3b3e8225dc7a..a09cb040dbe84 100644 --- a/code/datums/mind/initialization.dm +++ b/code/datums/mind/initialization.dm @@ -11,8 +11,10 @@ mind.set_current(src) // There's nowhere else to set this up, mind code makes me depressed mind.antag_hud = add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/antagonist_hud, "combo_hud", mind) + RegisterSignal(src, COMSIG_ADMIN_DELETING, PROC_REF(ghost_before_admin_delete), override = TRUE) SEND_SIGNAL(src, COMSIG_MOB_MIND_INITIALIZED, mind) + /mob/living/carbon/mind_initialize() ..() last_mind = mind @@ -35,3 +37,8 @@ . = ..() mind.set_assigned_role(SSjob.get_job_type(/datum/job/personal_ai)) mind.special_role = "" + +/// Signal proc for [COMSIG_ADMIN_DELETING], to ghostize a mob beforehand if an admin is manually deleting it. +/mob/proc/ghost_before_admin_delete(datum/source) + SIGNAL_HANDLER + ghostize(can_reenter_corpse = FALSE) diff --git a/code/datums/mood.dm b/code/datums/mood.dm index fe91e1db2c66c..d3f2ac70861e0 100644 --- a/code/datums/mood.dm +++ b/code/datums/mood.dm @@ -124,6 +124,10 @@ clear_mood_event(MOOD_CATEGORY_NUTRITION) return FALSE + if(HAS_TRAIT(mob_parent, TRAIT_GLUTTON)) + add_mood_event(MOOD_CATEGORY_NUTRITION, /datum/mood_event/hungry) //you'll never get enough + return TRUE + if(HAS_TRAIT(mob_parent, TRAIT_FAT) && !HAS_TRAIT(mob_parent, TRAIT_VORACIOUS)) add_mood_event(MOOD_CATEGORY_NUTRITION, /datum/mood_event/fat) return TRUE diff --git a/code/datums/mood_events/_mood_event.dm b/code/datums/mood_events/_mood_event.dm index a07dbe0d48e7b..8f31953380071 100644 --- a/code/datums/mood_events/_mood_event.dm +++ b/code/datums/mood_events/_mood_event.dm @@ -18,14 +18,14 @@ /// if false, it will be an overlay instead var/special_screen_replace = TRUE /// Owner of this mood event - var/mob/owner + var/mob/living/owner /// List of required jobs for this mood event var/list/required_job = list() -/datum/mood_event/New(mob/M, ...) - owner = M +/datum/mood_event/New(mob/living/emotional_mob, ...) + owner = emotional_mob var/list/params = args.Copy(2) - if ((length(required_job) > 0) && M.mind && !(M.mind.assigned_role.type in required_job)) + if ((length(required_job) > 0) && owner.mind && !(owner.mind.assigned_role.type in required_job)) qdel(src) return add_effects(arglist(params)) diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm index 434110ff27cc0..66f930fa7840e 100644 --- a/code/datums/mood_events/needs_events.dm +++ b/code/datums/mood_events/needs_events.dm @@ -71,15 +71,31 @@ timeout = 4 MINUTES //Generic needs events -/datum/mood_event/nice_shower +/datum/mood_event/shower description = "I have recently had a nice shower." mood_change = 4 timeout = 5 MINUTES -/datum/mood_event/shower_hater - description = "I hate being wet!" - mood_change = -2 - timeout = 3 MINUTES +/datum/mood_event/shower/add_effects(shower_reagent) + if(istype(shower_reagent, /datum/reagent/blood)) + if(HAS_TRAIT(owner, TRAIT_MORBID) || HAS_TRAIT(owner, TRAIT_EVIL) || (owner.mob_biotypes & MOB_UNDEAD)) + description = "The sensation of a lovely blood shower felt good." + mood_change = 6 // you sicko + else + description = "I have recently had a horrible shower raining blood!" + mood_change = -4 + timeout = 3 MINUTES + else if(istype(shower_reagent, /datum/reagent/water)) + if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)) + description = "I hate being wet!" + mood_change = -2 + timeout = 3 MINUTES + else + return // just normal clean shower + else // it's dirty ass water + description = "I have recently had a dirty shower!" + mood_change = -3 + timeout = 3 MINUTES /datum/mood_event/hot_spring description = "It's so relaxing to bathe in steamy water..." diff --git a/code/datums/mutations/_combined.dm b/code/datums/mutations/_combined.dm index 0a71b4bd4ca57..58970faba5151 100644 --- a/code/datums/mutations/_combined.dm +++ b/code/datums/mutations/_combined.dm @@ -31,12 +31,12 @@ /datum/generecipe/cindikinesis input_one = /datum/mutation/human/geladikinesis - input_two = /datum/mutation/human/firebreath + input_two = /datum/mutation/human/fire // fiery sweat NOT fiery breath result = /datum/mutation/human/cindikinesis /datum/generecipe/pyrokinesis input_one = /datum/mutation/human/cryokinesis - input_two = /datum/mutation/human/firebreath + input_two = /datum/mutation/human/fire // fiery sweat NOT fiery breath result = /datum/mutation/human/pyrokinesis /datum/generecipe/thermal_adaptation diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index d3627167cb507..d32c35a6239c5 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -171,7 +171,7 @@ var/obj/projectile/beam/laser/laser_eyes/LE = new(source.loc) LE.firer = source LE.def_zone = ran_zone(source.zone_selected) - LE.preparePixelProjectile(target, source, modifiers) + LE.aim_projectile(target, source, modifiers) INVOKE_ASYNC(LE, TYPE_PROC_REF(/obj/projectile, fire)) playsound(source, 'sound/items/weapons/taser2.ogg', 75, TRUE) diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 5197939d709f4..a154a4f30e659 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -98,7 +98,7 @@ /** * extra types for chameleon outfit changes, mostly guns * - * Format of this list is (typepath, typepath, typepath) + * Valid values are a single typepath or list of typepaths * * These are all added and returns in the list for get_chamelon_diguise_info proc */ diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm index b8b697c053bca..02281e2437a08 100644 --- a/code/datums/position_point_vector.dm +++ b/code/datums/position_point_vector.dm @@ -1,15 +1,11 @@ /proc/point_midpoint_points(datum/point/a, datum/point/b) //Obviously will not support multiZ calculations! Same for the two below. - var/datum/point/P = new - P.x = a.x + (b.x - a.x) * 0.5 - P.y = a.y + (b.y - a.y) * 0.5 - P.z = a.z - return P + return new /datum/point(_z = a.z, _pixel_x = (a.return_px() + b.return_px()) * 0.5, _pixel_y = (a.return_py() + b.return_py()) * 0.5) /proc/pixel_length_between_points(datum/point/a, datum/point/b) - return sqrt(((b.x - a.x) ** 2) + ((b.y - a.y) ** 2)) + return sqrt(((b.return_px() - a.return_px()) ** 2) + ((b.return_py() - a.return_py()) ** 2)) /proc/angle_between_points(datum/point/a, datum/point/b) - return ATAN2((b.y - a.y), (b.x - a.x)) + return ATAN2(b.return_py() - a.return_py(), b.return_px() - a.return_px()) /// For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. /datum/position @@ -29,8 +25,8 @@ _x = T.x _y = T.y _z = T.z - _pixel_x = P.return_px() - _pixel_y = P.return_py() + _pixel_x = P.pixel_x + _pixel_y = P.pixel_y else if(isatom(_x)) var/atom/A = _x _x = A.x @@ -61,6 +57,8 @@ var/x = 0 var/y = 0 var/z = 0 + var/pixel_x = 0 + var/pixel_y = 0 /datum/point/proc/valid() return x && y && z @@ -89,143 +87,88 @@ _pixel_y = A.pixel_y initialize_location(_x, _y, _z, _pixel_x, _pixel_y) -/datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) +/datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x, p_y) if(!isnull(tile_x)) - x = ((tile_x - 1) * ICON_SIZE_X) + ICON_SIZE_X * 0.5 + p_x + 1 + x = tile_x if(!isnull(tile_y)) - y = ((tile_y - 1) * ICON_SIZE_Y) + ICON_SIZE_Y * 0.5 + p_y + 1 + y = tile_y if(!isnull(tile_z)) z = tile_z + if(!isnull(p_x)) + var/x_offset = SIGNED_FLOOR_DIVISION(p_x, ICON_SIZE_X) + x += x_offset + pixel_x = p_x - x_offset * ICON_SIZE_X + if(!isnull(p_y)) + var/y_offset = SIGNED_FLOOR_DIVISION(p_y, ICON_SIZE_Y) + y += y_offset + pixel_y = p_y - y_offset * ICON_SIZE_Y + +/datum/point/proc/increment(p_x, p_y) + var/x_offset = SIGNED_FLOOR_DIVISION(p_x, ICON_SIZE_X) + x += x_offset + pixel_x += p_x - x_offset * ICON_SIZE_X + var/y_offset = SIGNED_FLOOR_DIVISION(p_y, ICON_SIZE_Y) + y += y_offset + pixel_y += p_y - y_offset * ICON_SIZE_Y /datum/point/proc/debug_out() var/turf/T = return_turf() - return "[text_ref(src)] aX [x] aY [y] aZ [z] pX [return_px()] pY [return_py()] mX [T.x] mY [T.y] mZ [T.z]" + return "[text_ref(src)] aX [x] aY [y] aZ [z] pX [pixel_x] pY [pixel_y] mX [T.x] mY [T.y] mZ [T.z]" /datum/point/proc/move_atom_to_src(atom/movable/AM) AM.forceMove(return_turf()) - AM.pixel_x = return_px() - AM.pixel_y = return_py() + AM.pixel_x = pixel_x + AM.pixel_y = pixel_y /datum/point/proc/return_turf() - return locate(CEILING(x / ICON_SIZE_X, 1), CEILING(y / ICON_SIZE_Y, 1), z) + return locate(x + SIGNED_FLOOR_DIVISION(pixel_x, ICON_SIZE_X), y + SIGNED_FLOOR_DIVISION(pixel_y, ICON_SIZE_Y), z) /datum/point/proc/return_coordinates() //[turf_x, turf_y, z] - return list(CEILING(x / ICON_SIZE_X, 1), CEILING(y / ICON_SIZE_Y, 1), z) + return list(x + SIGNED_FLOOR_DIVISION(pixel_x, ICON_SIZE_X), y + SIGNED_FLOOR_DIVISION(pixel_y, ICON_SIZE_Y), z) /datum/point/proc/return_position() return new /datum/position(src) /datum/point/proc/return_px() - return MODULUS(x, ICON_SIZE_X) - (ICON_SIZE_X/2) - 1 + return x * ICON_SIZE_X + pixel_x /datum/point/proc/return_py() - return MODULUS(y, ICON_SIZE_Y) - (ICON_SIZE_Y/2) - 1 + return y * ICON_SIZE_Y + pixel_y -/datum/point/vector - /// Pixels per iteration - var/speed = ICON_SIZE_ALL - var/iteration = 0 +/datum/vector + var/magnitude = 1 var/angle = 0 - /// Calculated x movement amounts to prevent having to do trig every step. - var/mpx = 0 - /// Calculated y movement amounts to prevent having to do trig every step. - var/mpy = 0 - var/starting_x = 0 //just like before, pixels from EDGE of map! This is set in initialize_location(). - var/starting_y = 0 - var/starting_z = 0 - -/datum/point/vector/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0, _angle, _speed, initial_increment = 0) - ..() - initialize_trajectory(_speed, _angle) - if(initial_increment) - increment(initial_increment) - -/datum/point/vector/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) - . = ..() - starting_x = x - starting_y = y - starting_z = z + // Calculated coordinate amounts to prevent having to do trig every step. + var/pixel_x = 0 + var/pixel_y = 0 + var/total_x = 0 + var/total_y = 0 -/// Same effect as initiliaze_location, but without setting the starting_x/y/z -/datum/point/vector/proc/set_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) - if(!isnull(tile_x)) - x = ((tile_x - 1) * ICON_SIZE_X) + ICON_SIZE_X * 0.5 + p_x + 1 - if(!isnull(tile_y)) - y = ((tile_y - 1) * ICON_SIZE_Y) + ICON_SIZE_Y * 0.5 + p_y + 1 - if(!isnull(tile_z)) - z = tile_z +/datum/vector/New(new_magnitude, new_angle) + . = ..() + initialize_trajectory(new_magnitude, new_angle) -/datum/point/vector/copy_to(datum/point/vector/v = new) - ..(v) - v.speed = speed - v.iteration = iteration - v.angle = angle - v.mpx = mpx - v.mpy = mpy - v.starting_x = starting_x - v.starting_y = starting_y - v.starting_z = starting_z - return v - -/datum/point/vector/proc/initialize_trajectory(pixel_speed, new_angle) - if(!isnull(pixel_speed)) - speed = pixel_speed +/datum/vector/proc/initialize_trajectory(new_magnitude, new_angle) + if(!isnull(new_magnitude)) + magnitude = new_magnitude set_angle(new_angle) /// Calculations use "byond angle" where north is 0 instead of 90, and south is 180 instead of 270. -/datum/point/vector/proc/set_angle(new_angle) +/datum/vector/proc/set_angle(new_angle) if(isnull(angle)) return angle = new_angle update_offsets() -/datum/point/vector/proc/update_offsets() - mpx = sin(angle) * speed - mpy = cos(angle) * speed - -/datum/point/vector/proc/set_speed(new_speed) - if(isnull(new_speed) || speed == new_speed) - return - speed = new_speed - update_offsets() +/datum/vector/proc/update_offsets() + pixel_x = sin(angle) + pixel_y = cos(angle) + total_x = pixel_x * magnitude + total_y = pixel_y * magnitude -/datum/point/vector/proc/increment(multiplier = 1) - iteration++ - x += mpx * (multiplier) - y += mpy * (multiplier) - -/datum/point/vector/proc/return_vector_after_increments(amount = 7, multiplier = 1, force_simulate = FALSE) - var/datum/point/vector/v = copy_to() - if(force_simulate) - for(var/i in 1 to amount) - v.increment(multiplier) - else - v.increment(multiplier * amount) - return v - -/datum/point/vector/proc/on_z_change() - return - -/datum/point/vector/processed //pixel_speed is per decisecond. - var/last_process = 0 - var/last_move = 0 - var/paused = FALSE - -/datum/point/vector/processed/Destroy() - STOP_PROCESSING(SSprojectiles, src) - return ..() - -/datum/point/vector/processed/proc/start() - last_process = world.time - last_move = world.time - START_PROCESSING(SSprojectiles, src) - -/datum/point/vector/processed/process() - if(paused) - last_move += world.time - last_process - last_process = world.time +/datum/vector/proc/set_speed(new_magnitude) + if(isnull(new_magnitude) || magnitude == new_magnitude) return - var/needed_time = world.time - last_move - last_process = world.time - last_move = world.time - increment(needed_time / SSprojectiles.wait) + magnitude = new_magnitude + total_x = pixel_x * magnitude + total_y = pixel_y * magnitude diff --git a/code/datums/proximity_monitor/fields/gravity.dm b/code/datums/proximity_monitor/fields/gravity.dm index 745072d69e10a..51a73978886e7 100644 --- a/code/datums/proximity_monitor/fields/gravity.dm +++ b/code/datums/proximity_monitor/fields/gravity.dm @@ -80,6 +80,7 @@ alpha = 200 /// our emissive appearance var/mutable_appearance/emissive + var/particles/particle_type /obj/gravity_fluff_field/Initialize(mapload, strength) . = ..() @@ -89,20 +90,22 @@ QUEUE_SMOOTH_NEIGHBORS(src) switch(strength) if(2 to INFINITY) - particles = new /particles/grav_field_down/strong() + particle_type = /particles/grav_field_down/strong if(1 to 2) - particles = new /particles/grav_field_down() + particle_type = /particles/grav_field_down if(0 to 1) - particles = new /particles/grav_field_float() + particle_type = /particles/grav_field_float if(-INFINITY to -1) - particles = new /particles/grav_field_up() - color = particles.color + particle_type = /particles/grav_field_up + if (particle_type) + add_shared_particles(/particles/grav_field_down/strong) + color = particle_type::color RegisterSignal(src, COMSIG_ATOM_SMOOTHED_ICON, PROC_REF(smoothed)) /obj/gravity_fluff_field/Destroy(force) - . = ..() - QDEL_NULL(particles) + remove_shared_particles(particle_type) emissive = null + return ..() /obj/gravity_fluff_field/proc/smoothed(datum/source) SIGNAL_HANDLER diff --git a/code/datums/proximity_monitor/fields/projectile_dampener.dm b/code/datums/proximity_monitor/fields/projectile_dampener.dm deleted file mode 100644 index fe23fe0be33e5..0000000000000 --- a/code/datums/proximity_monitor/fields/projectile_dampener.dm +++ /dev/null @@ -1,117 +0,0 @@ - -//Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second. -//Only use square radius for this! -/datum/proximity_monitor/advanced/projectile_dampener - var/static/image/edgeturf_south = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south") - var/static/image/edgeturf_north = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north") - var/static/image/edgeturf_west = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west") - var/static/image/edgeturf_east = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east") - var/static/image/northwest_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest") - var/static/image/southwest_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest") - var/static/image/northeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast") - var/static/image/southeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast") - var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic") - var/list/obj/projectile/tracked = list() - var/list/obj/projectile/staging = list() - // lazylist that keeps track of the overlays added to the edge of the field - var/list/edgeturf_effects - -/datum/proximity_monitor/advanced/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector) - ..() - RegisterSignal(projector, COMSIG_QDELETING, PROC_REF(on_projector_del)) - recalculate_field(full_recalc = TRUE) - START_PROCESSING(SSfastprocess, src) - -/datum/proximity_monitor/advanced/projectile_dampener/Destroy() - STOP_PROCESSING(SSfastprocess, src) - for(var/obj/projectile/projectile in tracked) - release_projectile(projectile) - return ..() - -/datum/proximity_monitor/advanced/projectile_dampener/recalculate_field(full_recalc) - full_recalc = TRUE // We always perform a full recalc because we need to update ALL the sprites - return ..() - -/datum/proximity_monitor/advanced/projectile_dampener/process() - var/list/ranged = list() - for(var/obj/projectile/projectile in range(current_range, get_turf(host))) - ranged += projectile - for(var/obj/projectile/projectile in tracked) - if(!(projectile in ranged) || !projectile.loc) - release_projectile(projectile) - -/datum/proximity_monitor/advanced/projectile_dampener/setup_edge_turf(turf/target) - . = ..() - var/image/overlay = get_edgeturf_overlay(get_edgeturf_direction(target)) - var/obj/effect/abstract/effect = new(target) // Makes the field visible to players. - effect.icon = overlay.icon - effect.icon_state = overlay.icon_state - effect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - effect.layer = ABOVE_ALL_MOB_LAYER - SET_PLANE(effect, ABOVE_GAME_PLANE, target) - LAZYSET(edgeturf_effects, target, effect) - -/datum/proximity_monitor/advanced/projectile_dampener/on_z_change(datum/source) - recalculate_field(full_recalc = TRUE) - -/datum/proximity_monitor/advanced/projectile_dampener/cleanup_edge_turf(turf/target) - . = ..() - var/obj/effect/abstract/effect = LAZYACCESS(edgeturf_effects, target) - LAZYREMOVE(edgeturf_effects, target) - if(effect) - qdel(effect) - -/datum/proximity_monitor/advanced/projectile_dampener/proc/get_edgeturf_overlay(direction) - switch(direction) - if(NORTH) - return edgeturf_north - if(SOUTH) - return edgeturf_south - if(EAST) - return edgeturf_east - if(WEST) - return edgeturf_west - if(NORTHEAST) - return northeast_corner - if(NORTHWEST) - return northwest_corner - if(SOUTHEAST) - return southeast_corner - if(SOUTHWEST) - return southwest_corner - else - return generic_edge - -/datum/proximity_monitor/advanced/projectile_dampener/proc/capture_projectile(obj/projectile/projectile) - if(projectile in tracked) - return - SEND_SIGNAL(src, COMSIG_DAMPENER_CAPTURE, projectile) - tracked += projectile - -/datum/proximity_monitor/advanced/projectile_dampener/proc/release_projectile(obj/projectile/projectile) - SEND_SIGNAL(src, COMSIG_DAMPENER_RELEASE, projectile) - tracked -= projectile - -/datum/proximity_monitor/advanced/projectile_dampener/proc/on_projector_del(datum/source) - SIGNAL_HANDLER - qdel(src) - -/datum/proximity_monitor/advanced/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) - if(isprojectile(movable) && get_dist(movable, host) > current_range) - if(movable in tracked) - release_projectile(movable) - -/datum/proximity_monitor/advanced/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location, turf/old_location) - if(isprojectile(movable)) - capture_projectile(movable) - -/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/process(seconds_per_tick) - for(var/mob/living/silicon/robot/borg in range(current_range, get_turf(host))) - if(!borg.has_buckled_mobs()) - continue - for(var/mob/living/buckled_mob in borg.buckled_mobs) - buckled_mob.visible_message(span_warning("[buckled_mob] is knocked off of [borg] by the charge in [borg]'s chassis induced by the hyperkinetic dampener field!")) //I know it's bad. - buckled_mob.Paralyze(1 SECONDS) - borg.unbuckle_mob(buckled_mob) - do_sparks(5, 0, buckled_mob) - ..() diff --git a/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm new file mode 100644 index 0000000000000..3185872efad4a --- /dev/null +++ b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener.dm @@ -0,0 +1,238 @@ +#define CHANGING_OFFSET "changing_offset" +#define OVERLAY_DATA "overlay_data" +#define STARTING_POSITION "starting_position" +#define ANIMATE_DAMPENER_TIME 1.5 SECONDS + +//Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second. +//Only use square radius for this! +/datum/proximity_monitor/advanced/projectile_dampener + edge_is_a_field = TRUE + var/static/list/effect_direction_images = list( + "[SOUTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south"), + "[NORTH]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north"), + "[WEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west"), + "[EAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_east"), + "[NORTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northwest"), + "[SOUTHWEST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southwest"), + "[NORTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_northeast"), + "[SOUTHEAST]" = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast"), + ) + var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic") + ///overlay we apply to caught bullets + var/static/image/new_bullet_overlay= image('icons/effects/fields.dmi', "projectile_dampen_effect") + ///list of all the visual effects we keep track of + var/list/edgeturf_effects = list() + ///atom that contains all the fields in its vis_contents + var/atom/movable/field_effect_holder/my_movable + /// datum that holds the effects we apply on caught bullets + var/datum/dampener_projectile_effects/bullet_effects + +/datum/proximity_monitor/advanced/projectile_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, atom/projector, datum/dampener_projectile_effects/effects_typepath) + ..() + RegisterSignal(projector, COMSIG_QDELETING, PROC_REF(on_projector_del)) + var/atom/movable/movable_host = _host + my_movable = new(get_turf(_host)) + my_movable.transform = my_movable.transform.Scale(current_range, current_range) + my_movable.set_glide_size(movable_host.glide_size) + bullet_effects = effects_typepath ? new effects_typepath() : new + draw_effect() + +/datum/proximity_monitor/advanced/projectile_dampener/on_moved(atom/movable/source, atom/old_loc) + . = ..() + my_movable.Move(source.loc, get_dir(my_movable.loc, source.loc), source.glide_size) + +/datum/proximity_monitor/advanced/projectile_dampener/on_z_change(datum/source) + recalculate_field(full_recalc = TRUE) + +/datum/proximity_monitor/advanced/projectile_dampener/field_edge_crossed(atom/movable/movable, turf/location, turf/old_location) + . = ..() + if(!isprojectile(movable)) + return + determine_wobble(location) + +/datum/proximity_monitor/advanced/projectile_dampener/field_edge_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) + . = ..() + if(!isprojectile(movable)) + return + determine_wobble(old_location) + +/datum/proximity_monitor/advanced/projectile_dampener/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!isprojectile(movable) || HAS_TRAIT_FROM(movable, TRAIT_GOT_DAMPENED, REF(src))) + return + catch_bullet_effect(movable) + +/datum/proximity_monitor/advanced/projectile_dampener/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!isprojectile(movable) || get_dist(new_location, host) <= current_range) + return + release_bullet_effect(movable) + +/datum/proximity_monitor/advanced/projectile_dampener/setup_field_turf(turf/target) + for(var/atom/possible_projectile in target) + if(isprojectile(possible_projectile)) + catch_bullet_effect(possible_projectile) + +/datum/proximity_monitor/advanced/projectile_dampener/cleanup_field_turf(turf/target) + for(var/atom/possible_projectile in target) + if(isprojectile(possible_projectile) && HAS_TRAIT_FROM(possible_projectile, TRAIT_GOT_DAMPENED, REF(src))) + release_bullet_effect(possible_projectile) + +///proc that applies the wobbly effect on point of bullet entry +/datum/proximity_monitor/advanced/projectile_dampener/proc/determine_wobble(turf/location) + var/coord_x = location.x - host.x + var/coord_y = location.y - host.y + var/obj/effect/overlay/vis/field/my_field = edgeturf_effects["[coord_x],[coord_y]"] + my_field?.set_wobbly(0.15 SECONDS) + +/datum/proximity_monitor/advanced/projectile_dampener/proc/projectile_overlay_updated(atom/source, list/overlays) + SIGNAL_HANDLER + + if(!isnull(new_bullet_overlay) && HAS_TRAIT_FROM(source, TRAIT_GOT_DAMPENED, REF(src))) + overlays += new_bullet_overlay + +///a bullet has entered our field, apply the dampening effects to it +/datum/proximity_monitor/advanced/projectile_dampener/proc/catch_bullet_effect(obj/projectile/bullet) + ADD_TRAIT(bullet,TRAIT_GOT_DAMPENED, REF(src)) + RegisterSignal(bullet, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(projectile_overlay_updated)) + SEND_SIGNAL(src, COMSIG_DAMPENER_CAPTURE, bullet) + bullet_effects.apply_effects(bullet) + bullet.update_appearance() + +///removing the effects after it has exited our field +/datum/proximity_monitor/advanced/projectile_dampener/proc/release_bullet_effect(obj/projectile/bullet) + REMOVE_TRAIT(bullet, TRAIT_GOT_DAMPENED, REF(src)) + SEND_SIGNAL(src, COMSIG_DAMPENER_RELEASE, bullet) + bullet_effects.remove_effects(bullet) + bullet.update_appearance() + UnregisterSignal(bullet, COMSIG_ATOM_UPDATE_OVERLAYS) + +///rendering all the field visuals. first we render the corners, then we connect them +/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_effect() + var/max_pixel_offset = current_range * ICON_SIZE_ALL + var/top_right_corner = list(effect_direction_images["[NORTHEAST]"], max_pixel_offset, max_pixel_offset) + var/top_left_corner = list(effect_direction_images["[NORTHWEST]"], -max_pixel_offset, max_pixel_offset) + var/bottom_left_corner = list(effect_direction_images["[SOUTHWEST]"], -max_pixel_offset, -max_pixel_offset) + var/bottom_right_corner = list(effect_direction_images["[SOUTHEAST]"], max_pixel_offset, -max_pixel_offset) + + var/list/corners = list(top_right_corner, top_left_corner, bottom_left_corner, bottom_right_corner) + for(var/corner in corners) + draw_corner(corner) + + var/list/corners_to_connect = list( + list(OVERLAY_DATA = effect_direction_images["[NORTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = max_pixel_offset), + list(OVERLAY_DATA = effect_direction_images["[SOUTH]"], CHANGING_OFFSET = "x_offset", STARTING_POSITION = -max_pixel_offset), + list(OVERLAY_DATA = effect_direction_images["[WEST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = -max_pixel_offset), + list(OVERLAY_DATA = effect_direction_images["[EAST]"], CHANGING_OFFSET = "y_offset", STARTING_POSITION = max_pixel_offset), + ) + for(var/direction in corners_to_connect) + draw_edge(direction, max_pixel_offset) + +///rendering the corners +/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_corner(list/corner_data) + var/obj/effect/overlay/vis/field/corner_effect = new() + var/image/image_overlay = corner_data[1] + corner_effect.icon = image_overlay.icon + corner_effect.icon_state = image_overlay.icon_state + corner_effect.alpha = 0 + corner_effect.pixel_x = corner_data[2] + corner_effect.pixel_y = corner_data[3] + add_effect_to_host(corner_effect) + +///connecting the corners to one another +/datum/proximity_monitor/advanced/projectile_dampener/proc/draw_edge(list/edge_data, target_offset) + var/starting_offset = edge_data[STARTING_POSITION] + var/current_offset = (-1 * target_offset) + ICON_SIZE_ALL + var/image/overlay = edge_data[OVERLAY_DATA] + while(current_offset != target_offset) + var/obj/effect/overlay/vis/field/edge_effect = new() + edge_effect.alpha = 0 + edge_effect.icon = overlay.icon + edge_effect.icon_state = overlay.icon_state + + if(edge_data[CHANGING_OFFSET] == "x_offset") + edge_effect.pixel_y = starting_offset + edge_effect.pixel_x = current_offset + else + edge_effect.pixel_x = starting_offset + edge_effect.pixel_y = current_offset + add_effect_to_host(edge_effect) + current_offset += ICON_SIZE_ALL + +///handles adding the visual effect's data +/datum/proximity_monitor/advanced/projectile_dampener/proc/add_effect_to_host(obj/effect/overlay/vis/field/effect_to_add) + my_movable.vis_contents += effect_to_add + var/coordinate_x = effect_to_add.pixel_x / ICON_SIZE_ALL + var/coordinate_y = effect_to_add.pixel_y / ICON_SIZE_ALL + effect_to_add.transform = effect_to_add.transform.Scale(1 / current_range, 1 / current_range) + edgeturf_effects["[coordinate_x],[coordinate_y]"] = effect_to_add + effect_to_add.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME) + animate(effect_to_add, alpha = 255, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL) + +/datum/proximity_monitor/advanced/projectile_dampener/proc/on_projector_del(datum/source) + SIGNAL_HANDLER + qdel(src) + +/datum/proximity_monitor/advanced/projectile_dampener/Destroy() + for(var/coordinates in edgeturf_effects) + var/obj/effect/overlay/vis/field/effect_to_remove = edgeturf_effects[coordinates] + edgeturf_effects -= coordinates + effect_to_remove.set_wobbly(wobble_duration = ANIMATE_DAMPENER_TIME) + animate(effect_to_remove, alpha = 0, time = ANIMATE_DAMPENER_TIME, flags = ANIMATION_PARALLEL) + QDEL_IN(my_movable, ANIMATE_DAMPENER_TIME) + my_movable = null + bullet_effects = null + return ..() + +/datum/proximity_monitor/advanced/projectile_dampener/peaceborg + +/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/field_turf_crossed(atom/movable/movable, turf/old_location, turf/new_location) + . = ..() + if(!iscyborg(movable) || !HAS_TRAIT_FROM(movable, TRAIT_GOT_DAMPENED, REF(src))) + ADD_TRAIT(movable, TRAIT_GOT_DAMPENED, REF(src)) + +/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/field_turf_uncrossed(atom/movable/movable, turf/old_location, turf/new_location) + if(!iscyborg(movable) || get_dist(new_location, host) <= current_range) + return + REMOVE_TRAIT(movable, TRAIT_GOT_DAMPENED, REF(src)) + +/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/setup_field_turf(turf/target) + for(var/atom/interesting_atom as anything in target) + if(iscyborg(interesting_atom)) + ADD_TRAIT(interesting_atom, TRAIT_GOT_DAMPENED, REF(src)) + if(isprojectile(interesting_atom)) + catch_bullet_effect(interesting_atom) + +/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/cleanup_field_turf(turf/target) + for(var/atom/interesting_atom as anything in target) + if(iscyborg(interesting_atom)) + REMOVE_TRAIT(interesting_atom, TRAIT_GOT_DAMPENED, REF(src)) + if(isprojectile(interesting_atom)) + release_bullet_effect(interesting_atom) + +/obj/effect/overlay/vis/field + appearance_flags = PIXEL_SCALE|LONG_GLIDE + vis_flags = parent_type::vis_flags | VIS_INHERIT_PLANE + ///are we currently WOBBLING + var/wobbling_effect = FALSE + +/obj/effect/overlay/vis/field/proc/set_wobbly(wobble_duration) + if(wobbling_effect) + return + wobbling_effect = TRUE + apply_wibbly_filters(src) + addtimer(CALLBACK(src, PROC_REF(remove_wobbly)), wobble_duration) + +/obj/effect/overlay/vis/field/proc/remove_wobbly() + if(QDELETED(src)) + return + remove_wibbly_filters(src, remove_duration = 0.25 SECONDS) + addtimer(VARSET_CALLBACK(src, wobbling_effect, FALSE), 0.25 SECONDS) + +/atom/movable/field_effect_holder + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + appearance_flags = PIXEL_SCALE|LONG_GLIDE + plane = ABOVE_GAME_PLANE + +#undef CHANGING_OFFSET +#undef OVERLAY_DATA +#undef STARTING_POSITION +#undef ANIMATE_DAMPENER_TIME diff --git a/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener_effects.dm b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener_effects.dm new file mode 100644 index 0000000000000..bd07d7836fc77 --- /dev/null +++ b/code/datums/proximity_monitor/fields/projectile_dampener/projectile_dampener_effects.dm @@ -0,0 +1,38 @@ +///datum that holds the effects we have on bullet catching +/datum/dampener_projectile_effects + ///new projectiles speeds + var/projectile_speed_multiplier = 0.4 + /// new projectiles damage + var/projectile_damage_multiplier = 0.75 + /// new projectiles knockdown + var/projectile_knockdown_multiplier = 0.66 + /// new projectiles stun + var/projectile_stun_multiplier = 0.66 + /// new projectiles stamina damage + var/projectile_stamina_multiplier = 0.66 + +/datum/dampener_projectile_effects/proc/apply_effects(obj/projectile/bullet) + if(projectile_speed_multiplier) + bullet.speed *= projectile_speed_multiplier + if(projectile_damage_multiplier) + bullet.damage *= projectile_damage_multiplier + if(projectile_knockdown_multiplier) + bullet.knockdown *= projectile_knockdown_multiplier + if(projectile_stamina_multiplier) + bullet.stamina *= projectile_stamina_multiplier + if(projectile_stun_multiplier) + bullet.stun *= projectile_stun_multiplier + +/datum/dampener_projectile_effects/proc/remove_effects(obj/projectile/bullet) + bullet.speed /= projectile_speed_multiplier + bullet.damage /= projectile_damage_multiplier + bullet.knockdown /= projectile_knockdown_multiplier + bullet.stamina /= projectile_stamina_multiplier + bullet.stun /= projectile_stun_multiplier + +/datum/dampener_projectile_effects/peacekeeper + projectile_speed_multiplier = 0.66 + projectile_damage_multiplier = 0.5 + projectile_knockdown_multiplier = 1 + projectile_stun_multiplier = 1 + projectile_stamina_multiplier = 1 diff --git a/code/datums/proximity_monitor/fields/timestop.dm b/code/datums/proximity_monitor/fields/timestop.dm index 3b8001426a03c..8411e2c3bb3f1 100644 --- a/code/datums/proximity_monitor/fields/timestop.dm +++ b/code/datums/proximity_monitor/fields/timestop.dm @@ -204,11 +204,11 @@ freeze_atom(i) freeze_turf(target) -/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/projectile/P) - P.paused = TRUE +/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/projectile/proj) + proj.paused = TRUE -/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/projectile/P) - P.paused = FALSE +/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/projectile/proj) + proj.paused = FALSE /datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/victim) frozen_mobs += victim diff --git a/code/datums/quirks/negative_quirks/addict.dm b/code/datums/quirks/negative_quirks/addict.dm index 62262dc3bf7e4..fd717133f2591 100644 --- a/code/datums/quirks/negative_quirks/addict.dm +++ b/code/datums/quirks/negative_quirks/addict.dm @@ -4,6 +4,7 @@ gain_text = span_danger("You suddenly feel the craving for... something? You're not sure what it is.") medical_record_text = "Patient has a history with SOMETHING but he refuses to tell us what it is." abstract_parent_type = /datum/quirk/item_quirk/addict + quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES var/datum/reagent/reagent_type //!If this is defined, reagent_id will be unused and the defined reagent type will be instead. var/datum/reagent/reagent_instance //! actual instanced version of the reagent var/where_drug //! Where the drug spawned @@ -86,7 +87,6 @@ gain_text = span_danger("You suddenly feel the craving for drugs.") medical_record_text = "Patient has a history of hard drugs." hardcore_value = 4 - quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_PROCESSES mail_goodies = list(/obj/effect/spawner/random/contraband/narcotics) drug_flavour_text = "Better hope you don't run out..." diff --git a/code/datums/quirks/negative_quirks/blood_deficiency.dm b/code/datums/quirks/negative_quirks/blood_deficiency.dm index 238126f4d79f3..a5ac11714bd5f 100644 --- a/code/datums/quirks/negative_quirks/blood_deficiency.dm +++ b/code/datums/quirks/negative_quirks/blood_deficiency.dm @@ -33,7 +33,7 @@ human_holder.blood_volume = max(min_blood, human_holder.blood_volume - human_holder.dna.species.blood_deficiency_drain_rate * seconds_per_tick) -/datum/quirk/blooddeficiency/proc/update_mail(datum/source, datum/species/new_species, datum/species/old_species) +/datum/quirk/blooddeficiency/proc/update_mail(datum/source, datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons) SIGNAL_HANDLER mail_goodies.Cut() diff --git a/code/datums/quirks/negative_quirks/chronic_illness.dm b/code/datums/quirks/negative_quirks/chronic_illness.dm index f0809b55d2b0f..04a676965dbe0 100644 --- a/code/datums/quirks/negative_quirks/chronic_illness.dm +++ b/code/datums/quirks/negative_quirks/chronic_illness.dm @@ -1,11 +1,11 @@ /datum/quirk/item_quirk/chronic_illness - name = "Chronic Illness" - desc = "You have a chronic illness that requires constant medication to keep under control." + name = "Eradicative Chronic Illness" + desc = "You have an anomalous chronic illness that requires constant medication to keep under control, or else causes timestream correction." icon = FA_ICON_DISEASE value = -12 - gain_text = span_danger("You feel a bit off today.") - lose_text = span_notice("You feel a bit better today.") - medical_record_text = "Patient has a chronic illness that requires constant medication to keep under control." + gain_text = span_danger("You feel like you are fading away...") + lose_text = span_notice("You suddenly feel more substantial.") + medical_record_text = "Patient has an anomalous chronic illness that requires constant medication to keep under control." hardcore_value = 12 mail_goodies = list(/obj/item/storage/pill_bottle/sansufentanyl) diff --git a/code/datums/quirks/negative_quirks/numb.dm b/code/datums/quirks/negative_quirks/numb.dm index cd4f28cb30228..cb982cf0641b2 100644 --- a/code/datums/quirks/negative_quirks/numb.dm +++ b/code/datums/quirks/negative_quirks/numb.dm @@ -10,6 +10,8 @@ /datum/quirk/numb/add(client/client_source) quirk_holder.apply_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type) + quirk_holder.add_traits(list(TRAIT_ANALGESIA, TRAIT_NO_DAMAGE_OVERLAY), QUIRK_TRAIT) /datum/quirk/numb/remove(client/client_source) quirk_holder.remove_status_effect(/datum/status_effect/grouped/screwy_hud/fake_healthy, type) + quirk_holder.remove_traits(list(TRAIT_ANALGESIA, TRAIT_NO_DAMAGE_OVERLAY), QUIRK_TRAIT) diff --git a/code/datums/quirks/negative_quirks/prosthetic_limb.dm b/code/datums/quirks/negative_quirks/prosthetic_limb.dm index f8941975ac15e..a9917ac0a59a8 100644 --- a/code/datums/quirks/negative_quirks/prosthetic_limb.dm +++ b/code/datums/quirks/negative_quirks/prosthetic_limb.dm @@ -28,7 +28,7 @@ old_limb = human_holder.return_and_replace_bodypart(surplus, special = TRUE) /datum/quirk/prosthetic_limb/post_add() - to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus prosthetic. It has almost no muscle force, and makes you unhealthier by just having it. Additionally, \ + to_chat(quirk_holder, span_bolddanger("Your [slot_string] has been replaced with a surplus prosthetic. It has almost no muscle force, and makes you unhealthier by just having it. Additionally, \ you need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes.")) /datum/quirk/prosthetic_limb/remove() diff --git a/code/datums/quirks/negative_quirks/prosthetic_organ.dm b/code/datums/quirks/negative_quirks/prosthetic_organ.dm index 2b0f20b0d9f84..7877e177b39fa 100644 --- a/code/datums/quirks/negative_quirks/prosthetic_organ.dm +++ b/code/datums/quirks/negative_quirks/prosthetic_organ.dm @@ -65,7 +65,7 @@ STOP_PROCESSING(SSobj, old_organ) /datum/quirk/prosthetic_organ/post_add() - to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a surplus organ. It is weak and highly unstable. \ + to_chat(quirk_holder, span_bolddanger("Your [slot_string] has been replaced with a surplus organ. It is weak and highly unstable. \ Additionally, any EMP will make it stop working entirely.")) /datum/quirk/prosthetic_organ/remove() diff --git a/code/datums/quirks/negative_quirks/quadruple_amputee.dm b/code/datums/quirks/negative_quirks/quadruple_amputee.dm index 493cdf0b71cda..653cca3dccddc 100644 --- a/code/datums/quirks/negative_quirks/quadruple_amputee.dm +++ b/code/datums/quirks/negative_quirks/quadruple_amputee.dm @@ -16,5 +16,5 @@ human_holder.del_and_replace_bodypart(new /obj/item/bodypart/leg/right/robot/surplus, special = TRUE) /datum/quirk/quadruple_amputee/post_add() - to_chat(quirk_holder, span_boldannounce("All your limbs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \ + to_chat(quirk_holder, span_bolddanger("All your limbs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \ Additionally, you need to use a welding tool and cables to repair them, instead of bruise packs and ointment.")) diff --git a/code/datums/quirks/negative_quirks/tin_man.dm b/code/datums/quirks/negative_quirks/tin_man.dm index 0afd8874bed49..a75cbbedd766f 100644 --- a/code/datums/quirks/negative_quirks/tin_man.dm +++ b/code/datums/quirks/negative_quirks/tin_man.dm @@ -33,5 +33,5 @@ new_organ.Insert(human_holder, special = TRUE, movement_flags = DELETE_IF_REPLACED) /datum/quirk/tin_man/post_add() - to_chat(quirk_holder, span_boldannounce("Most of your internal organs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \ + to_chat(quirk_holder, span_bolddanger("Most of your internal organs have been replaced with surplus prosthetics. They are fragile and will easily come apart under duress. \ Additionally, any EMP will make them stop working entirely.")) diff --git a/code/datums/quirks/neutral_quirks/evil.dm b/code/datums/quirks/neutral_quirks/evil.dm index 6753a7d034cfd..99e805ccd7c9b 100644 --- a/code/datums/quirks/neutral_quirks/evil.dm +++ b/code/datums/quirks/neutral_quirks/evil.dm @@ -1,3 +1,4 @@ +/* DOPPLER EDIT REMOVAL - Fundamentally Evil replaced with Unholy Aura and Bad Vibes /datum/quirk/evil name = "Fundamentally Evil" desc = "Where you would have a soul is but an ink-black void. While you are committed to maintaining your social standing, \ @@ -10,3 +11,4 @@ lose_text = span_notice("You suddenly care more about others and their needs.") medical_record_text = "Patient has passed all our social fitness tests with flying colours, but had trouble on the empathy tests." mail_goodies = list(/obj/item/food/grown/citrus/lemon) +*/ diff --git a/code/datums/quirks/neutral_quirks/monochromatic.dm b/code/datums/quirks/neutral_quirks/monochromatic.dm index ef6735df25d93..6c1b8c2ef78bd 100644 --- a/code/datums/quirks/neutral_quirks/monochromatic.dm +++ b/code/datums/quirks/neutral_quirks/monochromatic.dm @@ -16,7 +16,7 @@ /datum/quirk/monochromatic/post_add() if(is_detective_job(quirk_holder.mind.assigned_role)) - to_chat(quirk_holder, span_boldannounce("Mmm. Nothing's ever clear on this station. It's all shades of gray...")) + to_chat(quirk_holder, span_bolddanger("Mmm. Nothing's ever clear on this station. It's all shades of gray...")) quirk_holder.playsound_local(quirk_holder, 'sound/ambience/security/ambidet1.ogg', 50, FALSE) /datum/quirk/monochromatic/remove() diff --git a/code/datums/quirks/neutral_quirks/transhumanist.dm b/code/datums/quirks/neutral_quirks/transhumanist.dm index aa8ae075df395..cbd85150e7673 100644 --- a/code/datums/quirks/neutral_quirks/transhumanist.dm +++ b/code/datums/quirks/neutral_quirks/transhumanist.dm @@ -136,11 +136,11 @@ if(!slot_string) return if(isbodypart(old_part)) - to_chat(quirk_holder, span_boldannounce("Your [slot_string] has been replaced with a robotic limb. You need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes.")) + to_chat(quirk_holder, span_bolddanger("Your [slot_string] has been replaced with a robotic limb. You need to use a welding tool and cables to repair it, instead of sutures and regenerative meshes.")) else if (old_part.name == "eyes") - to_chat(quirk_holder, span_boldannounce("You replaced your eyes with flashlights, not cameras. You can't see a thing!")) + to_chat(quirk_holder, span_bolddanger("You replaced your eyes with flashlights, not cameras. You can't see a thing!")) else if (isorgan(old_part)) - to_chat(quirk_holder, span_boldannounce("Your [slot_string] brings you one step closer to silicon perfection, but you feel you're not quite there yet.")) + to_chat(quirk_holder, span_bolddanger("Your [slot_string] brings you one step closer to silicon perfection, but you feel you're not quite there yet.")) /datum/quirk/transhumanist/remove() if(isnull(old_part)) diff --git a/code/datums/quirks/positive_quirks/chip_connector.dm b/code/datums/quirks/positive_quirks/chip_connector.dm index 6fcc5bf9d31be..2035c093699d1 100644 --- a/code/datums/quirks/positive_quirks/chip_connector.dm +++ b/code/datums/quirks/positive_quirks/chip_connector.dm @@ -22,7 +22,7 @@ connector.Insert(carbon_holder, special = TRUE) /datum/quirk/chip_connector/post_add() - to_chat(quirk_holder, span_boldannounce(desc)) // efficiency is clever laziness + to_chat(quirk_holder, span_bolddanger(desc)) // efficiency is clever laziness /datum/quirk/chip_connector/remove() qdel(connector) diff --git a/code/datums/quirks/positive_quirks/chipped.dm b/code/datums/quirks/positive_quirks/chipped.dm index 7f43fc07b5bbc..26b4883f9b339 100644 --- a/code/datums/quirks/positive_quirks/chipped.dm +++ b/code/datums/quirks/positive_quirks/chipped.dm @@ -5,7 +5,7 @@ value = 2 gain_text = span_notice("The chip in your head itches a bit.") lose_text = span_danger("You don't feel so chipped anymore..") - medical_record_text = "Patient explained how they got caught up in 'the skillchip chase' recently, and now the chip in they head itches every so often. Dumbass." + medical_record_text = "Patient explained how they got caught up in 'the skillchip chase' recently, and now the chip in their head itches every so often. Dumbass." mail_goodies = list( /obj/item/skillchip/matrix_taunt, /obj/item/skillchip/big_pointer, @@ -14,44 +14,71 @@ ) /// Variable that holds the chip, used on removal. var/obj/item/skillchip/installed_chip - var/datum/callback/itchy_timer + ///itchy status effect we give our owner + var/datum/itchy_effect /datum/quirk_constant_data/chipped associated_typepath = /datum/quirk/chipped customization_options = list(/datum/preference/choiced/chipped) /datum/quirk/chipped/add_to_holder(mob/living/new_holder, quirk_transfer, client/client_source) - var/obj/item/skillchip/chip_pref = GLOB.quirk_chipped_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/chipped)] + var/chip_pref = client_source?.prefs?.read_preference(/datum/preference/choiced/chipped) - if(!chip_pref) + if(isnull(chip_pref)) return ..() - - gain_text = span_notice("The [chip_pref] in your head itches a bit.") + installed_chip = GLOB.quirk_chipped_choice[chip_pref] || GLOB.quirk_chipped_choice[pick(GLOB.quirk_chipped_choice)] + gain_text = span_notice("The [installed_chip::name] in your head itches a bit.") lose_text = span_notice("Your head stops itching so much.") return ..() /datum/quirk/chipped/add_unique(client/client_source) - - var/preferred_chip = GLOB.quirk_chipped_choice[client_source?.prefs?.read_preference(/datum/preference/choiced/chipped)] - if(isnull(preferred_chip)) //Client is gone or they chose a random chip - preferred_chip = GLOB.quirk_chipped_choice[pick(GLOB.quirk_chipped_choice)] + if(!iscarbon(quirk_holder)) + return var/mob/living/carbon/quirk_holder_carbon = quirk_holder - if(iscarbon(quirk_holder)) - installed_chip = new preferred_chip() - quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE) + installed_chip = new installed_chip() + + RegisterSignals(installed_chip, list(COMSIG_QDELETING, COMSIG_SKILLCHIP_REMOVED), PROC_REF(remove_effect)) + RegisterSignal(installed_chip, COMSIG_SKILLCHIP_IMPLANTED, PROC_REF(apply_effect)) + + quirk_holder_carbon.implant_skillchip(installed_chip, force = TRUE) installed_chip.try_activate_skillchip(silent = FALSE, force = TRUE) - var/obj/item/organ/brain/itchy_brain = quirk_holder.get_organ_by_type(ORGAN_SLOT_BRAIN) - itchy_timer = addtimer(CALLBACK(src, PROC_REF(cause_itchy), itchy_brain), rand(5 SECONDS, 10 MINUTES)) // they get The Itch from a poor quality install every so often +/datum/quirk/chipped/proc/apply_effect(datum/source, obj/item/brain_applied) + SIGNAL_HANDLER + var/mob/living/carbon/quirk_holder_carbon = quirk_holder + if(brain_applied == quirk_holder_carbon.get_organ_slot(ORGAN_SLOT_BRAIN)) + itchy_effect = quirk_holder.apply_status_effect(/datum/status_effect/itchy_skillchip_quirk) + +/datum/quirk/chipped/proc/remove_effect(datum/source, obj/item/brain_removed) + SIGNAL_HANDLER + var/mob/living/carbon/quirk_holder_carbon = quirk_holder + if(QDELING(source) || brain_removed == quirk_holder_carbon.get_organ_slot(ORGAN_SLOT_BRAIN)) + quirk_holder.remove_status_effect(itchy_effect) + itchy_effect = null /datum/quirk/chipped/remove() - qdel(installed_chip) - deltimer(itchy_timer) - . = ..() + QDEL_NULL(installed_chip) + if(itchy_effect) + quirk_holder.remove_status_effect(itchy_effect) + itchy_effect = null + return ..() -/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/brain/itchy_brain) +/datum/status_effect/itchy_skillchip_quirk + id = "itchy skillchip" + tick_interval_lowerbound = 5 SECONDS + tick_interval_upperbound = 10 MINUTES + alert_type = null + ///lower damage we apply to our itchy owner + var/minimum_damage = 1 + ///upper damage we apply to our itchy owner + var/maximum_damage = 5 - itchy_brain.apply_organ_damage(rand(1, 5), maximum = itchy_brain.maxHealth * 0.3) - to_chat(itchy_brain.owner, span_warning("Your [itchy_brain] itches.")) - itchy_timer = addtimer(CALLBACK(itchy_brain, PROC_REF(cause_itchy)), rand(5 SECONDS, 10 MINUTES)) // it will never end +/datum/status_effect/itchy_skillchip_quirk/tick(seconds_between_ticks) + var/mob/living/carbon/carbon_owner = owner + var/obj/item/organ/brain/itchy_brain = carbon_owner.get_organ_slot(ORGAN_SLOT_BRAIN) + if(isnull(itchy_brain)) + return + itchy_brain.apply_organ_damage(rand(minimum_damage, maximum_damage), maximum = itchy_brain.maxHealth * 0.3) + if(owner.stat == CONSCIOUS && !owner.incapacitated && owner.get_empty_held_indexes()) + to_chat(owner, span_warning("You scratch the itch in your head.")) diff --git a/code/datums/quirks/positive_quirks/spacer.dm b/code/datums/quirks/positive_quirks/spacer.dm index 344462703e906..8d1503ccf2f6e 100644 --- a/code/datums/quirks/positive_quirks/spacer.dm +++ b/code/datums/quirks/positive_quirks/spacer.dm @@ -9,7 +9,7 @@ gain_text = span_notice("You feel at home in space.") lose_text = span_danger("You feel homesick.") icon = FA_ICON_USER_ASTRONAUT - value = 7 + value = 5 quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE medical_record_text = "Patient is well-adapted to non-terrestrial environments." mail_goodies = list( diff --git a/code/datums/shuttles/arrival.dm b/code/datums/shuttles/arrival.dm index c609ccc57410d..35e28a10c064b 100644 --- a/code/datums/shuttles/arrival.dm +++ b/code/datums/shuttles/arrival.dm @@ -26,10 +26,6 @@ suffix = "pubby" name = "arrival shuttle (Pubby)" -/datum/map_template/shuttle/arrival/northstar - suffix = "northstar" - name = "arrival shuttle (North Star)" - /datum/map_template/shuttle/arrival/nebula suffix = "nebula" name = "arrival shuttle (Nebula)" diff --git a/code/datums/shuttles/cargo.dm b/code/datums/shuttles/cargo.dm index 209ec59f66f2e..91b9c9bca417b 100644 --- a/code/datums/shuttles/cargo.dm +++ b/code/datums/shuttles/cargo.dm @@ -27,10 +27,6 @@ suffix = "delta" name = "cargo ferry (Delta)" -/datum/map_template/shuttle/cargo/northstar - suffix = "northstar" - name = "cargo ferry (North Star)" - /datum/map_template/shuttle/cargo/nebula suffix = "nebula" name = "supply shuttle (Nebula)" diff --git a/code/datums/shuttles/mining.dm b/code/datums/shuttles/mining.dm index 21747a488e326..4bae7ebd78553 100644 --- a/code/datums/shuttles/mining.dm +++ b/code/datums/shuttles/mining.dm @@ -44,10 +44,6 @@ suffix = "large" name = "mining shuttle (Large)" -/datum/map_template/shuttle/mining/northstar - suffix = "northstar" - name = "mining shuttle (North Star)" - /datum/map_template/shuttle/mining/nebula suffix = "nebula" name = "mining shuttle (Nebula)" @@ -64,7 +60,3 @@ /datum/map_template/shuttle/mining_common/kilo suffix = "kilo" name = "lavaland shuttle (Kilo)" - -/datum/map_template/shuttle/mining_common/northstar - suffix = "northstar" - name = "lavaland shuttle (North Star)" diff --git a/code/datums/sprite_accessories.dm b/code/datums/sprite_accessories.dm index 6e8fb2da6d683..e5b15e2b016da 100644 --- a/code/datums/sprite_accessories.dm +++ b/code/datums/sprite_accessories.dm @@ -2284,6 +2284,10 @@ name = "Lightbearer" icon_state = "lightbearer" +/datum/sprite_accessory/moth_wings/dipped + name = "Dipped" + icon_state = "dipped" + /datum/sprite_accessory/moth_antennae //Finally splitting the sprite icon = 'icons/mob/human/species/moth/moth_antennae.dmi' color_src = null @@ -2375,6 +2379,10 @@ name = "Lightbearer" icon_state = "lightbearer" +/datum/sprite_accessory/moth_antennae/dipped + name = "Dipped" + icon_state = "dipped" + /datum/sprite_accessory/moth_markings // the markings that moths can have. finally something other than the boring tan icon = 'icons/mob/human/species/moth/moth_markings.dmi' color_src = null @@ -2438,3 +2446,7 @@ /datum/sprite_accessory/moth_markings/lightbearer name = "Lightbearer" icon_state = "lightbearer" + +/datum/sprite_accessory/moth_markings/dipped + name = "Dipped" + icon_state = "dipped" diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index eb90a056889b1..f3bb4fb4a9c75 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -291,39 +291,35 @@ greyscale_config = /datum/greyscale_config/festive_hat greyscale_config_worn = /datum/greyscale_config/festive_hat/worn -/datum/station_trait/scarves - name = "Scarves" +/datum/station_trait/scryers + name = "Scryers" trait_type = STATION_TRAIT_NEUTRAL - weight = 5 - cost = STATION_TRAIT_COST_MINIMAL + weight = 2 + cost = STATION_TRAIT_COST_LOW show_in_report = TRUE - var/list/scarves + report_message = "Nanotrasen has chosen your station for an experiment - everyone has free scryers! Use these to talk to other people easily and privately." -/datum/station_trait/scarves/New() +/datum/station_trait/scryers/New() . = ..() - report_message = pick( - //"Nanotrasen is experimenting with seeing if neck warmth improves employee morale.", // ORIGINAL - "The Port Authority is experimenting with seeing if neck warmth improves employee morale.", // DOPPLER EDIT - NT -> PA - "After Space Fashion Week, scarves are the hot new accessory.", - "Everyone was simultaneously a little bit cold when they packed to go to the station.", - "The station is definitely not under attack by neck grappling aliens masquerading as wool. Definitely not.", - "You all get free scarves. Don't ask why.", - "A shipment of scarves was delivered to the station.", - ) - scarves = typesof(/obj/item/clothing/neck/scarf) + list( - /obj/item/clothing/neck/large_scarf/red, - /obj/item/clothing/neck/large_scarf/green, - /obj/item/clothing/neck/large_scarf/blue, - ) - RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn)) - -/datum/station_trait/scarves/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client) +/datum/station_trait/scryers/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client) SIGNAL_HANDLER - var/scarf_type = pick(scarves) - - spawned.equip_to_slot_or_del(new scarf_type(spawned), ITEM_SLOT_NECK, initial = FALSE) + if(!ishuman(spawned)) + return + var/mob/living/carbon/human/humanspawned = spawned + // Put their silly little scarf or necktie somewhere else + var/obj/item/silly_little_scarf = humanspawned.wear_neck + if(silly_little_scarf) + humanspawned.temporarilyRemoveItemFromInventory(silly_little_scarf) + silly_little_scarf.forceMove(get_turf(humanspawned)) + humanspawned.equip_in_one_of_slots(silly_little_scarf, ITEM_SLOT_BACKPACK, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET, qdel_on_fail = FALSE, indirect_action = TRUE) + + var/obj/item/clothing/neck/link_scryer/loaded/new_scryer = new(spawned) + new_scryer.label = spawned.name + new_scryer.update_name() + + spawned.equip_to_slot_or_del(new_scryer, ITEM_SLOT_NECK, initial = FALSE) /datum/station_trait/wallets name = "Wallets!" diff --git a/code/datums/status_effects/_status_effect.dm b/code/datums/status_effects/_status_effect.dm index df525fa8c81b1..9f3e3a549046b 100644 --- a/code/datums/status_effects/_status_effect.dm +++ b/code/datums/status_effects/_status_effect.dm @@ -12,6 +12,10 @@ /// While processing, this becomes the world.time when the next tick will occur. /// -1 = will prevent ticks, and if duration is also unlimited (-1), stop processing wholesale. var/tick_interval = 1 SECONDS + ///If our tick intervals are set to be a dynamic value within a range, the lowerbound of said range + var/tick_interval_lowerbound + ///If our tick intervals are set to be a dynamic value within a range, the upperbound of said range + var/tick_interval_upperbound /// The mob affected by the status effect. VAR_FINAL/mob/living/owner /// How many of the effect can be on one mob, and/or what happens when you try to add a duplicate. @@ -112,7 +116,7 @@ return if(tick_interval != STATUS_EFFECT_NO_TICK && tick_interval < world.time) - var/tick_length = initial(tick_interval) + var/tick_length = (tick_interval_upperbound && tick_interval_lowerbound) ? rand(tick_interval_lowerbound, tick_interval_upperbound) : initial(tick_interval) tick(tick_length / (1 SECONDS)) tick_interval = world.time + tick_length if(QDELING(src)) diff --git a/code/datums/status_effects/agent_pinpointer.dm b/code/datums/status_effects/agent_pinpointer.dm index 68b01a3eb1fa5..653b04f626175 100644 --- a/code/datums/status_effects/agent_pinpointer.dm +++ b/code/datums/status_effects/agent_pinpointer.dm @@ -22,7 +22,7 @@ ///The range until you're considered 'too far away' var/range_far = 16 ///The target we are pointing towards, refreshes every tick. - var/mob/scan_target + var/atom/movable/scan_target /datum/status_effect/agent_pinpointer/tick(seconds_between_ticks) if(!owner) @@ -40,6 +40,9 @@ var/turf/here = get_turf(owner) var/turf/there = get_turf(scan_target) + if(isnull(there)) + scan_target = null + return if(here.z != there.z) linked_alert.icon_state = "pinonnull" return diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 2b6f948b6597b..e4471f2f4dbd8 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -306,7 +306,7 @@ newRod.activated() if(!itemUser.has_hand_for_held_index(hand)) //If user does not have the corresponding hand anymore, give them one and return the rod to their hand - var/zone = (hand % 2) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM + var/zone = IS_LEFT_INDEX(hand) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM if(itemUser.regenerate_limb(zone, FALSE)) itemUser.put_in_hand(newRod, hand, forced = TRUE) else @@ -406,6 +406,7 @@ /datum/status_effect/mayhem id = "Mayhem" duration = 2 MINUTES + alert_type = null /// The chainsaw spawned by the status effect var/obj/item/chainsaw/doomslayer/chainsaw @@ -450,6 +451,7 @@ duration = 2 SECONDS status_type = STATUS_EFFECT_REPLACE show_duration = TRUE + alert_type = null /datum/status_effect/speed_boost/on_creation(mob/living/new_owner, set_duration) if(isnum(set_duration)) @@ -595,6 +597,7 @@ id = "radiation_immunity" duration = 1 MINUTES show_duration = TRUE + alert_type = null /datum/status_effect/radiation_immunity/on_apply() ADD_TRAIT(owner, TRAIT_RADIMMUNE, type) diff --git a/code/datums/status_effects/death_sound.dm b/code/datums/status_effects/death_sound.dm new file mode 100644 index 0000000000000..b71c070729a5d --- /dev/null +++ b/code/datums/status_effects/death_sound.dm @@ -0,0 +1,46 @@ +/datum/status_effect/death_sound + id = "death_sound" + tick_interval = -1 + alert_type = null + status_type = STATUS_EFFECT_REPLACE + var/death_sound + var/death_sound_volume = 100 + +/datum/status_effect/death_sound/on_creation(mob/living/new_owner, duration, death_sound, death_sound_volume = 100) + src.duration = duration + src.death_sound = death_sound + src.death_sound_volume = death_sound_volume + return ..() + +/datum/status_effect/death_sound/on_apply() + RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(on_death)) + return TRUE + +/datum/status_effect/death_sound/proc/on_death() + SIGNAL_HANDLER + playsound(owner, death_sound, death_sound_volume, FALSE) + +/datum/status_effect/death_sound/on_remove() + UnregisterSignal(owner, COMSIG_LIVING_DEATH) + + +/datum/status_effect/replace_death_sound + id = "replace_death_sound" + tick_interval = -1 + alert_type = null + status_type = STATUS_EFFECT_REPLACE + var/death_sound + var/old_death_sound + +/datum/status_effect/replace_death_sound/on_creation(mob/living/new_owner, duration, death_sound) + src.duration = duration + src.death_sound = death_sound + return ..() + +/datum/status_effect/replace_death_sound/on_apply() + old_death_sound = owner.death_sound + owner.death_sound = death_sound + return TRUE + +/datum/status_effect/replace_death_sound/on_remove() + owner.death_sound = old_death_sound diff --git a/code/datums/status_effects/debuffs/blindness.dm b/code/datums/status_effects/debuffs/blindness.dm index 06a5a46b9427b..edb10d27ba44b 100644 --- a/code/datums/status_effects/debuffs/blindness.dm +++ b/code/datums/status_effects/debuffs/blindness.dm @@ -11,7 +11,12 @@ // fullheal should instead remove all the sources and in turn cure this /// Static list of signals that, when received, we force an update to our nearsighted overlay - var/static/list/update_signals = list(SIGNAL_ADDTRAIT(TRAIT_NEARSIGHTED_CORRECTED), SIGNAL_REMOVETRAIT(TRAIT_NEARSIGHTED_CORRECTED)) + var/static/list/update_signals = list( + SIGNAL_ADDTRAIT(TRAIT_NEARSIGHTED_CORRECTED), + SIGNAL_REMOVETRAIT(TRAIT_NEARSIGHTED_CORRECTED), + SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS), + SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS), + ) /// How severe is our nearsightedness right now var/overlay_severity = 2 @@ -37,7 +42,11 @@ var/mob/living/carbon/human/human_owner = owner if (human_owner.get_eye_scars()) return TRUE - return !HAS_TRAIT(owner, TRAIT_NEARSIGHTED_CORRECTED) + if(HAS_TRAIT(owner, TRAIT_NEARSIGHTED_CORRECTED)) + return FALSE + if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS)) + return FALSE + return TRUE /// Updates our nearsightd overlay, either removing it if we have the trait or adding it if we don't /datum/status_effect/grouped/nearsighted/proc/update_nearsighted_overlay() @@ -61,6 +70,10 @@ id = "blindness" tick_interval = STATUS_EFFECT_NO_TICK alert_type = /atom/movable/screen/alert/status_effect/blind + var/static/list/update_signals = list( + SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS), + SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS), + ) // This is not "remove on fullheal" as in practice, // fullheal should instead remove all the sources and in turn cure this @@ -68,14 +81,34 @@ if(!CAN_BE_BLIND(owner)) return FALSE + RegisterSignals(owner, update_signals, PROC_REF(update_blindness)) + + update_blindness() + + return ..() + +/datum/status_effect/grouped/blindness/proc/update_blindness() + if(!CAN_BE_BLIND(owner)) // future proofing + qdel(src) + return + + if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS)) + make_unblind() + return + make_blind() + +/datum/status_effect/grouped/blindness/proc/make_blind() owner.overlay_fullscreen(id, /atom/movable/screen/fullscreen/blind) // You are blind - at most, able to make out shapes near you owner.add_client_colour(/datum/client_colour/monochrome/blind) - return ..() -/datum/status_effect/grouped/blindness/on_remove() +/datum/status_effect/grouped/blindness/proc/make_unblind() owner.clear_fullscreen(id) owner.remove_client_colour(/datum/client_colour/monochrome/blind) + +/datum/status_effect/grouped/blindness/on_remove() + make_unblind() + UnregisterSignal(owner, update_signals) return ..() /atom/movable/screen/alert/status_effect/blind diff --git a/code/datums/status_effects/debuffs/choke.dm b/code/datums/status_effects/debuffs/choke.dm index 9113c8a1a023e..e8af4b1b94dc5 100644 --- a/code/datums/status_effects/debuffs/choke.dm +++ b/code/datums/status_effects/debuffs/choke.dm @@ -280,10 +280,8 @@ /datum/status_effect/choke/proc/deal_damage(seconds_between_ticks) owner.losebreath += 1 * seconds_between_ticks // 1 breath loss a second. This will deal additional breath damage, and prevent breathing if(flaming) - var/obj/item/bodypart/head = owner.get_bodypart(BODY_ZONE_HEAD) - if(head) - head.receive_damage(0, 2 * seconds_between_ticks, damage_source = "choking") - owner.adjustStaminaLoss(2 * seconds_between_ticks) + owner.apply_damage(2 * seconds_between_ticks, BURN, BODY_ZONE_HEAD, attacking_item = "choking") + owner.apply_damage(2 * seconds_between_ticks, STAMINA) /datum/status_effect/choke/proc/do_vfx(client/vfx_on) var/old_x = delta_x diff --git a/code/datums/status_effects/debuffs/cursed.dm b/code/datums/status_effects/debuffs/cursed.dm index 8d331bbe90add..083bd678635e7 100644 --- a/code/datums/status_effects/debuffs/cursed.dm +++ b/code/datums/status_effects/debuffs/cursed.dm @@ -31,6 +31,8 @@ /datum/status_effect/grouped/cursed/Destroy() UnregisterSignal(SSdcs, COMSIG_GLOB_CURSED_SLOT_MACHINE_WON) branded_hand = null + if (smoke_path) + owner.remove_shared_particles(smoke_path) return ..() /// Checks the number of curses we have and returns information back to the slot machine. `max_curse_amount` is set by the slot machine itself. @@ -123,7 +125,6 @@ span_notice("The smoke slowly clears from [owner.name]..."), span_notice("Your skin finally settles down and your throat no longer feels as dry... The brand disappearing confirms that the curse has been lifted."), ) - QDEL_NULL(particle_effect) qdel(src) /// If our owner's stat changes, rapidly surge the damage chance. @@ -140,10 +141,8 @@ /datum/status_effect/grouped/cursed/proc/on_death(mob/living/source, gibbed) SIGNAL_HANDLER - if(gibbed) - return - - QDEL_NULL(particle_effect) + if(!gibbed && smoke_path) + owner.remove_shared_particles(smoke_path) /datum/status_effect/grouped/cursed/update_particles() var/particle_path = /particles/smoke/steam/mild @@ -156,9 +155,10 @@ if(smoke_path == particle_path) return - QDEL_NULL(particle_effect) + if (smoke_path) + owner.remove_shared_particles(smoke_path) + owner.add_shared_particles(particle_path) smoke_path = particle_path - particle_effect = new(owner, particle_path) /datum/status_effect/grouped/cursed/tick(seconds_between_ticks) if(curse_count <= 1) diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index 3cf51d34c48d7..34eae9515ff7c 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -8,6 +8,7 @@ //Largely negative status effects go here, even if they have small beneficial effects //STUN EFFECTS /datum/status_effect/incapacitating + id = STATUS_EFFECT_ID_ABSTRACT tick_interval = STATUS_EFFECT_NO_TICK status_type = STATUS_EFFECT_REPLACE alert_type = null @@ -18,12 +19,11 @@ /datum/status_effect/incapacitating/on_creation(mob/living/new_owner, set_duration) if(isnum(set_duration)) duration = set_duration - return ..() - -/datum/status_effect/incapacitating/on_apply() + . = ..() + if(!.) + return if(needs_update_stat || issilicon(owner)) owner.update_stat() - return TRUE /datum/status_effect/incapacitating/on_remove() if(needs_update_stat || issilicon(owner)) //silicons need stat updates in addition to normal canmove updates @@ -512,7 +512,7 @@ new/obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, owner.dir) playsound(spawn_turf, 'sound/effects/curse/curse2.ogg', 80, TRUE, -1) var/obj/projectile/curse_hand/C = new (spawn_turf) - C.preparePixelProjectile(owner, spawn_turf) + C.aim_projectile(owner, spawn_turf) C.fire() /obj/effect/temp_visual/curse @@ -704,7 +704,7 @@ /datum/status_effect/go_away id = "go_away" - duration = 100 + duration = 10 SECONDS status_type = STATUS_EFFECT_REPLACE tick_interval = 0.2 SECONDS alert_type = /atom/movable/screen/alert/status_effect/go_away @@ -720,6 +720,17 @@ var/turf/T = get_step(owner, direction) owner.forceMove(T) +/datum/status_effect/go_away/deletes_mob + id = "go_away_deletes_mob" + duration = INFINITY + +/datum/status_effect/go_away/deluxe/on_creation(mob/living/new_owner, set_duration) + . = ..() + RegisterSignal(new_owner, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(wipe_bozo)) + +/datum/status_effect/go_away/deluxe/proc/wipe_bozo() + qdel(owner) + /atom/movable/screen/alert/status_effect/go_away name = "TO THE STARS AND BEYOND!" desc = "I must go, my people need me!" @@ -837,8 +848,7 @@ /datum/status_effect/ants/tick(seconds_between_ticks) var/mob/living/carbon/human/victim = owner - var/need_mob_update - need_mob_update = victim.adjustBruteLoss(max(0.1, round((ants_remaining * damage_per_ant) * seconds_between_ticks,0.1)), updating_health = FALSE) //Scales with # of ants (lowers with time). Roughly 10 brute over 50 seconds. + victim.apply_damage(max(0.1, round((ants_remaining * damage_per_ant), 0.1)) * seconds_between_ticks, BRUTE, spread_damage = TRUE) //Scales with # of ants (lowers with time). Roughly 10 brute over 50 seconds. if(victim.stat <= SOFT_CRIT) //Makes sure people don't scratch at themselves while they're in a critical condition if(prob(15)) switch(rand(1,2)) @@ -849,31 +859,27 @@ if(prob(50)) // Most of the damage is done through random chance. When tested yielded an average 100 brute with 200u ants. switch(rand(1,50)) if (1 to 8) //16% Chance - var/obj/item/bodypart/head/hed = victim.get_bodypart(BODY_ZONE_HEAD) to_chat(victim, span_danger("You scratch at the ants on your scalp!.")) - need_mob_update += hed.receive_damage(brute = 0.4 * seconds_between_ticks, burn = 0, updating_health = FALSE) + owner.apply_damage(0.4 * seconds_between_ticks, BRUTE, BODY_ZONE_HEAD) if (9 to 29) //40% chance - var/obj/item/bodypart/arm = victim.get_bodypart(pick(BODY_ZONE_L_ARM,BODY_ZONE_R_ARM)) to_chat(victim, span_danger("You scratch at the ants on your arms!")) - need_mob_update += arm.receive_damage(brute = 1.2 * seconds_between_ticks, burn = 0, updating_health = FALSE) + owner.apply_damage(1.2 * seconds_between_ticks, BRUTE, pick(GLOB.arm_zones)) if (30 to 49) //38% chance - var/obj/item/bodypart/leg = victim.get_bodypart(pick(BODY_ZONE_L_LEG,BODY_ZONE_R_LEG)) to_chat(victim, span_danger("You scratch at the ants on your leg!")) - need_mob_update += leg.receive_damage(brute = 1.2 * seconds_between_ticks, burn = 0, updating_health = FALSE) + owner.apply_damage(1.2 * seconds_between_ticks, BRUTE, pick(GLOB.leg_zones)) if(50) // 2% chance to_chat(victim, span_danger("You rub some ants away from your eyes!")) victim.set_eye_blur_if_lower(6 SECONDS) ants_remaining -= 5 // To balance out the blindness, it'll be a little shorter. ants_remaining-- - if(need_mob_update) - victim.updatehealth() if(ants_remaining <= 0 || victim.stat >= HARD_CRIT) - victim.remove_status_effect(type) //If this person has no more ants on them or are dead, they are no longer affected. + qdel(src) //If this person has no more ants on them or are dead, they are no longer affected. /atom/movable/screen/alert/status_effect/ants name = "Ants!" desc = span_warning("JESUS FUCKING CHRIST! CLICK TO GET THOSE THINGS OFF!") icon_state = "antalert" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/ants/Click() . = ..() @@ -966,6 +972,7 @@ duration = 10 SECONDS status_type = STATUS_EFFECT_REPLACE tick_interval = 0.2 SECONDS + alert_type = null /datum/status_effect/teleport_madness/tick(seconds_between_ticks) dump_in_space(owner) diff --git a/code/datums/status_effects/debuffs/drunk.dm b/code/datums/status_effects/debuffs/drunk.dm index a1ff3c7fb4eaf..37ab11f130c4c 100644 --- a/code/datums/status_effects/debuffs/drunk.dm +++ b/code/datums/status_effects/debuffs/drunk.dm @@ -15,6 +15,7 @@ tick_interval = 2 SECONDS status_type = STATUS_EFFECT_REPLACE remove_on_fullheal = TRUE + alert_type = null /// The level of drunkness we are currently at. var/drunk_value = 0 @@ -106,6 +107,7 @@ . = ..() owner.sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC owner.add_mood_event(id, /datum/mood_event/drunk) + RegisterSignal(owner, COMSIG_MOB_FIRED_GUN, PROC_REF(drunk_gun_fired)) /datum/status_effect/inebriated/drunk/on_remove() clear_effects() @@ -123,6 +125,19 @@ if(owner.sound_environment_override == SOUND_ENVIRONMENT_PSYCHOTIC) owner.sound_environment_override = SOUND_ENVIRONMENT_NONE + UnregisterSignal(owner, COMSIG_MOB_FIRED_GUN) + +/datum/status_effect/inebriated/drunk/proc/drunk_gun_fired(datum/source, obj/item/gun/gun, atom/firing_at, params, zone, bonus_spread_values) + SIGNAL_HANDLER + + // excusing the bartender, because shotgun + if(HAS_TRAIT(owner, TRAIT_DRUNKEN_BRAWLER)) + return + // what makes me a good demoman? + if(istype(gun, /obj/item/gun/grenadelauncher) || istype(gun, /obj/item/gun/ballistic/revolver/grenadelauncher)) + return + bonus_spread_values[MAX_BONUS_SPREAD_INDEX] += (drunk_value * 0.5) + /datum/status_effect/inebriated/drunk/set_drunk_value(set_to) . = ..() if(QDELETED(src)) diff --git a/code/datums/status_effects/debuffs/fire_stacks.dm b/code/datums/status_effects/debuffs/fire_stacks.dm index 83510a2ded2bd..4b071d87e21e6 100644 --- a/code/datums/status_effects/debuffs/fire_stacks.dm +++ b/code/datums/status_effects/debuffs/fire_stacks.dm @@ -1,5 +1,6 @@ /datum/status_effect/fire_handler duration = STATUS_EFFECT_PERMANENT + id = STATUS_EFFECT_ID_ABSTRACT alert_type = null status_type = STATUS_EFFECT_REFRESH //Custom code on_remove_on_mob_delete = TRUE @@ -135,6 +136,8 @@ var/obj/effect/dummy/lighting_obj/moblight /// Type of mob light emitter we use when on fire var/moblight_type = /obj/effect/dummy/lighting_obj/moblight/fire + /// Cached particle type + var/cached_state /datum/status_effect/fire_handler/fire_stacks/get_examine_text() if(owner.on_fire) @@ -153,6 +156,8 @@ /datum/status_effect/fire_handler/fire_stacks/on_remove() UnregisterSignal(owner, COMSIG_ATOM_TOUCHED_SPARKS) + if (cached_state) + owner.remove_shared_particles(cached_state) /datum/status_effect/fire_handler/fire_stacks/tick(seconds_between_ticks) if(stacks <= 0) @@ -177,15 +182,23 @@ deal_damage(seconds_between_ticks) /datum/status_effect/fire_handler/fire_stacks/update_particles() - if(on_fire) - if(!particle_effect) - particle_effect = new(owner, /particles/embers) - if(stacks > MOB_BIG_FIRE_STACK_THRESHOLD) - particle_effect.particles.spawning = 5 - else - particle_effect.particles.spawning = 1 - else if(particle_effect) - QDEL_NULL(particle_effect) + if (!on_fire) + if (cached_state) + owner.remove_shared_particles(cached_state) + cached_state = null + return + + var/particle_type = /particles/embers/minor + if(stacks > MOB_BIG_FIRE_STACK_THRESHOLD) + particle_type = /particles/embers + + if (cached_state == particle_type) + return + + if (cached_state) + owner.remove_shared_particles(cached_state) + owner.add_shared_particles(particle_type) + cached_state = particle_type /** * Proc that handles damage dealing and all special effects @@ -300,7 +313,7 @@ enemy_types = list(/datum/status_effect/fire_handler/fire_stacks) stack_modifier = -1 - ///If the mob has the TRAIT_SLIPPERY_WHEN_WET trait, the mob gets this component while it's wet + /// If the mob has the TRAIT_SLIPPERY_WHEN_WET trait, the mob gets this component while it's wet var/datum/component/slippery/slipperiness /datum/status_effect/fire_handler/wet_stacks/on_apply() @@ -312,12 +325,14 @@ if(HAS_TRAIT(owner, TRAIT_SLIPPERY_WHEN_WET)) become_slippery() ADD_TRAIT(owner, TRAIT_IS_WET, TRAIT_STATUS_EFFECT(id)) + owner.add_shared_particles(/particles/droplets) /datum/status_effect/fire_handler/wet_stacks/on_remove() . = ..() REMOVE_TRAIT(owner, TRAIT_IS_WET, TRAIT_STATUS_EFFECT(id)) if(HAS_TRAIT(owner, TRAIT_SLIPPERY_WHEN_WET)) no_longer_slippery() + owner.remove_shared_particles(/particles/droplets) /datum/status_effect/fire_handler/wet_stacks/proc/update_wet_stack_modifier() SIGNAL_HANDLER @@ -325,7 +340,7 @@ /datum/status_effect/fire_handler/wet_stacks/proc/become_slippery() SIGNAL_HANDLER - slipperiness = owner.AddComponent(/datum/component/slippery, 5 SECONDS, lube_flags = SLIPPERY_WHEN_LYING_DOWN) + slipperiness = owner.AddComponent(/datum/component/slippery, 5 SECONDS, lube_flags = SLIPPERY_WHEN_LYING_DOWN|NO_SLIP_WHEN_WALKING|WEAK_SLIDE) ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id)) /datum/status_effect/fire_handler/wet_stacks/proc/no_longer_slippery() @@ -342,10 +357,5 @@ if(stacks <= 0) qdel(src) -/datum/status_effect/fire_handler/wet_stacks/update_particles() - if(particle_effect) - return - particle_effect = new(owner, /particles/droplets) - /datum/status_effect/fire_handler/wet_stacks/check_basic_mob_immunity(mob/living/basic/basic_owner) return !(basic_owner.basic_mob_flags & IMMUNE_TO_GETTING_WET) diff --git a/code/datums/status_effects/debuffs/hallucination.dm b/code/datums/status_effects/debuffs/hallucination.dm index 3f24ab02e60ac..66e85f1900a23 100644 --- a/code/datums/status_effects/debuffs/hallucination.dm +++ b/code/datums/status_effects/debuffs/hallucination.dm @@ -14,27 +14,39 @@ /// The cooldown for when the next hallucination can occur COOLDOWN_DECLARE(hallucination_cooldown) -/datum/status_effect/hallucination/on_creation(mob/living/new_owner, duration) +/datum/status_effect/hallucination/on_creation(mob/living/new_owner, duration, lower_tick_interval, upper_tick_interval) if(isnum(duration)) src.duration = duration + if(isnum(lower_tick_interval)) + src.lower_tick_interval = lower_tick_interval + if(isnum(upper_tick_interval)) + src.upper_tick_interval = upper_tick_interval return ..() /datum/status_effect/hallucination/on_apply() if(owner.mob_biotypes & barred_biotypes) return FALSE + if(HAS_TRAIT(owner, TRAIT_HALLUCINATION_IMMUNE)) + return FALSE RegisterSignal(owner, COMSIG_LIVING_HEALTHSCAN, PROC_REF(on_health_scan)) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_HALLUCINATION_IMMUNE), PROC_REF(delete_self)) if(iscarbon(owner)) RegisterSignal(owner, COMSIG_CARBON_CHECKING_BODYPART, PROC_REF(on_check_bodypart)) RegisterSignal(owner, COMSIG_CARBON_BUMPED_AIRLOCK_OPEN, PROC_REF(on_bump_airlock)) return TRUE +/datum/status_effect/hallucination/proc/delete_self() + SIGNAL_HANDLER + qdel(src) + /datum/status_effect/hallucination/on_remove() UnregisterSignal(owner, list( COMSIG_LIVING_HEALTHSCAN, COMSIG_CARBON_CHECKING_BODYPART, COMSIG_CARBON_BUMPED_AIRLOCK_OPEN, + SIGNAL_ADDTRAIT(TRAIT_HALLUCINATION_IMMUNE), )) /// Signal proc for [COMSIG_LIVING_HEALTHSCAN]. Show we're hallucinating to (advanced) scanners. diff --git a/code/datums/status_effects/debuffs/hooked.dm b/code/datums/status_effects/debuffs/hooked.dm index d7fcb2b1821dd..8d160305b54f5 100644 --- a/code/datums/status_effects/debuffs/hooked.dm +++ b/code/datums/status_effects/debuffs/hooked.dm @@ -29,6 +29,7 @@ name = "Snagged By Hook" desc = "You're being caught like a fish by some asshat! Click to safely remove the hook or move away far enough to snap it off." icon_state = "hooked" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/hooked/Click() . = ..() diff --git a/code/datums/status_effects/debuffs/screen_blur.dm b/code/datums/status_effects/debuffs/screen_blur.dm index abdd07d3cd59b..acdce13b5a08a 100644 --- a/code/datums/status_effects/debuffs/screen_blur.dm +++ b/code/datums/status_effects/debuffs/screen_blur.dm @@ -18,7 +18,8 @@ return FALSE // Refresh the blur when a client jumps into the mob, in case we get put on a clientless mob with no hud - RegisterSignal(owner, COMSIG_MOB_LOGIN, PROC_REF(update_blur)) + RegisterSignals(owner, list(COMSIG_MOB_LOGIN, SIGNAL_ADDTRAIT(TRAIT_SIGHT_BYPASS), SIGNAL_REMOVETRAIT(TRAIT_SIGHT_BYPASS)), PROC_REF(update_blur)) + // Apply initial blur update_blur() return TRUE @@ -43,10 +44,13 @@ if(!owner.hud_used) return + var/atom/movable/plane_master_controller/game_plane_master_controller = owner.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] + if(HAS_TRAIT(owner, TRAIT_SIGHT_BYPASS)) + game_plane_master_controller.remove_filter("eye_blur") + return + var/time_left_in_seconds = (duration - world.time) / (1 SECONDS) var/amount_of_blur = clamp(time_left_in_seconds * BLUR_DURATION_TO_INTENSITY, 0.6, 3) - - var/atom/movable/plane_master_controller/game_plane_master_controller = owner.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] game_plane_master_controller.add_filter("eye_blur", 1, gauss_blur_filter(amount_of_blur)) #undef BLUR_DURATION_TO_INTENSITY diff --git a/code/datums/status_effects/debuffs/screwy_hud.dm b/code/datums/status_effects/debuffs/screwy_hud.dm index 2e8fc566cf460..10c20112160c7 100644 --- a/code/datums/status_effects/debuffs/screwy_hud.dm +++ b/code/datums/status_effects/debuffs/screwy_hud.dm @@ -8,6 +8,7 @@ * accidentally removing another source's hud. */ /datum/status_effect/grouped/screwy_hud + id = STATUS_EFFECT_ID_ABSTRACT alert_type = null /// The priority of this screwyhud over other screwyhuds. var/priority = -1 diff --git a/code/datums/status_effects/debuffs/slime/slime_food.dm b/code/datums/status_effects/debuffs/slime/slime_food.dm index 538e62e27c597..259f6c8829a6e 100644 --- a/code/datums/status_effects/debuffs/slime/slime_food.dm +++ b/code/datums/status_effects/debuffs/slime/slime_food.dm @@ -21,9 +21,11 @@ RegisterSignal(owner, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_feeder_deleted)) RegisterSignal(owner, COMSIG_SLIME_DRAINED, PROC_REF(on_drained)) RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) - return ..() +/datum/status_effect/slime_food/on_remove() + feeder = null + ///Handles the source of the pheromones getting deleted, or the owner getting washed /datum/status_effect/slime_food/proc/on_feeder_deleted(datum/source) SIGNAL_HANDLER @@ -51,6 +53,3 @@ draining_slime.befriend(feeder) new /obj/effect/temp_visual/heart(draining_slime.loc) qdel(src) - -/datum/status_effect/slime_food/on_remove() - feeder = null diff --git a/code/datums/status_effects/debuffs/slime/slimed.dm b/code/datums/status_effects/debuffs/slime/slimed.dm index 2540c4df5136c..32fa90482233e 100644 --- a/code/datums/status_effects/debuffs/slime/slimed.dm +++ b/code/datums/status_effects/debuffs/slime/slimed.dm @@ -7,6 +7,7 @@ name = "Covered in Slime" desc = "You are covered in slime and it's eating away at you! Click to start cleaning it off, or find a faster way to wash it away!" icon_state = "slimed" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/slimed/Click() . = ..() @@ -65,6 +66,14 @@ to_chat(owner, span_userdanger("You have been covered in a thick layer of slime! Find a way to wash it off!")) return ..() +/datum/status_effect/slimed/on_remove() + owner.remove_shared_particles(rainbow ? "slimed_rainbow" : "slimed_[slime_color]") + +/datum/status_effect/slimed/update_particles() + var/obj/effect/abstract/shared_particle_holder/holder = owner.add_shared_particles(rainbow ? /particles/slime/rainbow : /particles/slime, rainbow ? "slimed_rainbow" : "slimed_[slime_color]") + if (!rainbow) + holder.particles.color = "[slime_color]a0" + /datum/status_effect/slimed/proc/remove_stacks(stacks_to_remove = 1) slime_stacks -= stacks_to_remove // lose 1 stack per second if(slime_stacks <= 0) diff --git a/code/datums/status_effects/debuffs/spacer.dm b/code/datums/status_effects/debuffs/spacer.dm index 1add806c02f0e..ed14fd285968e 100644 --- a/code/datums/status_effects/debuffs/spacer.dm +++ b/code/datums/status_effects/debuffs/spacer.dm @@ -3,6 +3,7 @@ /datum/status_effect/spacer id = "spacer_gravity_effects" status_type = STATUS_EFFECT_REPLACE + alert_type = null /// Essentially, tracks whether this is a planetary map. /// It'd be pretty miserable if you're playing a planetary map and getting the worse of all effects, so we handwave it a bit. VAR_FINAL/nerfed_effects_because_planetary = FALSE diff --git a/code/datums/status_effects/debuffs/speech_debuffs.dm b/code/datums/status_effects/debuffs/speech_debuffs.dm index a557f7ddd4dd4..1ba85ebe72f72 100644 --- a/code/datums/status_effects/debuffs/speech_debuffs.dm +++ b/code/datums/status_effects/debuffs/speech_debuffs.dm @@ -1,5 +1,5 @@ /datum/status_effect/speech - id = null + id = STATUS_EFFECT_ID_ABSTRACT alert_type = null remove_on_fullheal = TRUE tick_interval = STATUS_EFFECT_NO_TICK diff --git a/code/datums/status_effects/debuffs/stamcrit.dm b/code/datums/status_effects/debuffs/stamcrit.dm index 74c3fde12f55f..0d4a844a61e0d 100644 --- a/code/datums/status_effects/debuffs/stamcrit.dm +++ b/code/datums/status_effects/debuffs/stamcrit.dm @@ -1,4 +1,5 @@ /datum/status_effect/incapacitating/stamcrit + id = "stamcrit" status_type = STATUS_EFFECT_UNIQUE // Lasts until we go back to 0 stamina, which is handled by the mob duration = STATUS_EFFECT_PERMANENT diff --git a/code/datums/status_effects/debuffs/strandling.dm b/code/datums/status_effects/debuffs/strandling.dm index 0ce0ad4188221..d37961c13c903 100644 --- a/code/datums/status_effects/debuffs/strandling.dm +++ b/code/datums/status_effects/debuffs/strandling.dm @@ -88,6 +88,7 @@ desc = "Strands of Durathread are wrapped around your neck, preventing you from breathing! Click this icon to remove the strand." icon_state = "his_grace" alerttooltipstyle = "hisgrace" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/strandling/Click(location, control, params) . = ..() diff --git a/code/datums/status_effects/grouped_effect.dm b/code/datums/status_effects/grouped_effect.dm index 601945b83aae4..27b37af1e3567 100644 --- a/code/datums/status_effects/grouped_effect.dm +++ b/code/datums/status_effects/grouped_effect.dm @@ -1,5 +1,7 @@ /// Status effect from multiple sources, when all sources are removed, so is the effect /datum/status_effect/grouped + id = STATUS_EFFECT_ID_ABSTRACT + alert_type = null // Grouped effects adds itself to [var/sources] and destroys itself if one exists already, there are never actually multiple status_type = STATUS_EFFECT_MULTIPLE /// A list of all sources applying this status effect. Sources are a list of keys diff --git a/code/datums/status_effects/limited_effect.dm b/code/datums/status_effects/limited_effect.dm index b577248d35eee..047a7a5ae07c8 100644 --- a/code/datums/status_effects/limited_effect.dm +++ b/code/datums/status_effects/limited_effect.dm @@ -3,6 +3,7 @@ id = "limited_buff" duration = STATUS_EFFECT_PERMANENT status_type = STATUS_EFFECT_REFRESH + alert_type = null ///How many stacks we currently have var/stacks = 1 ///How many stacks we can have maximum diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index b2869b6a30e3a..d080de4d2c014 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -110,6 +110,7 @@ /datum/status_effect/bounty id = "bounty" status_type = STATUS_EFFECT_UNIQUE + alert_type = null var/mob/living/rewarded /datum/status_effect/bounty/on_creation(mob/living/new_owner, mob/living/caster) @@ -176,6 +177,7 @@ name = "Holding Up" desc = "You're currently pointing a gun at someone. Click to cancel." icon_state = "aimed" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/holdup/Click(location, control, params) . = ..() @@ -358,6 +360,7 @@ name = "Surrender" desc = "Looks like you're in trouble now, bud. Click here to surrender. (Warning: You will be incapacitated.)" icon_state = "surrender" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/surrender/Click(location, control, params) . = ..() @@ -579,6 +582,7 @@ id = "tinea_luxor_light" processing_speed = STATUS_EFFECT_NORMAL_PROCESS remove_on_fullheal = TRUE + alert_type = null var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj /datum/status_effect/tinlux_light/on_creation(mob/living/new_owner, duration) @@ -615,40 +619,67 @@ duration = STATUS_EFFECT_PERMANENT status_type = STATUS_EFFECT_UNIQUE alert_type = /atom/movable/screen/alert/status_effect/washing_regen - ///The screen alert shown if you hate water - var/hater_alert = /atom/movable/screen/alert/status_effect/washing_regen/hater /// How much stamina we regain from washing var/stamina_heal_per_tick = -4 /// How much brute, tox and fie damage we heal from this var/heal_per_tick = 0 + /// The main reagent used for the shower (if no reagent is at least 70% of volume then it's null) + var/datum/reagent/shower_reagent + +/datum/status_effect/washing_regen/on_creation(mob/living/new_owner, shower_reagent) + if(!src.shower_reagent) + src.shower_reagent = shower_reagent + return ..() /datum/status_effect/washing_regen/on_apply() . = ..() - if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)) - alert_type = hater_alert + if(istype(shower_reagent, /datum/reagent/blood)) + if(HAS_TRAIT(owner, TRAIT_MORBID) || HAS_TRAIT(owner, TRAIT_EVIL) || (owner.mob_biotypes & MOB_UNDEAD)) + alert_type = /atom/movable/screen/alert/status_effect/washing_regen/bloody_like + else + alert_type = /atom/movable/screen/alert/status_effect/washing_regen/bloody_dislike + else if(istype(shower_reagent, /datum/reagent/water)) + if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)) + alert_type = /atom/movable/screen/alert/status_effect/washing_regen/hater + else + alert_type = /atom/movable/screen/alert/status_effect/washing_regen + else if(!shower_reagent) // dirty shower + alert_type = /atom/movable/screen/alert/status_effect/washing_regen/dislike /datum/status_effect/washing_regen/tick(seconds_between_ticks) . = ..() - var/water_adaptation = HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION) - var/water_hater = HAS_TRAIT(owner, TRAIT_WATER_HATER) - var/stam_recovery = (water_hater && !water_adaptation ? -stamina_heal_per_tick : stamina_heal_per_tick) * seconds_between_ticks - var/recovery = heal_per_tick - if(water_adaptation) - recovery -= 1 - stam_recovery *= 1.5 - else if(water_hater) - recovery *= 0 - recovery *= seconds_between_ticks - - var/healed = 0 - if(recovery) //very mild healing for those with the water adaptation trait (fish infusion) - healed += owner.adjustOxyLoss(recovery * (water_adaptation ? 1.5 : 1), updating_health = FALSE, required_biotype = MOB_ORGANIC) - healed += owner.adjustFireLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC) - healed += owner.adjustToxLoss(recovery, updating_health = FALSE, required_biotype = MOB_ORGANIC) - healed += owner.adjustBruteLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC) - healed += owner.adjustStaminaLoss(stam_recovery, updating_stamina = FALSE) - if(healed) - owner.updatehealth() + + var/is_disgusted = FALSE + + if(istype(shower_reagent, /datum/reagent/water)) + var/water_adaptation = HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION) + var/water_hater = HAS_TRAIT(owner, TRAIT_WATER_HATER) + var/stam_recovery = (water_hater && !water_adaptation ? -stamina_heal_per_tick : stamina_heal_per_tick) * seconds_between_ticks + var/recovery = heal_per_tick + if(water_adaptation) + recovery -= 1 + stam_recovery *= 1.5 + else if(water_hater) + recovery *= 0 + recovery *= seconds_between_ticks + + var/healed = 0 + if(recovery) //very mild healing for those with the water adaptation trait (fish infusion) + healed += owner.adjustOxyLoss(recovery * (water_adaptation ? 1.5 : 1), updating_health = FALSE, required_biotype = MOB_ORGANIC) + healed += owner.adjustFireLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC) + healed += owner.adjustToxLoss(recovery, updating_health = FALSE, required_biotype = MOB_ORGANIC) + healed += owner.adjustBruteLoss(recovery, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC) + healed += owner.adjustStaminaLoss(stam_recovery, updating_stamina = FALSE) + if(healed) + owner.updatehealth() + else if(istype(shower_reagent, /datum/reagent/blood)) + var/enjoy_bloody_showers = HAS_TRAIT(owner, TRAIT_MORBID) || HAS_TRAIT(owner, TRAIT_EVIL) || (owner.mob_biotypes & MOB_UNDEAD) + is_disgusted = !enjoy_bloody_showers + else if(!shower_reagent) // dirty shower + is_disgusted = TRUE + + if(is_disgusted) + owner.adjust_disgust(2) /atom/movable/screen/alert/status_effect/washing_regen name = "Washing" @@ -659,11 +690,28 @@ desc = "Waaater... Fuck this WATER!!" icon_state = "shower_regen_catgirl" +/atom/movable/screen/alert/status_effect/washing_regen/dislike + desc = "This water feels dirty..." + icon_state = "shower_regen_dirty" + +/atom/movable/screen/alert/status_effect/washing_regen/bloody_like + desc = "Mhhhmmmm... the crimson red drops of life. How delightful." + icon_state = "shower_regen_blood_happy" + +/atom/movable/screen/alert/status_effect/washing_regen/bloody_dislike + desc = "Is that... blood? What the fuck!" + icon_state = "shower_regen_blood_bad" + /datum/status_effect/washing_regen/hot_spring alert_type = /atom/movable/screen/alert/status_effect/washing_regen/hotspring - hater_alert = /atom/movable/screen/alert/status_effect/washing_regen/hotspring/hater stamina_heal_per_tick = -4.5 heal_per_tick = -0.4 + shower_reagent = /datum/reagent/water + +/datum/status_effect/washing_regen/hot_spring/on_apply() + . = ..() + if(HAS_TRAIT(owner, TRAIT_WATER_HATER) && !HAS_TRAIT(owner, TRAIT_WATER_ADAPTATION)) + alert_type = /atom/movable/screen/alert/status_effect/washing_regen/hotspring/hater /datum/status_effect/washing_regen/hot_spring/tick(seconds_between_ticks) . = ..() diff --git a/code/datums/status_effects/stacking_effect.dm b/code/datums/status_effects/stacking_effect.dm index 3ed7846f6ff23..d3f128045ce00 100644 --- a/code/datums/status_effects/stacking_effect.dm +++ b/code/datums/status_effects/stacking_effect.dm @@ -1,7 +1,7 @@ /// Status effects that can stack. /datum/status_effect/stacking - id = "stacking_base" + id = STATUS_EFFECT_ID_ABSTRACT duration = STATUS_EFFECT_PERMANENT // Only removed under specific conditions. tick_interval = 1 SECONDS // Deciseconds between decays, once decay starts alert_type = null @@ -119,8 +119,7 @@ return FALSE status_overlay = mutable_appearance(overlay_file, "[overlay_state][stacks]") status_underlay = mutable_appearance(underlay_file, "[underlay_state][stacks]") - var/icon/I = icon(owner.icon, owner.icon_state, owner.dir) - var/icon_height = I.Height() + var/icon_height = owner.get_cached_height() status_overlay.pixel_x = -owner.pixel_x status_overlay.pixel_y = FLOOR(icon_height * 0.25, 1) status_overlay.transform = matrix() * (icon_height/ICON_SIZE_Y) //scale the status's overlay size based on the target's icon size diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm index 8d36aaf287f3d..67ee23120a631 100644 --- a/code/datums/status_effects/wound_effects.dm +++ b/code/datums/status_effects/wound_effects.dm @@ -30,6 +30,7 @@ status_type = STATUS_EFFECT_REPLACE tick_interval = STATUS_EFFECT_NO_TICK alert_type = /atom/movable/screen/alert/status_effect/limp + on_remove_on_mob_delete = TRUE var/msg_stage = 0//so you dont get the most intense messages immediately /// The left leg of the limping person var/obj/item/bodypart/leg/left/left @@ -49,16 +50,18 @@ /datum/status_effect/limp/on_apply() if(!iscarbon(owner)) return FALSE - var/mob/living/carbon/C = owner - left = C.get_bodypart(BODY_ZONE_L_LEG) - right = C.get_bodypart(BODY_ZONE_R_LEG) + var/mob/living/carbon/carbon_owner = owner + left = carbon_owner.get_bodypart(BODY_ZONE_L_LEG) + right = carbon_owner.get_bodypart(BODY_ZONE_R_LEG) update_limp() - RegisterSignal(C, COMSIG_MOVABLE_MOVED, PROC_REF(check_step)) - RegisterSignals(C, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_POST_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB), PROC_REF(update_limp)) + RegisterSignal(carbon_owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_step)) + RegisterSignals(carbon_owner, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_POST_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB), PROC_REF(update_limp)) return TRUE /datum/status_effect/limp/on_remove() UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_POST_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB)) + left = null + right = null /atom/movable/screen/alert/status_effect/limp name = "Limping" @@ -119,7 +122,6 @@ C.remove_status_effect(src) return - ///////////////////////// //////// WOUNDS ///////// ///////////////////////// diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index b659eb79930ea..25703d26c8a02 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -693,10 +693,12 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) /datum/storage/proc/on_preattack(datum/source, obj/item/thing, mob/user, params) SIGNAL_HANDLER - if(!istype(thing) || !allow_quick_gather || thing.atom_storage) + if(!istype(thing) || thing == parent.loc || !allow_quick_gather || thing.atom_storage) return if(collection_mode == COLLECT_ONE) + if(thing.loc == user) + user.dropItemToGround(thing, silent = TRUE) //this is nessassary to update any inventory slot it is attached to attempt_insert(thing, user) return COMPONENT_CANCEL_ATTACK_CHAIN diff --git a/code/datums/storage/subtypes/backpack.dm b/code/datums/storage/subtypes/backpack.dm index a6b3e1477dd97..a2a1a13fcd463 100644 --- a/code/datums/storage/subtypes/backpack.dm +++ b/code/datums/storage/subtypes/backpack.dm @@ -2,6 +2,16 @@ max_total_storage = 21 max_slots = 21 +/datum/storage/backpack/New( + atom/parent, + max_slots, + max_specific_storage, + max_total_storage, +) + . = ..() + var/static/list/exception_cache = typecacheof(list(/obj/item/fish_tank)) + exception_hold = exception_cache + /datum/storage/backpack/santabag max_total_storage = 60 max_slots = 21 diff --git a/code/datums/storage/subtypes/duffel_bag.dm b/code/datums/storage/subtypes/duffel_bag.dm index cfa073da5e513..bb3a236d38b31 100644 --- a/code/datums/storage/subtypes/duffel_bag.dm +++ b/code/datums/storage/subtypes/duffel_bag.dm @@ -2,6 +2,16 @@ max_total_storage = 30 max_slots = 21 +/datum/storage/duffel/New( + atom/parent, + max_slots, + max_specific_storage, + max_total_storage, +) + . = ..() + var/static/list/exception_cache = typecacheof(list(/obj/item/fish_tank)) + exception_hold = exception_cache + // Syndi bags get some FUN extras // You can fit any 2 bulky objects (assuming they're in the whitelist) // Should have traitorus stuff in here, not just useful big things @@ -60,6 +70,9 @@ /obj/item/storage/bag/money, // Heads! /obj/item/bodypart/head, + // Fish + /obj/item/fish, + /obj/item/fish_tank, ) // We keep the type list and the typecache list separate... diff --git a/code/datums/storage/subtypes/fish_case.dm b/code/datums/storage/subtypes/fish_case.dm index 47103e931b1f8..e38d55e0e1d2e 100644 --- a/code/datums/storage/subtypes/fish_case.dm +++ b/code/datums/storage/subtypes/fish_case.dm @@ -7,7 +7,7 @@ . = ..() if(!.) return . - if(!HAS_TRAIT(to_insert, TRAIT_FISH_CASE_COMPATIBILE)) + if(!HAS_TRAIT(to_insert, TRAIT_AQUARIUM_CONTENT)) if(messages && user) user.balloon_alert(user, "can't hold!") return FALSE diff --git a/code/datums/votes/map_vote.dm b/code/datums/votes/map_vote.dm index b4f938a42e451..c5f90f16d1361 100644 --- a/code/datums/votes/map_vote.dm +++ b/code/datums/votes/map_vote.dm @@ -10,6 +10,7 @@ default_choices = SSmap_vote.get_valid_map_vote_choices() /datum/vote/map_vote/create_vote() + default_choices = SSmap_vote.get_valid_map_vote_choices() . = ..() if(!.) return FALSE diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 85e5e74b02fba..fde148c51a8b7 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -51,6 +51,8 @@ var/protect_indoors = FALSE /// Areas to be affected by the weather, calculated when the weather begins var/list/impacted_areas = list() + /// Areas affected by weather have their blend modes changed + var/list/impacted_areas_blend_modes = list() /// Areas that are protected and excluded from the affected areas. var/list/protected_areas = list() /// The list of z-levels that this weather is actively affecting @@ -102,16 +104,19 @@ SEND_GLOBAL_SIGNAL(COMSIG_WEATHER_TELEGRAPH(type), src) stage = STARTUP_STAGE var/list/affectareas = list() - for(var/V in get_areas(area_type)) - affectareas += V - for(var/V in protected_areas) - affectareas -= get_areas(V) - for(var/V in affectareas) - var/area/A = V - if(protect_indoors && !A.outdoors) + for(var/area/selected_area as anything in get_areas(area_type)) + affectareas += selected_area + for(var/area/protected_area as anything in protected_areas) + affectareas -= get_areas(protected_area) + for(var/area/affected_area as anything in affectareas) + if(protect_indoors && !affected_area.outdoors) continue - if(A.z in impacted_z_levels) - impacted_areas |= A + + for(var/z in impacted_z_levels) + if(length(affected_area.turfs_by_zlevel) >= z && length(affected_area.turfs_by_zlevel[z])) + impacted_areas |= affected_area + continue + weather_duration = rand(weather_duration_lower, weather_duration_upper) SSweather.processing |= src update_areas() @@ -230,8 +235,17 @@ for(var/area/impacted as anything in impacted_areas) if(length(overlay_cache)) impacted.overlays -= overlay_cache + if(impacted_areas_blend_modes[impacted]) + // revert the blend mode to the old state + impacted.blend_mode = impacted_areas_blend_modes[impacted] + impacted_areas_blend_modes[impacted] = null if(length(new_overlay_cache)) impacted.overlays += new_overlay_cache + // only change the blend mode if it's not default or overlay + if(impacted.blend_mode > BLEND_OVERLAY) + // save the old blend mode state + impacted_areas_blend_modes[impacted] = impacted.blend_mode + impacted.blend_mode = BLEND_OVERLAY overlay_cache = new_overlay_cache diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm index 7d432c1e488da..f9d9cfc612174 100644 --- a/code/datums/weather/weather_types/ash_storm.dm +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -12,7 +12,7 @@ weather_duration_upper = 1200 weather_overlay = "ash_storm" - end_message = span_boldannounce("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.") + end_message = span_bolddanger("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.") end_duration = 300 end_overlay = "light_ash" diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm index 2b749cdbc84d1..77aafed4f5dc5 100644 --- a/code/datums/weather/weather_types/snow_storm.dm +++ b/code/datums/weather/weather_types/snow_storm.dm @@ -14,7 +14,7 @@ use_glow = FALSE end_duration = 100 - end_message = span_boldannounce("The snowfall dies down, it should be safe to go outside again.") + end_message = span_bolddanger("The snowfall dies down, it should be safe to go outside again.") area_type = /area protect_indoors = TRUE diff --git a/code/datums/wires/mulebot.dm b/code/datums/wires/mulebot.dm index beb58fb1ce3b4..31bfe164b5494 100644 --- a/code/datums/wires/mulebot.dm +++ b/code/datums/wires/mulebot.dm @@ -29,18 +29,24 @@ if(WIRE_MOTOR1, WIRE_MOTOR2) if(is_cut(WIRE_MOTOR1) && is_cut(WIRE_MOTOR2)) ADD_TRAIT(mule, TRAIT_IMMOBILIZED, MOTOR_LACK_TRAIT) + holder.audible_message(span_hear("The motors of [mule] go silent."), null, 1) else REMOVE_TRAIT(mule, TRAIT_IMMOBILIZED, MOTOR_LACK_TRAIT) + holder.audible_message(span_hear("The motors of [mule] whir to life!"), null, 1) if(is_cut(WIRE_MOTOR1)) mule.set_varspeed(FAST_MOTOR_SPEED) + holder.audible_message(span_hear("The motors of [mule] speed up!"), null, 1) else if(is_cut(WIRE_MOTOR2)) mule.set_varspeed(AVERAGE_MOTOR_SPEED) + holder.audible_message(span_hear("The motors of [mule] whir."), null, 1) else mule.set_varspeed(SLOW_MOTOR_SPEED) + holder.audible_message(span_hear("The motors of [mule] move gently."), null, 1) if(WIRE_AVOIDANCE) if (!isnull(source)) log_combat(source, mule, "[is_cut(WIRE_AVOIDANCE) ? "cut" : "mended"] the MULE safety wire of") + holder.audible_message(span_hear("Something inside [mule] clicks ominously!"), null, 1) /datum/wires/mulebot/on_pulse(wire) var/mob/living/simple_animal/bot/mulebot/mule = holder diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index a9971f6068c98..2a4af3a781aa0 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -26,7 +26,7 @@ var/require_comms_key = FALSE /datum/world_topic/proc/TryRun(list/input) - key_valid = config && (CONFIG_GET(string/comms_key) == input["key"]) + key_valid = (CONFIG_GET(string/comms_key) == input["key"]) && CONFIG_GET(string/comms_key) && input["key"] input -= "key" if(require_comms_key && !key_valid) . = "Bad Key" diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm index 8209fb93facf3..c52d7c12aaf3a 100644 --- a/code/datums/wounds/bones.dm +++ b/code/datums/wounds/bones.dm @@ -61,9 +61,10 @@ /datum/wound/blunt/bone/set_victim(new_victim) if (victim) - UnregisterSignal(victim, COMSIG_LIVING_UNARMED_ATTACK) + UnregisterSignal(victim, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_FIRED_GUN)) if (new_victim) RegisterSignal(new_victim, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(attack_with_hurt_hand)) + RegisterSignal(new_victim, COMSIG_MOB_FIRED_GUN, PROC_REF(firing_with_messed_up_hand)) return ..() @@ -120,19 +121,49 @@ // With a severe or critical wound, you have a 15% or 30% chance to proc pain on hit if(prob((severity - 1) * 15)) // And you have a 70% or 50% chance to actually land the blow, respectively - if(prob(70 - 20 * (severity - 1))) - to_chat(victim, span_userdanger("The fracture in your [limb.plaintext_zone] shoots with pain as you strike [target]!")) - limb.receive_damage(brute=rand(1,5)) + if(HAS_TRAIT(victim, TRAIT_ANALGESIA) || prob(70 - 20 * (severity - 1))) + if(!HAS_TRAIT(victim, TRAIT_ANALGESIA)) + to_chat(victim, span_danger("The fracture in your [limb.plaintext_zone] shoots with pain as you strike [target]!")) + victim.apply_damage(rand(1, 5), BRUTE, limb, wound_bonus = CANT_WOUND, wound_clothing = FALSE) else victim.visible_message(span_danger("[victim] weakly strikes [target] with [victim.p_their()] broken [limb.plaintext_zone], recoiling from pain!"), \ span_userdanger("You fail to strike [target] as the fracture in your [limb.plaintext_zone] lights up in unbearable pain!"), vision_distance=COMBAT_MESSAGE_RANGE) INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, emote), "scream") victim.Stun(0.5 SECONDS) - limb.receive_damage(brute=rand(3,7)) + victim.apply_damage(rand(3, 7), BRUTE, limb, wound_bonus = CANT_WOUND, wound_clothing = FALSE) return COMPONENT_CANCEL_ATTACK_CHAIN return NONE +/// If we're a human who's firing a gun with a broken arm, we might hurt ourselves doing so +/datum/wound/blunt/bone/proc/firing_with_messed_up_hand(datum/source, obj/item/gun/gun, atom/firing_at, params, zone, bonus_spread_values) + SIGNAL_HANDLER + + switch(limb.body_zone) + if(BODY_ZONE_L_ARM) + // Heavy guns use both hands so they will always get a penalty + // (Yes, this means having two broken arms will make heavy weapons SOOO much worse) + // Otherwise make sure THIS hand is firing THIS gun + if(gun.weapon_weight <= WEAPON_MEDIUM && !IS_LEFT_INDEX(victim.get_held_index_of_item(gun))) + return + + if(BODY_ZONE_R_ARM) + // Ditto but for right arm + if(gun.weapon_weight <= WEAPON_MEDIUM && !IS_RIGHT_INDEX(victim.get_held_index_of_item(gun))) + return + + else + // This is not arm wound, so we don't care + return + + if(gun.recoil > 0 && severity >= WOUND_SEVERITY_SEVERE && prob(25 * (severity - 1))) + if(!HAS_TRAIT(victim, TRAIT_ANALGESIA)) + to_chat(victim, span_danger("The fracture in your [limb.plaintext_zone] explodes with pain as [gun] kicks back!")) + victim.apply_damage(rand(1, 3) * (severity - 1) * gun.weapon_weight, BRUTE, limb, wound_bonus = CANT_WOUND, wound_clothing = FALSE) + + if(!HAS_TRAIT(victim, TRAIT_ANALGESIA)) + bonus_spread_values[MAX_BONUS_SPREAD_INDEX] += (15 * severity * (limb.current_gauze?.splint_factor || 1)) + /datum/wound/blunt/bone/receive_damage(wounding_type, wounding_dmg, wound_bonus) if(!victim || wounding_dmg < WOUND_MINIMUM_DAMAGE) return @@ -277,12 +308,12 @@ user.visible_message(span_danger("[user] snaps [victim]'s dislocated [limb.plaintext_zone] back into place!"), span_notice("You snap [victim]'s dislocated [limb.plaintext_zone] back into place!"), ignored_mobs=victim) to_chat(victim, span_userdanger("[user] snaps your dislocated [limb.plaintext_zone] back into place!")) victim.emote("scream") - limb.receive_damage(brute=20, wound_bonus=CANT_WOUND) + victim.apply_damage(20, BRUTE, limb, wound_bonus = CANT_WOUND) qdel(src) else user.visible_message(span_danger("[user] wrenches [victim]'s dislocated [limb.plaintext_zone] around painfully!"), span_danger("You wrench [victim]'s dislocated [limb.plaintext_zone] around painfully!"), ignored_mobs=victim) to_chat(victim, span_userdanger("[user] wrenches your dislocated [limb.plaintext_zone] around painfully!")) - limb.receive_damage(brute=10, wound_bonus=CANT_WOUND) + victim.apply_damage(10, BRUTE, limb, wound_bonus = CANT_WOUND) chiropractice(user) /// If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent @@ -296,14 +327,13 @@ user.visible_message(span_danger("[user] snaps [victim]'s dislocated [limb.plaintext_zone] with a sickening crack!"), span_danger("You snap [victim]'s dislocated [limb.plaintext_zone] with a sickening crack!"), ignored_mobs=victim) to_chat(victim, span_userdanger("[user] snaps your dislocated [limb.plaintext_zone] with a sickening crack!")) victim.emote("scream") - limb.receive_damage(brute=25, wound_bonus=30) + victim.apply_damage(25, BRUTE, limb, wound_bonus = 30) else user.visible_message(span_danger("[user] wrenches [victim]'s dislocated [limb.plaintext_zone] around painfully!"), span_danger("You wrench [victim]'s dislocated [limb.plaintext_zone] around painfully!"), ignored_mobs=victim) to_chat(victim, span_userdanger("[user] wrenches your dislocated [limb.plaintext_zone] around painfully!")) - limb.receive_damage(brute=10, wound_bonus=CANT_WOUND) + victim.apply_damage(10, BRUTE, limb, wound_bonus = CANT_WOUND) malpractice(user) - /datum/wound/blunt/bone/moderate/treat(obj/item/I, mob/user) var/scanned = HAS_TRAIT(src, TRAIT_WOUND_SCANNED) var/self_penalty_mult = user == victim ? 1.5 : 1 @@ -316,18 +346,19 @@ user.visible_message(span_danger("[user] begins [scanned ? "expertly" : ""] resetting [victim]'s [limb.plaintext_zone] with [I]."), span_notice("You begin resetting [victim]'s [limb.plaintext_zone] with [I][scanned ? ", keeping the holo-image's indications in mind" : ""]...")) if(!do_after(user, treatment_delay, target = victim, extra_checks=CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE if(victim == user) - limb.receive_damage(brute=15, wound_bonus=CANT_WOUND) + victim.apply_damage(15, BRUTE, limb, wound_bonus = CANT_WOUND) victim.visible_message(span_danger("[user] finishes resetting [victim.p_their()] [limb.plaintext_zone]!"), span_userdanger("You reset your [limb.plaintext_zone]!")) else - limb.receive_damage(brute=10, wound_bonus=CANT_WOUND) + victim.apply_damage(10, BRUTE, limb, wound_bonus = CANT_WOUND) user.visible_message(span_danger("[user] finishes resetting [victim]'s [limb.plaintext_zone]!"), span_nicegreen("You finish resetting [victim]'s [limb.plaintext_zone]!"), ignored_mobs=victim) to_chat(victim, span_userdanger("[user] resets your [limb.plaintext_zone]!")) victim.emote("scream") qdel(src) + return TRUE /* Severe (Hairline Fracture) @@ -441,8 +472,8 @@ return TRUE victim.visible_message(span_notice("[victim] finishes applying [I] to [victim.p_their()] [limb.plaintext_zone], grimacing from the pain!"), span_notice("You finish applying [I] to your [limb.plaintext_zone], and your bones explode in pain!")) - limb.receive_damage(25, wound_bonus=CANT_WOUND) - victim.adjustStaminaLoss(100) + victim.apply_damage(25, BRUTE, limb, wound_bonus = CANT_WOUND) + victim.apply_damage(100, STAMINA) gelled = TRUE return TRUE diff --git a/code/datums/wounds/burns.dm b/code/datums/wounds/burns.dm index a4ef3bd7b7df7..b3d04c2148573 100644 --- a/code/datums/wounds/burns.dm +++ b/code/datums/wounds/burns.dm @@ -159,7 +159,7 @@ if(4 to INFINITY) bandage_condition = "clean" - condition += " underneath a dressing of [bandage_condition] [limb.current_gauze.name]" + condition += " underneath a dressing of [bandage_condition] [limb.current_gauze.name]." else switch(infestation) if(WOUND_INFECTION_MODERATE to WOUND_INFECTION_SEVERE) @@ -223,25 +223,13 @@ new burn common procs */ -/// if someone is using ointment or mesh on our burns -/datum/wound/burn/flesh/proc/ointmentmesh(obj/item/stack/medical/I, mob/user) - user.visible_message(span_notice("[user] begins applying [I] to [victim]'s [limb.plaintext_zone]..."), span_notice("You begin applying [I] to [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone]...")) - if (I.amount <= 0) +/// Checks if the wound is in a state that ointment or flesh will help +/datum/wound/burn/flesh/proc/can_be_ointmented_or_meshed() + if(infestation > 0 || sanitization < infestation) return TRUE - if(!do_after(user, (user == victim ? I.self_delay : I.other_delay), target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) + if(flesh_damage > 0 || flesh_healing <= flesh_damage) return TRUE - - limb.heal_damage(I.heal_brute, I.heal_burn) - user.visible_message(span_green("[user] applies [I] to [victim]."), span_green("You apply [I] to [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone].")) - I.use(1) - sanitization += I.sanitization - flesh_healing += I.flesh_regeneration - - if((infestation <= 0 || sanitization >= infestation) && (flesh_damage <= 0 || flesh_healing > flesh_damage)) - to_chat(user, span_notice("You've done all you can with [I], now you must wait for the flesh on [victim]'s [limb.plaintext_zone] to recover.")) - return TRUE - else - return try_treating(I, user) + return FALSE /// Paramedic UV penlights /datum/wound/burn/flesh/proc/uv(obj/item/flashlight/pen/paramedic/I, mob/user) @@ -258,15 +246,7 @@ return TRUE /datum/wound/burn/flesh/treat(obj/item/I, mob/user) - if(istype(I, /obj/item/stack/medical/ointment)) - return ointmentmesh(I, user) - else if(istype(I, /obj/item/stack/medical/mesh)) - var/obj/item/stack/medical/mesh/mesh_check = I - if(!mesh_check.is_open) - to_chat(user, span_warning("You need to open [mesh_check] first.")) - return - return ointmentmesh(mesh_check, user) - else if(istype(I, /obj/item/flashlight/pen/paramedic)) + if(istype(I, /obj/item/flashlight/pen/paramedic)) return uv(I, user) // people complained about burns not healing on stasis beds, so in addition to checking if it's cured, they also get the special ability to very slowly heal on stasis beds if they have the healing effects stored diff --git a/code/datums/wounds/cranial_fissure.dm b/code/datums/wounds/cranial_fissure.dm index 615d0d10eb0e6..8e561cd346c13 100644 --- a/code/datums/wounds/cranial_fissure.dm +++ b/code/datums/wounds/cranial_fissure.dm @@ -52,12 +52,10 @@ /datum/wound/cranial_fissure/remove_wound(ignore_limb, replaced) REMOVE_TRAIT(limb, TRAIT_IMMUNE_TO_CRANIAL_FISSURE, type) - REMOVE_TRAIT(victim, TRAIT_HAS_CRANIAL_FISSURE, type) - - victim.remove_filter(CRANIAL_FISSURE_FILTER_DISPLACEMENT) - - UnregisterSignal(victim, COMSIG_MOB_SLIPPED) - + if (!isnull(victim)) + REMOVE_TRAIT(victim, TRAIT_HAS_CRANIAL_FISSURE, type) + victim.remove_filter(CRANIAL_FISSURE_FILTER_DISPLACEMENT) + UnregisterSignal(victim, COMSIG_MOB_SLIPPED) return ..() /datum/wound/cranial_fissure/proc/on_owner_slipped(mob/source) diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm index 6c6eb74ec315b..bb4bc85d8e95f 100644 --- a/code/datums/wounds/pierce.dm +++ b/code/datums/wounds/pierce.dm @@ -80,11 +80,12 @@ if (!victim || HAS_TRAIT(victim, TRAIT_STASIS)) return - set_blood_flow(min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW)) if(limb.can_bleed()) if(victim.bodytemperature < (BODYTEMP_NORMAL - 10)) adjust_blood_flow(-0.1 * seconds_per_tick) + if(QDELETED(src)) + return if(SPT_PROB(2.5, seconds_per_tick)) to_chat(victim, span_notice("You feel the [LOWER_TEXT(name)] in your [limb.plaintext_zone] firming up from the cold!")) @@ -92,15 +93,16 @@ adjust_blood_flow(0.25 * seconds_per_tick) // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first if(limb.current_gauze) - adjust_blood_flow(-limb.current_gauze.absorption_rate * gauzed_clot_rate * seconds_per_tick) - limb.current_gauze.absorption_capacity -= limb.current_gauze.absorption_rate * seconds_per_tick + var/gauze_power = limb.current_gauze.absorption_rate + limb.seep_gauze(gauze_power * seconds_per_tick) + adjust_blood_flow(-gauze_power * gauzed_clot_rate * seconds_per_tick) - if(blood_flow <= 0) - qdel(src) - -/datum/wound/pierce/bleed/on_stasis(seconds_per_tick, times_fired) +/datum/wound/pierce/bleed/adjust_blood_flow(adjust_by, minimum) . = ..() - if(blood_flow <= 0) + if(blood_flow > WOUND_MAX_BLOODFLOW) + blood_flow = WOUND_MAX_BLOODFLOW + if(blood_flow <= 0 && !QDELETED(src)) + to_chat(victim, span_green("The holes on your [limb.plaintext_zone] have [!limb.can_bleed() ? "healed up" : "stopped bleeding"]!")) qdel(src) /datum/wound/pierce/bleed/check_grab_treatments(obj/item/I, mob/user) @@ -108,9 +110,7 @@ return TRUE /datum/wound/pierce/bleed/treat(obj/item/I, mob/user) - if(istype(I, /obj/item/stack/medical/suture)) - return suture(I, user) - else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature()) + if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature()) return tool_cauterize(I, user) /datum/wound/pierce/bleed/on_xadone(power) @@ -123,32 +123,6 @@ . = ..() adjust_blood_flow(-0.025 * reac_volume) // 20u * 0.05 = -1 blood flow, less than with slashes but still good considering smaller bleed rates -/// If someone is using a suture to close this puncture -/datum/wound/pierce/bleed/proc/suture(obj/item/stack/medical/suture/I, mob/user) - var/self_penalty_mult = (user == victim ? 1.4 : 1) - var/treatment_delay = base_treat_time * self_penalty_mult - - if(HAS_TRAIT(src, TRAIT_WOUND_SCANNED)) - treatment_delay *= 0.5 - user.visible_message(span_notice("[user] begins expertly stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I], keeping the holo-image information in mind...")) - else - user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]...")) - - if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return TRUE - var/bleeding_wording = (!limb.can_bleed() ? "holes" : "bleeding") - user.visible_message(span_green("[user] stitches up some of the [bleeding_wording] on [victim]."), span_green("You stitch up some of the [bleeding_wording] on [user == victim ? "yourself" : "[victim]"].")) - var/blood_sutured = I.stop_bleeding / self_penalty_mult - adjust_blood_flow(-blood_sutured) - limb.heal_damage(I.heal_brute, I.heal_burn) - I.use(1) - - if(blood_flow > 0) - return try_treating(I, user) - else - to_chat(user, span_green("You successfully close the hole in [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone].")) - return TRUE - /// If someone is using either a cautery tool or something with heat to cauterize this pierce /datum/wound/pierce/bleed/proc/tool_cauterize(obj/item/I, mob/user) @@ -163,12 +137,16 @@ else user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.plaintext_zone] with [I]..."), span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]...")) + playsound(user, 'sound/items/handling/surgery/cautery1.ogg', 75, TRUE) + if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) return TRUE + playsound(user, 'sound/items/handling/surgery/cautery2.ogg', 75, TRUE) + var/bleeding_wording = (!limb.can_bleed() ? "holes" : "bleeding") user.visible_message(span_green("[user] cauterizes some of the [bleeding_wording] on [victim]."), span_green("You cauterize some of the [bleeding_wording] on [victim].")) - limb.receive_damage(burn = 2 + severity, wound_bonus = CANT_WOUND) + victim.apply_damage(2 + severity, BURN, limb, wound_bonus = CANT_WOUND) if(prob(30)) victim.emote("scream") var/blood_cauterized = (0.6 / (self_penalty_mult * improv_penalty_mult)) diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm index fd3cb4bd7b2b1..2ec5700e03c09 100644 --- a/code/datums/wounds/slash.dm +++ b/code/datums/wounds/slash.dm @@ -36,9 +36,6 @@ /// Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better var/demotes_to - /// The maximum flow we've had so far - var/highest_flow - /// A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate)) var/datum/scar/highest_scar @@ -133,44 +130,23 @@ return BLOOD_FLOW_INCREASING /datum/wound/slash/flesh/handle_process(seconds_per_tick, times_fired) - if (!victim || HAS_TRAIT(victim, TRAIT_STASIS)) return // in case the victim has the NOBLOOD trait, the wound will simply not clot on its own if(limb.can_bleed()) - set_blood_flow(min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW)) + if(clot_rate > 0) + adjust_blood_flow(-clot_rate * seconds_per_tick) + if(QDELETED(src)) + return if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) adjust_blood_flow(0.25) // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first - //gauze always reduces blood flow, even for non bleeders if(limb.current_gauze) - if(clot_rate > 0) - adjust_blood_flow(-clot_rate * seconds_per_tick) - adjust_blood_flow(-limb.current_gauze.absorption_rate * seconds_per_tick) - limb.seep_gauze(limb.current_gauze.absorption_rate * seconds_per_tick) - //otherwise, only clot if it's a bleeder - else if(limb.can_bleed()) - adjust_blood_flow(-clot_rate * seconds_per_tick) - - if(blood_flow > highest_flow) - highest_flow = blood_flow - - if(blood_flow < minimum_flow) - if(demotes_to) - replace_wound(new demotes_to) - else - to_chat(victim, span_green("The cut on your [limb.plaintext_zone] has [!limb.can_bleed() ? "healed up" : "stopped bleeding"]!")) - qdel(src) - -/datum/wound/slash/flesh/on_stasis(seconds_per_tick, times_fired) - if(blood_flow >= minimum_flow) - return - if(demotes_to) - replace_wound(new demotes_to) - return - qdel(src) + var/gauze_power = limb.current_gauze.absorption_rate + limb.seep_gauze(gauze_power * seconds_per_tick) + adjust_blood_flow(-gauze_power * seconds_per_tick) /* BEWARE, THE BELOW NONSENSE IS MADNESS. bones.dm looks more like what I have in mind and is sufficiently clean, don't pay attention to this messiness */ @@ -185,8 +161,6 @@ return las_cauterize(I, user) else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature()) return tool_cauterize(I, user) - else if(istype(I, /obj/item/stack/medical/suture)) - return suture(I, user) /datum/wound/slash/flesh/try_handling(mob/living/user) if(user.pulling != victim || !HAS_TRAIT(user, TRAIT_WOUND_LICKER) || !victim.try_inject(user, injection_flags = INJECT_TRY_SHOW_ERROR_MESSAGE)) @@ -212,8 +186,7 @@ /// if a felinid is licking this cut to reduce bleeding /datum/wound/slash/flesh/proc/lick_wounds(mob/living/carbon/human/user) // transmission is one way patient -> felinid since google said cat saliva is antiseptic or whatever, and also because felinids are already risking getting beaten for this even without people suspecting they're spreading a deathvirus - for(var/i in victim.diseases) - var/datum/disease/iter_disease = i + for(var/datum/disease/iter_disease as anything in victim.diseases) if(iter_disease.spread_flags & (DISEASE_SPREAD_SPECIAL | DISEASE_SPREAD_NON_CONTAGIOUS)) continue user.ForceContractDisease(iter_disease) @@ -225,18 +198,28 @@ user.visible_message(span_notice("[user] licks the wounds on [victim]'s [limb.plaintext_zone]."), span_notice("You lick some of the wounds on [victim]'s [limb.plaintext_zone]"), ignored_mobs=victim) to_chat(victim, span_green("[user] licks the wounds on your [limb.plaintext_zone]!")) + var/mob/victim_stored = victim adjust_blood_flow(-0.5) if(blood_flow > minimum_flow) try_handling(user) else if(demotes_to) - to_chat(user, span_green("You successfully lower the severity of [victim]'s cuts.")) + to_chat(user, span_green("You successfully lower the severity of [user == victim_stored ? "your" : "[victim_stored]'s"] cuts.")) -/datum/wound/slash/flesh/on_xadone(power) +/datum/wound/slash/flesh/adjust_blood_flow(adjust_by, minimum) . = ..() + if(blood_flow > WOUND_MAX_BLOODFLOW) + blood_flow = WOUND_MAX_BLOODFLOW + if(blood_flow < minimum_flow && !QDELETED(src)) + if(demotes_to) + replace_wound(new demotes_to) + else + to_chat(victim, span_green("The cut on your [limb.plaintext_zone] has [!limb.can_bleed() ? "healed up" : "stopped bleeding"]!")) + qdel(src) - if (limb) // parent can cause us to be removed, so its reasonable to check if we're still applied - adjust_blood_flow(-0.03 * power) // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort +/datum/wound/slash/flesh/on_xadone(power) + . = ..() + adjust_blood_flow(-0.03 * power) // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort /datum/wound/slash/flesh/on_synthflesh(reac_volume) . = ..() @@ -271,50 +254,29 @@ else user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.plaintext_zone] with [I]..."), span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]...")) + playsound(user, 'sound/items/handling/surgery/cautery1.ogg', 75, TRUE) + if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) return + + playsound(user, 'sound/items/handling/surgery/cautery2.ogg', 75, TRUE) + var/bleeding_wording = (!limb.can_bleed() ? "cuts" : "bleeding") user.visible_message(span_green("[user] cauterizes some of the [bleeding_wording] on [victim]."), span_green("You cauterize some of the [bleeding_wording] on [victim].")) - limb.receive_damage(burn = 2 + severity, wound_bonus = CANT_WOUND) + victim.apply_damage(2 + severity, BURN, limb, wound_bonus = CANT_WOUND) if(prob(30)) victim.emote("scream") var/blood_cauterized = (0.6 / (self_penalty_mult * improv_penalty_mult)) + var/mob/victim_stored = victim adjust_blood_flow(-blood_cauterized) if(blood_flow > minimum_flow) return try_treating(I, user) else if(demotes_to) - to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts.")) + to_chat(user, span_green("You successfully lower the severity of [user == victim_stored ? "your" : "[victim_stored]'s"] cuts.")) return TRUE return FALSE -/// If someone is using a suture to close this cut -/datum/wound/slash/flesh/proc/suture(obj/item/stack/medical/suture/I, mob/user) - var/self_penalty_mult = (user == victim ? 1.4 : 1) - var/treatment_delay = base_treat_time * self_penalty_mult - - if(HAS_TRAIT(src, TRAIT_WOUND_SCANNED)) - treatment_delay *= 0.5 - user.visible_message(span_notice("[user] begins expertly stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I], keeping the holo-image information in mind...")) - else - user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.plaintext_zone] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.plaintext_zone] with [I]...")) - - if(!do_after(user, treatment_delay, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return TRUE - var/bleeding_wording = (!limb.can_bleed() ? "cuts" : "bleeding") - user.visible_message(span_green("[user] stitches up some of the [bleeding_wording] on [victim]."), span_green("You stitch up some of the [bleeding_wording] on [user == victim ? "yourself" : "[victim]"].")) - var/blood_sutured = I.stop_bleeding / self_penalty_mult - adjust_blood_flow(-blood_sutured) - limb.heal_damage(I.heal_brute, I.heal_burn) - I.use(1) - - if(blood_flow > minimum_flow) - return try_treating(I, user) - else if(demotes_to) - to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts.")) - return TRUE - return TRUE - /datum/wound/slash/get_limb_examine_description() return span_warning("The flesh on this limb appears badly lacerated.") diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index b988fa0b6daa8..450a29d9cbd35 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -80,8 +80,8 @@ var/power_light = TRUE var/power_environ = TRUE var/power_apc_charge = TRUE - - var/has_gravity = FALSE + /// The default gravity for the area + var/default_gravity = ZERO_GRAVITY var/parallax_movedir = 0 diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm index 5ff0143c0a1a9..648ef4c8d3160 100644 --- a/code/game/area/areas/away_content.dm +++ b/code/game/area/areas/away_content.dm @@ -8,7 +8,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" name = "Strange Location" icon = 'icons/area/areas_away_missions.dmi' icon_state = "away" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY ambience_index = AMBIENCE_AWAY sound_environment = SOUND_ENVIRONMENT_ROOM area_flags = UNIQUE_AREA @@ -34,7 +34,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" static_lighting = FALSE base_lighting_alpha = 255 area_flags = UNIQUE_AREA|NOTELEPORT - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY /area/awaymission/secret area_flags = UNIQUE_AREA|NOTELEPORT|HIDDEN_AREA @@ -46,7 +46,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" outdoors = TRUE /area/awaymission/secret/unpowered/no_grav - has_gravity = FALSE + default_gravity = ZERO_GRAVITY /area/awaymission/secret/fullbright static_lighting = FALSE diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index 28b3496c4e18a..022e0d91c177f 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -7,7 +7,7 @@ icon_state = "centcom" static_lighting = TRUE requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = UNIQUE_AREA | NOTELEPORT flags_1 = NONE @@ -151,7 +151,7 @@ icon_state = "wizards_den" static_lighting = TRUE requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = UNIQUE_AREA | NOTELEPORT flags_1 = NONE @@ -164,7 +164,7 @@ area_flags = UNIQUE_AREA | NOTELEPORT static_lighting = FALSE base_lighting_alpha = 255 - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY flags_1 = NONE //Syndicates @@ -172,7 +172,7 @@ name = "Syndicate Mothership" icon_state = "syndie-ship" requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = UNIQUE_AREA | NOTELEPORT flags_1 = NONE ambience_index = AMBIENCE_DANGER @@ -217,7 +217,7 @@ base_lighting_alpha = 255 requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY flags_1 = NONE area_flags = BLOCK_SUICIDE | UNIQUE_AREA @@ -228,7 +228,7 @@ requires_power = FALSE static_lighting = FALSE base_lighting_alpha = 255 - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY flags_1 = NONE area_flags = UNIQUE_AREA | NOTELEPORT | NO_DEATH_MESSAGE | BLOCK_SUICIDE @@ -273,7 +273,7 @@ name = "\improper Asteroid" icon_state = "asteroid" requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = UNIQUE_AREA ambience_index = AMBIENCE_MINING flags_1 = CAN_BE_DIRTY_1 diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index be6db4e077fec..4254e23d62bc6 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -2,7 +2,7 @@ /area/mine icon = 'icons/area/areas_station.dmi' icon_state = "mining" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED | CULT_PERMITTED ambient_buzz = 'sound/ambience/lavaland/magma.ogg' @@ -130,7 +130,7 @@ /area/lavaland icon = 'icons/area/areas_station.dmi' icon_state = "mining" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY flags_1 = NONE area_flags = VALID_TERRITORY | UNIQUE_AREA | FLORA_ALLOWED sound_environment = SOUND_AREA_LAVALAND @@ -190,7 +190,7 @@ /area/icemoon icon = 'icons/area/areas_station.dmi' icon_state = "mining" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY flags_1 = NONE area_flags = UNIQUE_AREA | FLORA_ALLOWED ambience_index = AMBIENCE_ICEMOON diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm index 8aa6adc738c4a..00ce0d6f46410 100644 --- a/code/game/area/areas/misc.dm +++ b/code/game/area/areas/misc.dm @@ -5,13 +5,12 @@ requires_power = TRUE always_unpowered = TRUE static_lighting = FALSE - base_lighting_alpha = 255 base_lighting_color = COLOR_STARLIGHT power_light = FALSE power_equip = FALSE power_environ = FALSE - area_flags = UNIQUE_AREA + area_flags = UNIQUE_AREA|NO_GRAVITY outdoors = TRUE ambience_index = AMBIENCE_SPACE flags_1 = CAN_BE_DIRTY_1 @@ -22,7 +21,6 @@ /area/space/nearstation icon_state = "space_near" - area_flags = UNIQUE_AREA static_lighting = TRUE base_lighting_alpha = 0 base_lighting_color = null @@ -33,12 +31,12 @@ requires_power = FALSE static_lighting = FALSE base_lighting_alpha = 255 - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY ambient_buzz = null /area/misc/testroom requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY // Mobs should be able to see inside the testroom static_lighting = FALSE base_lighting_alpha = 255 diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm index 69e17d365caf8..46cf851b1ebd1 100644 --- a/code/game/area/areas/ruins/_ruins.dm +++ b/code/game/area/areas/ruins/_ruins.dm @@ -4,7 +4,7 @@ name = "\improper Unexplored Location" icon = 'icons/area/areas_ruins.dmi' icon_state = "ruins" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = HIDDEN_AREA | BLOBS_ALLOWED | UNIQUE_AREA ambience_index = AMBIENCE_RUINS flags_1 = CAN_BE_DIRTY_1 @@ -14,7 +14,7 @@ always_unpowered = TRUE /area/ruin/unpowered/no_grav - has_gravity = FALSE + default_gravity = ZERO_GRAVITY /area/ruin/powered requires_power = FALSE diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index 2e25aeb2d6fd4..7484e208872de 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -1,7 +1,7 @@ //Space Ruin Parents /area/ruin/space - has_gravity = FALSE + default_gravity = ZERO_GRAVITY area_flags = UNIQUE_AREA /area/ruin/space/unpowered @@ -11,7 +11,7 @@ power_environ = FALSE /area/ruin/space/has_grav - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY /area/ruin/space/has_grav/powered requires_power = FALSE @@ -529,18 +529,18 @@ /area/ruin/space/djstation name = "\improper Ruskie DJ Station" icon_state = "DJ" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY /area/ruin/space/djstation/solars name = "\improper DJ Station Solars" icon_state = "DJ" area_flags = UNIQUE_AREA - has_gravity = STANDARD_GRAVITY + default_gravity = ZERO_GRAVITY /area/ruin/space/djstation/service name = "\improper DJ Station Service" icon_state = "DJ" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY //ABANDONED TELEPORTER diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index f128805924fe8..490a4d60c2ebb 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -6,7 +6,7 @@ name = "Shuttle" requires_power = FALSE static_lighting = TRUE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY always_unpowered = FALSE // Loading the same shuttle map at a different time will produce distinct area instances. area_flags = NONE @@ -256,7 +256,7 @@ // ----------- Arena Shuttle /area/shuttle/shuttle_arena name = "arena" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY requires_power = FALSE /obj/effect/forcefield/arena_shuttle diff --git a/code/game/area/areas/station/science.dm b/code/game/area/areas/station/science.dm index 2787a4ff87feb..40bdd3786571e 100644 --- a/code/game/area/areas/station/science.dm +++ b/code/game/area/areas/station/science.dm @@ -126,4 +126,7 @@ /area/station/science/ordnance/bomb name = "\improper Ordnance Bomb Site" icon_state = "ord_boom" - area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED + area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED | NO_GRAVITY + +/area/station/science/ordnance/bomb/planet + area_flags = /area/station/science/ordnance/bomb::area_flags & ~NO_GRAVITY diff --git a/code/game/area/areas/station/solars.dm b/code/game/area/areas/station/solars.dm index 57376e2fb17be..8d3a81420e7d7 100644 --- a/code/game/area/areas/station/solars.dm +++ b/code/game/area/areas/station/solars.dm @@ -5,11 +5,12 @@ /area/station/solars icon_state = "panels" requires_power = FALSE - area_flags = UNIQUE_AREA + area_flags = UNIQUE_AREA|NO_GRAVITY flags_1 = NONE ambience_index = AMBIENCE_ENGI airlock_wires = /datum/wires/airlock/engineering sound_environment = SOUND_AREA_SPACE + default_gravity = ZERO_GRAVITY /area/station/solars/fore name = "\improper Fore Solar Array" @@ -40,10 +41,20 @@ name = "\improper Starboard Bow Solar Array" icon_state = "panelsFS" +/area/station/solars/starboard/fore/asteriod + name = "\improper Starboard Bow Asteriod Solar Array" + icon_state = "panelsFS" + area_flags = UNIQUE_AREA // solar areas directly on asteriod have gravity + /area/station/solars/port name = "\improper Port Solar Array" icon_state = "panelsP" +/area/station/solars/port/asteriod + name = "\improper Port Asteriod Solar Array" + icon_state = "panelsP" + area_flags = UNIQUE_AREA // solar areas directly on asteriod have gravity + /area/station/solars/port/aft name = "\improper Port Quarter Solar Array" icon_state = "panelsAP" diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index d981cadaf8274..1d5bc1f936929 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -763,6 +763,7 @@ * Gravity situations: * * No gravity if you're not in a turf * * No gravity if this atom is in is a space turf + * * No gravity if the area has NO_GRAVITY flag (space, ordnance bomb site, nearstation, solars) * * Gravity if the area it's in always has gravity * * Gravity if there's a gravity generator on the z level * * Gravity if the Z level has an SSMappingTrait for ZTRAIT_GRAVITY @@ -790,7 +791,7 @@ var/area/turf_area = gravity_turf.loc - return !gravity_turf.force_no_gravity && (SSmapping.gravity_by_z_level[gravity_turf.z] || turf_area.has_gravity) + return (!gravity_turf.force_no_gravity && !(turf_area.area_flags & NO_GRAVITY)) && (SSmapping.gravity_by_z_level[gravity_turf.z] || turf_area.default_gravity) /** * Used to set something as 'open' if it's being used as a supplypod @@ -884,7 +885,7 @@ var/extra_context = "" var/used_name = name - if(isliving(user) || isovermind(user) || isaicamera(user) || (ghost_screentips && isobserver(user))) + if(isliving(user) || isovermind(user) || iscameramob(user) || (ghost_screentips && isobserver(user))) var/obj/item/held_item = user.get_active_held_item() if (user.mob_flags & MOB_HAS_SCREENTIPS_NAME_OVERRIDE) diff --git a/code/game/atom/atom_act.dm b/code/game/atom/atom_act.dm index 8565d790612c2..54f023eb86b59 100644 --- a/code/game/atom/atom_act.dm +++ b/code/game/atom/atom_act.dm @@ -75,6 +75,20 @@ SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity, protection) return protection // Pass the protection value collected here upwards +/** + * Wrapper for bullet_act used for atom-specific calculations, i.e. armor + * + * @params + * * hitting_projectile - projectile + * * def_zone - zone hit + * * piercing_hit - is this hit piercing or normal? + */ + +/atom/proc/projectile_hit(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE, blocked = null) + if (isnull(blocked)) + blocked = check_projectile_armor(def_zone, hitting_projectile) + return bullet_act(hitting_projectile, def_zone, piercing_hit, blocked) + /** * React to a hit by a projectile object * @@ -82,11 +96,12 @@ * * hitting_projectile - projectile * * def_zone - zone hit * * piercing_hit - is this hit piercing or normal? + * * blocked - total armor value to apply to this hit */ -/atom/proc/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE) +/atom/proc/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit = FALSE, blocked = 0) SHOULD_CALL_PARENT(TRUE) - var/sigreturn = SEND_SIGNAL(src, COMSIG_ATOM_PRE_BULLET_ACT, hitting_projectile, def_zone) + var/sigreturn = SEND_SIGNAL(src, COMSIG_ATOM_PRE_BULLET_ACT, hitting_projectile, def_zone, piercing_hit, blocked) if(sigreturn & COMPONENT_BULLET_PIERCED) return BULLET_ACT_FORCE_PIERCE if(sigreturn & COMPONENT_BULLET_BLOCKED) @@ -94,7 +109,7 @@ if(sigreturn & COMPONENT_BULLET_ACTED) return BULLET_ACT_HIT - SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, hitting_projectile, def_zone) + SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, hitting_projectile, def_zone, piercing_hit, blocked) if(QDELETED(hitting_projectile)) // Signal deleted it? return BULLET_ACT_BLOCK @@ -102,7 +117,7 @@ target = src, // This armor check only matters for the visuals and messages in on_hit(), it's not actually used to reduce damage since // only living mobs use armor to reduce damage, but on_hit() is going to need the value no matter what is shot. - blocked = check_projectile_armor(def_zone, hitting_projectile), + blocked = blocked, pierce_hit = piercing_hit, ) diff --git a/code/game/atom/atom_color.dm b/code/game/atom/atom_color.dm index 2508e86f44d90..4b20a00422806 100644 --- a/code/game/atom/atom_color.dm +++ b/code/game/atom/atom_color.dm @@ -3,6 +3,9 @@ A System that gives finer control over which atom colour to colour the atom with. The "highest priority" one is always displayed as opposed to the default of "whichever was set last is displayed" + + It can also be used for color filters, since some effects (using non-RGB space matrices) + are impossible to achieve with just the color variable */ /atom @@ -12,6 +15,8 @@ * its inherent color, the colored paint applied on it, special color effect etc... */ var/list/atom_colours + /// Currently used color filter - cached because its applied to all of our overlays because BYOND is horrific + var/cached_color_filter ///Adds an instance of colour_type to the atom's atom_colours list /atom/proc/add_atom_colour(coloration, colour_priority) @@ -22,7 +27,12 @@ return if(colour_priority > atom_colours.len) return - atom_colours[colour_priority] = coloration + var/color_type = ATOM_COLOR_TYPE_NORMAL + if (islist(coloration)) + var/list/color_matrix = coloration + if (color_matrix["type"] == "color") + color_type = ATOM_COLOR_TYPE_FILTER + atom_colours[colour_priority] = list(coloration, color_type) update_atom_colour() @@ -32,8 +42,13 @@ return if(colour_priority > atom_colours.len) return - if(coloration && atom_colours[colour_priority] != coloration) - return //if we don't have the expected color (for a specific priority) to remove, do nothing + if(coloration && atom_colours[colour_priority]) + if (atom_colours[colour_priority][ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_NORMAL) + if (atom_colours[colour_priority][ATOM_COLOR_VALUE_INDEX] != coloration) + return //if we don't have the expected color (for a specific priority) to remove, do nothing + else + if (!islist(coloration) || !compare_list(coloration, atom_colours[colour_priority][ATOM_COLOR_VALUE_INDEX]["color"])) + return atom_colours[colour_priority] = null update_atom_colour() @@ -43,29 +58,69 @@ */ /atom/proc/is_atom_colour(looking_for_color, min_priority_index = 1, max_priority_index = COLOUR_PRIORITY_AMOUNT) // make sure uppertext hex strings don't mess with LOWER_TEXT hex strings - looking_for_color = LOWER_TEXT(looking_for_color) + if (!islist(looking_for_color)) + looking_for_color = LOWER_TEXT(looking_for_color) if(!LAZYLEN(atom_colours)) // no atom colors list has been set up, just check the color var - return LOWER_TEXT(color) == looking_for_color + if (!islist(color)) + return LOWER_TEXT(color) == looking_for_color + if (!islist(looking_for_color)) + return FALSE + return compare_list(color, looking_for_color) for(var/i in min_priority_index to max_priority_index) - if(LOWER_TEXT(atom_colours[i]) == looking_for_color) + if (!atom_colours[i]) + continue + + if (!islist(looking_for_color)) + if (islist(atom_colours[i][ATOM_COLOR_VALUE_INDEX])) + continue + + if (LOWER_TEXT(atom_colours[i][ATOM_COLOR_VALUE_INDEX]) == looking_for_color) + return TRUE + + continue + + var/compared_matrix = atom_colours[i][ATOM_COLOR_VALUE_INDEX] + if (atom_colours[i][ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_FILTER) + compared_matrix = atom_colours[i][ATOM_COLOR_VALUE_INDEX]["color"] + + if (compare_list(looking_for_color, compared_matrix)) return TRUE return FALSE ///Resets the atom's color to null, and then sets it to the highest priority colour available /atom/proc/update_atom_colour() + var/old_filter = cached_color_filter color = null - if(!atom_colours) + cached_color_filter = null + remove_filter(ATOM_PRIORITY_COLOR_FILTER) + REMOVE_KEEP_TOGETHER(src, ATOM_COLOR_TRAIT) + + if (!atom_colours) + if (old_filter) + update_appearance() return - for(var/checked_color in atom_colours) - if(islist(checked_color)) - var/list/color_list = checked_color - if(color_list.len) - color = color_list - return - else if(checked_color) - color = checked_color - return + + for (var/list/checked_color in atom_colours) + if (checked_color[ATOM_COLOR_TYPE_INDEX] == ATOM_COLOR_TYPE_FILTER) + add_filter(ATOM_PRIORITY_COLOR_FILTER, ATOM_PRIORITY_COLOR_FILTER_PRIORITY, checked_color[ATOM_COLOR_VALUE_INDEX]) + cached_color_filter = checked_color[ATOM_COLOR_VALUE_INDEX] + break + + if (length(checked_color[ATOM_COLOR_VALUE_INDEX])) + color = checked_color[ATOM_COLOR_VALUE_INDEX] + break + + ADD_KEEP_TOGETHER(src, ATOM_COLOR_TRAIT) + if (cached_color_filter != old_filter) + update_appearance() + +/// Same as update_atom_color, but simplifies overlay coloring +/atom/proc/color_atom_overlay(mutable_appearance/overlay) + overlay.color = color + if (!cached_color_filter) + return overlay + return filter_appearance_recursive(overlay, cached_color_filter) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 26881c3551e5a..b4a780f9adfbb 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -1140,6 +1140,7 @@ pulledby.stop_pulling() var/same_loc = oldloc == destination + var/movement_successful = TRUE var/area/old_area = get_area(oldloc) var/area/destarea = get_area(destination) var/movement_dir = get_dir(src, destination) @@ -1148,7 +1149,13 @@ loc = destination - if(!same_loc) + if(!same_loc && loc == oldloc) + // when attempting to move an atom A into an atom B which already contains A, BYOND seems + // to silently refuse to move A to the new loc. This can really break stuff (see #77067) + stack_trace("Attempt to move [src] to [destination] was rejected by BYOND, possibly due to cyclic contents") + movement_successful = FALSE + + if(movement_successful && !same_loc) if(is_multi_tile && isturf(destination)) var/list/new_locs = block( destination, @@ -1177,7 +1184,7 @@ if(destarea && old_area != destarea) destarea.Entered(src, old_area) - . = TRUE + . = movement_successful //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) else @@ -1275,12 +1282,12 @@ /// Only moves the object if it's under no gravity /// Accepts the direction to move, if the push should be instant, and an optional parameter to fine tune the start delay /// Drift force determines how much acceleration should be applied. Controlled cap, if set, will ensure that if the object was moving slower than the cap before, it cannot accelerate past the cap from this move. -/atom/movable/proc/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 1 NEWTONS, controlled_cap = null) +/atom/movable/proc/newtonian_move(inertia_angle, instant = FALSE, start_delay = 0, drift_force = 1 NEWTONS, controlled_cap = null, force_loop = TRUE) if(!isturf(loc) || Process_Spacemove(angle2dir(inertia_angle), continuous_move = TRUE)) return FALSE if (!isnull(drift_handler)) - if (drift_handler.newtonian_impulse(inertia_angle, start_delay, drift_force, controlled_cap)) + if (drift_handler.newtonian_impulse(inertia_angle, start_delay, drift_force, controlled_cap, force_loop)) return TRUE new /datum/drift_handler(src, inertia_angle, instant, start_delay, drift_force) @@ -1323,6 +1330,7 @@ step(src, hitting_atom.dir) return ..() +// Calls throw_at after checking that the move strength is greater than the thrown atom's move resist. Identical args. /atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE) if((force < (move_resist * MOVE_FORCE_THROW_RATIO)) || (move_resist == INFINITY)) return diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 3a43db0bbbd6a..f583efc0ca5b8 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -73,7 +73,7 @@ . = ..() if(!new_viewer || hud_users_all_z_levels.len != 1) return - for(var/mob/eye/ai_eye/eye as anything in GLOB.aiEyes) + for(var/mob/eye/camera/ai/eye as anything in GLOB.camera_eyes) eye.update_ai_detect_hud() /datum/atom_hud/data/malf_apc @@ -171,8 +171,7 @@ Medical HUD! Basic mode needs suit sensors on. return holder.icon_state = "hud[RoundHealth(src)]" - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y //for carbon suit sensors /mob/living/carbon/med_hud_set_health() @@ -184,8 +183,7 @@ Medical HUD! Basic mode needs suit sensors on. if (isnull(holder)) return - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) holder.icon_state = "huddead" else @@ -196,9 +194,8 @@ Medical HUD! Basic mode needs suit sensors on. if (isnull(holder)) return - var/icon/I = icon(icon, icon_state, dir) var/virus_threat = check_virus() - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(HAS_TRAIT(src, TRAIT_XENO_HOST)) holder.icon_state = "hudxeno" else if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) @@ -242,8 +239,7 @@ FAN HUDs! For identifying other fans on-sight. /mob/living/carbon/human/proc/fan_hud_set_fandom() var/image/holder = hud_list[FAN_HUD] - var/icon/hud_icon = icon(icon, icon_state, dir) - holder.pixel_y = hud_icon.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = "hudfan_no" var/obj/item/clothing/under/undershirt = w_uniform @@ -273,8 +269,7 @@ Security HUDs! Basic mode shows only the job. /mob/living/carbon/human/proc/sec_hud_set_ID() var/image/holder = hud_list[ID_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y var/sechud_icon_state = wear_id?.get_sechud_job_icon_state() if(!sechud_icon_state || HAS_TRAIT(src, TRAIT_UNKNOWN)) sechud_icon_state = "hudno_id" @@ -294,24 +289,21 @@ Security HUDs! Basic mode shows only the job. switch(security_slot) if(1) holder = hud_list[IMPSEC_FIRST_HUD] - var/icon/IC = icon(icon, icon_state, dir) - holder.pixel_y = IC.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = current_implant.hud_icon_state set_hud_image_active(IMPSEC_FIRST_HUD) security_slot++ if(2) //Theoretically if we somehow get multiple sec implants, whatever the most recently implanted implant is will take over the 2nd position holder = hud_list[IMPSEC_SECOND_HUD] - var/icon/IC = icon(icon, icon_state, dir) - holder.pixel_y = IC.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.pixel_x = initial(holder.pixel_x) + (ICON_SIZE_X / 4 - 1) //Adds an offset that mirrors the hud blip to the other side of the mob. holder.icon_state = current_implant.hud_icon_state set_hud_image_active(IMPSEC_SECOND_HUD) if(HAS_TRAIT(src, TRAIT_MINDSHIELD)) holder = hud_list[IMPLOYAL_HUD] - var/icon/IC = icon(icon, icon_state, dir) - holder.pixel_y = IC.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = "hud_imp_loyal" set_hud_image_active(IMPLOYAL_HUD) @@ -321,8 +313,7 @@ Security HUDs! Basic mode shows only the job. return var/image/holder = hud_list[WANTED_HUD] - var/icon/sec_icon = icon(icon, icon_state, dir) - holder.pixel_y = sec_icon.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if (HAS_TRAIT(src, TRAIT_ALWAYS_WANTED)) holder.icon_state = "hudwanted" @@ -398,8 +389,7 @@ Diagnostic HUDs! //Sillycone hooks /mob/living/silicon/proc/diag_hud_set_health() var/image/holder = hud_list[DIAG_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(stat == DEAD) holder.icon_state = "huddiagdead" else @@ -407,8 +397,7 @@ Diagnostic HUDs! /mob/living/silicon/proc/diag_hud_set_status() var/image/holder = hud_list[DIAG_STAT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y switch(stat) if(CONSCIOUS) holder.icon_state = "hudstat" @@ -420,8 +409,7 @@ Diagnostic HUDs! //Borgie battery tracking! /mob/living/silicon/robot/proc/diag_hud_set_borgcell() var/image/holder = hud_list[DIAG_BATT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(cell) var/chargelvl = (cell.charge/cell.maxcharge) holder.icon_state = "hudbatt[RoundDiagBar(chargelvl)]" @@ -431,8 +419,7 @@ Diagnostic HUDs! //borg-AI shell tracking /mob/living/silicon/robot/proc/diag_hud_set_aishell() //Shows tracking beacons on the mech var/image/holder = hud_list[DIAG_TRACK_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(!shell) //Not an AI shell holder.icon_state = null set_hud_image_inactive(DIAG_TRACK_HUD) @@ -446,8 +433,7 @@ Diagnostic HUDs! //AI side tracking of AI shell control /mob/living/silicon/ai/proc/diag_hud_set_deployed() //Shows tracking beacons on the mech var/image/holder = hud_list[DIAG_TRACK_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(!deployed_shell) holder.icon_state = null set_hud_image_inactive(DIAG_TRACK_HUD) @@ -460,15 +446,13 @@ Diagnostic HUDs! ~~~~~~~~~~~~~~~~~~~~~*/ /obj/vehicle/sealed/mecha/proc/diag_hud_set_mechhealth() var/image/holder = hud_list[DIAG_MECH_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = "huddiag[RoundDiagBar(atom_integrity/max_integrity)]" /obj/vehicle/sealed/mecha/proc/diag_hud_set_mechcell() var/image/holder = hud_list[DIAG_BATT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(cell) var/chargelvl = cell.charge/cell.maxcharge holder.icon_state = "hudbatt[RoundDiagBar(chargelvl)]" @@ -477,8 +461,7 @@ Diagnostic HUDs! /obj/vehicle/sealed/mecha/proc/diag_hud_set_mechstat() var/image/holder = hud_list[DIAG_STAT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(internal_damage) holder.icon_state = "hudwarn" set_hud_image_active(DIAG_STAT_HUD) @@ -489,8 +472,7 @@ Diagnostic HUDs! ///Shows tracking beacons on the mech /obj/vehicle/sealed/mecha/proc/diag_hud_set_mechtracking() var/image/holder = hud_list[DIAG_TRACK_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y var/new_icon_state //This var exists so that the holder's icon state is set only once in the event of multiple mech beacons. for(var/obj/item/mecha_parts/mecha_tracking/T in trackers) if(T.ai_beacon) //Beacon with AI uplink @@ -503,8 +485,7 @@ Diagnostic HUDs! ///Shows inbuilt camera on the mech; if the camera's view range was affected by an EMP, shows a red blip while it's affected /obj/vehicle/sealed/mecha/proc/diag_hud_set_camera() var/image/holder = hud_list[DIAG_CAMERA_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(chassis_camera?.is_emp_scrambled) holder.icon_state = "hudcamera_empd" return @@ -515,14 +496,12 @@ Diagnostic HUDs! ~~~~~~~~~~*/ /mob/living/simple_animal/bot/proc/diag_hud_set_bothealth() var/image/holder = hud_list[DIAG_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]" /mob/living/simple_animal/bot/proc/diag_hud_set_botstat() //On (With wireless on or off), Off, EMP'ed var/image/holder = hud_list[DIAG_STAT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(bot_mode_flags & BOT_MODE_ON) holder.icon_state = "hudstat" else if(stat) //Generally EMP causes this @@ -532,8 +511,7 @@ Diagnostic HUDs! /mob/living/simple_animal/bot/proc/diag_hud_set_botmode() //Shows a bot's current operation var/image/holder = hud_list[DIAG_BOT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(client) //If the bot is player controlled, it will not be following mode logic! holder.icon_state = "hudsentient" return @@ -541,7 +519,7 @@ Diagnostic HUDs! switch(mode) if(BOT_SUMMON, BOT_RESPONDING) //Responding to PDA or AI summons holder.icon_state = "hudcalled" - if(BOT_CLEANING, BOT_REPAIRING, BOT_HEALING) //Cleanbot cleaning, Floorbot fixing, or Medibot Healing + if(BOT_CLEANING, BOT_HEALING) //Cleanbot cleaning, repairbot fixing, or Medibot Healing holder.icon_state = "hudworking" if(BOT_PATROL, BOT_START_PATROL) //Patrol mode holder.icon_state = "hudpatrol" @@ -554,13 +532,13 @@ Diagnostic HUDs! /mob/living/simple_animal/bot/mulebot/proc/diag_hud_set_mulebotcell() var/image/holder = hud_list[DIAG_BATT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(cell) var/chargelvl = (cell.charge/cell.maxcharge) holder.icon_state = "hudbatt[RoundDiagBar(chargelvl)]" else holder.icon_state = "hudnobatt" + /*~~~~~~~~~~~~ Airlocks! ~~~~~~~~~~~~~*/ @@ -579,3 +557,21 @@ Diagnostic HUDs! holder.loc = get_turf(src) SET_PLANE(holder,ABOVE_LIGHTING_PLANE,src) set_hud_image_active(MALF_APC_HUD) + +#define CACHED_WIDTH_INDEX "width" +#define CACHED_HEIGHT_INDEX "height" + +/atom/proc/get_cached_width() + if (isnull(icon)) + return 0 + var/list/dimensions = get_icon_dimensions(icon) + return dimensions[CACHED_WIDTH_INDEX] + +/atom/proc/get_cached_height() + if (isnull(icon)) + return 0 + var/list/dimensions = get_icon_dimensions(icon) + return dimensions[CACHED_HEIGHT_INDEX] + +#undef CACHED_WIDTH_INDEX +#undef CACHED_HEIGHT_INDEX diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index ed9691799ffc0..b962a902f17f4 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -96,61 +96,62 @@ layer = BELOW_OBJ_LAYER //keeps shit coming out of the machine from ending up underneath it. flags_ricochet = RICOCHET_HARD receive_ricochet_chance_mod = 0.3 - anchored = TRUE interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT blocks_emissive = EMISSIVE_BLOCK_GENERIC initial_language_holder = /datum/language_holder/speaking_machine + armor_type = /datum/armor/obj_machinery + ///see code/__DEFINES/stat.dm var/machine_stat = NONE + ///see code/__DEFINES/machines.dm var/use_power = IDLE_POWER_USE - //0 = dont use power - //1 = use idle_power_usage - //2 = use active_power_usage ///the amount of static power load this machine adds to its area's power_usage list when use_power = IDLE_POWER_USE var/idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION ///the amount of static power load this machine adds to its area's power_usage list when use_power = ACTIVE_POWER_USE var/active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION ///the current amount of static power usage this machine is taking from its area var/static_power_usage = 0 + //AREA_USAGE_EQUIP,AREA_USAGE_ENVIRON or AREA_USAGE_LIGHT var/power_channel = AREA_USAGE_EQUIP - //AREA_USAGE_EQUIP,AREA_USAGE_ENVIRON or AREA_USAGE_LIGHT ///A combination of factors such as having power, not being broken and so on. Boolean. var/is_operational = TRUE - var/wire_compatible = FALSE - - var/list/component_parts = null //list of all the parts used to build it, if made from certain kinds of frames. + ///list of all the parts used to build it, if made from certain kinds of frames. + var/list/component_parts = null + ///Is the machines maintainence panel open. var/panel_open = FALSE + ///Is the machine open or closed var/state_open = FALSE - var/critical_machine = FALSE //If this machine is critical to station operation and should have the area be excempted from power failures. - var/list/occupant_typecache //if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache + ///If this machine is critical to station operation and should have the area be excempted from power failures. + var/critical_machine = FALSE + ///if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache + var/list/occupant_typecache + ///The mob that is sealed inside the machine var/atom/movable/occupant = null - /// Viable flags to go here are START_PROCESSING_ON_INIT, or START_PROCESSING_MANUALLY. See code\__DEFINES\machines.dm for more information on these flags. + ///Viable flags to go here are START_PROCESSING_ON_INIT, or START_PROCESSING_MANUALLY. See code\__DEFINES\machines.dm for more information on these flags. var/processing_flags = START_PROCESSING_ON_INIT - /// What subsystem this machine will use, which is generally SSmachines or SSfastprocess. By default all machinery use SSmachines. This fires a machine's process() roughly every 2 seconds. + ///What subsystem this machine will use, which is generally SSmachines or SSfastprocess. By default all machinery use SSmachines. This fires a machine's process() roughly every 2 seconds. var/subsystem_type = /datum/controller/subsystem/machines - var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created - - var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN|INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_OPEN_SILICON - var/fair_market_price = 69 - var/market_verb = "Customer" + ///Circuit to be created and inserted when the machinery is created + var/obj/item/circuitboard/circuit + ///See code/DEFINES/interaction_flags.dm + var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON + ///The department we are paying to use this machine var/payment_department = ACCOUNT_ENG - + ///Used in NAP violation, pay fine + var/fair_market_price = 5 ///Is this machine currently in the atmos machinery queue? var/atmos_processing = FALSE - /// world.time of last use by [/mob/living] + ///world.time of last use by [/mob/living] var/last_used_time = 0 - /// Mobtype of last user. Typecast to [/mob/living] for initial() usage + ///Mobtype of last user. Typecast to [/mob/living] for initial() usage var/mob/living/last_user_mobtype - /// Do we want to hook into on_enter_area and on_exit_area? - /// Disables some optimizations + ///Do we want to hook into on_enter_area and on_exit_area? + ///Disables some optimizations var/always_area_sensitive = FALSE - ///Multiplier for power consumption. - var/machine_power_rectifier = 1 - /// What was our power state the last time we updated its appearance? - /// TRUE for on, FALSE for off, -1 for never checked + ///What was our power state the last time we updated its appearance? + ///TRUE for on, FALSE for off, -1 for never checked var/appearance_power_state = -1 - armor_type = /datum/armor/obj_machinery /datum/armor/obj_machinery melee = 25 @@ -187,15 +188,6 @@ SHOULD_NOT_OVERRIDE(TRUE) post_machine_initialize() -/obj/machinery/Destroy(force) - SSmachines.unregister_machine(src) - end_processing() - - clear_components() - unset_static_power() - - return ..() - /** * Called in LateInitialize meant to be the machine replacement to it * This sets up power for the machine and requires parent be called, @@ -203,13 +195,25 @@ * This is the proc to override if you want to do anything in LateInitialize. */ /obj/machinery/proc/post_machine_initialize() + PROTECTED_PROC(TRUE) SHOULD_CALL_PARENT(TRUE) + power_change() if(use_power == NO_POWER_USE) return update_current_power_usage() setup_area_power_relationship() + +/obj/machinery/Destroy(force) + SSmachines.unregister_machine(src) + end_processing() + + clear_components() + unset_static_power() + + return ..() + /** * proc to call when the machine starts to require power after a duration of not requiring power * sets up power related connections to its area if it exists and becomes area sensitive @@ -271,19 +275,16 @@ SEND_SIGNAL(src, COMSIG_MACHINERY_SET_OCCUPANT, new_occupant) occupant = new_occupant -/// Helper proc for telling a machine to start processing with the subsystem type that is located in its `subsystem_type` var. +/// Helper proc for telling a machine to start processing /obj/machinery/proc/begin_processing() var/datum/controller/subsystem/processing/subsystem = locate(subsystem_type) in Master.subsystems START_PROCESSING(subsystem, src) -/// Helper proc for telling a machine to stop processing with the subsystem type that is located in its `subsystem_type` var. +/// Helper proc for telling a machine to stop processing /obj/machinery/proc/end_processing() var/datum/controller/subsystem/processing/subsystem = locate(subsystem_type) in Master.subsystems STOP_PROCESSING(subsystem, src) -/obj/machinery/proc/locate_machinery() - return - ///Early process for machines added to SSmachines.processing_early to prioritize power draw /obj/machinery/proc/process_early() set waitfor = FALSE @@ -303,6 +304,8 @@ ///Called when we want to change the value of the machine_stat variable. Holds bitflags. /obj/machinery/proc/set_machine_stat(new_value) + SHOULD_NOT_OVERRIDE(TRUE) + if(new_value == machine_stat) return . = machine_stat @@ -312,6 +315,8 @@ ///Called when the value of `machine_stat` changes, so we can react to it. /obj/machinery/proc/on_set_machine_stat(old_value) + PROTECTED_PROC(TRUE) + //From off to on. if((old_value & (NOPOWER|BROKEN|MAINT)) && !(machine_stat & (NOPOWER|BROKEN|MAINT))) set_is_operational(TRUE) @@ -335,13 +340,6 @@ remove_all_languages(source = LANGUAGE_EMP) grant_random_uncommon_language(source = LANGUAGE_EMP) -/obj/machinery/base_item_interaction(mob/living/user, obj/item/tool, list/modifiers) - //takes priority in case material container or other atoms that hook onto item interaction signals won't give it a chance - if(istype(tool, /obj/item/storage/part_replacer)) - return tool.interact_with_atom(src, user, modifiers) - - return ..() - /** * Opens the machine. * @@ -496,6 +494,7 @@ ///internal proc that removes all static power usage from the current area /obj/machinery/proc/unset_static_power() SHOULD_NOT_OVERRIDE(TRUE) + var/old_usage = static_power_usage var/area/our_area = get_area(src) @@ -582,6 +581,8 @@ ///Called when we want to change the value of the `is_operational` variable. Boolean. /obj/machinery/proc/set_is_operational(new_value) + SHOULD_NOT_OVERRIDE(TRUE) + if(new_value == is_operational) return . = is_operational @@ -591,10 +592,14 @@ ///Called when the value of `is_operational` changes, so we can react to it. /obj/machinery/proc/on_set_is_operational(old_value) + PROTECTED_PROC(TRUE) + return ///Called when we want to change the value of the `panel_open` variable. Boolean. /obj/machinery/proc/set_panel_open(new_value) + SHOULD_NOT_OVERRIDE(TRUE) + if(panel_open == new_value) return var/old_value = panel_open @@ -603,10 +608,14 @@ ///Called when the value of `panel_open` changes, so we can react to it. /obj/machinery/proc/on_set_panel_open(old_value) + PROTECTED_PROC(TRUE) + return /// Toggles the panel_open var. Defined for convienience /obj/machinery/proc/toggle_panel_open() + SHOULD_NOT_OVERRIDE(TRUE) + set_panel_open(!panel_open) /obj/machinery/can_interact(mob/user) @@ -662,7 +671,14 @@ return TRUE // If we passed all of those checks, woohoo! We can interact with this machine. +/** + * Checks for NAP non aggression principle, an anarcho capitalist event triggered by admins + * where using machines cost money + */ /obj/machinery/proc/check_nap_violations() + PROTECTED_PROC(TRUE) + SHOULD_NOT_OVERRIDE(TRUE) + if(!SSeconomy.full_ancap) return TRUE if(!occupant || state_open) @@ -670,16 +686,16 @@ var/mob/living/occupant_mob = occupant var/obj/item/card/id/occupant_id = occupant_mob.get_idcard(TRUE) if(!occupant_id) - say("[market_verb] NAP Violation: No ID card found.") + say("Customer NAP Violation: No ID card found.") nap_violation(occupant_mob) return FALSE var/datum/bank_account/insurance = occupant_id.registered_account if(!insurance) - say("[market_verb] NAP Violation: No bank account found.") + say("Customer NAP Violation: No bank account found.") nap_violation(occupant_mob) return FALSE if(!insurance.adjust_money(-fair_market_price)) - say("[market_verb] NAP Violation: Unable to pay.") + say("Customer NAP Violation: Unable to pay.") nap_violation(occupant_mob) return FALSE var/datum/bank_account/department_account = SSeconomy.get_dep_account(payment_department) @@ -687,7 +703,15 @@ department_account.adjust_money(fair_market_price) return TRUE +/** + * Actions to take in case of NAP violation + * Arguments + * + * * mob/violator - the mob who violated the NAP aggrement + */ /obj/machinery/proc/nap_violation(mob/violator) + PROTECTED_PROC(TRUE) + return //////////////////////////////////////////////////////////////////////////////////////////// @@ -743,13 +767,10 @@ /obj/machinery/attack_hulk(mob/living/carbon/user) . = ..() - var/obj/item/bodypart/arm = user.hand_bodyparts[user.active_hand_index] - if(!arm) - return - if(arm.bodypart_disabled) + var/obj/item/bodypart/arm = user.get_active_hand() + if(!arm || arm.bodypart_disabled) return - var/damage = damage_deflection * 0.1 - arm.receive_damage(brute=damage, wound_bonus = CANT_WOUND) + user.apply_damage(damage_deflection * 0.1, BRUTE, arm, wound_bonus = CANT_WOUND) /obj/machinery/attack_robot(mob/user) if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !isAdminGhostAI(user)) @@ -798,10 +819,14 @@ if(SEND_SIGNAL(user, COMSIG_TRY_USE_MACHINE, src) & COMPONENT_CANT_USE_MACHINE_TOOLS) return ITEM_INTERACT_BLOCKING + //takes priority in case material container or other atoms that hook onto item interaction signals won't give it a chance + if(istype(tool, /obj/item/storage/part_replacer)) + update_last_used(user) + return tool.interact_with_atom(src, user, modifiers) + . = ..() if(.) update_last_used(user) - return . /obj/machinery/_try_interact(mob/user) if((interaction_flags_machine & INTERACT_MACHINE_WIRES_IF_OPEN) && panel_open && (attempt_wire_interaction(user) == WIRE_INTERACTION_BLOCK)) @@ -835,6 +860,8 @@ SEND_SIGNAL(src, COMSIG_MACHINERY_REFRESH_PARTS) /obj/machinery/proc/default_pry_open(obj/item/crowbar, close_after_pry = FALSE, open_density = FALSE, closed_density = TRUE) + PROTECTED_PROC(TRUE) + . = !(state_open || panel_open || is_operational) && crowbar.tool_behaviour == TOOL_CROWBAR if(!.) return @@ -845,6 +872,8 @@ close_machine(density_to_set = closed_density) /obj/machinery/proc/default_deconstruction_crowbar(obj/item/crowbar, ignore_panel = 0, custom_deconstruct = FALSE) + PROTECTED_PROC(TRUE) + . = (panel_open || ignore_panel) && crowbar.tool_behaviour == TOOL_CROWBAR if(!. || custom_deconstruct) return diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 029f4a17ea99b..eb66e140d98fb 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -34,7 +34,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) ///If true, researched nodes will be announced to the appropriate channels var/announce_research_node = TRUE /// The text that we send when announcing researched nodes. - var/node_message = "The '%NODE' techweb node has been researched" + var/node_message = "The %NODE techweb node has been researched" /obj/machinery/announcement_system/Initialize(mapload) . = ..() @@ -164,7 +164,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) newhead = new_message usr.log_message("updated the head announcement to: [new_message]", LOG_GAME) if("node_message") - var/new_message = trim(html_encode(param["new_text"]), MAX_MESSAGE_LEN) + var/new_message = trim(html_encode(param["newText"]), MAX_MESSAGE_LEN) if(new_message) node_message = new_message usr.log_message("updated the researched node announcement to: [node_message]", LOG_GAME) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 7b66872f52bb1..aa93bbb431d20 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -12,6 +12,7 @@ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02 resistance_flags = LAVA_PROOF | FIRE_PROOF interaction_flags_machine = parent_type::interaction_flags_machine | INTERACT_MACHINE_OPEN + mouse_over_pointer = MOUSE_HAND_POINTER ///Icon suffix for the skin of the front pannel that is added to base_icon_state var/skin = "" ///Whether it is possible to change the panel skin diff --git a/code/game/machinery/civilian_bounties.dm b/code/game/machinery/civilian_bounties.dm index d8c8a98caef77..dcd967e082e5f 100644 --- a/code/game/machinery/civilian_bounties.dm +++ b/code/game/machinery/civilian_bounties.dm @@ -84,10 +84,16 @@ return FALSE status_report = "Civilian Bounty: " var/obj/machinery/piratepad/civilian/pad = pad_ref?.resolve() - for(var/atom/movable/AM in get_turf(pad)) - if(AM == pad) + for(var/atom/movable/possible_shippable in get_turf(pad)) + if(possible_shippable == pad) continue - if(inserted_scan_id.registered_account.civilian_bounty.applies_to(AM)) + if(possible_shippable.flags_1 & HOLOGRAM_1) + continue + if(isitem(possible_shippable)) + var/obj/item/possible_shippable_item = possible_shippable + if(possible_shippable_item.item_flags & ABSTRACT) + continue + if(inserted_scan_id.registered_account.civilian_bounty.applies_to(possible_shippable)) status_report += "Target Applicable." playsound(loc, 'sound/machines/synth/synth_yes.ogg', 30 , TRUE) return @@ -110,13 +116,19 @@ var/datum/bounty/curr_bounty = inserted_scan_id.registered_account.civilian_bounty var/active_stack = 0 var/obj/machinery/piratepad/civilian/pad = pad_ref?.resolve() - for(var/atom/movable/AM in get_turf(pad)) - if(AM == pad) + for(var/atom/movable/possible_shippable in get_turf(pad)) + if(possible_shippable == pad) + continue + if(possible_shippable.flags_1 & HOLOGRAM_1) continue - if(curr_bounty.applies_to(AM)) + if(isitem(possible_shippable)) + var/obj/item/possible_shippable_item = possible_shippable + if(possible_shippable_item.item_flags & ABSTRACT) + continue + if(curr_bounty.applies_to(possible_shippable)) active_stack ++ - curr_bounty.ship(AM) - qdel(AM) + curr_bounty.ship(possible_shippable) + qdel(possible_shippable) if(active_stack >= 1) status_report += "Bounty Target Found x[active_stack]. " else diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 8fdd5556e3b8b..eb48792a523bc 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -88,13 +88,15 @@ set_light(0) /obj/machinery/computer/proc/imprint_gps(gps_tag) // Currently used by the upload computers and communications console - var/tracker = gps_tag - if(!tracker) // Don't give a null GPS signal if there is none - return - for(var/obj/item/circuitboard/computer/board in src.contents) - if(!contents || board.GetComponent(/datum/component/gps)) - CRASH("[src] Called imprint_gps without setting gps_tag") - board.AddComponent(/datum/component/gps, "[tracker]") + if(!length(gps_tag)) // Don't give a null GPS signal if there is none + CRASH("[src] called imprint_gps without setting gps_tag") + var/set_tracker = FALSE + for(var/obj/item/circuitboard/computer/board in contents) + if(board.GetComponent(/datum/component/gps)) + return + board.AddComponent(/datum/component/gps, "[gps_tag]") + set_tracker = TRUE + if (set_tracker) balloon_alert_to_viewers("board tracker enabled", vision_distance = 1) /obj/machinery/computer/emp_act(severity) diff --git a/code/game/machinery/computer/arcade/_arcade.dm b/code/game/machinery/computer/arcade/_arcade.dm index 053ec907f3e63..eb91fa44f1c70 100644 --- a/code/game/machinery/computer/arcade/_arcade.dm +++ b/code/game/machinery/computer/arcade/_arcade.dm @@ -85,7 +85,7 @@ for(var/i in 1 to prizes) user.add_mood_event("arcade", /datum/mood_event/arcade) if(prob(0.0001)) //1 in a million - new /obj/item/gun/energy/pulse/prize(src) + new /obj/item/gun/energy/pulse/prize(get_turf(src)) visible_message(span_notice("[src] dispenses.. woah, a gun! Way past cool."), span_notice("You hear a chime and a shot.")) user.client.give_award(/datum/award/achievement/misc/pulse, user) continue diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 220870cb11981..3e947d33d7bff 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -85,14 +85,14 @@ . += span_warning("An [circuit.name] is installed and should be [EXAMINE_HINT("screwed")] in place.") . += span_notice("The circuit board can be [EXAMINE_HINT("pried")] out.") if(FRAME_COMPUTER_STATE_BOARD_SECURED) - . += span_warning("Its requires [EXAMINE_HINT("5 cable")] pieces to wire it.") + . += span_warning("It can be [EXAMINE_HINT("wired")] with some cable.") . += span_notice("The circuit board can be [EXAMINE_HINT("screwed")] loose.") if(FRAME_COMPUTER_STATE_WIRED) - . += span_notice("The wires can be cut out with [EXAMINE_HINT("wire cutters")].") - . += span_warning("Its requires [EXAMINE_HINT("2 glass")] sheets to complete the screen.") + . += span_notice("The wires can be cut with [EXAMINE_HINT("wirecutters")].") + . += span_warning("There is a slot for 2 [EXAMINE_HINT("glass panels")].") if(FRAME_COMPUTER_STATE_GLASSED) . += span_notice("The screen can be [EXAMINE_HINT("pried")] out.") - . += span_notice("The moniter can be [EXAMINE_HINT("screwed")] to complete it") + . += span_notice("The monitor can be [EXAMINE_HINT("screwed")] on to complete it") /obj/structure/frame/computer/circuit_added(obj/item/circuitboard/added) state = FRAME_COMPUTER_STATE_BOARD_INSTALLED diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 80a06fa6b9fc1..5633fe4904748 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -8,7 +8,7 @@ var/list/z_lock = list() // Lock use to these z levels var/lock_override = NONE - var/mob/eye/ai_eye/remote/eyeobj + var/mob/eye/camera/remote/eyeobj var/mob/living/current_user = null var/list/networks = list(CAMERANET_NETWORK_SS13) /// Typepath of the action button we use as "off" @@ -76,27 +76,33 @@ /obj/machinery/computer/camera_advanced/syndie/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) return //For syndie nuke shuttle, to spy for station. +/** + * Initializes a camera eye. + * Returns TRUE if initialization was successful. + * Will return nothing if it runtimes. + */ /obj/machinery/computer/camera_advanced/proc/CreateEye() - eyeobj = new() - eyeobj.origin = src + if(eyeobj) + CRASH("Tried to make another eyeobj for some reason. Why?") + + eyeobj = new(get_turf(src), src) + return TRUE /obj/machinery/computer/camera_advanced/proc/GrantActions(mob/living/user) for(var/datum/action/to_grant as anything in actions) to_grant.Grant(user) /obj/machinery/proc/remove_eye_control(mob/living/user) - CRASH("[type] does not implement ai eye handling") + CRASH("[type] does not implement camera eye handling") /obj/machinery/computer/camera_advanced/proc/give_eye_control(mob/user) if(isnull(user?.client)) return - GrantActions(user) + current_user = user - eyeobj.eye_user = user - eyeobj.name = "Camera Eye ([user.name])" - user.remote_control = eyeobj - user.reset_perspective(eyeobj) - eyeobj.setLoc(eyeobj.loc) + eyeobj.assign_user(user) + GrantActions(user) + if(should_supress_view_changes) user.client.view_size.supress() begin_processing() @@ -110,14 +116,11 @@ for(var/datum/camerachunk/camerachunks_gone as anything in eyeobj.visibleCameraChunks) camerachunks_gone.remove(eyeobj) - user.reset_perspective(null) - if(eyeobj.visible_icon) - user.client.images -= eyeobj.user_image + eyeobj.assign_user(null) + current_user = null + user.client.view_size.unsupress() - eyeobj.eye_user = null - user.remote_control = null - current_user = null playsound(src, 'sound/machines/terminal/terminal_off.ogg', 25, FALSE) /obj/machinery/computer/camera_advanced/on_set_is_operational(old_value) @@ -148,39 +151,43 @@ if(!QDELETED(current_user)) to_chat(user, span_warning("The console is already in use!")) return - var/mob/living/L = user - if(!eyeobj) - CreateEye() - if(!eyeobj) //Eye creation failed + + if(eyeobj) + give_eye_control(user) + eyeobj.setLoc(eyeobj.loc) + return + /* We're attempting to initialize the eye past this point */ + + if(!CreateEye()) + to_chat(user, span_warning("\The [src] flashes a bunch of never-ending errors on the display. Something is really wrong.")) return - if(!eyeobj.eye_initialized) - var/camera_location - var/turf/myturf = get_turf(src) - if(eyeobj.use_static != FALSE) - if((!length(z_lock) || (myturf.z in z_lock)) && GLOB.cameranet.checkTurfVis(myturf)) - camera_location = myturf - else - for(var/obj/machinery/camera/C as anything in GLOB.cameranet.cameras) - if(!C.can_use() || length(z_lock) && !(C.z in z_lock)) - continue - var/list/network_overlap = networks & C.network - if(length(network_overlap)) - camera_location = get_turf(C) - break + + var/camera_location + var/turf/myturf = get_turf(src) + var/consider_zlock = (!!length(z_lock)) + + if(!eyeobj.use_visibility) + if(consider_zlock && !(myturf.z in z_lock)) + camera_location = locate(round(world.maxx * 0.5), round(world.maxy * 0.5), z_lock[1]) else camera_location = myturf - if(length(z_lock) && !(myturf.z in z_lock)) - camera_location = locate(round(world.maxx/2), round(world.maxy/2), z_lock[1]) - - if(camera_location) - eyeobj.eye_initialized = TRUE - give_eye_control(L) - eyeobj.setLoc(camera_location) + else + if((!consider_zlock || (myturf.z in z_lock)) && GLOB.cameranet.checkTurfVis(myturf)) + camera_location = myturf else - unset_machine() + for(var/obj/machinery/camera/C as anything in GLOB.cameranet.cameras) + if(!C.can_use() || consider_zlock && !(C.z in z_lock)) + continue + var/list/network_overlap = networks & C.network + if(length(network_overlap)) + camera_location = get_turf(C) + break + + if(camera_location) + give_eye_control(user) + eyeobj.setLoc(camera_location, TRUE) else - give_eye_control(L) - eyeobj.setLoc(eyeobj.loc) + unset_machine() /obj/machinery/computer/camera_advanced/attack_robot(mob/user) return attack_hand(user) @@ -188,73 +195,6 @@ /obj/machinery/computer/camera_advanced/attack_ai(mob/user) return //AIs would need to disable their own camera procs to use the console safely. Bugs happen otherwise. -/mob/eye/ai_eye/remote - name = "Inactive Camera Eye" - ai_detector_visible = FALSE - var/sprint = 10 - var/cooldown = 0 - var/acceleration = 1 - var/mob/living/eye_user = null - var/obj/machinery/origin - var/eye_initialized = 0 - var/visible_icon = 0 - var/image/user_image = null - -/mob/eye/ai_eye/remote/update_remote_sight(mob/living/user) - user.set_invis_see(SEE_INVISIBLE_LIVING) //can't see ghosts through cameras - user.set_sight(SEE_TURFS) - return TRUE - -/mob/eye/ai_eye/remote/Destroy() - if(origin && eye_user) - origin.remove_eye_control(eye_user,src) - origin = null - . = ..() - eye_user = null - -/mob/eye/ai_eye/remote/GetViewerClient() - if(eye_user) - return eye_user.client - return null - -/mob/eye/ai_eye/remote/setLoc(turf/destination, force_update = FALSE) - if(eye_user) - destination = get_turf(destination) - if (destination) - abstract_move(destination) - else - moveToNullspace() - - update_ai_detect_hud() - - if(use_static) - GLOB.cameranet.visibility(src, GetViewerClient(), null, use_static) - - if(visible_icon) - if(eye_user.client) - eye_user.client.images -= user_image - user_image = image(icon,loc,icon_state, FLY_LAYER) - SET_PLANE(user_image, ABOVE_GAME_PLANE, destination) - eye_user.client.images += user_image - -/mob/eye/ai_eye/remote/relaymove(mob/living/user, direction) - var/initial = initial(sprint) - var/max_sprint = 50 - - if(cooldown && cooldown < world.timeofday) // 3 seconds - sprint = initial - - for(var/i = 0; i < max(sprint, initial); i += 20) - var/turf/step = get_turf(get_step(src, direction)) - if(step) - setLoc(step) - - cooldown = world.timeofday + 5 - if(acceleration) - sprint = min(sprint + 0.5, max_sprint) - else - sprint = initial - /datum/action/innate/camera_off name = "End Camera View" button_icon = 'icons/mob/actions/actions_silicon.dmi' @@ -263,8 +203,8 @@ /datum/action/innate/camera_off/Activate() if(!owner || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control - var/obj/machinery/computer/camera_advanced/console = remote_eye.origin + var/mob/eye/camera/remote/remote_eye = owner.remote_control + var/obj/machinery/computer/camera_advanced/console = remote_eye.origin_ref.resolve() console.remove_eye_control(owner) /datum/action/innate/camera_jump @@ -275,8 +215,8 @@ /datum/action/innate/camera_jump/Activate() if(!owner || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control - var/obj/machinery/computer/camera_advanced/origin = remote_eye.origin + var/mob/eye/camera/remote/remote_eye = owner.remote_control + var/obj/machinery/computer/camera_advanced/origin = remote_eye.origin_ref.resolve() var/list/L = list() @@ -320,7 +260,7 @@ /datum/action/innate/camera_multiz_up/Activate() if(!owner || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control + var/mob/eye/camera/remote/remote_eye = owner.remote_control if(remote_eye.zMove(UP)) to_chat(owner, span_notice("You move upwards.")) else @@ -334,7 +274,7 @@ /datum/action/innate/camera_multiz_down/Activate() if(!owner || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control + var/mob/eye/camera/remote/remote_eye = owner.remote_control if(remote_eye.zMove(DOWN)) to_chat(owner, span_notice("You move downwards.")) else diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index aac70dfc56dfa..949e71e1b418f 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -142,7 +142,7 @@ playsound(src, 'sound/machines/terminal/terminal_alert.ogg', 50, FALSE) return TRUE -/obj/machinery/computer/communications/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) +/obj/machinery/computer/communications/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/ui_state) var/static/list/approved_states = list(STATE_BUYING_SHUTTLE, STATE_CHANGING_STATUS, STATE_MAIN, STATE_MESSAGES) . = ..() @@ -408,7 +408,7 @@ state = STATE_MAIN playsound(src, 'sound/machines/terminal/terminal_on.ogg', 50, FALSE) - imprint_gps(gps_tag = "Encrypted Communications Channel") + imprint_gps("Encrypted Communications Channel") if ("toggleEmergencyAccess") if(emergency_access_cooldown(user)) //if were in cooldown, dont allow the following code diff --git a/code/game/machinery/computer/operating_computer.dm b/code/game/machinery/computer/operating_computer.dm index 83a2a08d986c3..3cba3ad2078a6 100644 --- a/code/game/machinery/computer/operating_computer.dm +++ b/code/game/machinery/computer/operating_computer.dm @@ -140,7 +140,7 @@ data["patient"]["oxyLoss"] = patient.getOxyLoss() if(patient.surgeries.len) for(var/datum/surgery/procedure in patient.surgeries) - var/datum/surgery_step/surgery_step = procedure.get_surgery_step() + var/datum/surgery_step/surgery_step = GLOB.surgery_steps[procedure.steps[procedure.status]] var/chems_needed = surgery_step.get_chem_list() var/alternative_step var/alt_chems_needed = "" diff --git a/code/game/machinery/computer/orders/order_computer/mining_order.dm b/code/game/machinery/computer/orders/order_computer/mining_order.dm index 94fda727d5f79..98c1e8eed2f28 100644 --- a/code/game/machinery/computer/orders/order_computer/mining_order.dm +++ b/code/game/machinery/computer/orders/order_computer/mining_order.dm @@ -34,7 +34,7 @@ /obj/machinery/computer/order_console/mining/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries) var/list/things_to_order = list() for(var/datum/orderable_item/item as anything in groceries) - things_to_order[item.item_path] = groceries[item] + things_to_order[item.purchase_path] = groceries[item] var/datum/supply_pack/custom/mining_pack = new( purchaser = purchaser, \ diff --git a/code/game/machinery/computer/orders/order_computer/order_computer.dm b/code/game/machinery/computer/orders/order_computer/order_computer.dm index 9098d5aeb090b..b74601ee8a35d 100644 --- a/code/game/machinery/computer/orders/order_computer/order_computer.dm +++ b/code/game/machinery/computer/orders/order_computer/order_computer.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_EMPTY(order_console_products) if(GLOB.order_console_products.len) return for(var/datum/orderable_item/path as anything in subtypesof(/datum/orderable_item)) - if(!initial(path.item_path)) + if(!initial(path.purchase_path)) continue GLOB.order_console_products += new path @@ -120,7 +120,8 @@ GLOBAL_LIST_EMPTY(order_console_products) "cat" = item.category_index, "ref" = REF(item), "cost" = round(item.cost_per_order * cargo_cost_multiplier), - "product_icon" = icon2base64(getFlatIcon(image(icon = initial(item.item_path.icon), icon_state = initial(item.item_path.icon_state)), no_anim=TRUE)) + "icon" = item.purchase_path::icon, + "icon_state" = item.purchase_path::icon_state, )) return data @@ -198,7 +199,7 @@ GLOBAL_LIST_EMPTY(order_console_products) grocery_list.Remove(item) continue for(var/amt in 1 to grocery_list[item])//every order amount - ordered_paths += item.item_path + ordered_paths += item.purchase_path podspawn(list( "target" = get_turf(living_user), "style" = /datum/pod_style/advanced, diff --git a/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm b/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm index 9e5413f854863..e53d595c4982a 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_milk_eggs.dm @@ -3,144 +3,154 @@ /datum/orderable_item/milk_eggs/milk name = "Milk" - item_path = /obj/item/reagent_containers/condiment/milk + purchase_path = /obj/item/reagent_containers/condiment/milk cost_per_order = 30 /datum/orderable_item/milk_eggs/soymilk name = "Soy Milk" - item_path = /obj/item/reagent_containers/condiment/soymilk + purchase_path = /obj/item/reagent_containers/condiment/soymilk cost_per_order = 30 /datum/orderable_item/milk_eggs/cream name = "Cream" - item_path = /obj/item/reagent_containers/cup/glass/bottle/juice/cream + purchase_path = /obj/item/reagent_containers/cup/glass/bottle/juice/cream cost_per_order = 40 /datum/orderable_item/milk_eggs/yoghurt name = "Yoghurt" - item_path = /obj/item/reagent_containers/condiment/yoghurt + purchase_path = /obj/item/reagent_containers/condiment/yoghurt cost_per_order = 40 /datum/orderable_item/milk_eggs/eggs name = "Egg Carton" - item_path = /obj/item/storage/fancy/egg_box + purchase_path = /obj/item/storage/fancy/egg_box cost_per_order = 40 /datum/orderable_item/milk_eggs/fillet name = "Fish Fillet" - item_path = /obj/item/food/fishmeat + purchase_path = /obj/item/food/fishmeat cost_per_order = 12 /datum/orderable_item/milk_eggs/octopus name = "Octopus Tentacle" - item_path = /obj/item/food/fishmeat/octopus + purchase_path = /obj/item/food/fishmeat/octopus cost_per_order = 12 /datum/orderable_item/milk_eggs/chicken name = "Chicken Breast" - item_path = /obj/item/food/meat/slab/chicken + purchase_path = /obj/item/food/meat/slab/chicken cost_per_order = 15 /datum/orderable_item/milk_eggs/spider_eggs name = "Spider Eggs" - item_path = /obj/item/food/spidereggs + purchase_path = /obj/item/food/spidereggs /datum/orderable_item/milk_eggs/moonfish_eggs name = "Moonfish Eggs" - item_path = /obj/item/food/moonfish_eggs + purchase_path = /obj/item/food/moonfish_eggs cost_per_order = 30 /datum/orderable_item/milk_eggs/desert_snails name = "Canned Desert Snails" - item_path = /obj/item/food/canned/desert_snails + purchase_path = /obj/item/food/canned/desert_snails cost_per_order = 20 /datum/orderable_item/milk_eggs/canned_jellyfish name = "Canned Gunner Jellyfish" - item_path = /obj/item/food/canned/jellyfish + purchase_path = /obj/item/food/canned/jellyfish cost_per_order = 20 /datum/orderable_item/milk_eggs/canned_larvae name = "Canned Larvae" - item_path = /obj/item/food/canned/larvae + purchase_path = /obj/item/food/canned/larvae cost_per_order = 20 /datum/orderable_item/milk_eggs/canned_tomatoes name = "Canned San Marzano Tomatoes" - item_path = /obj/item/food/canned/tomatoes + purchase_path = /obj/item/food/canned/tomatoes cost_per_order = 30 /datum/orderable_item/milk_eggs/canned_pine_nuts name = "Canned Pine Nuts" - item_path = /obj/item/food/canned/pine_nuts + purchase_path = /obj/item/food/canned/pine_nuts cost_per_order = 20 /datum/orderable_item/milk_eggs/canned_squid_ink name = "Canned Squid Ink" - item_path = /obj/item/food/canned/squid_ink + purchase_path = /obj/item/food/canned/squid_ink cost_per_order = 20 /datum/orderable_item/milk_eggs/chap name = "Can of CHAP" - item_path = /obj/item/food/canned/chap + purchase_path = /obj/item/food/canned/chap cost_per_order = 20 /datum/orderable_item/milk_eggs/ready_donk name = "Ready-Donk Meal: Bachelor Chow" - item_path = /obj/item/food/ready_donk + purchase_path = /obj/item/food/ready_donk cost_per_order = 40 /datum/orderable_item/milk_eggs/ready_donk_mac name = "Ready-Donk Meal: Donk-a-Roni" - item_path = /obj/item/food/ready_donk/mac_n_cheese + purchase_path = /obj/item/food/ready_donk/mac_n_cheese cost_per_order = 40 /datum/orderable_item/milk_eggs/ready_donk_mex name = "Ready-Donk Meal: Donkhiladas" - item_path = /obj/item/food/ready_donk/donkhiladas + purchase_path = /obj/item/food/ready_donk/donkhiladas cost_per_order = 40 /datum/orderable_item/milk_eggs/ready_donk_nachos name = "Ready-Donk Meal: Donk Sol Series Boritos Nachos Grandes" - item_path = /obj/item/food/ready_donk/nachos_grandes + purchase_path = /obj/item/food/ready_donk/nachos_grandes cost_per_order = 40 /datum/orderable_item/milk_eggs/ready_donk_orange name = "Ready-Donk Meal: Donk-range Chicken" - item_path = /obj/item/food/ready_donk/donkrange_chicken + purchase_path = /obj/item/food/ready_donk/donkrange_chicken + cost_per_order = 40 + +/datum/orderable_item/milk_eggs/ready_donk_salisbury + name = "Ready-Donk Meal: Donkriginals Salisbury Steak" + purchase_path = /obj/item/food/ready_donk/salisbury_steak + cost_per_order = 40 + +/datum/orderable_item/milk_eggs/ready_donk_chicken + name = "Ready-Donk Meal: Donkriginals Country-Fried Chicken" + purchase_path = /obj/item/food/ready_donk/country_chicken cost_per_order = 40 /datum/orderable_item/milk_eggs/tiziran_goods name = "Tiziran Farm-Fresh Pack" - item_path = /obj/item/storage/box/tiziran_goods + purchase_path = /obj/item/storage/box/tiziran_goods cost_per_order = 120 /datum/orderable_item/milk_eggs/tiziran_cans name = "Tiziran Canned Goods Pack" - item_path = /obj/item/storage/box/tiziran_cans + purchase_path = /obj/item/storage/box/tiziran_cans cost_per_order = 120 /datum/orderable_item/milk_eggs/tiziran_meats name = "Tiziran Meatmarket Pack" - item_path = /obj/item/storage/box/tiziran_meats + purchase_path = /obj/item/storage/box/tiziran_meats cost_per_order = 120 /datum/orderable_item/milk_eggs/mothic_goods name = "Mothic Farm-Fresh Pack" - item_path = /obj/item/storage/box/mothic_goods + purchase_path = /obj/item/storage/box/mothic_goods cost_per_order = 120 /datum/orderable_item/milk_eggs/mothic_cans_sauces name = "Mothic Pantry Pack" - item_path = /obj/item/storage/box/mothic_cans_sauces + purchase_path = /obj/item/storage/box/mothic_cans_sauces cost_per_order = 120 /datum/orderable_item/milk_eggs/armorfish name = "Cleaned Armorfish" - item_path = /obj/item/food/fishmeat/armorfish + purchase_path = /obj/item/food/fishmeat/armorfish cost_per_order = 30 /datum/orderable_item/milk_eggs/moonfish name = "Moonfish" - item_path = /obj/item/food/fishmeat/moonfish + purchase_path = /obj/item/food/fishmeat/moonfish cost_per_order = 30 diff --git a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm index 39fb38df550ef..06bd251368a90 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm @@ -3,105 +3,105 @@ /datum/orderable_item/reagents/flour name = "Flour Sack" - item_path = /obj/item/reagent_containers/condiment/flour + purchase_path = /obj/item/reagent_containers/condiment/flour cost_per_order = 30 /datum/orderable_item/reagents/sugar name = "Sugar Sack" - item_path = /obj/item/reagent_containers/condiment/sugar + purchase_path = /obj/item/reagent_containers/condiment/sugar cost_per_order = 30 /datum/orderable_item/reagents/rice name = "Rice Sack" - item_path = /obj/item/reagent_containers/condiment/rice + purchase_path = /obj/item/reagent_containers/condiment/rice cost_per_order = 30 /datum/orderable_item/reagents/cornmeal name = "Cornmeal Box" - item_path = /obj/item/reagent_containers/condiment/cornmeal + purchase_path = /obj/item/reagent_containers/condiment/cornmeal cost_per_order = 30 /datum/orderable_item/reagents/enzyme name = "Universal Enzyme" - item_path = /obj/item/reagent_containers/condiment/enzyme + purchase_path = /obj/item/reagent_containers/condiment/enzyme cost_per_order = 40 /datum/orderable_item/reagents/salt name = "Salt Shaker" - item_path = /obj/item/reagent_containers/condiment/saltshaker + purchase_path = /obj/item/reagent_containers/condiment/saltshaker cost_per_order = 15 /datum/orderable_item/reagents/pepper name = "Pepper Mill" - item_path = /obj/item/reagent_containers/condiment/peppermill + purchase_path = /obj/item/reagent_containers/condiment/peppermill cost_per_order = 15 /datum/orderable_item/reagents/soysauce name = "Soy Sauce" - item_path = /obj/item/reagent_containers/condiment/soysauce + purchase_path = /obj/item/reagent_containers/condiment/soysauce cost_per_order = 15 /datum/orderable_item/reagents/bbqsauce name = "BBQ Sauce" - item_path = /obj/item/reagent_containers/condiment/bbqsauce + purchase_path = /obj/item/reagent_containers/condiment/bbqsauce cost_per_order = 60 /datum/orderable_item/reagents/vinegar name = "Vinegar" - item_path = /obj/item/reagent_containers/condiment/vinegar + purchase_path = /obj/item/reagent_containers/condiment/vinegar cost_per_order = 30 /datum/orderable_item/reagents/olive_oil name = "Olive Oil" - item_path = /obj/item/reagent_containers/condiment/olive_oil + purchase_path = /obj/item/reagent_containers/condiment/olive_oil cost_per_order = 50 //Extra Virgin, just like you, the reader /datum/orderable_item/reagents/peanut_butter name = "Peanut Butter" - item_path = /obj/item/reagent_containers/condiment/peanut_butter + purchase_path = /obj/item/reagent_containers/condiment/peanut_butter cost_per_order = 30 /datum/orderable_item/reagents/cherryjelly name = "Cherry Jelly" - item_path = /obj/item/reagent_containers/condiment/cherryjelly + purchase_path = /obj/item/reagent_containers/condiment/cherryjelly cost_per_order = 30 /datum/orderable_item/reagents/worcestershire name = "Worcestershire Sauce" - item_path = /obj/item/reagent_containers/condiment/worcestershire + purchase_path = /obj/item/reagent_containers/condiment/worcestershire cost_per_order = 30 /datum/orderable_item/reagents/red_bay name = "Red Bay Seasoning" - item_path = /obj/item/reagent_containers/condiment/red_bay + purchase_path = /obj/item/reagent_containers/condiment/red_bay cost_per_order = 30 /datum/orderable_item/reagents/curry_powder name = "Curry Powder" - item_path = /obj/item/reagent_containers/condiment/curry_powder + purchase_path = /obj/item/reagent_containers/condiment/curry_powder cost_per_order = 30 /datum/orderable_item/reagents/dashi_concentrate name = "Dashi Concentrate" - item_path = /obj/item/reagent_containers/condiment/dashi_concentrate + purchase_path = /obj/item/reagent_containers/condiment/dashi_concentrate cost_per_order = 30 /datum/orderable_item/reagents/coconut_milk name = "Coconut Milk" - item_path = /obj/item/reagent_containers/condiment/coconut_milk + purchase_path = /obj/item/reagent_containers/condiment/coconut_milk cost_per_order = 30 /datum/orderable_item/reagents/grounding_solution name = "Grounding Solution" - item_path = /obj/item/reagent_containers/condiment/grounding_solution + purchase_path = /obj/item/reagent_containers/condiment/grounding_solution cost_per_order = 30 /datum/orderable_item/reagents/honey name = "Honey" - item_path = /obj/item/reagent_containers/condiment/honey + purchase_path = /obj/item/reagent_containers/condiment/honey cost_per_order = 125 //its high quality honey :) /datum/orderable_item/reagents/mayonnaise name = "Mayonnaise" - item_path = /obj/item/reagent_containers/condiment/mayonnaise + purchase_path = /obj/item/reagent_containers/condiment/mayonnaise cost_per_order = 30 diff --git a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm index f96562724d27d..5eff7055b9fae 100644 --- a/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm +++ b/code/game/machinery/computer/orders/order_items/cook/order_veggies.dm @@ -3,177 +3,177 @@ /datum/orderable_item/veggies/potato name = "Potato" - item_path = /obj/item/food/grown/potato + purchase_path = /obj/item/food/grown/potato /datum/orderable_item/veggies/tomato name = "Tomato" - item_path = /obj/item/food/grown/tomato + purchase_path = /obj/item/food/grown/tomato /datum/orderable_item/veggies/carrot name = "Carrot" - item_path = /obj/item/food/grown/carrot + purchase_path = /obj/item/food/grown/carrot /datum/orderable_item/veggies/eggplant name = "Eggplant" - item_path = /obj/item/food/grown/eggplant + purchase_path = /obj/item/food/grown/eggplant /datum/orderable_item/veggies/mushroom name = "Plump Helmet" desc = "Plumus Hellmus: Plump, soft and s-so inviting~" - item_path = /obj/item/food/grown/mushroom/plumphelmet + purchase_path = /obj/item/food/grown/mushroom/plumphelmet /datum/orderable_item/veggies/cabbage name = "Cabbage" - item_path = /obj/item/food/grown/cabbage + purchase_path = /obj/item/food/grown/cabbage /datum/orderable_item/veggies/onion name = "Onion" - item_path = /obj/item/food/grown/onion + purchase_path = /obj/item/food/grown/onion /datum/orderable_item/veggies/apple name = "Apple" - item_path = /obj/item/food/grown/apple + purchase_path = /obj/item/food/grown/apple /datum/orderable_item/veggies/pumpkin name = "Pumpkin" - item_path = /obj/item/food/grown/pumpkin + purchase_path = /obj/item/food/grown/pumpkin /datum/orderable_item/veggies/watermelon name = "Watermelon" - item_path = /obj/item/food/grown/watermelon + purchase_path = /obj/item/food/grown/watermelon /datum/orderable_item/veggies/corn name = "Corn" - item_path = /obj/item/food/grown/corn + purchase_path = /obj/item/food/grown/corn /datum/orderable_item/veggies/soybean name = "Soybeans" - item_path = /obj/item/food/grown/soybeans + purchase_path = /obj/item/food/grown/soybeans /datum/orderable_item/veggies/garlic name = "Garlic" - item_path = /obj/item/food/grown/garlic + purchase_path = /obj/item/food/grown/garlic /datum/orderable_item/veggies/cherries name = "Cherries" - item_path = /obj/item/food/grown/cherries + purchase_path = /obj/item/food/grown/cherries /datum/orderable_item/veggies/chanterelle name = "Chanterelle" - item_path = /obj/item/food/grown/mushroom/chanterelle + purchase_path = /obj/item/food/grown/mushroom/chanterelle /datum/orderable_item/veggies/cocoa name = "Cocoa" - item_path = /obj/item/food/grown/cocoapod + purchase_path = /obj/item/food/grown/cocoapod /datum/orderable_item/veggies/herbs name = "Bundle of Herbs" - item_path = /obj/item/food/grown/herbs + purchase_path = /obj/item/food/grown/herbs cost_per_order = 5 /datum/orderable_item/veggies/bell_pepper name = "Bell Pepper" - item_path = /obj/item/food/grown/bell_pepper + purchase_path = /obj/item/food/grown/bell_pepper /datum/orderable_item/veggies/cucumbers name = "Cucumber" - item_path = /obj/item/food/grown/cucumber + purchase_path = /obj/item/food/grown/cucumber cost_per_order = 10 /datum/orderable_item/veggies/pickles name = "Jar of pickles" - item_path = /obj/item/storage/fancy/pickles_jar + purchase_path = /obj/item/storage/fancy/pickles_jar cost_per_order = 60 /datum/orderable_item/veggies/pickled_voltvine name = "Pickled Voltvine" - item_path = /obj/item/food/pickled_voltvine + purchase_path = /obj/item/food/pickled_voltvine cost_per_order = 5 /datum/orderable_item/veggies/chili name = "Chili" - item_path = /obj/item/food/grown/chili + purchase_path = /obj/item/food/grown/chili /datum/orderable_item/veggies/berries name = "Berries" - item_path = /obj/item/food/grown/berries + purchase_path = /obj/item/food/grown/berries /datum/orderable_item/veggies/pineapple name = "Pineapple" - item_path = /obj/item/food/grown/pineapple + purchase_path = /obj/item/food/grown/pineapple /datum/orderable_item/veggies/peas name = "Peas" - item_path = /obj/item/food/grown/peas + purchase_path = /obj/item/food/grown/peas /datum/orderable_item/veggies/korta_nut //nanotrasen does not devote as much of their resources to pathetic lizard crops name = "Korta Nut" - item_path = /obj/item/food/grown/korta_nut + purchase_path = /obj/item/food/grown/korta_nut cost_per_order = 15 /datum/orderable_item/veggies/parsnip name = "Parsnip" - item_path = /obj/item/food/grown/parsnip + purchase_path = /obj/item/food/grown/parsnip /datum/orderable_item/veggies/redbeet name = "Red Beet" - item_path = /obj/item/food/grown/redbeet + purchase_path = /obj/item/food/grown/redbeet /datum/orderable_item/veggies/orange name = "Orange" - item_path = /obj/item/food/grown/citrus/orange + purchase_path = /obj/item/food/grown/citrus/orange /datum/orderable_item/veggies/vanillapod name = "Vanilla" - item_path = /obj/item/food/grown/vanillapod + purchase_path = /obj/item/food/grown/vanillapod cost_per_order = 25 //food items that are treated as mutations in game should be more expensive. groceries shouldnt include ACTUAL mutations but i think real foods are ok /datum/orderable_item/veggies/sweetkorta name = "Sweet Korta Nut" - item_path = /obj/item/food/grown/korta_nut/sweet + purchase_path = /obj/item/food/grown/korta_nut/sweet cost_per_order = 30 /datum/orderable_item/veggies/redonion name = "Red Onion" - item_path = /obj/item/food/grown/onion/red + purchase_path = /obj/item/food/grown/onion/red cost_per_order = 25 /datum/orderable_item/veggies/peanut name = "Peanut" - item_path = /obj/item/food/grown/peanut + purchase_path = /obj/item/food/grown/peanut /datum/orderable_item/veggies/sweetpotato name = "Sweet Potato" - item_path = /obj/item/food/grown/potato/sweet + purchase_path = /obj/item/food/grown/potato/sweet cost_per_order = 25 /datum/orderable_item/veggies/oat name = "Oat" - item_path = /obj/item/food/grown/oat + purchase_path = /obj/item/food/grown/oat /datum/orderable_item/veggies/trumpet name = "Spaceman's Trumpet" - item_path = /obj/item/food/grown/trumpet + purchase_path = /obj/item/food/grown/trumpet cost_per_order = 25 /datum/orderable_item/veggies/banana name = "Banana" - item_path = /obj/item/food/grown/banana + purchase_path = /obj/item/food/grown/banana /datum/orderable_item/veggies/ghostchili name = "Ghost Chili" - item_path = /obj/item/food/grown/ghost_chili + purchase_path = /obj/item/food/grown/ghost_chili cost_per_order = 25 /datum/orderable_item/veggies/lemon name = "Lemon" - item_path = /obj/item/food/grown/citrus/lemon + purchase_path = /obj/item/food/grown/citrus/lemon /datum/orderable_item/veggies/lime name = "Lime" - item_path = /obj/item/food/grown/citrus/lime + purchase_path = /obj/item/food/grown/citrus/lime /datum/orderable_item/veggies/toechtauese name = "Töchtaüse berries" - item_path = /obj/item/food/grown/toechtauese + purchase_path = /obj/item/food/grown/toechtauese cost_per_order = 15 diff --git a/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm b/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm index a91a34b46f2da..79e82ac954b22 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_consumables.dm @@ -2,53 +2,53 @@ category_index = CATEGORY_CONSUMABLES /datum/orderable_item/consumables/survival_pen - item_path = /obj/item/reagent_containers/hypospray/medipen/survival + purchase_path = /obj/item/reagent_containers/hypospray/medipen/survival cost_per_order = 250 /datum/orderable_item/consumables/luxury_pen - item_path = /obj/item/reagent_containers/hypospray/medipen/survival/luxury + purchase_path = /obj/item/reagent_containers/hypospray/medipen/survival/luxury cost_per_order = 750 /datum/orderable_item/consumables/medkit - item_path = /obj/item/storage/medkit/brute + purchase_path = /obj/item/storage/medkit/brute cost_per_order = 400 /datum/orderable_item/consumables/medkit_fire - item_path = /obj/item/storage/medkit/fire + purchase_path = /obj/item/storage/medkit/fire desc = "For emergency magmatic burn relief." cost_per_order = 500 /datum/orderable_item/consumables/whiskey - item_path = /obj/item/reagent_containers/cup/glass/bottle/whiskey + purchase_path = /obj/item/reagent_containers/cup/glass/bottle/whiskey cost_per_order = 100 /datum/orderable_item/consumables/absinthe - item_path = /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium + purchase_path = /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium cost_per_order = 100 /datum/orderable_item/consumables/bubblegum - item_path = /obj/item/storage/box/gum/bubblegum + purchase_path = /obj/item/storage/box/gum/bubblegum cost_per_order = 100 /datum/orderable_item/consumables/havana_cigars - item_path = /obj/item/cigarette/cigar/havana + purchase_path = /obj/item/cigarette/cigar/havana cost_per_order = 150 /datum/orderable_item/consumables/havana_cigars - item_path = /obj/item/cigarette/cigar/havana + purchase_path = /obj/item/cigarette/cigar/havana cost_per_order = 150 /datum/orderable_item/consumables/tracking_implants - item_path = /obj/item/storage/box/minertracker + purchase_path = /obj/item/storage/box/minertracker cost_per_order = 600 /datum/orderable_item/consumables/space_cash - item_path = /obj/item/stack/spacecash/c1000 + purchase_path = /obj/item/stack/spacecash/c1000 desc = "A stack of space cash worth 1000 credits." cost_per_order = 2000 /datum/orderable_item/consumables/rescue_hook name = "Rescue Fishing Rod" - item_path = /obj/item/fishing_rod/rescue + purchase_path = /obj/item/fishing_rod/rescue desc = "For when your fellow miner has inevitably fallen into a chasm, and it's up to you to save them." cost_per_order = 600 diff --git a/code/game/machinery/computer/orders/order_items/mining/order_golem.dm b/code/game/machinery/computer/orders/order_items/mining/order_golem.dm index cbd037230f242..237360978e8d4 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_golem.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_golem.dm @@ -2,34 +2,34 @@ category_index = CATEGORY_GOLEM /datum/orderable_item/golem/mining_id - item_path = /obj/item/card/id/advanced/mining + purchase_path = /obj/item/card/id/advanced/mining cost_per_order = 200 /datum/orderable_item/golem/science_goggles - item_path = /obj/item/clothing/glasses/science + purchase_path = /obj/item/clothing/glasses/science cost_per_order = 200 /datum/orderable_item/golem/monkeycubes - item_path = /obj/item/food/monkeycube + purchase_path = /obj/item/food/monkeycube cost_per_order = 250 /datum/orderable_item/golem/belt - item_path = /obj/item/storage/belt/utility + purchase_path = /obj/item/storage/belt/utility cost_per_order = 300 /datum/orderable_item/golem/royal_cape - item_path = /obj/item/bedsheet/rd/royal_cape + purchase_path = /obj/item/bedsheet/rd/royal_cape cost_per_order = 400 /datum/orderable_item/golem/grey_extract - item_path = /obj/item/slime_extract/grey + purchase_path = /obj/item/slime_extract/grey cost_per_order = 800 /datum/orderable_item/golem/trigger_guard - item_path = /obj/item/borg/upgrade/modkit/trigger_guard + purchase_path = /obj/item/borg/upgrade/modkit/trigger_guard cost_per_order = 750 /datum/orderable_item/golem/rnd_boards - item_path = /obj/item/storage/box/rndboards + purchase_path = /obj/item/storage/box/rndboards cost_per_order = 1000 diff --git a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm index 76af0dc806c96..babbd4a47381e 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm @@ -2,132 +2,132 @@ category_index = CATEGORY_MINING /datum/orderable_item/mining/marker_beacon - item_path = /obj/item/stack/marker_beacon/ten + purchase_path = /obj/item/stack/marker_beacon/ten cost_per_order = 80 /datum/orderable_item/mining/skeleton_key - item_path = /obj/item/skeleton_key + purchase_path = /obj/item/skeleton_key cost_per_order = 675 /datum/orderable_item/mining/mining_stabilizer - item_path = /obj/item/mining_stabilizer + purchase_path = /obj/item/mining_stabilizer cost_per_order = 320 /datum/orderable_item/mining/fulton_core - item_path = /obj/item/fulton_core + purchase_path = /obj/item/fulton_core cost_per_order = 320 /datum/orderable_item/mining/mining_modsuit - item_path = /obj/item/mod/control/pre_equipped/mining + purchase_path = /obj/item/mod/control/pre_equipped/mining desc = "A mining-themed MODsuit that works best when in a mining environment." cost_per_order = 2500 /datum/orderable_item/mining/mining_belt - item_path = /obj/item/storage/belt/mining + purchase_path = /obj/item/storage/belt/mining cost_per_order = 450 /datum/orderable_item/mining/jaunter - item_path = /obj/item/wormhole_jaunter + purchase_path = /obj/item/wormhole_jaunter cost_per_order = 650 /datum/orderable_item/mining/crusher - item_path = /obj/item/kinetic_crusher + purchase_path = /obj/item/kinetic_crusher cost_per_order = 650 /datum/orderable_item/mining/crusher_retool_kit - item_path = /obj/item/crusher_trophy/retool_kit + purchase_path = /obj/item/crusher_trophy/retool_kit cost_per_order = 150 /datum/orderable_item/mining/crusher_retool_kit_harpoon - item_path = /obj/item/crusher_trophy/retool_kit/harpoon + purchase_path = /obj/item/crusher_trophy/retool_kit/harpoon cost_per_order = 150 /datum/orderable_item/mining/crusher_retool_kit_dagger - item_path = /obj/item/crusher_trophy/retool_kit/dagger + purchase_path = /obj/item/crusher_trophy/retool_kit/dagger cost_per_order = 150 /datum/orderable_item/mining/resonator - item_path = /obj/item/resonator + purchase_path = /obj/item/resonator cost_per_order = 710 /datum/orderable_item/mining/resonator_advanced - item_path = /obj/item/resonator/upgraded + purchase_path = /obj/item/resonator/upgraded cost_per_order = 2000 /datum/orderable_item/mining/mining_scanner - item_path = /obj/item/t_scanner/adv_mining_scanner + purchase_path = /obj/item/t_scanner/adv_mining_scanner cost_per_order = 675 /datum/orderable_item/mining/fulton - item_path = /obj/item/extraction_pack + purchase_path = /obj/item/extraction_pack cost_per_order = 800 /datum/orderable_item/mining/lazarus - item_path = /obj/item/lazarus_injector + purchase_path = /obj/item/lazarus_injector cost_per_order = 1000 /datum/orderable_item/mining/gar_mesons - item_path = /obj/item/clothing/glasses/meson/gar + purchase_path = /obj/item/clothing/glasses/meson/gar cost_per_order = 500 /datum/orderable_item/mining/silver_pickaxe - item_path = /obj/item/pickaxe/silver + purchase_path = /obj/item/pickaxe/silver cost_per_order = 1000 /datum/orderable_item/mining/diamond_pickaxe - item_path = /obj/item/pickaxe/diamond + purchase_path = /obj/item/pickaxe/diamond cost_per_order = 2000 /datum/orderable_item/mining/conscription_kit - item_path = /obj/item/storage/backpack/duffelbag/mining_conscript + purchase_path = /obj/item/storage/backpack/duffelbag/mining_conscript desc = "A kit containing everything a crewmember needs to support a shaft miner in the field." cost_per_order = 1200 /datum/orderable_item/mining/capsule - item_path = /obj/item/survivalcapsule + purchase_path = /obj/item/survivalcapsule cost_per_order = 350 /datum/orderable_item/mining/capsule/bathroom - item_path = /obj/item/survivalcapsule/bathroom + purchase_path = /obj/item/survivalcapsule/bathroom cost_per_order = 300 /datum/orderable_item/mining/capsule_luxury - item_path = /obj/item/survivalcapsule/luxury + purchase_path = /obj/item/survivalcapsule/luxury cost_per_order = 2300 /datum/orderable_item/mining/capsule_luxuryelite - item_path = /obj/item/survivalcapsule/luxuryelite + purchase_path = /obj/item/survivalcapsule/luxuryelite cost_per_order = 7000 /datum/orderable_item/mining/kheiralcuffs - item_path = /obj/item/kheiral_cuffs + purchase_path = /obj/item/kheiral_cuffs cost_per_order = 675 /datum/orderable_item/mining/bhop - item_path = /obj/item/clothing/shoes/bhop + purchase_path = /obj/item/clothing/shoes/bhop cost_per_order = 2000 /datum/orderable_item/mining/hiking_boots - item_path = /obj/item/clothing/shoes/winterboots/ice_boots + purchase_path = /obj/item/clothing/shoes/winterboots/ice_boots cost_per_order = 2000 /datum/orderable_item/mining/style_meter - item_path = /obj/item/style_meter + purchase_path = /obj/item/style_meter cost_per_order = 1200 /datum/orderable_item/mining/weather_radio - item_path = /obj/item/radio/weather_monitor + purchase_path = /obj/item/radio/weather_monitor cost_per_order = 320 /datum/orderable_item/mining/ventpointer - item_path = /obj/item/pinpointer/vent + purchase_path = /obj/item/pinpointer/vent cost_per_order = 1150 /datum/orderable_item/mining/boulder_processing - item_path = /obj/item/boulder_beacon + purchase_path = /obj/item/boulder_beacon desc = "A Bouldertech brand all-in-one boulder processing beacon. Each use will teleport in a component of a full boulder processing assembly line. Good for when you need to process additional boulders." cost_per_order = 875 /datum/orderable_item/mining/grapple_gun - item_path = /obj/item/grapple_gun + purchase_path = /obj/item/grapple_gun cost_per_order = 3000 diff --git a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm index f239e9f2a7eaf..ceaa83d8ef734 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm @@ -2,45 +2,45 @@ category_index = CATEGORY_PKA /datum/orderable_item/accelerator/gun - item_path = /obj/item/gun/energy/recharge/kinetic_accelerator + purchase_path = /obj/item/gun/energy/recharge/kinetic_accelerator cost_per_order = 600 /datum/orderable_item/accelerator/range - item_path = /obj/item/borg/upgrade/modkit/range + purchase_path = /obj/item/borg/upgrade/modkit/range cost_per_order = 675 /datum/orderable_item/accelerator/damage - item_path = /obj/item/borg/upgrade/modkit/damage + purchase_path = /obj/item/borg/upgrade/modkit/damage cost_per_order = 675 /datum/orderable_item/accelerator/cooldown - item_path = /obj/item/borg/upgrade/modkit/cooldown + purchase_path = /obj/item/borg/upgrade/modkit/cooldown cost_per_order = 675 /datum/orderable_item/accelerator/chasis - item_path = /obj/item/borg/upgrade/modkit/chassis_mod + purchase_path = /obj/item/borg/upgrade/modkit/chassis_mod cost_per_order = 250 /datum/orderable_item/accelerator/chasis_orange - item_path = /obj/item/borg/upgrade/modkit/chassis_mod/orange + purchase_path = /obj/item/borg/upgrade/modkit/chassis_mod/orange cost_per_order = 300 /datum/orderable_item/accelerator/tracer - item_path = /obj/item/borg/upgrade/modkit/tracer + purchase_path = /obj/item/borg/upgrade/modkit/tracer cost_per_order = 100 /datum/orderable_item/accelerator/adjustable_tracer - item_path = /obj/item/borg/upgrade/modkit/tracer/adjustable + purchase_path = /obj/item/borg/upgrade/modkit/tracer/adjustable cost_per_order = 150 /datum/orderable_item/accelerator/aoe_mobs - item_path = /obj/item/borg/upgrade/modkit/aoe/mobs + purchase_path = /obj/item/borg/upgrade/modkit/aoe/mobs cost_per_order = 1500 /datum/orderable_item/accelerator/minebot_passthrough - item_path = /obj/item/borg/upgrade/modkit/minebot_passthrough + purchase_path = /obj/item/borg/upgrade/modkit/minebot_passthrough cost_per_order = 800 /datum/orderable_item/accelerator/friendly_fire - item_path = /obj/item/borg/upgrade/modkit/human_passthrough + purchase_path = /obj/item/borg/upgrade/modkit/human_passthrough cost_per_order = 750 diff --git a/code/game/machinery/computer/orders/order_items/mining/order_toys.dm b/code/game/machinery/computer/orders/order_items/mining/order_toys.dm index fab03cabaa4b6..65bbee24ead6e 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_toys.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_toys.dm @@ -2,38 +2,38 @@ category_index = CATEGORY_TOYS_DRONE /datum/orderable_item/toys_drones/soap - item_path = /obj/item/soap/nanotrasen + purchase_path = /obj/item/soap/nanotrasen cost_per_order = 180 /datum/orderable_item/toys_drones/laser_pointer - item_path = /obj/item/laser_pointer + purchase_path = /obj/item/laser_pointer cost_per_order = 275 /datum/orderable_item/toys_drones/facehugger - item_path = /obj/item/clothing/mask/facehugger/toy + purchase_path = /obj/item/clothing/mask/facehugger/toy cost_per_order = 275 /datum/orderable_item/toys_drones/mining_drone - item_path = /mob/living/basic/mining_drone + purchase_path = /mob/living/basic/mining_drone cost_per_order = 675 /datum/orderable_item/toys_drones/drone_health - item_path = /obj/item/mine_bot_upgrade/health + purchase_path = /obj/item/mine_bot_upgrade/health cost_per_order = 350 /datum/orderable_item/toys_drones/drone_shield - item_path = /obj/item/mine_bot_upgrade/regnerative_shield + purchase_path = /obj/item/mine_bot_upgrade/regnerative_shield cost_per_order = 500 /datum/orderable_item/toys_drones/drone_remote - item_path = /obj/item/minebot_remote_control + purchase_path = /obj/item/minebot_remote_control cost_per_order = 500 /datum/orderable_item/toys_drones/drone_pka - item_path = /obj/item/borg/upgrade/modkit/cooldown/minebot + purchase_path = /obj/item/borg/upgrade/modkit/cooldown/minebot cost_per_order = 525 /datum/orderable_item/toys_drones/drone_sentience - item_path = /obj/item/slimepotion/slime/sentience/mining + purchase_path = /obj/item/slimepotion/slime/sentience/mining cost_per_order = 850 diff --git a/code/game/machinery/computer/orders/order_items/order_datum.dm b/code/game/machinery/computer/orders/order_items/order_datum.dm index 13684fc742b44..28c21a14f267e 100644 --- a/code/game/machinery/computer/orders/order_items/order_datum.dm +++ b/code/game/machinery/computer/orders/order_items/order_datum.dm @@ -5,7 +5,7 @@ ///Description shown in the shop, set automatically unless it's hard set by the subtype var/desc ///Path of the item that is purchased when ordering us. - var/obj/item/item_path + var/atom/movable/purchase_path ///The category this item will be displayed in. var/category_index = NONE ///How much this item costs to order. @@ -15,14 +15,9 @@ . = ..() if(!category_index) CRASH("[type] doesn't have a category_index assigned!") - if(!item_path) + if(!purchase_path) CRASH("[type] orderable item datum with no item path was created!") if(!name) - name = initial(item_path.name) + name = initial(purchase_path.name) if(!desc) - desc = initial(item_path.desc) - -/datum/orderable_item/Destroy(force) - if(item_path) - qdel(item_path) - return ..() + desc = initial(purchase_path.desc) diff --git a/code/game/machinery/computer/records/security.dm b/code/game/machinery/computer/records/security.dm index b2bc95e3fd060..3b84836bd5e9b 100644 --- a/code/game/machinery/computer/records/security.dm +++ b/code/game/machinery/computer/records/security.dm @@ -184,7 +184,7 @@ if("set_note") var/note = strip_html_full(params["note"], MAX_MESSAGE_LEN) - investigate_log("[user] has changed the security note of record: \"[target]\" from \"[target.security_note]\" to \"[note]\".") + investigate_log("[user] has changed the security note of record: \"[target]\" from \"[target.security_note]\" to \"[note]\".", INVESTIGATE_RECORDS) target.security_note = note return TRUE diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm index 082ac7560eef0..b9a7273ae75ba 100644 --- a/code/game/machinery/computer/telescreen.dm +++ b/code/game/machinery/computer/telescreen.dm @@ -45,8 +45,9 @@ var/icon_state_off = "entertainment_blank" var/icon_state_on = "entertainment" -/obj/machinery/vending/add_context(atom/source, list/context, obj/item/held_item, mob/user) +/obj/machinery/computer/security/telescreen/entertainment/add_context(atom/source, list/context, obj/item/held_item, mob/user) context[SCREENTIP_CONTEXT_CTRL_LMB] = "Toggle mute button" + return CONTEXTUAL_SCREENTIP_SET /obj/machinery/computer/security/telescreen/entertainment/click_ctrl(mob/user) . = ..() @@ -64,6 +65,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/security/telescreen/entertai /obj/machinery/computer/security/telescreen/entertainment/Initialize(mapload) . = ..() find_and_hang_on_wall() + register_context() speakers = new(src) /obj/machinery/computer/security/telescreen/entertainment/Destroy() diff --git a/code/game/machinery/dna_infuser/infuser_actions.dm b/code/game/machinery/dna_infuser/infuser_actions.dm index 1b55059bb9899..466bed9e17efe 100644 --- a/code/game/machinery/dna_infuser/infuser_actions.dm +++ b/code/game/machinery/dna_infuser/infuser_actions.dm @@ -41,6 +41,8 @@ if(!LAZYACCESS(params2list(params), RIGHT_CLICK)) return . = ..() + if(!.) + return var/modifiers = params2list(params) caller.visible_message( @@ -48,7 +50,7 @@ span_bold("You spit ink."), ) var/obj/projectile/ink_spit/ink = new /obj/projectile/ink_spit(caller.loc) - ink.preparePixelProjectile(target, caller, modifiers) + ink.aim_projectile(target, caller, modifiers) ink.firer = caller ink.fire() playsound(caller, 'sound/items/weapons/pierce.ogg', 20, TRUE, -1) diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm index 1e4bc41ae415b..9a873b5e373f6 100644 --- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm @@ -10,6 +10,7 @@ bonus_activate_text = span_notice("Carp DNA is deeply infused with you! You've learned how to propel yourself through space!") bonus_deactivate_text = span_notice("Your DNA is once again mostly yours, and so fades your ability to space-swim...") bonus_traits = list(TRAIT_SPACEWALK) + bonus_biotype = MOB_AQUATIC limb_overlay = /datum/bodypart_overlay/texture/carpskin color_overlay_priority = LIMB_COLOR_CARP_INFUSION diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm index c7f9ec460f508..b14b76a52565d 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm @@ -8,8 +8,8 @@ id = "organ_set_bonus_fish" tick_interval = 1 SECONDS organs_needed = 3 - bonus_activate_text = span_notice("Fish DNA is deeply infused with you! While wet, you crawl faster, are slippery, and cannot slip, and it takes longer to dry out. \ - You're also more resistant to high pressure, better at fishing, but less resilient when dry, especially against burns.") + bonus_activate_text = span_notice("Fish DNA is deeply infused with you! While wet, you crawl faster, are slippery, cannot slip, and it takes longer to dry out. \ + You're also resistant to high pressure, better at fishing, but less resilient when dry, especially against burns.") bonus_deactivate_text = span_notice("You no longer feel as fishy. The moisture around your body begins to dissipate faster...") bonus_traits = list( TRAIT_RESISTHIGHPRESSURE, @@ -23,6 +23,7 @@ TRAIT_EXPANDED_FOV, //fish vision TRAIT_WATER_ADAPTATION, ) + bonus_biotype = MOB_AQUATIC /datum/status_effect/organ_set_bonus/fish/enable_bonus() . = ..() @@ -34,6 +35,9 @@ if(ishuman(owner)) var/mob/living/carbon/human/human = owner + //Fish is slightly weaker to being cooked. oh oh. + human.physiology.burn_mod *= 1.15 + human.physiology.heat_mod *= 1.15 human.physiology.damage_resistance += 8 //base 8% damage resistance, much wow. if(!HAS_TRAIT(owner, TRAIT_IS_WET)) apply_debuff() @@ -61,6 +65,8 @@ owner.clear_mood_event("fish_organs_bonus") if(ishuman(owner)) var/mob/living/carbon/human/human = owner + human.physiology.burn_mod /= 1.15 + human.physiology.heat_mod /= 1.15 human.physiology.damage_resistance -= 8 if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish)) remove_speed_buff() @@ -190,6 +196,7 @@ . = ..() owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling/flopping_only) // DOPPLER EDIT, old code: owner.AddElementTrait(TRAIT_WADDLING, type, /datum/element/waddling) RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_location)) + RegisterSignal(owner, COMSIG_LIVING_GIBBER_ACT, PROC_REF(on_gibber_processed)) check_location(owner, null) /obj/item/organ/tail/fish/on_mob_remove(mob/living/carbon/owner) @@ -197,7 +204,12 @@ owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_STAGGER), type) owner.remove_movespeed_modifier(/datum/movespeed_modifier/fish_on_water) owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/fish_on_water) - UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) + UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_GIBBER_ACT)) + +/obj/item/organ/tail/fish/proc/on_gibber_processed(mob/living/carbon/owner, mob/living/user, obj/machinery/gibber, list/results) + SIGNAL_HANDLER + for(var/iteration in 1 to fillet_amount * 0.5) + results += new fillet_type /obj/item/organ/tail/fish/get_greyscale_color_from_draw_color() set_greyscale(bodypart_overlay.draw_color) diff --git a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm index 0ca652c3ab92c..a9401189b40aa 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm @@ -49,12 +49,10 @@ "S" = "Z", ) -/obj/item/organ/tongue/fly/New(class, timer, datum/mutation/human/copymut) - . = ..() - AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) /obj/item/organ/tongue/fly/Initialize(mapload) . = ..() + AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) /obj/item/organ/tongue/fly/get_possible_languages() diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm index 82c9c9fc8e8be..805277b3d9c61 100644 --- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm @@ -34,7 +34,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... AddElement(/datum/element/noticable_organ, "%PRONOUN_They radiate%PRONOUN_s an aura of serenity.") AddElement(/datum/element/update_icon_blocker) -/obj/item/organ/heart/gondola/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/heart/gondola/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(!(FACTION_HOSTILE in receiver.faction)) factions_to_remove += FACTION_HOSTILE @@ -42,7 +42,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... factions_to_remove += FACTION_MINING receiver.faction |= list(FACTION_HOSTILE, FACTION_MINING) -/obj/item/organ/heart/gondola/mob_remove(mob/living/carbon/heartless, special, movement_flags) +/obj/item/organ/heart/gondola/on_mob_remove(mob/living/carbon/heartless, special, movement_flags) . = ..() for(var/faction in factions_to_remove) heartless.faction -= faction @@ -64,11 +64,11 @@ Fluoride Stare: After someone says 5 words, blah blah blah... AddElement(/datum/element/noticable_organ, "%PRONOUN_Their mouth is permanently affixed into a relaxed smile.", BODY_ZONE_PRECISE_MOUTH) AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/gondola) -/obj/item/organ/tongue/gondola/mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/gondola/on_mob_insert(mob/living/carbon/tongue_owner, special, movement_flags) . = ..() tongue_owner.add_mood_event("gondola_zen", /datum/mood_event/gondola_serenity) -/obj/item/organ/tongue/gondola/mob_remove(mob/living/carbon/tongue_owner, special, movement_flags) +/obj/item/organ/tongue/gondola/on_mob_remove(mob/living/carbon/tongue_owner, special, movement_flags) tongue_owner.clear_mood_event("gondola_zen") return ..() @@ -87,7 +87,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... AddElement(/datum/element/noticable_organ, "%PRONOUN_Their left arm has small needles breaching the skin all over it.", BODY_ZONE_L_ARM) AddElement(/datum/element/noticable_organ, "%PRONOUN_Their right arm has small needles breaching the skin all over it.", BODY_ZONE_R_ARM) -/obj/item/organ/liver/gondola/mob_insert(mob/living/carbon/liver_owner, special, movement_flags) +/obj/item/organ/liver/gondola/on_mob_insert(mob/living/carbon/liver_owner, special, movement_flags) . = ..() var/has_left = liver_owner.has_left_hand(check_disabled = FALSE) var/has_right = liver_owner.has_right_hand(check_disabled = FALSE) @@ -102,7 +102,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... RegisterSignal(liver_owner, COMSIG_LIVING_TRY_PULL, PROC_REF(on_owner_try_pull)) RegisterSignal(liver_owner, COMSIG_CARBON_HELPED, PROC_REF(on_hug)) -/obj/item/organ/liver/gondola/mob_remove(mob/living/carbon/liver_owner, special, movement_flags) +/obj/item/organ/liver/gondola/on_mob_remove(mob/living/carbon/liver_owner, special, movement_flags) . = ..() UnregisterSignal(liver_owner, list(COMSIG_HUMAN_EQUIPPING_ITEM, COMSIG_LIVING_TRY_PULL, COMSIG_CARBON_HELPED)) diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm index f10dcefb0d5c5..251c5c35a49b0 100644 --- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm @@ -74,7 +74,7 @@ //but 1.5 damage human_receiver.physiology?.damage_resistance -= 50 -/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special) +/obj/item/organ/heart/rat/on_mob_remove(mob/living/carbon/heartless, special, movement_flags) . = ..() if(!ishuman(heartless)) return diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm index 2b32ad8570223..2c07038fd1709 100644 --- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm @@ -16,10 +16,9 @@ // - Immunity to nuke gibs // - Nukes come with radiation (not actually but yknow) bonus_traits = list(TRAIT_NUKEIMMUNE, TRAIT_RADIMMUNE, TRAIT_VIRUS_RESISTANCE) + bonus_biotype = MOB_BUG /// Armor type attached to the owner's physiology var/datum/armor/given_armor = /datum/armor/roach_internal_armor - /// Storing biotypes pre-organ bonus applied so we don't remove bug from mobs which should have it. - var/old_biotypes = NONE /datum/status_effect/organ_set_bonus/roach/enable_bonus() . = ..() @@ -29,9 +28,6 @@ var/mob/living/carbon/human/human_owner = owner human_owner.physiology.armor = human_owner.physiology.armor.add_other_armor(given_armor) - old_biotypes = human_owner.mob_biotypes - human_owner.mob_biotypes |= MOB_BUG - /datum/status_effect/organ_set_bonus/roach/disable_bonus() . = ..() if(!ishuman(owner) || QDELETED(owner)) @@ -40,9 +36,6 @@ var/mob/living/carbon/human/human_owner = owner human_owner.physiology.armor = human_owner.physiology.armor.subtract_other_armor(given_armor) - if(!(old_biotypes & MOB_BUG)) // only remove bug if it wasn't there before - human_owner.mob_biotypes &= ~MOB_BUG - /// Roach heart: /// Reduces damage taken from brute attacks from behind, /// but increases duration of knockdowns @@ -72,7 +65,7 @@ QDEL_NULL(roach_shell) return ..() -/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/roach/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!ishuman(organ_owner)) return @@ -87,7 +80,7 @@ . = ..() limb.add_bodypart_overlay(roach_shell) -/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/roach/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!ishuman(organ_owner) || QDELETED(organ_owner)) return @@ -195,7 +188,7 @@ . = ..() AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/roach) -/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/roach/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!ishuman(organ_owner)) return @@ -203,7 +196,7 @@ var/mob/living/carbon/human/human_owner = owner human_owner.physiology.tox_mod *= 2 -/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/roach/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!ishuman(organ_owner) || QDELETED(organ_owner)) return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 39909c64cf994..7cbd5126ca487 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -545,7 +545,7 @@ else . += get_airlock_overlay("fill_[frame_state]", icon, src, em_block = TRUE) - if(lights && hasPower()) + if(lights && hasPower() && light_state) . += get_airlock_overlay("lights_[light_state]", overlays_file, src, em_block = FALSE) if(panel_open) @@ -1390,9 +1390,10 @@ /obj/machinery/door/airlock/proc/prison_open() if(obj_flags & EMAGGED) return - locked = FALSE + if(locked) + unbolt() open() - locked = TRUE + bolt() return // gets called when a player uses an airlock painter on this airlock @@ -1548,6 +1549,7 @@ assembly.previous_assembly = previous_airlock assembly.update_name() assembly.update_appearance() + assembly.dir = dir /obj/machinery/door/airlock/on_deconstruction(disassembled) var/obj/structure/door_assembly/A @@ -2464,6 +2466,10 @@ opacity = FALSE glass = TRUE +/obj/machinery/door/airlock/multi_tile/setDir(newdir) + . = ..() + set_bounds() + /obj/structure/fluff/airlock_filler name = "airlock fluff" desc = "You shouldn't be able to see this fluff!" diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 858f2dffefff2..b238f3416681f 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -548,18 +548,20 @@ if(welded || operating) return + var/atom/crowbar_owner = acting_object.loc //catchs mechs and any other non-mob using a crowbar + if(density) being_held_open = TRUE - user.balloon_alert_to_viewers("holding firelock open", "holding firelock open") + crowbar_owner.balloon_alert_to_viewers("holding firelock open", "holding firelock open") COOLDOWN_START(src, activation_cooldown, REACTIVATION_DELAY) open() - if(QDELETED(user)) + if(QDELETED(crowbar_owner)) being_held_open = FALSE return - RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(handle_held_open_adjacency)) - RegisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(handle_held_open_adjacency)) - RegisterSignal(user, COMSIG_QDELETING, PROC_REF(handle_held_open_adjacency)) - handle_held_open_adjacency(user) + RegisterSignal(crowbar_owner, COMSIG_MOVABLE_MOVED, PROC_REF(handle_held_open_adjacency)) + RegisterSignal(crowbar_owner, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(handle_held_open_adjacency)) + RegisterSignal(crowbar_owner, COMSIG_QDELETING, PROC_REF(handle_held_open_adjacency)) + handle_held_open_adjacency(crowbar_owner) else close() @@ -575,19 +577,23 @@ else close() -/obj/machinery/door/firedoor/proc/handle_held_open_adjacency(mob/user) +/obj/machinery/door/firedoor/proc/handle_held_open_adjacency(atom/crowbar_owner) SIGNAL_HANDLER - var/mob/living/living_user = user - if(!QDELETED(user) && Adjacent(user) && isliving(user) && (living_user.body_position == STANDING_UP)) - return + + if(!QDELETED(crowbar_owner) && crowbar_owner.CanReach(src)) + if(!ismob(crowbar_owner)) + return + var/mob/living/mob_user = crowbar_owner + if(isliving(mob_user) && (mob_user.body_position == STANDING_UP)) + return being_held_open = FALSE correct_state() - UnregisterSignal(user, COMSIG_MOVABLE_MOVED) - UnregisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION) - UnregisterSignal(user, COMSIG_QDELETING) - if(user) - user.balloon_alert_to_viewers("released firelock", "released firelock") + UnregisterSignal(crowbar_owner, COMSIG_MOVABLE_MOVED) + UnregisterSignal(crowbar_owner, COMSIG_LIVING_SET_BODY_POSITION) + UnregisterSignal(crowbar_owner, COMSIG_QDELETING) + if(crowbar_owner) + crowbar_owner.balloon_alert_to_viewers("released firelock", "released firelock") /obj/machinery/door/firedoor/attack_ai(mob/user) add_fingerprint(user) diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 83b1626900286..7a5e562dd3ecf 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -4,6 +4,7 @@ idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05 active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.04 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + mouse_over_pointer = MOUSE_HAND_POINTER var/idSelf /obj/machinery/door_buttons/attackby(obj/O, mob/user) @@ -109,6 +110,7 @@ icon_state = "access_control_standby" base_icon_state = "access_control" interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN|INTERACT_MACHINE_ALLOW_SILICON|INTERACT_MACHINE_OPEN_SILICON + mouse_over_pointer = MOUSE_HAND_POINTER ///the id of the interior airlock var/idInterior ///the id of the exterior airlock diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index b22959ce461be..4505be8be47eb 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -18,6 +18,7 @@ max_integrity = 250 integrity_failure = 0.4 armor_type = /datum/armor/machinery_firealarm + mouse_over_pointer = MOUSE_HAND_POINTER idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05 active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.02 power_channel = AREA_USAGE_ENVIRON diff --git a/code/game/machinery/flatpacker.dm b/code/game/machinery/flatpacker.dm index 4a0e78f52071f..c26d9ad036d53 100644 --- a/code/game/machinery/flatpacker.dm +++ b/code/game/machinery/flatpacker.dm @@ -477,3 +477,9 @@ return ITEM_INTERACT_SUCCESS #undef MAX_FLAT_PACKS + +/obj/item/flatpack/flatpacker // a roundstart flatpacker is NICE you can gahdamn tell the time and everythin' + board = /obj/item/circuitboard/machine/flatpacker + +/obj/item/flatpack/mailsorter // to have a roundstart mail sorter at cargo + board = /obj/item/circuitboard/machine/mailsorter diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index 4949f53adfbfe..bbb6f33236d23 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -179,7 +179,7 @@ obj_flags |= EMAGGED allow_living = TRUE allow_clothing = TRUE - balloon_alert(!user, "lifesign scanners overloaded") + balloon_alert(user, "lifesign scanners overloaded") return TRUE /obj/machinery/harvester/container_resist_act(mob/living/user) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 437c2dbd168a6..f8bfeceb69f5d 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -25,8 +25,8 @@ use_power = NO_POWER_USE interaction_flags_mouse_drop = NEED_HANDS - ///What are we sticking our needle in? - var/atom/attached + /// Information and effects about where the IV drip is attached to + var/datum/iv_drip_attachment/attachment ///Are we donating or injecting? var/mode = IV_INJECTING ///The chemicals flow speed @@ -54,7 +54,7 @@ AddElement(/datum/element/noisy_movement) /obj/machinery/iv_drip/Destroy() - attached = null + QDEL_NULL(attachment) QDEL_NULL(reagent_container) return ..() @@ -65,7 +65,7 @@ ui.open() /obj/machinery/iv_drip/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) - if(attached) + if(attachment) context[SCREENTIP_CONTEXT_RMB] = "Take needle out" else if(reagent_container && !use_internal_storage) context[SCREENTIP_CONTEXT_RMB] = "Eject container" @@ -93,12 +93,12 @@ .["canRemoveContainer"] = !use_internal_storage .["mode"] = mode == IV_INJECTING ? TRUE : FALSE - .["canDraw"] = inject_only || (attached && !isliving(attached)) ? FALSE : TRUE + .["canDraw"] = inject_only || (attachment && !isliving(attachment.attached_to)) ? FALSE : TRUE .["transferRate"] = transfer_rate - .["hasObjectAttached"] = attached ? TRUE : FALSE - if(attached) - .["objectName"] = attached.name + .["hasObjectAttached"] = !!attachment + if(attachment) + .["objectName"] = attachment.attached_to.name var/datum/reagents/drip_reagents = get_reagents() if(drip_reagents) @@ -131,7 +131,7 @@ update_appearance(UPDATE_ICON) /obj/machinery/iv_drip/update_icon_state() - if(transfer_rate > 0 && attached) + if(transfer_rate > 0 && attachment) icon_state = "[base_icon_state]_[mode ? "injecting" : "donating"]" else icon_state = "[base_icon_state]_[mode ? "injectidle" : "donateidle"]" @@ -143,7 +143,7 @@ if(!reagent_container) return - . += attached ? "beakeractive" : "beakeridle" + . += attachment ? "beakeractive" : "beakeridle" var/datum/reagents/container_reagents = get_reagents() if(!container_reagents) return @@ -172,9 +172,9 @@ if(!target.is_injectable(user)) to_chat(user, span_warning("Can't inject into this!")) return - if(attached) - visible_message(span_warning("[attached] is detached from [src].")) - attached = null + if(attachment) + visible_message(span_warning("[attachment.attached_to] is detached from [src].")) + QDEL_NULL(attachment) update_appearance(UPDATE_ICON) user.visible_message(span_warning("[user] attaches [src] to [target]."), span_notice("You attach [src] to [target].")) attach_iv(target, user) @@ -214,19 +214,21 @@ new /obj/item/stack/sheet/iron(loc) /obj/machinery/iv_drip/process(seconds_per_tick) - if(!attached) + if(!attachment) return PROCESS_KILL - if(!(get_dist(src, attached) <= 1 && isturf(attached.loc))) - if(isliving(attached)) - var/mob/living/carbon/attached_mob = attached - to_chat(attached, span_userdanger("The IV drip needle is ripped out of you, leaving an open bleeding wound!")) + var/atom/attached_to = attachment.attached_to + + if(!(get_dist(src, attached_to) <= 1 && isturf(attached_to.loc))) + if(isliving(attached_to)) + var/mob/living/carbon/attached_mob = attached_to + to_chat(attached_to, span_userdanger("The IV drip needle is ripped out of you, leaving an open bleeding wound!")) var/list/arm_zones = shuffle(list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)) var/obj/item/bodypart/chosen_limb = attached_mob.get_bodypart(arm_zones[1]) || attached_mob.get_bodypart(arm_zones[2]) || attached_mob.get_bodypart(BODY_ZONE_CHEST) - chosen_limb.receive_damage(3) + attached_mob.apply_damage(3, BRUTE, chosen_limb, wound_bonus = CANT_WOUND) attached_mob.cause_wound_of_type_and_severity(WOUND_PIERCE, chosen_limb, WOUND_SEVERITY_MODERATE, wound_source = "IV needle") else - visible_message(span_warning("[attached] is detached from [src].")) + visible_message(span_warning("[attached_to] is detached from [src].")) detach_iv() return PROCESS_KILL @@ -240,12 +242,12 @@ // Give reagents if(mode) if(drip_reagents.total_volume) - drip_reagents.trans_to(attached, transfer_rate * seconds_per_tick, methods = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages + drip_reagents.trans_to(attached_to, transfer_rate * seconds_per_tick, methods = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages update_appearance(UPDATE_ICON) // Take blood - else if (isliving(attached)) - var/mob/living/attached_mob = attached + else if (isliving(attached_to)) + var/mob/living/attached_mob = attached_to var/amount = min(transfer_rate * seconds_per_tick, drip_reagents.maximum_volume - drip_reagents.total_volume) // If the beaker is full, ping if(!amount) @@ -267,8 +269,8 @@ return if(!ishuman(user)) return - if(attached) - visible_message(span_notice("[attached] is detached from [src].")) + if(attachment) + visible_message(span_notice("[attachment.attached_to] is detached from [src].")) detach_iv() else if(reagent_container) eject_beaker(user) @@ -291,7 +293,10 @@ if(isliving(target)) var/mob/living/target_mob = target target_mob.throw_alert(ALERT_IV_CONNECTED, /atom/movable/screen/alert/iv_connected) - attached = target + + qdel(attachment) + attachment = new(src, target) + START_PROCESSING(SSmachines, src) update_appearance(UPDATE_ICON) @@ -299,13 +304,13 @@ ///Called when an iv is detached. doesnt include chat stuff because there's multiple options and its better handled by the caller /obj/machinery/iv_drip/proc/detach_iv() - if(attached) - visible_message(span_notice("[attached] is detached from [src].")) - if(isliving(attached)) - var/mob/living/attached_mob = attached + if(attachment) + visible_message(span_notice("[attachment.attached_to] is detached from [src].")) + if(isliving(attachment.attached_to)) + var/mob/living/attached_mob = attachment.attached_to attached_mob.clear_alert(ALERT_IV_CONNECTED, /atom/movable/screen/alert/iv_connected) - SEND_SIGNAL(src, COMSIG_IV_DETACH, attached) - attached = null + SEND_SIGNAL(src, COMSIG_IV_DETACH, attachment?.attached_to) + QDEL_NULL(attachment) update_appearance(UPDATE_ICON) /// Get the reagents used by IV drip @@ -325,8 +330,8 @@ if(usr.incapacitated) return if(reagent_container) - if(attached) - visible_message(span_warning("[attached] is detached from [src].")) + if(attachment) + visible_message(span_warning("[attachment?.attached_to] is detached from [src].")) detach_iv() reagent_container.forceMove(drop_location()) reagent_container = null @@ -346,7 +351,7 @@ mode = IV_INJECTING return // Prevent blood draining from non-living - if(attached && !isliving(attached)) + if(attachment && !isliving(attachment.attached_to)) mode = IV_INJECTING return mode = !mode @@ -367,7 +372,50 @@ . += span_notice("It has an internal chemical storage.") else . += span_notice("No chemicals are attached.") - . += span_notice("[attached ? attached : "Nothing"] is connected.") + . += span_notice("[attachment ? attachment.attached_to : "Nothing"] is connected.") + +/// Information and effects about where an IV drip is attached to +// Lifetime is managed by the iv_drip, which will delete the iv_drip_attachment after +// a process if the attached object is invalid. +// iv_drip_attachment should never outlive iv_drip. +/datum/iv_drip_attachment + var/obj/machinery/iv_drip/iv_drip + var/atom/attached_to + + VAR_PRIVATE + datum/beam/beam + datum/component/tug_towards/tug_to_me + +/datum/iv_drip_attachment/New( + obj/machinery/iv_drip/iv_drip, + atom/attached_to +) + src.iv_drip = iv_drip + src.attached_to = attached_to + + tug_to_me = attached_to.AddComponent(/datum/component/tug_towards, iv_drip) + + beam = iv_drip.Beam( + attached_to, + icon_state = "1-full", + beam_color = COLOR_SILVER, + layer = BELOW_MOB_LAYER, + + // Come out from the spout + override_origin_pixel_x = 9, + override_origin_pixel_y = 2, + ) + +/datum/iv_drip_attachment/Destroy(force) + tug_to_me.remove_tug_target(iv_drip) + tug_to_me = null + + iv_drip = null + attached_to = null + + QDEL_NULL(beam) + + return ..() /datum/crafting_recipe/iv_drip name = "IV drip" diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index c8d0249fca02d..ceb5716849a79 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -7,6 +7,7 @@ desc = "Make dark." power_channel = AREA_USAGE_LIGHT idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.02 + mouse_over_pointer = MOUSE_HAND_POINTER /// Set this to a string, path, or area instance to control that area /// instead of the switch's location. var/area/area = null diff --git a/code/game/machinery/newscaster/newscaster_machine.dm b/code/game/machinery/newscaster/newscaster_machine.dm index 62d70e1e6925c..2097e919247e5 100644 --- a/code/game/machinery/newscaster/newscaster_machine.dm +++ b/code/game/machinery/newscaster/newscaster_machine.dm @@ -231,7 +231,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30) data["channelLocked"] = current_channel.locked data["channelCensored"] = current_channel.censored - //We send all the information about all messages in existance. + //We send all the information about all messages in existence. data["messages"] = message_list data["wanted"] = wanted_info @@ -590,7 +590,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30) else to_chat(user, span_warning("You cannot interface with silicon photo uploading!")) if(!targetcam.stored.len) - to_chat(usr, span_boldannounce("No images saved.")) + to_chat(usr, span_bolddanger("No images saved.")) return var/datum/picture/selection = targetcam.selectpicture(user) if(selection) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 39d6fe7d2ea0c..abd481d525d0c 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -134,7 +134,7 @@ Buildable meters return ..() /obj/item/pipe/proc/make_from_existing(obj/machinery/atmospherics/make_from) - p_init_dir = make_from.initialize_directions + p_init_dir = make_from.get_init_directions() setDir(make_from.dir) pipename = make_from.name add_atom_colour(make_from.color, FIXED_COLOUR_PRIORITY) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index e64e01bbcf246..32e29a2e5dd0a 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -655,7 +655,7 @@ DEFINE_BITFIELD(turret_flags, list( //Shooting Code: - A.preparePixelProjectile(target, T) + A.aim_projectile(target, T) A.firer = src A.fired_from = src if(ignore_faction) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 7454f18551150..226e19bfe84f1 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -17,6 +17,7 @@ /obj/item/melee/baton/security, /obj/item/ammo_box/magazine/recharge, /obj/item/modular_computer, + /obj/item/gun/ballistic/automatic/battle_rifle, )) /obj/machinery/recharger/RefreshParts() @@ -55,6 +56,11 @@ var/obj/item/ammo_box/magazine/recharge/power_pack = charging . += span_notice("- \The [charging]'s cell is at [PERCENT(power_pack.stored_ammo.len/power_pack.max_ammo)]%.") return + if(istype(charging, /obj/item/gun/ballistic/automatic/battle_rifle)) + var/obj/item/gun/ballistic/automatic/battle_rifle/recalibrating_gun = charging + . += span_notice("- \The [charging]'s system degradation is at stage [recalibrating_gun.degradation_stage] of [recalibrating_gun.degradation_stage_max]%.") + . += span_notice("- \The [charging]'s degradation buffer is at [PERCENT(recalibrating_gun.shots_before_degradation/recalibrating_gun.max_shots_before_degradation)]%.") + return . += span_notice("- \The [charging] is not reporting a power level.") /obj/machinery/recharger/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) @@ -158,6 +164,23 @@ using_power = TRUE update_appearance() return + + if(istype(charging, /obj/item/gun/ballistic/automatic/battle_rifle)) + var/obj/item/gun/ballistic/automatic/battle_rifle/recalibrating_gun = charging + + if(recalibrating_gun.degradation_stage) + recalibrating_gun.attempt_recalibration(FALSE) + use_energy(active_power_usage * recharge_coeff * seconds_per_tick) + using_power = TRUE + + else if(recalibrating_gun.shots_before_degradation < recalibrating_gun.max_shots_before_degradation) + recalibrating_gun.attempt_recalibration(TRUE, 1 * recharge_coeff) + use_energy(active_power_usage * recharge_coeff * seconds_per_tick) + using_power = TRUE + + update_appearance() + return + if(!using_power && !finished_recharging) //Inserted thing is at max charge/ammo, notify those around us finished_recharging = TRUE playsound(src, 'sound/machines/ping.ogg', 30, TRUE) diff --git a/code/game/machinery/scanner_gate.dm b/code/game/machinery/scanner_gate.dm index 3d87e4cb60b9a..ee93f41cf552e 100644 --- a/code/game/machinery/scanner_gate.dm +++ b/code/game/machinery/scanner_gate.dm @@ -5,7 +5,6 @@ #define SCANGATE_WANTED "Wanted" #define SCANGATE_SPECIES "Species" #define SCANGATE_NUTRITION "Nutrition" -#define SCANGATE_CONTRABAND "Contraband" /obj/machinery/scanner_gate name = "scanner gate" @@ -39,8 +38,6 @@ var/minus_false_beep = 0 ///Base false positive/negative chance var/base_false_beep = 5 - ///Is an n-spect scanner attached to the gate? Enables contraband scanning. - var/obj/item/inspector/n_spect = null ///List of species that can be scanned by the gate. Supports adding more species' IDs during in-game. var/list/available_species = list( SPECIES_HUMAN, @@ -76,12 +73,6 @@ for(var/datum/stock_part/scanning_module/scanning_module in component_parts) minus_false_beep = scanning_module.tier //The better are scanninning modules - the lower is chance of False Positives -/obj/machinery/scanner_gate/atom_deconstruct(disassembled) - . = ..() - if(n_spect) - n_spect.forceMove(drop_location()) - n_spect = null - /obj/machinery/scanner_gate/examine(mob/user) . = ..() @@ -90,18 +81,6 @@ . += span_notice("The control panel is ID-locked. Swipe a valid ID to unlock it.") else . += span_notice("The control panel is unlocked. Swipe an ID to lock it.") - if(n_spect) - . += span_notice("The scanner is equipped with an N-Spect scanner. Use a [span_boldnotice("crowbar")] to uninstall.") - -/obj/machinery/scanner_gate/add_context(atom/source, list/context, obj/item/held_item, mob/user) - . = ..() - if(n_spect && held_item?.tool_behaviour == TOOL_CROWBAR) - context[SCREENTIP_CONTEXT_LMB] = "Remove N-Spect scanner" - return CONTEXTUAL_SCREENTIP_SET - if(!n_spect && istype(held_item, /obj/item/inspector)) - context[SCREENTIP_CONTEXT_LMB] = "Install N-Spect scanner" - return CONTEXTUAL_SCREENTIP_SET - /obj/machinery/scanner_gate/proc/on_entered(datum/source, atom/movable/thing) SIGNAL_HANDLER @@ -136,19 +115,6 @@ return set_scanline("passive") -/obj/machinery/scanner_gate/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - if(istype(tool, /obj/item/inspector)) - if(n_spect) - to_chat(user, span_warning("The scanner is already equipped with an N-Spect scanner.")) - return ITEM_INTERACT_BLOCKING - else - to_chat(user, span_notice("You install an N-Spect scanner on [src].")) - n_spect = tool - if(!user.transferItemToLoc(tool, src)) - return ITEM_INTERACT_BLOCKING - return ITEM_INTERACT_SUCCESS - return NONE - /obj/machinery/scanner_gate/attackby(obj/item/attacking_item, mob/user, params) var/obj/item/card/id/card = attacking_item.GetID() if(card) @@ -171,24 +137,6 @@ wires.interact(user) return ..() -/obj/machinery/scanner_gate/crowbar_act(mob/living/user, obj/item/tool) - . = ..() - if(n_spect) - if(locked) - balloon_alert(user, "locked!") - return ITEM_INTERACT_BLOCKING - - to_chat(user, span_notice("You uninstall [n_spect] from [src].")) - n_spect.forceMove(drop_location()) - return ITEM_INTERACT_SUCCESS - -/obj/machinery/scanner_gate/Exited(atom/gone) - . = ..() - if(gone == n_spect) - n_spect = null - if(scangate_mode == SCANGATE_CONTRABAND) - scangate_mode = SCANGATE_NONE - /obj/machinery/scanner_gate/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) return FALSE @@ -202,6 +150,7 @@ var/beep = FALSE var/color = null var/detected_thing = null + var/bypassed = FALSE playsound(src, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE) switch(scangate_mode) if(SCANGATE_NONE) @@ -251,7 +200,7 @@ if((!HAS_TRAIT(scanned_human, TRAIT_MINDSHIELD)) && (isnull(idcard) || !(ACCESS_WEAPONS in idcard.access))) // mindshield or ID card with weapons access, like bartender beep = TRUE break - say("[detected_thing] detection bypassed.") + bypassed = TRUE break else for(var/obj/item/content in thing.get_all_contents_skipping_traits(TRAIT_CONTRABAND_BLOCKER)) @@ -267,14 +216,6 @@ if(scanned_human.nutrition >= detect_nutrition && detect_nutrition == NUTRITION_LEVEL_FAT) beep = TRUE detected_thing = "Obesity" - if(SCANGATE_CONTRABAND) - for(var/obj/item/content in thing.get_all_contents_skipping_traits(TRAIT_CONTRABAND_BLOCKER)) - detected_thing = "Contraband" - if(content.is_contraband()) - beep = TRUE - break - if(!n_spect.scans_correctly) - beep = !beep //We do a little trolling if(reverse) beep = !beep @@ -291,6 +232,8 @@ assembly?.activate() else SEND_SIGNAL(src, COMSIG_SCANGATE_PASS_NO_TRIGGER, thing) + if(bypassed) + say("[detected_thing] detection bypassed.") if(!ignore_signals) color = wires.get_color_of_wire(WIRE_DENY) var/obj/item/assembly/assembly = wires.get_attached(color) @@ -338,7 +281,6 @@ data["disease_threshold"] = disease_threshold data["target_species_id"] = detect_species_id data["target_nutrition"] = detect_nutrition - data["contraband_enabled"] = !!n_spect data["target_zombie"] = (detect_species_id == SPECIES_ZOMBIE) return data @@ -385,7 +327,7 @@ /obj/machinery/scanner_gate/preset_guns locked = TRUE - req_access = ACCESS_SECURITY + req_access = list(ACCESS_SECURITY) scangate_mode = SCANGATE_GUNS #undef SCANGATE_NONE @@ -395,4 +337,3 @@ #undef SCANGATE_WANTED #undef SCANGATE_SPECIES #undef SCANGATE_NUTRITION -#undef SCANGATE_CONTRABAND diff --git a/code/game/objects/effects/anomalies/_anomalies.dm b/code/game/objects/effects/anomalies/_anomalies.dm index f249d22500c30..035a6e05d9044 100644 --- a/code/game/objects/effects/anomalies/_anomalies.dm +++ b/code/game/objects/effects/anomalies/_anomalies.dm @@ -11,10 +11,13 @@ var/obj/item/assembly/signaler/anomaly/anomaly_core = /obj/item/assembly/signaler/anomaly var/area/impact_area + /// How long till we seppuku? Blocked by immortal var/lifespan = ANOMALY_COUNTDOWN_TIMER var/death_time + /// Color of the countdown effect var/countdown_colour + /// Reference to the countdown effect var/obj/effect/countdown/anomaly/countdown /// Do we drop a core when we're neutralized? @@ -129,7 +132,6 @@ to_chat(user, span_notice("Analyzing... [src]'s unstable field is not fluctuating along a stable frequency.")) return ITEM_INTERACT_BLOCKING - ///Stabilize an anomaly, letting it stay around forever or untill destabilizes by a player. An anomaly without a core can't be signalled, but can be destabilized /obj/effect/anomaly/proc/stabilize(anchor = FALSE, has_core = TRUE) immortal = TRUE diff --git a/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm b/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm index d722d90ed1172..379143081998d 100644 --- a/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm +++ b/code/game/objects/effects/anomalies/anomalies_bioscrambler.dm @@ -3,9 +3,10 @@ name = "bioscrambler anomaly" icon_state = "bioscrambler" anomaly_core = /obj/item/assembly/signaler/anomaly/bioscrambler - immortal = TRUE pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS layer = ABOVE_MOB_LAYER + lifespan = ANOMALY_COUNTDOWN_TIMER * 2 + /// Who are we moving towards? var/datum/weakref/pursuit_target /// Cooldown for every anomaly pulse @@ -80,6 +81,10 @@ /obj/effect/anomaly/bioscrambler/docile/update_target() return +/obj/effect/anomaly/bioscrambler/detonate() + COOLDOWN_RESET(src, pulse_cooldown) + anomalyEffect() + /// Visual effect spawned when the bioscrambler scrambles your bio /obj/effect/temp_visual/circle_wave icon = 'icons/effects/64x64.dmi' diff --git a/code/game/objects/effects/anomalies/anomalies_bluespace.dm b/code/game/objects/effects/anomalies/anomalies_bluespace.dm index 7b1de41e5640a..5c941050bfd00 100644 --- a/code/game/objects/effects/anomalies/anomalies_bluespace.dm +++ b/code/game/objects/effects/anomalies/anomalies_bluespace.dm @@ -24,6 +24,9 @@ do_teleport(AM, locate(AM.x, AM.y, AM.z), 8, channel = TELEPORT_CHANNEL_BLUESPACE) /obj/effect/anomaly/bluespace/detonate() + new /obj/effect/temp_visual/circle_wave/bluespace(get_turf(src)) + playsound(src, 'sound/effects/magic/cosmic_energy.ogg', vol = 50) + var/turf/T = pick(get_area_turfs(impact_area)) if(!T) return @@ -110,3 +113,8 @@ var/mob/living/living = bumpee living.apply_status_effect(/datum/status_effect/teleport_madness) + +/obj/effect/temp_visual/circle_wave/bluespace + color = COLOR_BLUE_LIGHT + duration = 1 SECONDS + amount_to_scale = 5 diff --git a/code/game/objects/effects/anomalies/anomalies_dimensional.dm b/code/game/objects/effects/anomalies/anomalies_dimensional.dm index 53129c0e9ce3f..accbe993ab189 100644 --- a/code/game/objects/effects/anomalies/anomalies_dimensional.dm +++ b/code/game/objects/effects/anomalies/anomalies_dimensional.dm @@ -3,7 +3,7 @@ name = "dimensional anomaly" icon_state = "dimensional" anomaly_core = /obj/item/assembly/signaler/anomaly/dimensional - immortal = TRUE + lifespan = ANOMALY_COUNTDOWN_TIMER * 20 // will generally be killed off by reaching max teleports first move_chance = 0 /// Range of effect, if left alone anomaly will convert a 2(range)+1 squared area. var/range = 3 @@ -13,6 +13,12 @@ var/datum/dimension_theme/theme /// Effect displaying on the anomaly to represent the theme. var/mutable_appearance/theme_icon + /// How many times we can still teleport. Delete self if it hits 0 and we try to teleport. If immortal, will simply stay where it is + var/teleports_left + /// Minimum teleports it will do before going away permanently + var/minimum_teleports = 1 + /// Maximum teleports it will do before going away permanently + var/maximum_teleports = 4 /obj/effect/anomaly/dimensional/Initialize(mapload, new_lifespan, drops_core) . = ..() @@ -21,6 +27,8 @@ animate(src, transform = matrix()*0.85, time = 3, loop = -1) animate(transform = matrix(), time = 3, loop = -1) + teleports_left = rand(minimum_teleports, maximum_teleports) + /obj/effect/anomaly/dimensional/Destroy() theme = null target_turfs = null @@ -37,6 +45,10 @@ if (!theme) prepare_area() if (!target_turfs.len) + if(teleports_left <= 0 && !immortal) + detonate() + return + teleports_left-- relocate() return @@ -80,6 +92,9 @@ src.forceMove(new_turf) prepare_area() +/obj/effect/anomaly/dimensional/detonate() + qdel(src) + /obj/effect/temp_visual/transmute_tile_flash icon = 'icons/effects/effects.dmi' icon_state = "shield-flash" diff --git a/code/game/objects/effects/anomalies/anomalies_gravity.dm b/code/game/objects/effects/anomalies/anomalies_gravity.dm index 82b55542246c7..40cdcbcb15e49 100644 --- a/code/game/objects/effects/anomalies/anomalies_gravity.dm +++ b/code/game/objects/effects/anomalies/anomalies_gravity.dm @@ -82,6 +82,10 @@ A.throw_at(target, 5, 1) boing = 0 +/obj/effect/anomaly/grav/detonate() + new /obj/effect/temp_visual/circle_wave/gravity(get_turf(src)) + playsound(src, 'sound/effects/magic/cosmic_energy.ogg', vol = 50) + /obj/effect/anomaly/grav/high var/datum/proximity_monitor/advanced/gravity/grav_field @@ -93,6 +97,7 @@ grav_field = new(src, 7, TRUE, rand(0, 3)) /obj/effect/anomaly/grav/high/detonate() + ..() for(var/obj/machinery/gravity_generator/main/the_generator as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/gravity_generator/main)) if(is_station_level(the_generator.z)) the_generator.blackout() @@ -111,3 +116,6 @@ . = ..() transform *= 3 + +/obj/effect/temp_visual/circle_wave/gravity + color = COLOR_NAVY diff --git a/code/game/objects/effects/anomalies/anomalies_vortex.dm b/code/game/objects/effects/anomalies/anomalies_vortex.dm index 0313f63146b52..4c3a63ae5a641 100644 --- a/code/game/objects/effects/anomalies/anomalies_vortex.dm +++ b/code/game/objects/effects/anomalies/anomalies_vortex.dm @@ -62,3 +62,13 @@ SSexplosions.medturf += T if(EXPLODE_LIGHT) SSexplosions.lowturf += T + +/obj/effect/anomaly/bhole/detonate() + new /obj/effect/temp_visual/circle_wave/vortex(get_turf(src)) + playsound(src, 'sound/effects/hallucinations/far_noise.ogg', vol = 50) + +/obj/effect/temp_visual/circle_wave/vortex + color = COLOR_BLACK + duration = 3 SECONDS + amount_to_scale = 4 + diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index c3bdfbdb89543..ad8d9b9f13b64 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -272,9 +272,9 @@ for(var/Ddir in GLOB.cardinals) if(old_entered_dirs & Ddir) - entered_dirs |= angle2dir_cardinal(dir2angle(Ddir) + ang_change) + entered_dirs |= turn_cardinal(Ddir, ang_change) if(old_exited_dirs & Ddir) - exited_dirs |= angle2dir_cardinal(dir2angle(Ddir) + ang_change) + exited_dirs |= turn_cardinal(Ddir, ang_change) update_appearance() return ..() diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index b90ebe54ffaf2..71817de3a1052 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -28,7 +28,7 @@ name = "thermite" desc = "Looks hot." icon = 'icons/effects/fire.dmi' - icon_state = "2" //what? + icon_state = "medium" //what? anchored = TRUE plane = ABOVE_GAME_PLANE layer = FLY_LAYER diff --git a/code/game/objects/effects/particles/fire.dm b/code/game/objects/effects/particles/fire.dm index 9904685807364..481849c00eb1d 100644 --- a/code/game/objects/effects/particles/fire.dm +++ b/code/game/objects/effects/particles/fire.dm @@ -34,6 +34,9 @@ spin = generator(GEN_NUM, list(-15,15), NORMAL_RAND) scale = generator(GEN_VECTOR, list(0.5,0.5), list(2,2), NORMAL_RAND) +/particles/embers/minor + spawning = 1 + /particles/embers/spark count = 3 spawning = 2 diff --git a/code/game/objects/effects/particles/smoke.dm b/code/game/objects/effects/particles/smoke.dm index f7c07231cf2c1..cc4fec3583911 100644 --- a/code/game/objects/effects/particles/smoke.dm +++ b/code/game/objects/effects/particles/smoke.dm @@ -107,16 +107,16 @@ "steam_cloud_4" = 1, "steam_cloud_5" = 1, ) - color = "#FFFFFFAA" - count = 6 - spawning = 0.5 + color = "#FFFFFF8A" + count = 5 + spawning = 0.3 lifespan = 3 SECONDS fade = 1.2 SECONDS fadein = 0.4 SECONDS position = generator(GEN_BOX, list(-17,-15,0), list(24,15,0), NORMAL_RAND) scale = generator(GEN_VECTOR, list(0.9,0.9), list(1.1,1.1), NORMAL_RAND) drift = generator(GEN_SPHERE, list(-0.01,0), list(0.01,0.01), UNIFORM_RAND) - spin = generator(GEN_NUM, list(-3,3), NORMAL_RAND) + spin = generator(GEN_NUM, list(-2,2), NORMAL_RAND) gravity = list(0.05, 0.28) friction = 0.3 grow = 0.037 diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 18f633504264f..dbb5ad3d8bdba 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -130,29 +130,36 @@ linked = null return ..() -/obj/effect/portal/attack_ghost(mob/dead/observer/O) - if(!teleport(O, TRUE)) +/obj/effect/portal/attack_ghost(mob/dead/observer/ghost) + if(!teleport(ghost, force = TRUE)) return ..() + return BULLET_ACT_FORCE_PIERCE -/obj/effect/portal/proc/teleport(atom/movable/M, force = FALSE) - if(!force && (!istype(M) || iseffect(M) || (ismecha(M) && !mech_sized) || (!isobj(M) && !ismob(M)))) //Things that shouldn't teleport. +/obj/effect/portal/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit) + if (!teleport(hitting_projectile, force = TRUE)) + return ..() + return BULLET_ACT_FORCE_PIERCE + +/obj/effect/portal/proc/teleport(atom/movable/moving, force = FALSE) + if(!force && (!istype(moving) || iseffect(moving) || (ismecha(moving) && !mech_sized) || (!isobj(moving) && !ismob(moving)))) //Things that shouldn't teleport. return var/turf/real_target = get_link_target_turf() if(!istype(real_target)) return FALSE - if(!force && (!ismecha(M) && !isprojectile(M) && M.anchored && !allow_anchored)) + + if(!force && (!ismecha(moving) && !isprojectile(moving) && moving.anchored && !allow_anchored)) return var/no_effect = FALSE if(last_effect == world.time || sparkless) no_effect = TRUE else last_effect = world.time - var/turf/start_turf = get_turf(M) - if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel, forced = force_teleport)) - if(isprojectile(M)) - var/obj/projectile/P = M - P.ignore_source_check = TRUE - new /obj/effect/temp_visual/portal_animation(start_turf, src, M) + var/turf/start_turf = get_turf(moving) + if(do_teleport(moving, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel, forced = force_teleport)) + if(isprojectile(moving)) + var/obj/projectile/proj = moving + proj.ignore_source_check = TRUE + new /obj/effect/temp_visual/portal_animation(start_turf, src, moving) playsound(start_turf, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) playsound(real_target, SFX_PORTAL_ENTER, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) return TRUE @@ -189,7 +196,7 @@ linked = P break -/obj/effect/portal/permanent/teleport(atom/movable/M, force = FALSE) +/obj/effect/portal/permanent/teleport(atom/movable/moving, force = FALSE) set_linked() // update portal links . = ..() @@ -213,9 +220,9 @@ name = "one-use portal" desc = "This is probably the worst decision you'll ever make in your life." -/obj/effect/portal/permanent/one_way/one_use/teleport(atom/movable/M, force = FALSE) +/obj/effect/portal/permanent/one_way/one_use/teleport(atom/movable/moving, force = FALSE) . = ..() - if (. && !isdead(M)) + if (. && !isdead(moving)) expire() /** diff --git a/code/game/objects/effects/shared_particle_holder.dm b/code/game/objects/effects/shared_particle_holder.dm new file mode 100644 index 0000000000000..2fe0c97647986 --- /dev/null +++ b/code/game/objects/effects/shared_particle_holder.dm @@ -0,0 +1,89 @@ +#define SHARED_PARTICLE_HOLDER_INDEX 1 +#define SHARED_PARTICLE_USER_NUM_INDEX 2 +// Assoc list of particle type/key -> list(list of particle holders, number of particle users) +GLOBAL_LIST_EMPTY(shared_particles) + +//A more abstract version of particle holder not bound to a specific object +/obj/effect/abstract/shared_particle_holder + name = "shared particle holder" + desc = "How are you reading this? Please make a bug report :)" + appearance_flags = KEEP_APART|KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE + vis_flags = VIS_INHERIT_PLANE + layer = ABOVE_ALL_MOB_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + anchored = TRUE + /// Holds info about how this particle emitter works + /// See \code\__DEFINES\particles.dm + var/particle_flags = NONE + +/obj/effect/abstract/shared_particle_holder/Initialize(mapload, particle_path = /particles/smoke, particle_flags = NONE) + . = ..() + // Shouldn't exist outside of nullspace + loc = null + src.particle_flags = particle_flags + particles = new particle_path() + +/obj/effect/abstract/shared_particle_holder/Destroy(force) + QDEL_NULL(particles) + return ..() + +/* Adds (or creates and adds) a shared particle holder + * Shared particle holders are held in nullspace and added to vis_contents of all atoms using it + * in order to save clientside performance by making clients only render 3-5 particle holders + * for 400 objects using them. This should be prioritized over normal particles when possible if it is known + * that there will be a lot of objects using certain particles. + * custom_key can be used to create a new pool of already existing particle type in case you're planning to edit holder's color or properties + * pool_size controls how many particle holders per type are created. Any objects over this cap will pick an existing holder from the pool + */ +/atom/movable/proc/add_shared_particles(particle_type, custom_key = null, particle_flags = NONE, pool_size = 3) + var/particle_key = custom_key || "[particle_type]" + if (!GLOB.shared_particles[particle_key]) + GLOB.shared_particles[particle_key] = list(list(new /obj/effect/abstract/shared_particle_holder(null, particle_type, particle_flags)), 1) + vis_contents += GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX][1] + return GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX][1] + + var/list/type_holders = GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX] + for (var/obj/effect/abstract/shared_particle_holder/particle_holder as anything in type_holders) + if (particle_holder in vis_contents) + return particle_holder + + if (length(type_holders) < pool_size) + var/obj/effect/abstract/shared_particle_holder/new_holder = new(null, particle_type, particle_flags) + type_holders += new_holder + vis_contents += new_holder + GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] += 1 + return new_holder + + var/obj/effect/abstract/shared_particle_holder/particle_holder = pick(type_holders) + vis_contents += particle_holder + GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] += 1 + return particle_holder + +/* Removes shared particles from object's vis_contents and disposes of it if nothing uses that type/key of particle + * particle_key can be either a type (if no custom_key was passed) or said custom_key + */ +/atom/movable/proc/remove_shared_particles(particle_key, delete_on_empty = TRUE) + if (!particle_key) + return + + if (ispath(particle_key)) + particle_key = "[particle_key]" + + if (!GLOB.shared_particles[particle_key]) + return + + var/list/type_holders = GLOB.shared_particles[particle_key][SHARED_PARTICLE_HOLDER_INDEX] + for (var/obj/effect/abstract/shared_particle_holder/particle_holder as anything in type_holders) + if (!(particle_holder in vis_contents)) + continue + + vis_contents -= particle_holder + GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] -= 1 + + if (delete_on_empty && GLOB.shared_particles[particle_key][SHARED_PARTICLE_USER_NUM_INDEX] <= 0) + QDEL_LIST(type_holders) + GLOB.shared_particles -= particle_key + return + +#undef SHARED_PARTICLE_HOLDER_INDEX +#undef SHARED_PARTICLE_USER_NUM_INDEX diff --git a/code/game/objects/effects/spawners/random/structure.dm b/code/game/objects/effects/spawners/random/structure.dm index 289a2aba27600..a83b88c3a9863 100644 --- a/code/game/objects/effects/spawners/random/structure.dm +++ b/code/game/objects/effects/spawners/random/structure.dm @@ -260,22 +260,117 @@ ) /obj/effect/spawner/random/structure/shipping_container - name = "shipping container spawner" + name = "random shipping container spawner" icon = 'icons/obj/fluff/containers.dmi' icon_state = "random_container" loot = list( + /obj/structure/shipping_container = 3, + /obj/structure/shipping_container/amsco = 3, + /obj/structure/shipping_container/blue = 3, /obj/structure/shipping_container/conarex = 3, /obj/structure/shipping_container/deforest = 3, - /obj/structure/shipping_container/kahraman = 3, - /obj/structure/shipping_container/kahraman/alt = 3, + /obj/structure/shipping_container/defaced = 3, + /obj/structure/shipping_container/great_northern = 3, + /obj/structure/shipping_container/green = 3, + /obj/structure/shipping_container/kahraman = 2, + /obj/structure/shipping_container/kahraman/alt = 1, /obj/structure/shipping_container/kosmologistika = 3, - /obj/structure/shipping_container/interdyne = 3, + /obj/structure/shipping_container/magenta = 3, /obj/structure/shipping_container/nakamura = 3, /obj/structure/shipping_container/nanotrasen = 3, - /obj/structure/shipping_container/nthi = 3, - /obj/structure/shipping_container/vitezstvi = 3, + /obj/structure/shipping_container/ntfid = 2, + /obj/structure/shipping_container/ntfid/defaced = 1, + /obj/structure/shipping_container/nthi = 1, + /obj/structure/shipping_container/nthi/minor = 1, + /obj/structure/shipping_container/nthi/precious = 1, + /obj/structure/shipping_container/orange = 3, + /obj/structure/shipping_container/purple = 3, + /obj/structure/shipping_container/red = 3, + /obj/structure/shipping_container/sunda = 3, + /obj/structure/shipping_container/vitezstvi = 2, + /obj/structure/shipping_container/vitezstvi/flags = 1, + /obj/structure/shipping_container/yellow = 3, + /obj/structure/shipping_container/biosustain = 3, /obj/structure/shipping_container/cybersun = 2, - /obj/structure/shipping_container/donk_co = 2, - /obj/structure/shipping_container/gorlex = 1, + /obj/structure/shipping_container/cybersun/defaced = 1, + /obj/structure/shipping_container/donk_co = 3, + /obj/structure/shipping_container/exagon = 1, + /obj/structure/shipping_container/exagon/minor = 1, + /obj/structure/shipping_container/exagon/precious = 1, + /obj/structure/shipping_container/gorlex = 2, + /obj/structure/shipping_container/gorlex/red = 1, + /obj/structure/shipping_container/interdyne = 3, + /obj/structure/shipping_container/oms = 3, + /obj/structure/shipping_container/tiger_coop = 2, + /obj/structure/shipping_container/tiger_coop = 1, + ) + +/obj/effect/spawner/random/structure/shipping_container/blank + name = "random blank shipping container spawner" + loot = list( + /obj/structure/shipping_container = 3, + /obj/structure/shipping_container/blue = 3, + /obj/structure/shipping_container/green = 3, + /obj/structure/shipping_container/magenta = 3, + /obj/structure/shipping_container/orange = 3, + /obj/structure/shipping_container/purple = 3, + /obj/structure/shipping_container/red = 3, + /obj/structure/shipping_container/yellow = 3, + ) + +/obj/effect/spawner/random/structure/syndicate //syndicate containers only + name = "random syndicate shipping container spawner" + loot = list( + /obj/structure/shipping_container/biosustain = 3, + /obj/structure/shipping_container/cybersun = 2, + /obj/structure/shipping_container/cybersun/defaced = 1, + /obj/structure/shipping_container/donk_co = 3, + /obj/structure/shipping_container/exagon = 1, + /obj/structure/shipping_container/exagon/minor = 1, + /obj/structure/shipping_container/exagon/precious = 1, + /obj/structure/shipping_container/gorlex = 2, /obj/structure/shipping_container/gorlex/red = 1, + /obj/structure/shipping_container/interdyne = 3, + /obj/structure/shipping_container/oms = 3, + /obj/structure/shipping_container/tiger_coop = 2, + /obj/structure/shipping_container/tiger_coop = 1, + ) + +/obj/effect/spawner/random/structure/shipping_container/station_appropriate //places extra emphasis on NT containers, excludes syndicate companies (except Donk. Co.) entirely + name = "station-appropriate shipping container spawner" + loot = list( + /obj/structure/shipping_container/nanotrasen = 5, + /obj/structure/shipping_container/nthi = 1, + /obj/structure/shipping_container/nthi/minor = 1, + /obj/structure/shipping_container/nthi/precious = 1, + /obj/structure/shipping_container/ntfid = 3, + /obj/structure/shipping_container/nakamura = 2, + /obj/structure/shipping_container/deforest = 2, + /obj/structure/shipping_container/kosmologistika = 2, + /obj/structure/shipping_container/donk_co = 2, + /obj/structure/shipping_container/amsco = 1, + /obj/structure/shipping_container/conarex = 1, + /obj/structure/shipping_container/kahraman = 1, + /obj/structure/shipping_container/kahraman/alt = 1, + /obj/structure/shipping_container/sunda = 1, + /obj/structure/shipping_container/vitezstvi = 1, + ) + +/obj/effect/spawner/random/structure/shipping_container/reefer //reefers only + name = "random reefer container spawner" + loot = list( + /obj/structure/shipping_container/reefer = 3, + /obj/structure/shipping_container/reefer/biosustain = 3, + /obj/structure/shipping_container/reefer/deforest = 3, + /obj/structure/shipping_container/reefer/interdyne = 3, + ) + +/obj/effect/spawner/random/structure/shipping_container/gas //gas cisterns only + name = "random gas cistern spawner" + loot = list( + /obj/structure/shipping_container/gas = 3, + /obj/structure/shipping_container/gas/apda = 3, + /obj/structure/shipping_container/gas/apda/hydrogen = 3, + /obj/structure/shipping_container/gas/exagon = 3, + /obj/structure/shipping_container/gas/nthi = 3, ) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 31ca55a54fb7b..0920b8e8b72a8 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -17,15 +17,15 @@ /obj/effect/step_trigger/proc/Trigger(atom/movable/A) return 0 -/obj/effect/step_trigger/proc/on_entered(datum/source, H as mob|obj) +/obj/effect/step_trigger/proc/on_entered(datum/source, atom/movable/entering) SIGNAL_HANDLER - if(!H || H == src) + if(!entering || entering == src || entering.invisibility >= INVISIBILITY_ABSTRACT || istype(entering, /atom/movable/mirage_holder)) //dont teleport ourselves, abstract objects, and mirage holders due to init shenanigans return - if(isobserver(H) && !affect_ghosts) + if(isobserver(entering) && !affect_ghosts) return - if(!ismob(H) && mobs_only) + if(!ismob(entering) && mobs_only) return - INVOKE_ASYNC(src, PROC_REF(Trigger), H) + INVOKE_ASYNC(src, PROC_REF(Trigger), entering) /obj/effect/step_trigger/singularity_act() @@ -144,7 +144,7 @@ var/teleport_x_offset = 0 var/teleport_y_offset = 0 -/obj/effect/step_trigger/teleporter/offset/on_entered(datum/source, H as mob|obj, atom/old_loc) +/obj/effect/step_trigger/teleporter/offset/on_entered(datum/source, atom/movable/entered, atom/old_loc) if(!old_loc?.Adjacent(loc)) // prevents looping, if we were teleported into this then the old loc is usually not adjacent return return ..() diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index ae2ce27b100f6..0df5c1baee624 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -57,6 +57,12 @@ icon_state = "firing_effect" duration = 3 +/obj/effect/temp_visual/dir_setting/firing_effect/Initialize(mapload, set_dir) + . = ..() + if (ismovable(loc)) + var/atom/movable/spawned_inside = loc + spawned_inside.vis_contents += src + /obj/effect/temp_visual/dir_setting/firing_effect/setDir(newdir) switch(newdir) if(NORTH) @@ -245,7 +251,7 @@ /obj/effect/temp_visual/fire icon = 'icons/effects/fire.dmi' - icon_state = "3" + icon_state = "heavy" light_range = LIGHT_RANGE_FIRE light_color = LIGHT_COLOR_FIRE duration = 10 @@ -437,8 +443,7 @@ var/size_matrix = matrix() if(size_calc_target) layer = size_calc_target.layer + 0.01 - var/icon/I = icon(size_calc_target.icon, size_calc_target.icon_state, size_calc_target.dir) - size_matrix = matrix() * (I.Height()/ICON_SIZE_Y) + size_matrix = matrix() * (size_calc_target.get_cached_height()/ICON_SIZE_Y) transform = size_matrix //scale the bleed overlay's size based on the target's icon size var/matrix/M = transform if(shrink) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm index 2d112aa205909..e9e043a598173 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm @@ -36,26 +36,19 @@ apply_vars(angle_override, p_x, p_y, color_override, scaling) return ..() -/obj/effect/projectile/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, atom/new_loc, increment = 0) - var/mutable_appearance/look = new(src) - SET_PLANE_EXPLICIT(look, plane, new_loc || src) - look.pixel_x = p_x - look.pixel_y = p_y +/obj/effect/projectile/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, increment = 0) + pixel_x = p_x + pixel_y = p_y if(color_override) - look.color = color_override - appearance = look - scale_to(1,scaling, FALSE) + color = color_override + scale_to(1, scaling, FALSE) turn_to(angle_override, FALSE) - if(!isnull(new_loc)) //If you want to null it just delete it... - forceMove(new_loc) for(var/i in 1 to increment) pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1) pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) -/obj/effect/projectile_lighting - var/owner +/obj/effect/abstract/projectile_lighting -/obj/effect/projectile_lighting/Initialize(mapload, color, range, intensity, owner_key) +/obj/effect/abstract/projectile_lighting/Initialize(mapload, color, range, intensity) . = ..() set_light(range, intensity, color) - owner = owner_key diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 8c4ea163232e1..e2323ce4413f9 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -1,25 +1,3 @@ -/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5, light_range = 2, light_color_override, light_intensity = 1, instance_key) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! - if(!istype(starting) || !istype(ending) || !ispath(beam_type)) - return - var/datum/point/midpoint = point_midpoint_points(starting, ending) - var/obj/effect/projectile/tracer/PB = new beam_type - if(isnull(light_color_override)) - light_color_override = color - PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / ICON_SIZE_ALL, midpoint.return_turf(), 0) - . = PB - if(light_range > 0 && light_intensity > 0) - var/list/turf/line = get_line(starting.return_turf(), ending.return_turf()) - tracing_line: - for(var/i in line) - var/turf/T = i - for(var/obj/effect/projectile_lighting/PL in T) - if(PL.owner == instance_key) - continue tracing_line - QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity, instance_key), qdel_in > 0? qdel_in : 5) - line = null - if(qdel_in) - QDEL_IN(PB, qdel_in) - /obj/effect/projectile/tracer name = "beam" icon = 'icons/obj/weapons/guns/projectiles_tracer.dmi' diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1a9306ca24f6b..f51023aa22387 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -27,7 +27,7 @@ ///Icon state for mob worn overlays, if null the normal icon_state will be used. var/worn_icon_state ///Icon state for the belt overlay, if null the normal icon_state will be used. - var/belt_icon_state + var/inside_belt_icon_state ///Forced mob worn layer instead of the standard preferred size. var/alternate_worn_layer ///The config type to use for greyscaled worn sprites. Both this and greyscale_colors must be assigned to work. @@ -259,8 +259,10 @@ /// Has the item been reskinned? var/current_skin - ///// List of options to reskin. + /// List of options to reskin. var/list/unique_reskin + /// If reskins change inhands as well + var/unique_reskin_changes_inhand = FALSE /// Do we apply a click cooldown when resisting this object if it is restraining them? var/resist_cooldown = CLICK_CD_BREAKOUT @@ -943,7 +945,7 @@ /// Returns the icon used for overlaying the object on a belt /obj/item/proc/get_belt_overlay() - var/icon_state_to_use = belt_icon_state || icon_state + var/icon_state_to_use = inside_belt_icon_state || icon_state if(greyscale_config_belt && greyscale_colors) return mutable_appearance(SSgreyscale.GetColoredIconByType(greyscale_config_belt, greyscale_colors), icon_state_to_use) return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state_to_use) @@ -1922,11 +1924,12 @@ return src /// Checks if the bait is liked by the fish type or not. Returns a multiplier that affects the chance of catching it. -/obj/item/proc/check_bait(obj/item/fish/fish_type) +/obj/item/proc/check_bait(obj/item/fish/fish) if(HAS_TRAIT(src, TRAIT_OMNI_BAIT)) return 1 var/catch_multiplier = 1 - var/list/properties = SSfishing.fish_properties[fish_type] + + var/list/properties = SSfishing.fish_properties[isfish(fish) ? fish.type : fish] //Bait matching likes doubles the chance var/list/fav_bait = properties[FISH_PROPERTIES_FAV_BAIT] for(var/bait_identifer in fav_bait) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index d11c6e21d6981..a1f0001f651f8 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -239,10 +239,11 @@ /obj/item/blueprints/slime/edit_area(mob/user) . = ..() var/area/area = get_area(src) + var/list/turf_matrix = color_transition_filter("#2956B2") for(var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) for(var/turf/area_turf as anything in zlevel_turfs) area_turf.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - area_turf.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY) + area_turf.add_atom_colour(turf_matrix, FIXED_COLOUR_PRIORITY) area.area_flags |= XENOBIOLOGY_COMPATIBLE qdel(src) diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index d5769ceb8d798..7a8d70888f066 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -15,14 +15,14 @@ if(iscarbon(loc)) Insert(loc) -/obj/item/organ/body_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/body_egg/on_mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags) . = ..() egg_owner.add_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT) egg_owner.med_hud_set_status() INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), egg_owner) -/obj/item/organ/body_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags) +/obj/item/organ/body_egg/on_mob_remove(mob/living/carbon/egg_owner, special, movement_flags) . = ..() egg_owner.remove_traits(list(TRAIT_XENO_HOST, TRAIT_XENO_IMMUNE), ORGAN_TRAIT) egg_owner.med_hud_set_status() diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm index f2d81ac4bde1d..8045646b075ca 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/chainsaw.dm @@ -68,6 +68,8 @@ toolspeed = active ? 0.5 : initial(toolspeed) update_item_action_buttons() + return COMPONENT_NO_DEFAULT_MESSAGE + /obj/item/chainsaw/suicide_act(mob/living/carbon/user) if(!HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!")) diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index c91326afc97ff..6db6d8cb35c43 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -57,7 +57,9 @@ to_chat(user, span_notice("Your name has been sent to your employers for approval.")) // Autoapproves after a certain time response_timer_id = addtimer(CALLBACK(src, PROC_REF(rename_station), new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) - to_chat(GLOB.admins, span_adminnotice("CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]")) + to_chat(GLOB.admins, + span_adminnotice("CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]"), + type = MESSAGE_TYPE_PRAYER) for(var/client/admin_client in GLOB.admins) if(admin_client.prefs.toggles & SOUND_ADMINHELP) window_flash(admin_client, ignorepref = TRUE) diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 619cd42ce5cf6..d8155b5032ace 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1471,6 +1471,16 @@ /datum/stock_part/scanning_module = 1, /datum/stock_part/card_reader = 1) +/obj/item/circuitboard/machine/mailsorter + name = "Mail Sorter" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/mailsorter + req_components = list( + /obj/item/stack/sheet/glass = 1, + /datum/stock_part/matter_bin = 2, + /datum/stock_part/scanning_module = 1) + needs_anchored = TRUE + //Tram /obj/item/circuitboard/machine/crossing_signal name = "Crossing Signal" diff --git a/code/game/objects/items/climbingrope.dm b/code/game/objects/items/climbingrope.dm index 936858bbae757..46bc56e21fef2 100644 --- a/code/game/objects/items/climbingrope.dm +++ b/code/game/objects/items/climbingrope.dm @@ -24,7 +24,7 @@ . = ..() var/list/look_binds = user.client.prefs.key_bindings["look up"] . += span_notice("Firstly, look upwards by holding [english_list(look_binds, nothing_text = "(nothing bound)", and_text = " or ", comma_text = ", or ")]!") - . += span_notice("Then, click solid ground adjacent to the hole above you.") + . += span_notice("Then, click solid ground (or lattice/catwalk) adjacent to the hole above you.") . += span_notice("The rope looks like you could use it [uses] times before it falls apart.") /obj/item/climbing_hook/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) @@ -32,26 +32,27 @@ return NONE return ranged_interact_with_atom(interacting_with, user, modifiers) -/obj/item/climbing_hook/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) +/obj/item/climbing_hook/ranged_interact_with_atom(turf/open/interacting_with, mob/living/user, list/modifiers) + interacting_with = get_turf(interacting_with) if(interacting_with.z == user.z) return NONE - var/turf/open/target = interacting_with - if(!istype(target) || isopenspaceturf(target)) + if(!istype(interacting_with) || !isturf(user.loc)) //better safe than sorry return ITEM_INTERACT_BLOCKING var/turf/user_turf = get_turf(user) var/turf/above = GET_TURF_ABOVE(user_turf) - if(target_blocked(target, above)) + if(target_blocked(interacting_with, above)) + balloon_alert(user, "cant get there!") return ITEM_INTERACT_BLOCKING - if(!isopenspaceturf(above) || !above.Adjacent(target)) //are we below a hole, is the target blocked, is the target adjacent to our hole - balloon_alert(user, "blocked!") + if(!above.Adjacent(interacting_with)) //is the target adjacent to our hole + balloon_alert(user, "too far!") return ITEM_INTERACT_BLOCKING - var/away_dir = get_dir(above, target) + var/away_dir = get_dir(above, interacting_with) user.visible_message(span_notice("[user] begins climbing upwards with [src]."), span_notice("You get to work on properly hooking [src] and going upwards.")) - playsound(target, 'sound/effects/pickaxe/picaxe1.ogg', 50) //plays twice so people above and below can hear + playsound(interacting_with, 'sound/effects/pickaxe/picaxe1.ogg', 50) //plays twice so people above and below can hear playsound(user_turf, 'sound/effects/pickaxe/picaxe1.ogg', 50) - var/list/effects = list(new /obj/effect/temp_visual/climbing_hook(target, away_dir), new /obj/effect/temp_visual/climbing_hook(user_turf, away_dir)) + var/list/effects = list(new /obj/effect/temp_visual/climbing_hook(interacting_with, away_dir), new /obj/effect/temp_visual/climbing_hook(user_turf, away_dir)) // Our climbers athletics ability var/fitness_level = user.mind?.get_skill_level(/datum/skill/athletics) @@ -65,8 +66,8 @@ var/final_climb_time = (climb_time - fitness_level) * misc_multiplier - if(do_after(user, final_climb_time, target)) - user.forceMove(target) + if(do_after(user, final_climb_time, interacting_with)) + user.forceMove(interacting_with) uses-- user.mind?.adjust_experience(/datum/skill/athletics, 50) //get some experience for our trouble, especially since this costs us a climbing rope use @@ -80,7 +81,7 @@ // didnt want to mess up is_blocked_turf_ignore_climbable /// checks if our target is blocked, also checks for border objects facing the above turf and climbable stuff /obj/item/climbing_hook/proc/target_blocked(turf/target, turf/above) - if(target.density || above.density) + if(target.density || (isopenspaceturf(target) && target.zPassOut(DOWN)) || !above.zPassOut(DOWN) || above.density) // we check if we would fall down from it additionally return TRUE for(var/atom/movable/atom_content as anything in target.contents) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 77b94761a7a5b..18da163bce4a6 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -202,7 +202,7 @@ /obj/item/toy/crayon/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!")) - user.add_atom_colour(paint_color, ADMIN_COLOUR_PRIORITY) + user.add_atom_colour(color_transition_filter(paint_color, SATURATION_OVERRIDE), ADMIN_COLOUR_PRIORITY) return (BRUTELOSS|OXYLOSS) /obj/item/toy/crayon/Initialize(mapload) @@ -435,7 +435,7 @@ if(!isValidSurface(target)) target.balloon_alert(user, "can't use there!") - return + return ITEM_INTERACT_BLOCKING var/drawing = drawtype switch(drawtype) @@ -471,7 +471,7 @@ if (istagger) cost *= 0.5 if(check_empty(user, cost)) - return + return ITEM_INTERACT_BLOCKING var/temp = "rune" var/ascii = (length(drawing) == 1) @@ -521,10 +521,10 @@ wait_time *= 0.5 if(!instant && !do_after(user, wait_time, target = target, max_interact_count = 4)) - return + return ITEM_INTERACT_BLOCKING if(!use_charges(user, cost)) - return + return ITEM_INTERACT_BLOCKING if(length(text_buffer)) drawing = text_buffer[1] @@ -548,7 +548,7 @@ affected_turfs += right else balloon_alert(user, "no room!") - return + return ITEM_INTERACT_BLOCKING created_art.add_hiddenprint(user) if(istagger) created_art.AddElement(/datum/element/art, GOOD_ART) @@ -575,15 +575,14 @@ for(var/turf/draw_turf as anything in affected_turfs) reagents.expose(draw_turf, methods = TOUCH, volume_modifier = volume_multiplier) check_empty(user) - return + return ITEM_INTERACT_SUCCESS /obj/item/toy/crayon/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if (!check_allowed_items(interacting_with)) return NONE if(can_use_on(interacting_with, user, modifiers)) - use_on(interacting_with, user, modifiers) - return ITEM_INTERACT_BLOCKING + return use_on(interacting_with, user, modifiers) return NONE /obj/item/toy/crayon/get_writing_implement_details() @@ -790,6 +789,12 @@ post_noise = FALSE interaction_flags_click = NEED_DEXTERITY|NEED_HANDS|ALLOW_RESTING + /// Types which use their color var for additional logic, so we need to avoid using transition filters on them. + var/static/list/direct_color_types = typecacheof(list( + /obj/item/paper, // Uses color for TGUI backgrounds, doesn't look very good either + /obj/item/fish, // Used for aquarium sprites + )) + /obj/item/toy/crayon/spraycan/Initialize(mapload) . = ..() var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/improvised_coolant) @@ -819,13 +824,14 @@ return . context[SCREENTIP_CONTEXT_LMB] = "Paint" + context[SCREENTIP_CONTEXT_RMB] = "Coat with paint" if(isbodypart(target)) var/obj/item/bodypart/limb = target if(IS_ROBOTIC_LIMB(limb)) - context[SCREENTIP_CONTEXT_RMB] = "Restyle robotic limb" + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Restyle robotic limb" else - context[SCREENTIP_CONTEXT_RMB] = "Copy color" + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Copy color" return CONTEXTUAL_SCREENTIP_SET @@ -881,12 +887,15 @@ return ..() /obj/item/toy/crayon/spraycan/use_on(atom/target, mob/user, list/modifiers) + if (LAZYACCESS(modifiers, CTRL_CLICK)) + return ctrl_interact(target, user) + if(is_capped) balloon_alert(user, "take the cap off first!") - return + return ITEM_INTERACT_BLOCKING if(check_empty(user)) - return + return ITEM_INTERACT_BLOCKING if(iscarbon(target)) if(pre_noise || post_noise) @@ -912,11 +921,15 @@ else if(actually_paints && target.is_atom_colour(paint_color, min_priority_index = WASHABLE_COLOUR_PRIORITY)) balloon_alert(user, "[target.p_theyre()] already that color!") - return + return ITEM_INTERACT_BLOCKING + + var/saturation_mode = SATURATION_MULTIPLY + if (LAZYACCESS(modifiers, RIGHT_CLICK)) + saturation_mode = SATURATION_OVERRIDE if(ismob(target) && (HAS_TRAIT(target, TRAIT_SPRAY_PAINTABLE))) if(actually_paints) - target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY) + target.add_atom_colour(color_transition_filter(paint_color, saturation_mode), WASHABLE_COLOUR_PRIORITY) SEND_SIGNAL(target, COMSIG_LIVING_MOB_PAINTED) use_charges(user, 2, requires_full = FALSE) reagents.trans_to(target, ., volume_multiplier, transferred_by = user, methods = VAPOR) @@ -924,45 +937,13 @@ if(pre_noise || post_noise) playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) user.visible_message(span_notice("[user] coats [target] with spray paint!"), span_notice("You coat [target] with spray paint.")) - return - - if(isobj(target) && !(target.flags_1 & UNPAINTABLE_1)) - var/color_is_dark = FALSE - if(actually_paints) - color_is_dark = is_color_dark(paint_color) - - if (color_is_dark && !(target.flags_1 & ALLOW_DARK_PAINTS_1)) - to_chat(user, span_warning("A color that dark on an object like this? Surely not...")) - return - - if(istype(target, /obj/item/pipe)) - if(GLOB.pipe_color_name.Find(paint_color)) - var/obj/item/pipe/target_pipe = target - target_pipe.pipe_color = paint_color - target.add_atom_colour(paint_color, FIXED_COLOUR_PRIORITY) - balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color") - else - balloon_alert(user, "invalid pipe color!") - return - else if(istype(target, /obj/machinery/atmospherics)) - if(GLOB.pipe_color_name.Find(paint_color)) - var/obj/machinery/atmospherics/target_pipe = target - target_pipe.paint(paint_color) - balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color") - else - balloon_alert(user, "invalid pipe color!") - return - else - target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY) + return ITEM_INTERACT_SUCCESS - if(isitem(target) && isliving(target.loc)) - var/obj/item/target_item = target - var/mob/living/holder = target.loc - if(holder.is_holding(target_item)) - holder.update_held_items() - else - holder.update_clothing(target_item.slot_flags) + if(!isobj(target) || (target.flags_1 & UNPAINTABLE_1)) + return ..() + var/color_is_dark = is_color_dark(paint_color) + if(!actually_paints) if(!(SEND_SIGNAL(target, COMSIG_OBJ_PAINTED, user, src, color_is_dark) & DONT_USE_SPRAYCAN_CHARGES)) use_charges(user, 2, requires_full = FALSE) reagents.trans_to(target, ., volume_multiplier, transferred_by = user, methods = VAPOR) @@ -970,11 +951,50 @@ if(pre_noise || post_noise) playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) user.visible_message(span_notice("[user] coats [target] with spray paint!"), span_notice("You coat [target] with spray paint.")) - return + return ITEM_INTERACT_SUCCESS - return ..() + if (color_is_dark && saturation_mode == SATURATION_OVERRIDE && !(target.flags_1 & ALLOW_DARK_PAINTS_1)) + to_chat(user, span_warning("A color that dark on an object like this? Surely not...")) + return ITEM_INTERACT_BLOCKING + + if(istype(target, /obj/item/pipe)) + if(!GLOB.pipe_color_name.Find(paint_color)) + balloon_alert(user, "invalid pipe color!") + return ITEM_INTERACT_BLOCKING + var/obj/item/pipe/target_pipe = target + target_pipe.pipe_color = paint_color + target.add_atom_colour(paint_color, FIXED_COLOUR_PRIORITY) + balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color") + else if(istype(target, /obj/machinery/atmospherics)) + if(!GLOB.pipe_color_name.Find(paint_color)) + balloon_alert(user, "invalid pipe color!") + return ITEM_INTERACT_BLOCKING + var/obj/machinery/atmospherics/target_pipe = target + target_pipe.paint(paint_color) + balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color") + else if (is_type_in_typecache(target, direct_color_types)) + target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY) + else + target.add_atom_colour(color_transition_filter(paint_color, saturation_mode), WASHABLE_COLOUR_PRIORITY) + + if(isitem(target) && isliving(target.loc)) + var/obj/item/target_item = target + var/mob/living/holder = target.loc + if(holder.is_holding(target_item)) + holder.update_held_items() + else + holder.update_clothing(target_item.slot_flags) + + if(!(SEND_SIGNAL(target, COMSIG_OBJ_PAINTED, user, src, color_is_dark) & DONT_USE_SPRAYCAN_CHARGES)) + use_charges(user, 2, requires_full = FALSE) + reagents.trans_to(target, ., volume_multiplier, transferred_by = user, methods = VAPOR) -/obj/item/toy/crayon/spraycan/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) + if(pre_noise || post_noise) + playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) + user.visible_message(span_notice("[user] coats [target] with spray paint!"), span_notice("You coat [target] with spray paint.")) + return ITEM_INTERACT_SUCCESS + +/obj/item/toy/crayon/spraycan/proc/ctrl_interact(atom/interacting_with, mob/living/user) if(is_capped) if(!interacting_with.color) // let's be generous and assume if they're trying to match something with no color, while capped, @@ -982,32 +1002,41 @@ return NONE balloon_alert(user, "take the cap off first!") return ITEM_INTERACT_BLOCKING + if(check_empty(user)) return ITEM_INTERACT_BLOCKING - /* DOPPLER EDIT REMOVAL START - if(isbodypart(interacting_with) && actually_paints) - var/obj/item/bodypart/limb = interacting_with - if(IS_ROBOTIC_LIMB(limb)) - var/list/skins = list() - var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi') - for(var/skin_option in style_list_icons) - var/image/part_image = image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.body_zone]") - if(limb.aux_zone) //Hands - part_image.overlays += image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.aux_zone]") - skins += list("[skin_option]" = part_image) - var/choice = show_radial_menu(user, src, skins, require_near = TRUE) - if(choice && (use_charges(user, 5, requires_full = FALSE))) - playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) - limb.change_appearance(style_list_icons[choice], greyscale = FALSE) - return ITEM_INTERACT_SUCCESS - DOPPLER EDIT REMOVAL END */ - if(interacting_with.color) - paint_color = interacting_with.color - balloon_alert(user, "matched colour of target") - update_appearance() + + if(!isbodypart(interacting_with) || !actually_paints) + if(interacting_with.color) + paint_color = interacting_with.color + balloon_alert(user, "matched colour of target") + update_appearance() + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "can't match those colours!") + return ITEM_INTERACT_BLOCKING + + var/obj/item/bodypart/limb = interacting_with + if(!IS_ROBOTIC_LIMB(limb)) return ITEM_INTERACT_BLOCKING - balloon_alert(user, "can't match those colours!") - return ITEM_INTERACT_BLOCKING + + var/list/skins = list() + var/static/list/style_list_icons = list( + "standard" = 'icons/mob/augmentation/augments.dmi', + "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', + "security" = 'icons/mob/augmentation/augments_security.dmi', + "mining" = 'icons/mob/augmentation/augments_mining.dmi', + ) + + for(var/skin_option in style_list_icons) + var/image/part_image = image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.body_zone]") + if(limb.aux_zone) //Hands + part_image.overlays += image(icon = style_list_icons[skin_option], icon_state = "[limb.limb_id]_[limb.aux_zone]") + skins += list("[skin_option]" = part_image) + var/choice = show_radial_menu(user, src, skins, require_near = TRUE) + if(choice && (use_charges(user, 5, requires_full = FALSE))) + playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) + limb.change_appearance(style_list_icons[choice], greyscale = FALSE) + return ITEM_INTERACT_SUCCESS /obj/item/toy/crayon/spraycan/click_alt(mob/user) if(!has_cap) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index dd5d78fce0d61..70fb3bb6693c2 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -365,7 +365,7 @@ if(!req_defib) return RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_range)) - RegisterSignal(defib.loc, COMSIG_MOVABLE_MOVED, PROC_REF(check_range)) + RegisterSignal(defib, COMSIG_MOVABLE_MOVED, PROC_REF(check_range)) /obj/item/shockpaddles/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) . = ..() @@ -430,9 +430,9 @@ /obj/item/shockpaddles/dropped(mob/user) . = ..() + UnregisterSignal(defib, COMSIG_MOVABLE_MOVED) if(user) UnregisterSignal(user, COMSIG_MOVABLE_MOVED) - UnregisterSignal(defib.loc, COMSIG_MOVABLE_MOVED) if(req_defib) if(user) to_chat(user, span_notice("The paddles snap back into the main unit.")) @@ -558,7 +558,7 @@ playsound(src, 'sound/machines/defib/defib_failed.ogg', 50, FALSE) do_cancel() return - user.visible_message(span_boldannounce("[user] shocks [H] with \the [src]!"), span_warning("You shock [H] with \the [src]!")) + user.visible_message(span_bolddanger("[user] shocks [H] with \the [src]!"), span_warning("You shock [H] with \the [src]!")) playsound(src, 'sound/machines/defib/defib_zap.ogg', 100, TRUE, -1) playsound(src, 'sound/items/weapons/egloves.ogg', 100, TRUE, -1) H.emote("scream") diff --git a/code/game/objects/items/devices/broadcast_camera.dm b/code/game/objects/items/devices/broadcast_camera.dm index 78868844e48cb..1a7ba3ed1c4c1 100644 --- a/code/game/objects/items/devices/broadcast_camera.dm +++ b/code/game/objects/items/devices/broadcast_camera.dm @@ -13,7 +13,7 @@ force = 8 throwforce = 12 w_class = WEIGHT_CLASS_NORMAL - obj_flags = INDESTRUCTIBLE | EMP_PROTECT_ALL // No fun police + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF slot_flags = NONE light_system = OVERLAY_LIGHT light_color = COLOR_SOFT_RED @@ -33,14 +33,18 @@ /// The "virtual" radio inside of the the physical camera, a la microphone var/obj/item/radio/entertainment/microphone/internal_radio +/obj/item/broadcast_camera/Initialize(mapload) + . = ..() + + AddElement(/datum/element/empprotection, EMP_PROTECT_ALL) + /obj/item/broadcast_camera/Destroy(force) QDEL_NULL(internal_radio) QDEL_NULL(internal_camera) - return ..() /obj/item/broadcast_camera/update_icon_state() - icon_state = "[base_icon_state]0" + icon_state = "[base_icon_state][active]" return ..() /obj/item/broadcast_camera/attack_self(mob/user, modifiers) @@ -75,7 +79,7 @@ if(!iscarbon(loc)) return active = TRUE - icon_state = "[base_icon_state][active]" + update_icon_state() /// The carbon who wielded the camera, allegedly var/mob/living/carbon/wielding_carbon = loc @@ -98,7 +102,7 @@ /// When deactivating the camera /obj/item/broadcast_camera/proc/on_deactivating() active = FALSE - icon_state = "[base_icon_state][active]" + update_icon_state() QDEL_NULL(internal_camera) QDEL_NULL(internal_radio) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index e323c65b1ebc1..4d538f46184d9 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -204,7 +204,7 @@ var/turf/our_turf = get_turf(src) detect_state = PROXIMITY_NONE - for(var/mob/eye/ai_eye/AI_eye as anything in GLOB.aiEyes) + for(var/mob/eye/camera/ai/AI_eye as anything in GLOB.camera_eyes) if(!AI_eye.ai_detector_visible) continue @@ -253,7 +253,7 @@ // copied from camera chunks but we are doing a really big edge case here though /obj/item/multitool/ai_detect/proc/surrounding_chunks(turf/epicenter) . = list() - var/static_range = /mob/eye/ai_eye::static_visibility_range + var/static_range = /mob/eye/camera/ai::static_visibility_range var/x1 = max(1, epicenter.x - static_range) var/y1 = max(1, epicenter.y - static_range) var/x2 = min(world.maxx, epicenter.x + static_range) @@ -283,7 +283,7 @@ desc = "An omni-technological interface." icon = 'icons/obj/antags/abductor.dmi' icon_state = "multitool" - belt_icon_state = "multitool_alien" + inside_belt_icon_state = "multitool_alien" custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT) toolspeed = 0.1 diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 72f3747b01121..ac9cbfec8211f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -351,8 +351,8 @@ if(isliving(talking_movable)) var/mob/living/talking_living = talking_movable var/volume_modifier = (talking_living.client?.prefs.read_preference(/datum/preference/numeric/sound_radio_noise)) - if(radio_noise && talking_living.can_hear() && volume_modifier && signal.frequency != FREQ_COMMON) - var/sound/radio_noise = sound(sound('sound/items/radio/radio_talk.ogg', volume = volume_modifier)) + if(radio_noise && talking_living.can_hear() && volume_modifier && signal.frequency != FREQ_COMMON && !LAZYACCESS(message_mods, MODE_SEQUENTIAL)) + var/sound/radio_noise = sound('sound/items/radio/radio_talk.ogg', volume = volume_modifier) radio_noise.frequency = get_rand_frequency_low_range() SEND_SOUND(talking_living, radio_noise) diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index d71d84e1f1909..7d58838fc2135 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -136,13 +136,13 @@ return list("gasmixes" = last_gasmix_data) /obj/item/analyzer/attack_self(mob/user, modifiers) - if(user.stat != CONSCIOUS || !user.can_read(src) || user.is_blind()) + if(user.stat != CONSCIOUS || !user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again return atmos_scan(user=user, target=get_turf(src), silent=FALSE) on_analyze(source=src, target=get_turf(src)) /obj/item/analyzer/attack_self_secondary(mob/user, modifiers) - if(user.stat != CONSCIOUS || !user.can_read(src) || user.is_blind()) + if(user.stat != CONSCIOUS || !user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again return ui_interact(user) @@ -183,8 +183,8 @@ var/icon = target var/message = list() - playsound(user, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE) if(!silent && isliving(user)) + playsound(user, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE) user.visible_message(span_notice("[user] uses the analyzer on [icon2html(icon, viewers(user))] [target]."), span_notice("You use the analyzer on [icon2html(icon, user)] [target].")) message += span_boldnotice("Results of analysis of [icon2html(icon, user)] [target].") diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index 76942605f2b13..dd75928cb2d16 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -47,7 +47,7 @@ return BRUTELOSS /obj/item/healthanalyzer/attack_self(mob/user) - if(!user.can_read(src) || user.is_blind()) + if(!user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again return scanmode = (scanmode + 1) % SCANMODE_COUNT @@ -80,7 +80,7 @@ floor_text += "Subject lacks a brain.
" floor_text += "Body temperature: [scan_turf?.return_air()?.return_temperature() || "???"]
" - if(user.can_read(src) && !user.is_blind()) + if(!user.can_read(src)) //DOPPLER EDIT: Blind People Can Analyze Again to_chat(user, examine_block(floor_text)) last_scan_text = floor_text return @@ -93,7 +93,7 @@ balloon_alert(user, "analyzing vitals") playsound(user.loc, 'sound/items/healthanalyzer.ogg', 50) - var/readability_check = user.can_read(src) && !user.is_blind() + var/readability_check = user.can_read(src) //DOPPLER EDIT - Blind People Can Analyze Again switch (scanmode) if (SCANMODE_HEALTH) last_scan_text = healthscan(user, M, mode, advanced, tochat = readability_check) @@ -106,7 +106,7 @@ /obj/item/healthanalyzer/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with)) return NONE - if(user.can_read(src) && !user.is_blind()) + if(user.can_read(src)) //DOPPLER EDIT - Blind People can Analyze Again chemscan(user, interacting_with) return ITEM_INTERACT_SUCCESS @@ -469,7 +469,7 @@ var/datum/reagent/reagent = r if(reagent.chemical_flags & REAGENT_INVISIBLE) //Don't show hidden chems on scanners continue - render_block += "[round(reagent.volume, 0.001)] units of [reagent.name][reagent.overdosed ? " - [span_boldannounce("OVERDOSING")]" : "."]
" + render_block += "[round(reagent.volume, 0.001)] units of [reagent.name][reagent.overdosed ? " - [span_bolddanger("OVERDOSING")]" : "."]
" if(!length(render_block)) //If no VISIBLY DISPLAYED reagents are present, we report as if there is nothing. render_list += "Subject contains no reagents in their blood.
" @@ -487,11 +487,11 @@ if(bit.chemical_flags & REAGENT_INVISIBLE) continue if(!belly.food_reagents[bit.type]) - render_block += "[round(bit.volume, 0.001)] units of [bit.name][bit.overdosed ? " - [span_boldannounce("OVERDOSING")]" : "."]
" + render_block += "[round(bit.volume, 0.001)] units of [bit.name][bit.overdosed ? " - [span_bolddanger("OVERDOSING")]" : "."]
" else var/bit_vol = bit.volume - belly.food_reagents[bit.type] if(bit_vol > 0) - render_block += "[round(bit_vol, 0.001)] units of [bit.name][bit.overdosed ? " - [span_boldannounce("OVERDOSING")]" : "."]
" + render_block += "[round(bit_vol, 0.001)] units of [bit.name][bit.overdosed ? " - [span_bolddanger("OVERDOSING")]" : "."]
" if(!length(render_block)) render_list += "Subject contains no reagents in their stomach.
" @@ -626,7 +626,7 @@ /obj/item/healthanalyzer/simple/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with)) return NONE - if(!user.can_read(src) || user.is_blind()) + if(!user.can_read(src)) //DOPPLER EDIT - Blind People Can Analyze Again return ITEM_INTERACT_BLOCKING add_fingerprint(user) diff --git a/code/game/objects/items/devices/scanners/slime_scanner.dm b/code/game/objects/items/devices/scanners/slime_scanner.dm index 79050f0a78c67..87bea03261b8b 100644 --- a/code/game/objects/items/devices/scanners/slime_scanner.dm +++ b/code/game/objects/items/devices/scanners/slime_scanner.dm @@ -16,7 +16,7 @@ /obj/item/slime_scanner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with)) return NONE - if(!user.can_read(src) || user.is_blind()) + if(!user.can_read(src)) //DOPPLER EDIT - Blind People Can Analyze Again return ITEM_INTERACT_BLOCKING if (!isslime(interacting_with)) to_chat(user, span_warning("This device can only scan slimes!")) diff --git a/code/game/objects/items/devices/table_clock.dm b/code/game/objects/items/devices/table_clock.dm index d9c5e44fcf76c..fcea4c27246ab 100644 --- a/code/game/objects/items/devices/table_clock.dm +++ b/code/game/objects/items/devices/table_clock.dm @@ -40,7 +40,7 @@ if(break_clock(break_sound = 'sound/effects/magic/clockwork/ark_activation.ogg')) user.visible_message( span_warning("[user] smashes \the [src] so hard it stops breaking!"), - span_boldannounce("I can't stand this stupid machine anymore! Shut up already!"), + span_bolddanger("I can't stand this stupid machine anymore! Shut up already!"), span_notice("You hear repeated smashing!"), ) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index df0fbb928ed8c..433df9869d224 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -262,7 +262,7 @@ balloon_alert(usr, "recording ended") stoplag(1 SECONDS) //prevents multiple balloon alerts covering each other break - say("[mytape.storedinfo[i]]", sanitize=FALSE)//We want to display this properly, don't double encode + say("[mytape.storedinfo[i]]", sanitize=FALSE, message_mods = list(MODE_SEQUENTIAL = TRUE))//We want to display this properly, don't double encode if(mytape.storedinfo.len < i + 1) playsleepseconds = 1 sleep(1 SECONDS) @@ -270,7 +270,7 @@ playsleepseconds = mytape.timestamp[i + 1] - mytape.timestamp[i] if(playsleepseconds > 14 SECONDS) sleep(1 SECONDS) - say("Skipping [playsleepseconds/10] seconds of silence.") + say("Skipping [playsleepseconds/10] seconds of silence.", message_mods = list(MODE_SEQUENTIAL = TRUE)) playsleepseconds = 1 SECONDS i++ diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 5a108c83e823b..341231d767a14 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -329,7 +329,7 @@ effective or pretty fucking useless. /obj/item/jammer name = "radio jammer" - desc = "Device used to disrupt nearby radio communication. Alternate function creates a powerful distruptor wave which disables all nearby listening devices." + desc = "Device used to disrupt nearby radio communication. Alternate function creates a powerful disruptor wave which disables all nearby listening devices." icon = 'icons/obj/devices/syndie_gadget.dmi' icon_state = "jammer" var/active = FALSE @@ -341,8 +341,8 @@ effective or pretty fucking useless. . = ..() register_context() -/atom/movable/screen/alert/give/add_context(atom/source, list/context, obj/item/held_item, mob/user) - context[SCREENTIP_CONTEXT_LMB] = "Release distruptor wave" +/obj/item/jammer/add_context(atom/source, list/context, obj/item/held_item, mob/user) + context[SCREENTIP_CONTEXT_LMB] = "Release disruptor wave" context[SCREENTIP_CONTEXT_RMB] = "Toggle" return CONTEXTUAL_SCREENTIP_SET @@ -352,8 +352,8 @@ effective or pretty fucking useless. user.balloon_alert(user, "on cooldown!") return - user.balloon_alert(user, "distruptor wave released!") - to_chat(user, span_notice("You release a distruptor wave, disabling all nearby radio devices.")) + user.balloon_alert(user, "disruptor wave released!") + to_chat(user, span_notice("You release a disruptor wave, disabling all nearby radio devices.")) for (var/atom/potential_owner in view(7, user)) disable_radios_on(potential_owner) COOLDOWN_START(src, jam_cooldown, jam_cooldown_duration) @@ -379,8 +379,8 @@ effective or pretty fucking useless. user.balloon_alert(user, "out of reach!") return - interacting_with.balloon_alert(user, "radio distrupted!") - to_chat(user, span_notice("You release a directed distruptor wave, disabling all radio devices on [interacting_with].")) + interacting_with.balloon_alert(user, "radio disrupted!") + to_chat(user, span_notice("You release a directed disruptor wave, disabling all radio devices on [interacting_with].")) disable_radios_on(interacting_with) return ITEM_INTERACT_SUCCESS @@ -530,4 +530,4 @@ effective or pretty fucking useless. /obj/projectile/bullet/toolbox_turret damage = 10 - speed = 0.6 + speed = 1.6 diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 40f08e78ffc77..e44e989706a6d 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -15,26 +15,33 @@ var/cooldown_time = 10 SECONDS var/static/list/possible_answers = list( - "It is certain", - "It is decidedly so", - "Without a doubt", - "Yes definitely", - "You may rely on it", - "As I see it, yes", - "Most likely", - "Outlook good", - "Yes", - "Signs point to yes", - "Reply hazy try again", - "Ask again later", - "Better not tell you now", - "Cannot predict now", - "Concentrate and ask again", - "Don't count on it", - "My reply is no", - "My sources say no", - "Outlook not so good", - "Very doubtful") + "Yes" = list( + "It is certain", + "It is decidedly so", + "Without a doubt", + "Yes definitely", + "You may rely on it", + "As I see it, yes", + "Most likely", + "Outlook good", + "Yes", + "Signs point to yes", + ), + "Maybe" = list( + "Reply hazy try again", + "Ask again later", + "Better not tell you now", + "Cannot predict now", + "Concentrate and ask again", + ), + "No" = list( + "Don't count on it", + "My reply is no", + "My sources say no", + "Outlook not so good", + "Very doubtful" + ), + ) /obj/item/toy/eightball/Initialize(mapload) . = ..() @@ -77,8 +84,14 @@ /obj/item/toy/eightball/proc/start_shaking(mob/user) return TRUE +/// Different from get_answer(). +/obj/item/toy/eightball/proc/pick_from_answer_list() + //! This is for grabbing an answer from the answer matrix. + var/key = pick(possible_answers) + return pick(possible_answers[key]) + /obj/item/toy/eightball/proc/get_answer() - return pick(possible_answers) + return pick_from_answer_list() // A broken magic eightball, it only says "YOU SUCK" over and over again. @@ -89,7 +102,7 @@ /obj/item/toy/eightball/broken/Initialize(mapload) . = ..() - fixed_answer = pick(possible_answers) + fixed_answer = pick_from_answer_list() /obj/item/toy/eightball/broken/get_answer() return fixed_answer @@ -104,38 +117,10 @@ //these kind of store the same thing but one is easier to work with. var/list/votes = list() var/list/voted = list() - var/static/list/haunted_answers = list( - "yes" = list( - "It is certain", - "It is decidedly so", - "Without a doubt", - "Yes definitely", - "You may rely on it", - "As I see it, yes", - "Most likely", - "Outlook good", - "Yes", - "Signs point to yes" - ), - "maybe" = list( - "Reply hazy try again", - "Ask again later", - "Better not tell you now", - "Cannot predict now", - "Concentrate and ask again" - ), - "no" = list( - "Don't count on it", - "My reply is no", - "My sources say no", - "Outlook not so good", - "Very doubtful" - ) - ) /obj/item/toy/eightball/haunted/Initialize(mapload) . = ..() - for (var/answer in haunted_answers) + for (var/answer in possible_answers) votes[answer] = 0 SSpoints_of_interest.make_point_of_interest(src) @@ -153,7 +138,7 @@ /obj/item/toy/eightball/haunted/start_shaking(mob/user) // notify ghosts that someone's shaking a haunted eightball // and inform them of the message, (hopefully a yes/no question) - selected_message = tgui_input_text(user, "What is your question?", "Eightball", max_length = MAX_MESSAGE_LEN) || initial(selected_message) + selected_message = tgui_input_text(user, "What is your question?", "Eightball", max_length = CHAT_MESSAGE_MAX_LENGTH) || initial(selected_message) if (!(src in user.held_items)) return FALSE notify_ghosts( @@ -186,7 +171,7 @@ voted.Cut() - var/list/top_options = haunted_answers[top_vote] + var/list/top_options = possible_answers[top_vote] return pick(top_options) // Only ghosts can interact because only ghosts can open the ui @@ -210,11 +195,11 @@ data["question"] = selected_message data["answers"] = list() - for(var/vote in haunted_answers) + for(var/vote in possible_answers) var/list/answer_data = list() answer_data["answer"] = vote answer_data["amount"] = votes[vote] - answer_data["selected"] = voted[user.ckey] + answer_data["selected"] = (voted[user.ckey] == vote) data["answers"] += list(answer_data) return data @@ -229,7 +214,7 @@ switch(action) if("vote") var/selected_answer = params["answer"] - if(!(selected_answer in haunted_answers)) + if(!(selected_answer in possible_answers)) return var/oldvote = voted[user.ckey] if(oldvote) diff --git a/code/game/objects/items/food/lizard.dm b/code/game/objects/items/food/lizard.dm index e0e005502d87c..f8d8dbec8f51f 100644 --- a/code/game/objects/items/food/lizard.dm +++ b/code/game/objects/items/food/lizard.dm @@ -142,8 +142,9 @@ . = ..() //Moonfish can lay eggs (unaffected by breeding, so think of them as unfertilizard) RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, PROC_REF(generate_aquarium_appearance)) - RegisterSignal(src, AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position)) - AddComponent(/datum/component/aquarium_content, beauty = 100) + RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position)) + AddComponent(/datum/component/aquarium_content) + RegisterSignal(src, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, PROC_REF(get_aquarium_beauty)) /obj/item/food/moonfish_eggs/proc/generate_aquarium_appearance(datum/source, obj/effect/aquarium/visual) SIGNAL_HANDLER @@ -153,13 +154,18 @@ /obj/item/food/moonfish_eggs/proc/randomize_aquarium_position(datum/source, obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual) SIGNAL_HANDLER - var/list/aq_properties = current_aquarium.get_surface_properties() var/sprite_width = 5 - var/px_min = aq_properties[AQUARIUM_PROPERTIES_PX_MIN] - var/px_max = aq_properties[AQUARIUM_PROPERTIES_PX_MAX] - sprite_width + var/sprite_height = 4 + var/px_min = visual.aquarium_zone_min_px + var/px_max = visual.aquarium_zone_max_px - sprite_width + var/py_min = visual.aquarium_zone_min_py - sprite_height - visual.pixel_x = rand(px_min,px_max) - visual.pixel_y = rand(-1, 1) + visual.pixel_x = rand(px_min, px_max) + visual.pixel_y = py_min + rand(-1, 1) + +/obj/item/food/moonfish_eggs/proc/get_aquarium_beauty(datum/source, list/beauty_holder) + SIGNAL_HANDLER + beauty_holder += 100 //moonfish eggs are kinda eye candy /obj/item/food/moonfish_caviar name = "moonfish caviar paste" @@ -575,7 +581,7 @@ /datum/reagent/consumable/nutriment/protein = 10, ) tastes = list("bread" = 1, "meat" = 1) - foodtypes = MEAT | NUTS | RAW | GORE + foodtypes = MEAT | NUTS | GORE crafting_complexity = FOOD_COMPLEXITY_3 /obj/item/food/pizza/flatbread/stinging diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm index 6da965e47578d..24472eb5e7a4d 100644 --- a/code/game/objects/items/food/misc.dm +++ b/code/game/objects/items/food/misc.dm @@ -195,7 +195,12 @@ . = ..() RegisterSignal(src, COMSIG_ITEM_GRILL_PROCESS, PROC_REF(OnGrill)) if(stink_particles) - particles = new stink_particles + add_shared_particles(stink_particles) + +/obj/item/food/badrecipe/Destroy(force) + if (stink_particles) + remove_shared_particles(stink_particles) + return ..() // We override the parent procs here to prevent burned messes from cooking into burned messes. /obj/item/food/badrecipe/make_grillable() @@ -361,25 +366,27 @@ foodtypes = DAIRY w_class = WEIGHT_CLASS_SMALL dog_fashion = /datum/dog_fashion/head/butter + var/can_stick = TRUE /obj/item/food/butter/examine(mob/user) . = ..() - . += span_notice("If you had a rod you could make butter on a stick.") + if (can_stick) + . += span_notice("If you had a rod you could make butter on a stick.") /obj/item/food/butter/attackby(obj/item/item, mob/user, params) - if(istype(item, /obj/item/stack/rods)) - var/obj/item/stack/rods/rods = item - if(!rods.use(1))//borgs can still fail this if they have no metal - to_chat(user, span_warning("You do not have enough iron to put [src] on a stick!")) - return ..() - to_chat(user, span_notice("You stick the rod into the stick of butter.")) - var/obj/item/food/butter/on_a_stick/new_item = new(usr.loc) - var/replace = (user.get_inactive_held_item() == rods) - if(!rods && replace) - user.put_in_hands(new_item) - qdel(src) - return TRUE - ..() + if(!istype(item, /obj/item/stack/rods) || !can_stick) + return ..() + var/obj/item/stack/rods/rods = item + if(!rods.use(1))//borgs can still fail this if they have no metal + to_chat(user, span_warning("You do not have enough iron to put [src] on a stick!")) + return ..() + to_chat(user, span_notice("You stick the rod into the stick of butter.")) + user.temporarilyRemoveItemFromInventory(src) + var/obj/item/food/butter/on_a_stick/new_item = new(drop_location()) + if (user.CanReach(new_item)) + user.put_in_hands(new_item) + qdel(src) + return TRUE /obj/item/food/butter/on_a_stick //there's something so special about putting it on a stick. name = "butter on a stick" @@ -388,6 +395,7 @@ trash_type = /obj/item/stack/rods food_flags = FOOD_FINGER_FOOD venue_value = FOOD_PRICE_CHEAP + can_stick = FALSE /obj/item/food/butter/make_processable() AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/butterslice, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice") diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm index b3578204a2daa..0c68d329d97e6 100644 --- a/code/game/objects/items/food/packaged.dm +++ b/code/game/objects/items/food/packaged.dm @@ -218,7 +218,7 @@ /obj/item/food/ready_donk name = "\improper Ready-Donk: Bachelor Chow" desc = "A quick Donk-dinner: now with flavour!" - icon_state = "ready_donk" + icon_state = "ready_donk_bachelor" trash_type = /obj/item/trash/ready_donk food_reagents = list(/datum/reagent/consumable/nutriment = 5) tastes = list("food?" = 2, "laziness" = 1) @@ -249,7 +249,7 @@ /obj/item/food/ready_donk/warm name = "warm Ready-Donk: Bachelor Chow" desc = "A quick Donk-dinner, now with flavour! And it's even hot!" - icon_state = "ready_donk_warm" + icon_state = "ready_donk_bachelor_warm" food_reagents = list( /datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/omnizine = 3, @@ -262,6 +262,7 @@ /obj/item/food/ready_donk/mac_n_cheese name = "\improper Ready-Donk: Donk-a-Roni" desc = "Neon-orange mac n' cheese in seconds!" + icon_state = "ready_donk_mac" tastes = list("cheesy pasta" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | JUNKFOOD @@ -270,13 +271,14 @@ /obj/item/food/ready_donk/warm/mac_n_cheese name = "warm Ready-Donk: Donk-a-Roni" desc = "Neon-orange mac n' cheese, ready to eat!" - icon_state = "ready_donk_warm_mac" + icon_state = "ready_donk_mac_warm" tastes = list("cheesy pasta" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | JUNKFOOD /obj/item/food/ready_donk/donkhiladas name = "\improper Ready-Donk: Donkhiladas" desc = "Donk Co's signature Donkhiladas with Donk sauce, for an 'authentic' taste of Mexico." + icon_state = "ready_donk_mex" tastes = list("enchiladas" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD @@ -285,13 +287,14 @@ /obj/item/food/ready_donk/warm/donkhiladas name = "warm Ready-Donk: Donkhiladas" desc = "Donk Co's signature Donkhiladas with Donk sauce, served as hot as the Mexican sun." - icon_state = "ready_donk_warm_mex" + icon_state = "ready_donk_mex_warm" tastes = list("enchiladas" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD /obj/item/food/ready_donk/nachos_grandes //which translates to... big nachos name = "\improper Ready-Donk: Donk Sol Series Boritos Nachos Grandes" desc = "Get ready for game day with Donk's classic Nachos Grandes, sponsors of the Donk Sol Series! Boritos chips loaded with cheese, spicy meat and beans, alongside separate guac, pico and donk sauce. Batter up!" + icon_state = "ready_donk_nachos" tastes = list("nachos" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD @@ -300,25 +303,58 @@ /obj/item/food/ready_donk/warm/nachos_grandes name = "warm Ready-Donk: Donk Sol Series Boritos Nachos Grandes" desc = "Get ready for game day with Donk's classic Nachos Grandes, sponsors of the Donk Sol Series! Boritos chips loaded with cheese, spicy meat and beans, alongside separate guac, pico and donk sauce. Served hotter than Sakamoto's fastball!" - icon_state = "ready_donk_warm_nachos" + icon_state = "ready_donk_nachos_warm" tastes = list("nachos" = 2, "laziness" = 1) foodtypes = GRAIN | DAIRY | MEAT | VEGETABLES | JUNKFOOD /obj/item/food/ready_donk/donkrange_chicken name = "\improper Ready-Donk: Donk-range Chicken" desc = "A Chinese classic, it's Donk's original spicy orange chicken with stir-fried peppers and onions, all over steamed rice." + icon_state = "ready_donk_orange" tastes = list("orange chicken" = 2, "laziness" = 1) foodtypes = GRAIN | MEAT | VEGETABLES | JUNKFOOD warm_type = /obj/item/food/ready_donk/warm/donkrange_chicken /obj/item/food/ready_donk/warm/donkrange_chicken - name = "warm Ready-Donk: Ready-Donk: Donk-range Chicken" + name = "warm Ready-Donk: Donk-range Chicken" desc = "A Chinese classic, it's Donk's original spicy orange chicken with stir-fried peppers and onions, all over steamed rice and served hotter than a dragon's breath." - icon_state = "ready_donk_warm_orange" + icon_state = "ready_donk_orange_warm" tastes = list("orange chicken" = 2, "laziness" = 1) foodtypes = GRAIN | MEAT | VEGETABLES | JUNKFOOD +/obj/item/food/ready_donk/salisbury_steak + name = "\improper Ready-Donk Donkriginals: Salisbury Steak" + desc = "The original and best: it's a slab of moulded beef, drenched in brown gravy, with a side of mashed potatoes. Better find a TV to eat this in front of." + icon_state = "ready_donk_salisbury" + tastes = list("salisbury steak" = 2, "laziness" = 1) + foodtypes = MEAT | VEGETABLES | JUNKFOOD + + warm_type = /obj/item/food/ready_donk/warm/salisbury_steak + +/obj/item/food/ready_donk/warm/salisbury_steak + name = "warm Ready-Donk Donkriginals: Salisbury Steak" + desc = "The original and best: it's a slab of moulded beef, drenched in brown gravy, with a side of mashed potatoes. It's almost as hot as a season finale." + icon_state = "ready_donk_salisbury_warm" + tastes = list("salisbury steak" = 2, "laziness" = 1) + foodtypes = MEAT | VEGETABLES | JUNKFOOD + +/obj/item/food/ready_donk/country_chicken + name = "\improper Ready-Donk Donkriginals: Country-Fried Chicken" + desc = "A TV dinner classic: \"crispy\" fried chicken in country gravy, mashed potatoes, and green beans." + icon_state = "ready_donk_chicken" + tastes = list("country-fried chicken" = 2, "laziness" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | JUNKFOOD + + warm_type = /obj/item/food/ready_donk/warm/country_chicken + +/obj/item/food/ready_donk/warm/country_chicken + name = "warm Ready-Donk Donkriginals: Country-Fried Chicken" + desc = "A TV dinner classic: \"crispy\" fried chicken in country gravy, mashed potatoes, and green beans. Get it while it's hot!" + icon_state = "ready_donk_chicken_warm" + tastes = list("country-fried chicken" = 2, "laziness" = 1) + foodtypes = MEAT | DAIRY | VEGETABLES | JUNKFOOD + // Rations /obj/item/food/rationpack name = "ration pack" diff --git a/code/game/objects/items/food/pie.dm b/code/game/objects/items/food/pie.dm index 6d73bc2f5df21..fae0edd7a2020 100644 --- a/code/game/objects/items/food/pie.dm +++ b/code/game/objects/items/food/pie.dm @@ -430,6 +430,7 @@ icon_state = "baklavaslice" tastes = list("nuts" = 1, "pie" = 1) foodtypes = NUTS | SUGAR + crafting_complexity = FOOD_COMPLEXITY_4 /obj/item/food/pie/frenchsilkpie name = "french silk pie" diff --git a/code/game/objects/items/food/sweets.dm b/code/game/objects/items/food/sweets.dm index d757261ac0154..62c10675f0458 100644 --- a/code/game/objects/items/food/sweets.dm +++ b/code/game/objects/items/food/sweets.dm @@ -204,9 +204,6 @@ slot_flags = ITEM_SLOT_MASK w_class = WEIGHT_CLASS_TINY - /// The amount to metabolize per second - var/metabolization_amount = REAGENTS_METABOLISM / 2 - /obj/item/food/bubblegum/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] swallows [src]! It looks like [user.p_theyre()] trying to commit suicide!")) qdel(src) @@ -214,7 +211,7 @@ /obj/item/food/bubblegum/Initialize(mapload) . = ..() - AddElement(/datum/element/chewable, metabolization_amount = metabolization_amount) + AddElement(/datum/element/chewable) /obj/item/food/bubblegum/nicotine name = "nicotine gum" @@ -238,7 +235,6 @@ color = "#913D3D" food_reagents = list(/datum/reagent/blood = 15) tastes = list("hell" = 1, "people" = 1) - metabolization_amount = REAGENTS_METABOLISM /obj/item/food/bubblegum/bubblegum/process() if(iscarbon(loc)) diff --git a/code/game/objects/items/granters/martial_arts/cqc.dm b/code/game/objects/items/granters/martial_arts/cqc.dm index 7d3f7f2ef9e26..4fff32623c864 100644 --- a/code/game/objects/items/granters/martial_arts/cqc.dm +++ b/code/game/objects/items/granters/martial_arts/cqc.dm @@ -3,7 +3,7 @@ name = "old manual" martial_name = "close quarters combat" desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat." - greet = span_boldannounce("You've mastered the basics of CQC.") + greet = span_bolddanger("You've mastered the basics of CQC.") icon_state = "cqcmanual" remarks = list( "Kick... Slam...", diff --git a/code/game/objects/items/granters/martial_arts/plasma_fist.dm b/code/game/objects/items/granters/martial_arts/plasma_fist.dm index 22b6b4aefa18e..6c185243c7086 100644 --- a/code/game/objects/items/granters/martial_arts/plasma_fist.dm +++ b/code/game/objects/items/granters/martial_arts/plasma_fist.dm @@ -3,7 +3,7 @@ name = "frayed scroll" martial_name = "plasma fist" desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism." - greet = span_boldannounce("You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \ + greet = span_bolddanger("You have learned the ancient martial art of Plasma Fist. Your combos are extremely hard to pull off, but include some of the most deadly moves ever seen including \ the plasma fist, which when pulled off will make someone violently explode.") icon = 'icons/obj/scrolls.dmi' icon_state ="plasmafist" diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm index 780311fa4d149..664a31c226207 100644 --- a/code/game/objects/items/grenades/_grenade.dm +++ b/code/game/objects/items/grenades/_grenade.dm @@ -159,7 +159,7 @@ if(istype(user)) user.add_mob_memory(/datum/memory/bomb_planted, antagonist = src) active = TRUE - icon_state = initial(icon_state) + "_active" + icon_state = (base_icon_state || initial(icon_state)) + "_active" SEND_SIGNAL(src, COMSIG_GRENADE_ARMED, det_time, delayoverride) addtimer(CALLBACK(src, PROC_REF(detonate)), isnull(delayoverride)? det_time : delayoverride) @@ -255,7 +255,7 @@ if(det_time == 0) det_time = "Instant" else - det_time = num2text(det_time * 0.1) + det_time = num2text(det_time * 0.1) var/old_selection = possible_fuse_time.Find(det_time) //Position of det_time in the list if(old_selection >= possible_fuse_time.len) diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index c83801d81fc53..2bc9401c77451 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -53,7 +53,8 @@ /obj/item/grenade/stingbang name = "stingbang" - icon_state = "timeg" + icon_state = "timeg_locked" + base_icon_state = "timeg" inhand_icon_state = "flashbang" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' @@ -64,6 +65,8 @@ /obj/item/grenade/stingbang/mega name = "mega stingbang" + icon_state = "timeg_mega_locked" + base_icon_state = "timeg_mega" shrapnel_type = /obj/projectile/bullet/pellet/stingball/mega shrapnel_radius = 12 @@ -121,7 +124,8 @@ /obj/item/grenade/primer name = "rotfrag grenade" desc = "A grenade that generates more shrapnel the more you rotate it in your hand after pulling the pin. This one releases shrapnel shards." - icon_state = "timeg" + icon_state = "timeg_locked" + base_icon_state = "timeg" inhand_icon_state = "flashbang" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm index 005bcff76771a..befd9a619a3f4 100644 --- a/code/game/objects/items/hand_items.dm +++ b/code/game/objects/items/hand_items.dm @@ -218,6 +218,7 @@ /obj/item/hand_item/slapper/attack(mob/living/slapped, mob/living/carbon/human/user) SEND_SIGNAL(user, COMSIG_LIVING_SLAP_MOB, slapped) + SEND_SIGNAL(slapped, COMSIG_LIVING_SLAPPED, user) if(iscarbon(slapped)) var/mob/living/carbon/potential_tailed = slapped @@ -257,8 +258,8 @@ ) // Worse than just help intenting people. - slapped.AdjustSleeping(-75) - slapped.AdjustUnconscious(-50) + slapped.AdjustSleeping(-7.5 SECONDS) + slapped.AdjustUnconscious(-5 SECONDS) else user.visible_message( @@ -493,7 +494,7 @@ blown_kiss.fired_from = user blown_kiss.firer = user // don't hit ourself that would be really annoying blown_kiss.impacted = list(WEAKREF(user) = TRUE) // just to make sure we don't hit the wearer - blown_kiss.preparePixelProjectile(target, user) + blown_kiss.aim_projectile(target, user) blown_kiss.fire() qdel(src) return ITEM_INTERACT_SUCCESS @@ -520,7 +521,7 @@ blown_kiss.fired_from = offerer blown_kiss.firer = offerer // don't hit ourself that would be really annoying blown_kiss.impacted = list(WEAKREF(offerer) = TRUE) // just to make sure we don't hit the wearer - blown_kiss.preparePixelProjectile(taker, offerer) + blown_kiss.aim_projectile(taker, offerer) blown_kiss.suppressed = SUPPRESSED_VERY // this also means it's a direct offer blown_kiss.fire() qdel(src) @@ -545,7 +546,7 @@ hitsound = 'sound/effects/emotes/kiss.ogg' hitsound_wall = 'sound/effects/emotes/kiss.ogg' pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - speed = 1.6 + speed = 0.66 damage_type = BRUTE damage = 0 // love can't actually hurt you armour_penetration = 100 // but if it could, it would cut through even the thickest plate diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm index 049ea8928feff..efe1d9e31f1ba 100644 --- a/code/game/objects/items/holosign_creator.dm +++ b/code/game/objects/items/holosign_creator.dm @@ -35,6 +35,11 @@ return . += span_notice("It is currently maintaining [signs.len]/[max_signs] projections.") +/obj/item/holosign_creator/check_allowed_items(atom/target, not_inside, target_self) + if(HAS_TRAIT(target, TRAIT_COMBAT_MODE_SKIP_INTERACTION)) + return FALSE + return ..() + /obj/item/holosign_creator/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!check_allowed_items(interacting_with, not_inside = TRUE)) return NONE diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 20233db522b39..8bede8813a256 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -18,7 +18,7 @@ var/stimulant = TRUE var/detonate_explosion = TRUE var/detonate_dev_range = 0 - var/detonate_heavy_range = 0 + var/detonate_heavy_range = 1 var/detonate_light_range = 2 var/detonate_flash_range = 5 var/detonate_fire_range = 5 @@ -51,7 +51,10 @@ /obj/item/hot_potato/proc/detonate() var/atom/location = loc location.visible_message(span_userdanger("[src] [detonate_explosion? "explodes" : "activates"]!"), span_userdanger("[src] activates! You've ran out of time!")) - if(detonate_explosion) + if(detonate_explosion && isliving(loc)) + var/mob/living/victim_mob = loc + if(victim_mob.is_holding(src)) + victim_mob.gib(DROP_ALL_REMAINS) explosion(src, detonate_dev_range, detonate_heavy_range, detonate_light_range, detonate_fire_range, detonate_flash_range) deactivate() if(!reusable) diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm index 0f66cd4b6d108..948606d6d4068 100644 --- a/code/game/objects/items/inducer.dm +++ b/code/game/objects/items/inducer.dm @@ -61,8 +61,23 @@ /obj/item/inducer/examine(mob/living/user) . = ..() - if(!QDELETED(powerdevice)) - . += span_notice("Its display shows: [display_energy(powerdevice.charge)].") + . += examine_hints(user) + +/** + * Gives description for this inducer + * Arguments + * + * * mob/living/user - the mob we are returning the description to + */ +/obj/item/inducer/proc/examine_hints(mob/living/user) + PROTECTED_PROC(TRUE) + SHOULD_BE_PURE(TRUE) + + . = list() + + var/obj/item/stock_parts/power_store/our_cell = get_cell(src, user) + if(!QDELETED(our_cell)) + . += span_notice("Its display shows: [display_energy(our_cell.charge)].") if(opened) . += span_notice("The cell can be removed with an empty hand.") . += span_notice("Plasma sheets can be used to recharge the cell.") @@ -99,14 +114,15 @@ /obj/item/inducer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) . = NONE + if(user.combat_mode || !istype(tool) || tool.flags_1 & HOLOGRAM_1 || tool.item_flags & ABSTRACT) return ITEM_INTERACT_SKIP_TO_ATTACK - if(!opened) - balloon_alert(user, "open first!") - return ITEM_INTERACT_FAILURE - if(istype(tool, /obj/item/stock_parts/power_store)) + if(!opened) + balloon_alert(user, "open first!") + return ITEM_INTERACT_FAILURE + if(!QDELETED(powerdevice)) balloon_alert(user, "cell already installed!") return ITEM_INTERACT_FAILURE @@ -118,7 +134,7 @@ powerdevice = tool return ITEM_INTERACT_SUCCESS - if(istype(tool, /obj/item/stack/sheet/mineral/plasma) && !QDELETED(powerdevice)) + else if(istype(tool, /obj/item/stack/sheet/mineral/plasma) && !QDELETED(powerdevice)) if(!powerdevice.used_charge()) balloon_alert(user, "fully charged!") return ITEM_INTERACT_FAILURE @@ -131,6 +147,10 @@ /obj/item/inducer/interact_with_atom(atom/movable/interacting_with, mob/living/user, list/modifiers) . = NONE + + if(HAS_TRAIT(interacting_with, TRAIT_COMBAT_MODE_SKIP_INTERACTION)) + return + if(user.combat_mode || !istype(interacting_with) || interacting_with.flags_1 & HOLOGRAM_1) return ITEM_INTERACT_SKIP_TO_ATTACK @@ -146,11 +166,13 @@ to_chat(user, span_warning("You don't have the dexterity to use [src]!")) return ITEM_INTERACT_FAILURE - if(QDELETED(powerdevice)) + var/obj/item/stock_parts/power_store/our_cell = get_cell(src, user) + + if(QDELETED(our_cell)) balloon_alert(user, "no cell installed!") return ITEM_INTERACT_FAILURE - if(!powerdevice.charge) + if(!our_cell.charge) balloon_alert(user, "no charge!") return ITEM_INTERACT_FAILURE @@ -173,13 +195,13 @@ break //transfer of charge - var/transferred = min(powerdevice.charge, target_cell.used_charge(), (target_cell.rating_base * target_cell.rating * power_transfer_multiplier)) + var/transferred = min(our_cell.charge, target_cell.used_charge(), target_cell.rating_base * target_cell.rating * power_transfer_multiplier) if(!transferred) break - powerdevice.use(target_cell.give(transferred)) + our_cell.use(target_cell.give(transferred)) //update all appearances - powerdevice.update_appearance() + our_cell.update_appearance() target_cell.update_appearance() interacting_with.update_appearance() @@ -223,3 +245,24 @@ desc = "A tool for inductively charging internal power cells. This one has a suspicious colour scheme, and seems to be rigged to transfer charge at a much faster rate." power_transfer_multiplier = 2 // 2x the base speed powerdevice = /obj/item/stock_parts/power_store/battery/super + +/obj/item/inducer/cyborg + name = "internal inducer" + icon = 'icons/obj/tools.dmi' + icon_state = "inducer-engi" + powerdevice = null + +/obj/item/inducer/cyborg/add_context(atom/source, list/context, obj/item/held_item, mob/user) + return NONE + +/obj/item/inducer/cyborg/examine_hints(mob/living/user) + return list() + +/obj/item/inducer/cyborg/get_cell(atom/movable/interface, mob/living/silicon/robot/silicon_friend) + return istype(silicon_friend) ? silicon_friend.cell : null + +/obj/item/inducer/cyborg/screwdriver_act(mob/living/user, obj/item/tool) + return ITEM_INTERACT_FAILURE + +/obj/item/inducer/cyborg/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return ITEM_INTERACT_FAILURE diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm index d4abe4c1d1a5b..7783dcff072b5 100644 --- a/code/game/objects/items/inspector.dm +++ b/code/game/objects/items/inspector.dm @@ -20,7 +20,6 @@ interaction_flags_click = NEED_DEXTERITY throw_range = 1 throw_speed = 1 - COOLDOWN_DECLARE(scanning_person) //Cooldown for scanning a carbon ///How long it takes to print on time each mode, ordered NORMAL, FAST, HONK var/list/time_list = list(5 SECONDS, 1 SECONDS, 0.1 SECONDS) ///Which print time mode we're on. @@ -108,17 +107,8 @@ balloon_alert(user, "check cell!") return ITEM_INTERACT_BLOCKING - if(iscarbon(interacting_with)) //Prevents insta scanning people - if(!COOLDOWN_FINISHED(src, scanning_person)) - return ITEM_INTERACT_BLOCKING - - visible_message(span_warning("[user] starts scanning [interacting_with] with [src]")) - to_chat(interacting_with, span_userdanger("[user] is trying to scan you for contraband!")) - balloon_alert_to_viewers("scanning...") - playsound(src, SFX_INDUSTRIAL_SCAN, 20, TRUE, -2, TRUE, FALSE) - COOLDOWN_START(src, scanning_person, 4 SECONDS) - if(!do_after(user, 4 SECONDS, interacting_with)) - return ITEM_INTERACT_BLOCKING + if(iscarbon(interacting_with)) // Prevents scanning people + return if(contraband_scan(interacting_with, user)) playsound(src, 'sound/machines/uplink/uplinkerror.ogg', 40) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 24506e006d81f..19de11388abf4 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -12,6 +12,7 @@ icon = 'icons/obj/service/kitchen.dmi' lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' + worn_icon_state = "kitchen_tool" /obj/item/kitchen/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/lighter.dm b/code/game/objects/items/lighter.dm index a27db91909c3d..38794ab9079e3 100644 --- a/code/game/objects/items/lighter.dm +++ b/code/game/objects/items/lighter.dm @@ -52,6 +52,13 @@ ) update_appearance() +/obj/item/lighter/examine(mob/user) + . = ..() + if(get_fuel() <= 0) + . += span_warning("It is out of lighter fluid! Refill it with welder fuel.") + else + . += span_notice("It contains [get_fuel()] units of fuel out of [maximum_fuel].") + /// Destroy the lighter when it's shot by a bullet /obj/item/lighter/proc/on_intercepted_bullet(mob/living/victim, obj/projectile/bullet) victim.visible_message(span_warning("\The [bullet] shatters on [victim]'s lighter!")) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 7ea8a663caf56..6ef4624f50e2a 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -188,7 +188,7 @@ wound_bonus = 5 bare_wound_bonus = 15 -/obj/item/melee/sabre/Initialize(mapload) +/obj/item/melee/parsnip_sabre/Initialize(mapload) . = ..() AddComponent(/datum/component/jousting) diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index 66e0b15e99fd7..7d5cc7eabe8f2 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -118,7 +118,10 @@ if(paintleft <= 0) return NONE paintleft-- - interacting_with.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY) + var/color_type = SATURATION_MULTIPLY + if (LAZYACCESS(modifiers, RIGHT_CLICK)) + color_type = SATURATION_OVERRIDE + interacting_with.add_atom_colour(color_transition_filter(paint_color, color_type), WASHABLE_COLOUR_PRIORITY) if(paintleft <= 0) icon_state = "paint_empty" return ITEM_INTERACT_SUCCESS diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index 2d700cf3ff0c0..3bab737c9fbd7 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -130,7 +130,7 @@ if(!do_after(user, rand(300, 400), target = user) || open || !locked || !(user in occupants)) return loc.visible_message(span_warning("[user] flips the lock switch on [src] by reaching through!"), null, null, null, user) - to_chat(user, span_boldannounce("Bingo! The lock pops open!")) + to_chat(user, span_bolddanger("Bingo! The lock pops open!")) locked = FALSE playsound(src, 'sound/machines/airlock/boltsup.ogg', 30, TRUE) update_appearance() diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index a008acedb6d1c..a7bd4da85aebf 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -454,9 +454,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/puzzle/password, 32) "green", "blue", "yellow", - "orange", - "brown", + COLOR_ORANGE, // orange is also not valid + COLOR_BROWN, // brown is NOT a valid byond color "gray", + "purple", ) for(var/digit in 0 to 9) digit_to_color["[digit]"] = pick_n_take(possible_colors) diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm index 961e0fff88afd..60f84e14651b9 100644 --- a/code/game/objects/items/rcd/RCD.dm +++ b/code/game/objects/items/rcd/RCD.dm @@ -199,6 +199,17 @@ return TRUE +/obj/item/construction/rcd/build_delay(mob/user, delay, atom/target) + //unaffected by ui changes + if(mode == RCD_DECONSTRUCT) + if(delay <= 0) + return TRUE + + return do_after(user, delay, target) + + //checks for ui changes + return ..() + /** * actual proc to create the structure * @@ -249,6 +260,8 @@ * * rcd_results- list of params which contains the cost & build mode to create the structure */ /obj/item/construction/rcd/proc/_rcd_create_effect(atom/target, mob/user, delay, list/rcd_results) + PRIVATE_PROC(TRUE) + var/obj/effect/constructing_effect/rcd_effect = new(get_turf(target), delay, rcd_results["[RCD_DESIGN_MODE]"], upgrade) //resource & structure placement sanity checks before & after delay along with beam effects diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm index 07db9978e3e09..933f8c1c64876 100644 --- a/code/game/objects/items/rcd/RPD.dm +++ b/code/game/objects/items/rcd/RPD.dm @@ -9,164 +9,15 @@ #define DESTROY_MODE (1<<2) #define REPROGRAM_MODE (1<<3) -#define PIPE_LAYER(num) (1<<(num-1)) +///Maximum number of pipe layers the RPD can support +#define MAX_PIPE_LAYERS 5 + +///Converts the pipe layer into a bitflag so we can append multiple layers into 1 bitfield +#define PIPE_LAYER(num) (1 << (num - 1)) ///Sound to make when we use the item to build/destroy something #define RPD_USE_SOUND 'sound/items/deconstruct.ogg' -GLOBAL_LIST_INIT(atmos_pipe_recipes, list( - "Pipes" = list( - new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/smart, TRUE), - new /datum/pipe_info/pipe("Layer Adapter", /obj/machinery/atmospherics/pipe/layer_manifold, TRUE), - new /datum/pipe_info/pipe("Color Adapter", /obj/machinery/atmospherics/pipe/color_adapter, TRUE), - new /datum/pipe_info/pipe("Bridge Pipe", /obj/machinery/atmospherics/pipe/bridge_pipe, TRUE), - new /datum/pipe_info/pipe("Multi-Deck Adapter", /obj/machinery/atmospherics/pipe/multiz, FALSE), - ), - "Binary" = list( - new /datum/pipe_info/pipe("Manual Valve", /obj/machinery/atmospherics/components/binary/valve, TRUE), - new /datum/pipe_info/pipe("Digital Valve", /obj/machinery/atmospherics/components/binary/valve/digital, TRUE), - new /datum/pipe_info/pipe("Gas Pump", /obj/machinery/atmospherics/components/binary/pump, TRUE), - new /datum/pipe_info/pipe("Volume Pump", /obj/machinery/atmospherics/components/binary/volume_pump, TRUE), - new /datum/pipe_info/pipe("Passive Gate", /obj/machinery/atmospherics/components/binary/passive_gate, TRUE), - new /datum/pipe_info/pipe("Pressure Valve", /obj/machinery/atmospherics/components/binary/pressure_valve, TRUE), - new /datum/pipe_info/pipe("Temperature Gate", /obj/machinery/atmospherics/components/binary/temperature_gate, TRUE), - new /datum/pipe_info/pipe("Temperature Pump", /obj/machinery/atmospherics/components/binary/temperature_pump, TRUE), - ), - "Devices" = list( - new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/components/trinary/filter, TRUE), - new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/components/trinary/mixer, TRUE), - new /datum/pipe_info/pipe("Connector", /obj/machinery/atmospherics/components/unary/portables_connector, TRUE), - new /datum/pipe_info/pipe("Injector", /obj/machinery/atmospherics/components/unary/outlet_injector, TRUE), - new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/components/unary/vent_scrubber, TRUE), - new /datum/pipe_info/pipe("Unary Vent", /obj/machinery/atmospherics/components/unary/vent_pump, TRUE), - new /datum/pipe_info/pipe("Passive Vent", /obj/machinery/atmospherics/components/unary/passive_vent, TRUE), - new /datum/pipe_info/meter("Meter"), - ), - "Heat Exchange" = list( - new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/heat_exchanging/simple, FALSE), - new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold, FALSE), - new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, FALSE), - new /datum/pipe_info/pipe("Junction", /obj/machinery/atmospherics/pipe/heat_exchanging/junction, FALSE), - new /datum/pipe_info/pipe("Heat Exchanger", /obj/machinery/atmospherics/components/unary/heat_exchanger, FALSE), - ) -)) - -GLOBAL_LIST_INIT(disposal_pipe_recipes, list( - "Disposal Pipes" = list( - new /datum/pipe_info/disposal("Pipe", /obj/structure/disposalpipe/segment, PIPE_BENDABLE), - new /datum/pipe_info/disposal("Junction", /obj/structure/disposalpipe/junction, PIPE_TRIN_M), - new /datum/pipe_info/disposal("Y-Junction", /obj/structure/disposalpipe/junction/yjunction), - new /datum/pipe_info/disposal("Sort Junction", /obj/structure/disposalpipe/sorting/mail, PIPE_TRIN_M), - new /datum/pipe_info/disposal("Rotator", /obj/structure/disposalpipe/rotator, PIPE_ONEDIR_FLIPPABLE), - new /datum/pipe_info/disposal("Trunk", /obj/structure/disposalpipe/trunk), - new /datum/pipe_info/disposal("Down Turn", /obj/structure/disposalpipe/trunk/multiz/down), - new /datum/pipe_info/disposal("Up Turn", /obj/structure/disposalpipe/trunk/multiz), - new /datum/pipe_info/disposal("Bin", /obj/machinery/disposal/bin, PIPE_ONEDIR), - new /datum/pipe_info/disposal("Outlet", /obj/structure/disposaloutlet), - new /datum/pipe_info/disposal("Chute", /obj/machinery/disposal/delivery_chute), - ) -)) - -GLOBAL_LIST_INIT(transit_tube_recipes, list( - "Transit Tubes" = list( - new /datum/pipe_info/transit("Straight Tube", /obj/structure/c_transit_tube, PIPE_STRAIGHT), - new /datum/pipe_info/transit("Straight Tube with Crossing", /obj/structure/c_transit_tube/crossing, PIPE_STRAIGHT), - new /datum/pipe_info/transit("Curved Tube", /obj/structure/c_transit_tube/curved, PIPE_UNARY_FLIPPABLE), - new /datum/pipe_info/transit("Diagonal Tube", /obj/structure/c_transit_tube/diagonal, PIPE_STRAIGHT), - new /datum/pipe_info/transit("Diagonal Tube with Crossing", /obj/structure/c_transit_tube/diagonal/crossing, PIPE_STRAIGHT), - new /datum/pipe_info/transit("Junction", /obj/structure/c_transit_tube/junction, PIPE_UNARY_FLIPPABLE), - ), - "Station Equipment" = list( - new /datum/pipe_info/transit("Through Tube Station", /obj/structure/c_transit_tube/station, PIPE_STRAIGHT), - new /datum/pipe_info/transit("Terminus Tube Station", /obj/structure/c_transit_tube/station/reverse, PIPE_UNARY_FLIPPABLE), - new /datum/pipe_info/transit("Through Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser, PIPE_STRAIGHT), - new /datum/pipe_info/transit("Terminus Tube Dispenser Station", /obj/structure/c_transit_tube/station/dispenser/reverse, PIPE_UNARY_FLIPPABLE), - new /datum/pipe_info/transit("Transit Tube Pod", /obj/structure/c_transit_tube_pod, PIPE_ONEDIR), - ) -)) - -/datum/pipe_info - var/name - var/icon_state - var/id = -1 - var/dirtype = PIPE_BENDABLE - var/all_layers - -/datum/pipe_info/proc/get_preview(selected_dir, selected = FALSE) - var/list/dirs - switch(dirtype) - if(PIPE_STRAIGHT, PIPE_BENDABLE) - dirs = list("[NORTH]" = "Vertical", "[EAST]" = "Horizontal") - if(dirtype == PIPE_BENDABLE) - dirs += list("[NORTHWEST]" = "West to North", "[NORTHEAST]" = "North to East", - "[SOUTHWEST]" = "South to West", "[SOUTHEAST]" = "East to South") - if(PIPE_TRINARY) - dirs = list("[NORTH]" = "West South East", "[SOUTH]" = "East North West", - "[EAST]" = "North West South", "[WEST]" = "South East North") - if(PIPE_TRIN_M) - dirs = list("[NORTH]" = "North East South", "[SOUTHWEST]" = "North West South", - "[NORTHEAST]" = "South East North", "[SOUTH]" = "South West North", - "[WEST]" = "West North East", "[SOUTHEAST]" = "West South East", - "[NORTHWEST]" = "East North West", "[EAST]" = "East South West",) - if(PIPE_UNARY) - dirs = list("[NORTH]" = "North", "[SOUTH]" = "South", "[WEST]" = "West", "[EAST]" = "East") - if(PIPE_ONEDIR) - dirs = list("[SOUTH]" = name) - if(PIPE_UNARY_FLIPPABLE) - dirs = list("[NORTH]" = "North", "[EAST]" = "East", "[SOUTH]" = "South", "[WEST]" = "West", - "[NORTHEAST]" = "North Flipped", "[SOUTHEAST]" = "East Flipped", "[SOUTHWEST]" = "South Flipped", "[NORTHWEST]" = "West Flipped") - if(PIPE_ONEDIR_FLIPPABLE) - dirs = list("[SOUTH]" = name, "[SOUTHEAST]" = "[name] Flipped") - - var/list/rows = list() - for(var/dir in dirs) - var/numdir = text2num(dir) - var/flipped = ((dirtype == PIPE_TRIN_M) || (dirtype == PIPE_UNARY_FLIPPABLE) || (dirtype == PIPE_ONEDIR_FLIPPABLE)) && (ISDIAGONALDIR(numdir)) - var/is_variant_selected = selected && (!selected_dir ? FALSE : (dirtype == PIPE_ONEDIR ? TRUE : (numdir == selected_dir))) - rows += list(list( - "selected" = is_variant_selected, - "dir" = dir2text(numdir), - "dir_name" = dirs[dir], - "icon_state" = icon_state, - "flipped" = flipped, - )) - - return rows - -/datum/pipe_info/pipe/New(label, obj/machinery/atmospherics/path, use_five_layers) - name = label - id = path - all_layers = use_five_layers - icon_state = initial(path.pipe_state) - var/obj/item/pipe/c = initial(path.construction_type) - dirtype = initial(c.RPD_type) - -/datum/pipe_info/meter - icon_state = "meter" - dirtype = PIPE_ONEDIR - all_layers = TRUE - -/datum/pipe_info/meter/New(label) - name = label - -/datum/pipe_info/disposal/New(label, obj/path, dt=PIPE_UNARY) - name = label - id = path - - icon_state = initial(path.icon_state) - if(ispath(path, /obj/structure/disposalpipe)) - icon_state = "con[icon_state]" - - dirtype = dt - -/datum/pipe_info/transit/New(label, obj/path, dt=PIPE_UNARY) - name = label - id = path - dirtype = dt - icon_state = initial(path.icon_state) - if(dt == PIPE_UNARY_FLIPPABLE) - icon_state = "[icon_state]_preview" - /obj/item/pipe_dispenser name = "rapid pipe dispenser" desc = "A device used to rapidly pipe things." @@ -210,8 +61,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( var/pipe_layers = PIPE_LAYER(3) ///Are we laying multiple layers per click var/multi_layer = FALSE - ///Layer for disposal ducts - var/ducting_layer = DUCT_LAYER_DEFAULT ///Stores the current device to spawn var/datum/pipe_info/recipe ///Stores the first atmos device @@ -245,8 +94,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( register_item_context() /obj/item/pipe_dispenser/Destroy() - qdel(spark_system) - spark_system = null + QDEL_NULL(spark_system) return ..() /obj/item/pipe_dispenser/examine(mob/user) @@ -254,6 +102,15 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( . += span_notice("You can scroll your mouse wheel to change the piping layer.") . += span_notice("You can right click a pipe to set the RPD to its color and layer.") +/obj/item/pipe_dispenser/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = NONE + + if(istype(target, /obj/machinery/atmospherics)) + var/obj/machinery/atmospherics/atmos_target = target + if(atmos_target.pipe_color && atmos_target.piping_layer) + context[SCREENTIP_CONTEXT_RMB] = "Copy piping color and layer" + return CONTEXTUAL_SCREENTIP_SET + /obj/item/pipe_dispenser/equipped(mob/user, slot, initial) . = ..() if(slot & ITEM_SLOT_HANDS) @@ -265,13 +122,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( UnregisterSignal(user, COMSIG_MOUSE_SCROLL_ON) return ..() -/obj/item/pipe_dispenser/proc/get_active_pipe_layers() - var/list/layer_nums = list() - for(var/pipe_layer_number in 1 to 5) - if(PIPE_LAYER(pipe_layer_number) & pipe_layers) - layer_nums += pipe_layer_number - return layer_nums - /obj/item/pipe_dispenser/cyborg_unequip(mob/user) UnregisterSignal(user, COMSIG_MOUSE_SCROLL_ON) return ..() @@ -279,30 +129,23 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( /obj/item/pipe_dispenser/attack_self(mob/user) ui_interact(user) -/obj/item/pipe_dispenser/pre_attack_secondary(obj/machinery/atmospherics/target, mob/user, params) - if(!istype(target, /obj/machinery/atmospherics)) - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - if(target.pipe_color && target.piping_layer) - paint_color = GLOB.pipe_color_name[target.pipe_color] - pipe_layers = PIPE_LAYER(target.piping_layer) - balloon_alert(user, "color/layer copied") - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - -/obj/item/pipe_dispenser/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) - . = ..() - if(istype(target, /obj/machinery/atmospherics)) - var/obj/machinery/atmospherics/atmos_target = target - if(atmos_target.pipe_color && atmos_target.piping_layer) - context[SCREENTIP_CONTEXT_RMB] = "Copy piping color and layer" - return CONTEXTUAL_SCREENTIP_SET - - /obj/item/pipe_dispenser/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] points the end of the RPD down [user.p_their()] throat and presses a button! It looks like [user.p_theyre()] trying to commit suicide...")) playsound(get_turf(user), SFX_TOOL_SWITCH, 20, TRUE) playsound(get_turf(user), RPD_USE_SOUND, 50, TRUE) return BRUTELOSS +///Converts pipe_layers bitflag into its corresponding list of actual pipe layers +/obj/item/pipe_dispenser/proc/get_active_pipe_layers() + PRIVATE_PROC(TRUE) + RETURN_TYPE(/list) + + var/list/layer_nums = list() + for(var/pipe_layer_number in 1 to MAX_PIPE_LAYERS) + if(PIPE_LAYER(pipe_layer_number) & pipe_layers) + layer_nums += pipe_layer_number + return layer_nums + /obj/item/pipe_dispenser/ui_assets(mob/user) return list( get_asset_datum(/datum/asset/spritesheet/pipes), @@ -315,15 +158,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( ui.open() /obj/item/pipe_dispenser/ui_static_data(mob/user) - var/list/data = list("paint_colors" = GLOB.pipe_paint_colors) - return data + return list( + "paint_colors" = GLOB.pipe_paint_colors, + "max_pipe_layers" = MAX_PIPE_LAYERS, + ) /obj/item/pipe_dispenser/ui_data(mob/user) var/list/data = list( "category" = category, "multi_layer" = multi_layer, "pipe_layers" = pipe_layers, - "ducting_layer" = ducting_layer, "categories" = list(), "selected_recipe" = recipe.name, "selected_color" = paint_color, @@ -370,10 +214,11 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( playsound(src, SFX_TOOL_SWITCH, 20, TRUE) - var/playeffect = TRUE switch(action) if("color") paint_color = params["paint_color"] + return TRUE + if("category") category = text2num(params["category"]) switch(category) @@ -384,66 +229,87 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(TRANSIT_CATEGORY) recipe = first_transit p_dir = NORTH - playeffect = FALSE + return TRUE + if("pipe_layers") var/selected_layers = text2num(params["pipe_layers"]) + + //is valid var/valid_layer = FALSE - for(var/pipe_layer_number in 1 to 5) + for(var/pipe_layer_number in 1 to MAX_PIPE_LAYERS) if(!(PIPE_LAYER(pipe_layer_number) & selected_layers)) continue valid_layer = TRUE + break if(!valid_layer) - return + return FALSE + + //append or set the layer if(multi_layer) if(pipe_layers != selected_layers) pipe_layers ^= selected_layers else pipe_layers = selected_layers - playeffect = FALSE + + return TRUE + if("toggle_multi_layer") if(multi_layer) pipe_layers = PIPE_LAYER(max(get_active_pipe_layers())) multi_layer = !multi_layer - if("ducting_layer") - ducting_layer = text2num(params["ducting_layer"]) - playeffect = FALSE + if("pipe_type") var/static/list/recipes if(!recipes) recipes = GLOB.disposal_pipe_recipes + GLOB.atmos_pipe_recipes + GLOB.transit_tube_recipes recipe = recipes[params["category"]][text2num(params["pipe_type"])] p_dir = NORTH + if("setdir") p_dir = text2dir(params["dir"]) p_flipped = text2num(params["flipped"]) - playeffect = FALSE + return TRUE + if("mode") var/selected_mode = text2num(params["mode"]) mode ^= selected_mode + if("init_dir_setting") var/target_dir = p_init_dir ^ text2dir(params["dir_flag"]) // Refuse to create a smart pipe that can only connect in one direction (it would act weirdly and lack an icon) if (ISNOTSTUB(target_dir)) p_init_dir = target_dir else - to_chat(usr, span_warning("\The [src]'s screen flashes a warning: Can't configure a pipe to only connect in one direction.")) - playeffect = FALSE + to_chat(ui.user, span_warning("\The [src]'s screen flashes a warning: Can't configure a pipe to only connect in one direction.")) + return FALSE + if("init_reset") p_init_dir = ALL_CARDINALS - if(playeffect) - spark_system.start() - playsound(get_turf(src), 'sound/effects/pop.ogg', 50, FALSE) + + spark_system.start() + playsound(get_turf(src), 'sound/effects/pop.ogg', 50, FALSE) return TRUE -/obj/item/pipe_dispenser/pre_attack(atom/atom_to_attack, mob/user, params) - if(!ISADVANCEDTOOLUSER(user) || istype(atom_to_attack, /turf/open/space/transit)) - return ..() +/obj/item/pipe_dispenser/interact_with_atom(atom/attack_target, mob/living/user, list/modifiers) + . = NONE - if(istype(atom_to_attack, /obj/item/rpd_upgrade)) - install_upgrade(atom_to_attack, user) - return TRUE + if(!ISADVANCEDTOOLUSER(user) || HAS_TRAIT(attack_target, TRAIT_COMBAT_MODE_SKIP_INTERACTION) || istype(attack_target, /turf/open/space/transit)) + return - var/atom/attack_target = atom_to_attack + if(istype(attack_target, /obj/item/rpd_upgrade)) + var/obj/item/rpd_upgrade/rpd_disk = attack_target + + // Check if the upgrade's already present + if(rpd_disk.upgrade_flags & upgrade_flags) + balloon_alert(user, "already installed!") + return ITEM_INTERACT_BLOCKING + + // Adds the upgrade from the disk and then deletes the disk + upgrade_flags |= rpd_disk.upgrade_flags + playsound(loc, 'sound/machines/click.ogg', 50, vary = TRUE) + balloon_alert(user, "upgrade installed") + qdel(rpd_disk) + return ITEM_INTERACT_SUCCESS //So that changing the menu settings doesn't affect the pipes already being built. var/queued_pipe_type = recipe.id @@ -454,20 +320,29 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if((mode & DESTROY_MODE) && (upgrade_flags & RPD_UPGRADE_UNWRENCH) && istype(attack_target, /obj/machinery/atmospherics) && !(DOING_INTERACTION_WITH_TARGET(user, attack_target))) attack_target = attack_target.wrench_act(user, src) if(!isatom(attack_target)) //can return null, FALSE if do_after() fails see /obj/machinery/atmospherics/wrench_act() - return TRUE + return ITEM_INTERACT_FAILURE if(istype(attack_target, /obj/machinery/atmospherics) && (mode & BUILD_MODE)) attack_target = get_turf(attack_target) - var/can_make_pipe = check_can_make_pipe(attack_target) - - . = TRUE - - if((mode & DESTROY_MODE) && istype(attack_target, /obj/item/pipe) || istype(attack_target, /obj/structure/disposalconstruct) || istype(attack_target, /obj/structure/c_transit_tube) || istype(attack_target, /obj/structure/c_transit_tube_pod) || istype(attack_target, /obj/item/pipe_meter) || istype(attack_target, /obj/structure/disposalpipe/broken)) - playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE) - playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE) + var/can_destroy = FALSE + if((mode & DESTROY_MODE) && istype(attack_target, /obj/item/pipe)) + can_destroy = TRUE + if(!can_destroy) + var/static/list/destroyables = list( + /obj/structure/disposalconstruct, + /obj/structure/c_transit_tube, + /obj/structure/c_transit_tube_pod, + /obj/item/pipe_meter, + /obj/structure/disposalpipe/broken + ) + can_destroy = is_type_in_list(attack_target, destroyables) + if(can_destroy) + var/turf/ground = get_turf(src) + playsound(ground, SFX_TOOL_SWITCH, 20, TRUE) + playsound(ground, RPD_USE_SOUND, 50, TRUE) qdel(attack_target) - return + return ITEM_INTERACT_SUCCESS if(mode & REPROGRAM_MODE) // If this is a placed smart pipe, try to reprogram it @@ -475,16 +350,16 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(istype(target_smart_pipe)) if(target_smart_pipe.dir == ALL_CARDINALS) balloon_alert(user, "has no unconnected directions!") - return + return ITEM_INTERACT_FAILURE var/old_init_dir = target_smart_pipe.get_init_directions() if(old_init_dir == p_init_dir) balloon_alert(user, "already configured!") - return + return ITEM_INTERACT_FAILURE // Check for differences in unconnected directions var/target_differences = (p_init_dir ^ old_init_dir) & ~target_smart_pipe.connections if(!target_differences) balloon_alert(user, "already configured for its directions!") - return + return ITEM_INTERACT_FAILURE playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE) @@ -494,7 +369,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( // Double check to make sure that nothing has changed. If anything we were about to change was connected during do_after, abort if(target_differences & target_smart_pipe.connections) balloon_alert(user, "can't configure for its direction!") - return + return ITEM_INTERACT_FAILURE // Grab the current initializable directions, which may differ from old_init_dir if someone else was working on the same pipe at the same time var/current_init_dir = target_smart_pipe.get_init_directions() // Access p_init_dir directly. The RPD can change target layer and initializable directions (though not pipe type or dir) while working to dispense and connect a component, @@ -503,7 +378,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( // Don't make a smart pipe with only one connection if(ISSTUB(new_init_dir)) balloon_alert(user, "no one directional pipes allowed!") - return + return ITEM_INTERACT_FAILURE target_smart_pipe.set_init_directions(new_init_dir) // We're now reconfigured. // We can never disconnect from existing connections, but we can connect to previously unconnected directions, and should immediately do so @@ -529,108 +404,146 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( // Finally, update our internal state - update_pipe_icon also updates dir and connections target_smart_pipe.update_pipe_icon() user.visible_message(span_notice("[user] reprograms \the [target_smart_pipe]."), span_notice("You reprogram \the [target_smart_pipe].")) - return + return ITEM_INTERACT_SUCCESS + // If this is an unplaced smart pipe, try to reprogram it var/obj/item/pipe/quaternary/target_unsecured_pipe = attack_target if(istype(target_unsecured_pipe) && ispath(target_unsecured_pipe.pipe_type, /obj/machinery/atmospherics/pipe/smart)) // An unplaced pipe never has any existing connections, so just directly assign the new configuration target_unsecured_pipe.p_init_dir = p_init_dir target_unsecured_pipe.update() + return ITEM_INTERACT_SUCCESS if(mode & BUILD_MODE) switch(category) //if we've gotten this var, the target is valid if(ATMOS_CATEGORY) //Making pipes - if(!do_pipe_build(attack_target, user, params)) - return ..() + return do_pipe_build(attack_target, user) ? ITEM_INTERACT_SUCCESS : ITEM_INTERACT_FAILURE if(DISPOSALS_CATEGORY) //Making disposals pipes - if(!can_make_pipe) - return ..() + if(!check_can_make_pipe(attack_target)) + return ITEM_INTERACT_FAILURE attack_target = get_turf(attack_target) if(isclosedturf(attack_target)) balloon_alert(user, "target is blocked!") - return + return ITEM_INTERACT_FAILURE playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE) - if(do_after(user, disposal_build_speed, target = attack_target)) - var/obj/structure/disposalconstruct/new_disposals_segment = new (attack_target, queued_pipe_type, queued_pipe_dir, queued_pipe_flipped) - if(!new_disposals_segment.can_place()) - balloon_alert(user, "not enough room!") - qdel(new_disposals_segment) - return + if(!do_after(user, disposal_build_speed, target = attack_target)) + return ITEM_INTERACT_FAILURE - playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE) + var/obj/structure/disposalconstruct/new_disposals_segment = new (attack_target, queued_pipe_type, queued_pipe_dir, queued_pipe_flipped) - new_disposals_segment.add_fingerprint(usr) - new_disposals_segment.update_appearance() - if(mode & WRENCH_MODE) - new_disposals_segment.wrench_act(user, src) - return + if(!new_disposals_segment.can_place()) + balloon_alert(user, "not enough room!") + qdel(new_disposals_segment) + return ITEM_INTERACT_FAILURE + + playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE) + + new_disposals_segment.add_fingerprint(user) + new_disposals_segment.update_appearance() + if(mode & WRENCH_MODE) + new_disposals_segment.wrench_act(user, src) + return ITEM_INTERACT_SUCCESS if(TRANSIT_CATEGORY) //Making transit tubes - if(!can_make_pipe) - return ..() + if(!check_can_make_pipe(attack_target)) + return ITEM_INTERACT_FAILURE attack_target = get_turf(attack_target) if(isclosedturf(attack_target)) balloon_alert(user, "something in the way!") - return + return ITEM_INTERACT_FAILURE var/turf/target_turf = get_turf(attack_target) if(target_turf.is_blocked_turf(exclude_mobs = TRUE)) balloon_alert(user, "something in the way!") - return + return ITEM_INTERACT_FAILURE playsound(get_turf(src), SFX_TOOL_SWITCH, 20, TRUE) - if(do_after(user, transit_build_speed, target = attack_target)) - playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE) - if(queued_pipe_type == /obj/structure/c_transit_tube_pod) - var/obj/structure/c_transit_tube_pod/pod = new /obj/structure/c_transit_tube_pod(attack_target) - pod.add_fingerprint(usr) - if(mode & WRENCH_MODE) - pod.wrench_act(user, src) - - else - var/obj/structure/c_transit_tube/tube = new queued_pipe_type(attack_target) - tube.setDir(queued_pipe_dir) - - if(queued_pipe_flipped) - tube.setDir(turn(queued_pipe_dir, 45 + ROTATION_FLIP)) - tube.post_rotation(user, ROTATION_FLIP) - - tube.add_fingerprint(usr) - if(mode & WRENCH_MODE) - tube.wrench_act(user, src) - return - else - return ..() + if(!do_after(user, transit_build_speed, target = attack_target)) + return ITEM_INTERACT_FAILURE + + playsound(get_turf(src), RPD_USE_SOUND, 50, TRUE) + if(queued_pipe_type == /obj/structure/c_transit_tube_pod) + var/obj/structure/c_transit_tube_pod/pod = new /obj/structure/c_transit_tube_pod(attack_target) + pod.add_fingerprint(user) + if(mode & WRENCH_MODE) + pod.wrench_act(user, src) + + else + var/obj/structure/c_transit_tube/tube = new queued_pipe_type(attack_target) + tube.setDir(queued_pipe_dir) + if(queued_pipe_flipped) + tube.setDir(turn(queued_pipe_dir, 45 + ROTATION_FLIP)) + tube.post_rotation(user, ROTATION_FLIP) + + tube.add_fingerprint(user) + if(mode & WRENCH_MODE) + tube.wrench_act(user, src) + return ITEM_INTERACT_SUCCESS + +/obj/item/pipe_dispenser/interact_with_atom_secondary(obj/machinery/atmospherics/target, mob/living/user, list/modifiers) + . = NONE + + if(!istype(target)) + return + + if(target.pipe_color && target.piping_layer) + paint_color = GLOB.pipe_color_name[target.pipe_color] + pipe_layers = PIPE_LAYER(target.piping_layer) + balloon_alert(user, "color/layer copied") + return ITEM_INTERACT_SUCCESS + +/** + * Can we make a pipe on the target + * Arguments + * + * * atom/target_of_attack - the target we are trying to build a pipe on + */ /obj/item/pipe_dispenser/proc/check_can_make_pipe(atom/target_of_attack) + PRIVATE_PROC(TRUE) + SHOULD_BE_PURE(TRUE) + + if(isturf(target_of_attack)) + return TRUE + //make sure what we're clicking is valid for the current category - var/static/list/make_pipe_whitelist = typecacheof(list(/obj/structure/lattice, /obj/structure/girder, /obj/item/pipe, /obj/structure/window, /obj/structure/grille)) - var/can_we_make_pipe = (isturf(target_of_attack) || is_type_in_typecache(target_of_attack, make_pipe_whitelist)) - return can_we_make_pipe + var/static/list/make_pipe_whitelist = typecacheof( + list( + /obj/structure/lattice, + /obj/structure/girder, + /obj/item/pipe, + /obj/structure/window, + /obj/structure/grille + ) + ) + return is_type_in_typecache(target_of_attack, make_pipe_whitelist) + +/** + * Build pipe on the target + * Arguments + * + * * atom/atom_to_target - the target we are trying to build the pipe on + * * mob/user - mob performing the action + */ +/obj/item/pipe_dispenser/proc/do_pipe_build(atom/atom_to_target, mob/user) + PRIVATE_PROC(TRUE) + + if(!check_can_make_pipe(atom_to_target)) + return FALSE -/obj/item/pipe_dispenser/proc/do_pipe_build(atom/atom_to_target, mob/user, params) //So that changing the menu settings doesn't affect the pipes already being built. var/queued_pipe_type = recipe.id var/queued_pipe_dir = p_dir var/queued_pipe_flipped = p_flipped - var/can_make_pipe = check_can_make_pipe(atom_to_target) var/list/pipe_layer_numbers = get_active_pipe_layers() - var/continued_build = FALSE - for(var/pipe_layer_num in 1 to length(pipe_layer_numbers)) - var/layer_to_build = pipe_layer_numbers[pipe_layer_num] - if(layer_to_build != pipe_layer_numbers[1]) - continued_build = TRUE - if(!layer_to_build) - return FALSE - if(!can_make_pipe) - return FALSE + for(var/layer_to_build in pipe_layer_numbers) playsound(get_turf(src), SFX_TOOL_SWITCH, 20, vary = TRUE) - if(!continued_build && !do_after(user, atmos_build_speed, target = atom_to_target)) + if(!do_after(user, atmos_build_speed, target = atom_to_target)) return FALSE - if(!recipe.all_layers && (layer_to_build == 1 || layer_to_build == 5)) + if(!recipe.all_layers && (layer_to_build == 1 || layer_to_build == MAX_PIPE_LAYERS)) balloon_alert(user, "can't build on layer [layer_to_build]!") if(multi_layer) continue @@ -657,7 +570,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( new_flippable_pipe.flipped = queued_pipe_flipped pipe_type.update() - pipe_type.add_fingerprint(usr) + pipe_type.add_fingerprint(user) pipe_type.set_piping_layer(layer_to_build) if(ispath(queued_pipe_type, /obj/machinery/atmospherics) && !ispath(queued_pipe_type, /obj/machinery/atmospherics/pipe/color_adapter)) pipe_type.add_atom_colour(GLOB.pipe_paint_colors[paint_color], FIXED_COLOUR_PRIORITY) @@ -665,24 +578,6 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( pipe_type.wrench_act(user, src) return TRUE -/obj/item/pipe_dispenser/attackby(obj/item/item, mob/user, params) - if(istype(item, /obj/item/rpd_upgrade)) - install_upgrade(item, user) - return TRUE - return ..() - -/// Installs an upgrade into the RPD after checking if it is already installed -/obj/item/pipe_dispenser/proc/install_upgrade(obj/item/rpd_upgrade/rpd_disk, mob/user) - // Check if the upgrade's already present - if(rpd_disk.upgrade_flags & upgrade_flags) - balloon_alert(user, "already installed!") - return - // Adds the upgrade from the disk and then deletes the disk - upgrade_flags |= rpd_disk.upgrade_flags - playsound(loc, 'sound/machines/click.ogg', 50, vary = TRUE) - balloon_alert(user, "upgrade installed") - qdel(rpd_disk) - ///Changes the piping layer when the mousewheel is scrolled up or down. /obj/item/pipe_dispenser/proc/mouse_wheeled(mob/source_mob, atom/A, delta_x, delta_y, params) SIGNAL_HANDLER @@ -695,7 +590,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( return if(delta_y < 0) - pipe_layers = min(PIPE_LAYER(5), pipe_layers << 1) + pipe_layers = min(PIPE_LAYER(MAX_PIPE_LAYERS), pipe_layers << 1) else if(delta_y > 0) pipe_layers = max(PIPE_LAYER(1), pipe_layers >> 1) else //mice with side-scrolling wheels are apparently a thing and fuck this up @@ -730,3 +625,4 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( #undef PIPE_LAYER #undef RPD_USE_SOUND +#undef MAX_PIPE_LAYERS diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index ecf43fdfab776..963274f26f268 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -70,11 +70,11 @@ need_mob_update += inspired_human.adjustFireLoss(-15, updating_health = FALSE) if(need_mob_update) inspired_human.updatehealth() - inspired_human.AdjustStun(-40) - inspired_human.AdjustKnockdown(-40) - inspired_human.AdjustImmobilized(-40) - inspired_human.AdjustParalyzed(-40) - inspired_human.AdjustUnconscious(-40) + inspired_human.AdjustStun(-4 SECONDS) + inspired_human.AdjustKnockdown(-4 SECONDS) + inspired_human.AdjustImmobilized(-4 SECONDS) + inspired_human.AdjustParalyzed(-4 SECONDS) + inspired_human.AdjustUnconscious(-4 SECONDS) playsound(inspired_human, 'sound/effects/magic/staff_healing.ogg', 25, FALSE) /obj/item/banner/proc/special_inspiration(mob/living/carbon/human/H) //Any banner-specific inspiration effects go here diff --git a/code/game/objects/items/robot/items/food.dm b/code/game/objects/items/robot/items/food.dm index 3dd15b508cc97..6eba8e8fa760b 100644 --- a/code/game/objects/items/robot/items/food.dm +++ b/code/game/objects/items/robot/items/food.dm @@ -199,7 +199,7 @@ desc = "Oh noes! A fast-moving gumball!" icon_state = "gumball" damage = 0 - speed = 0.5 + speed = 2 embed_type = null /obj/projectile/bullet/gumball/Initialize(mapload) @@ -232,7 +232,7 @@ desc = "Oh noes! A fast-moving lollipop!" icon_state = "lollipop_1" damage = 0 - speed = 0.5 + speed = 2 embed_type = null var/head_color diff --git a/code/game/objects/items/robot/items/generic.dm b/code/game/objects/items/robot/items/generic.dm index 385baa0381ae9..894135c7ef468 100644 --- a/code/game/objects/items/robot/items/generic.dm +++ b/code/game/objects/items/robot/items/generic.dm @@ -54,6 +54,7 @@ span_userdanger("[user] prods you with [src]!"), ) + SEND_SIGNAL(attacked_mob, COMSIG_LIVING_MINOR_SHOCK) // DOPPLER EDIT ADDITION playsound(loc, 'sound/items/weapons/egloves.ogg', 50, TRUE, -1) cooldown_check = world.time + cooldown log_combat(user, attacked_mob, "stunned", src, "(Combat mode: [user.combat_mode ? "On" : "Off"])") diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm index 708563cb751d5..dfea34fba9bcd 100644 --- a/code/game/objects/items/robot/items/tools.dm +++ b/code/game/objects/items/robot/items/tools.dm @@ -31,19 +31,13 @@ var/mob/living/silicon/robot/host = null /// The field var/datum/proximity_monitor/advanced/projectile_dampener/peaceborg/dampening_field - var/projectile_damage_coefficient = 0.5 /// Energy cost per tracked projectile damage amount per second var/projectile_damage_tick_ecost_coefficient = 10 - /** - * Speed coefficient - * Higher the coefficient slower the projectile. - */ - var/projectile_speed_coefficient = 1.5 /// Energy cost per tracked projectile per second var/projectile_tick_speed_ecost = 75 - /// Projectile sent out by the dampener - var/list/obj/projectile/tracked - var/image/projectile_effect + /// Projectiles dampened by our dampener + var/list/tracked_bullet_cost = list() + /// the radius of our field var/field_radius = 3 var/active = FALSE /// activation cooldown @@ -55,8 +49,6 @@ energy_recharge = 5000 /obj/item/borg/projectile_dampen/Initialize(mapload) - projectile_effect = image('icons/effects/fields.dmi', "projectile_dampen_effect") - tracked = list() START_PROCESSING(SSfastprocess, src) host = loc RegisterSignal(host, COMSIG_LIVING_DEATH, PROC_REF(on_death)) @@ -94,7 +86,7 @@ if(istype(dampening_field)) QDEL_NULL(dampening_field) var/mob/living/silicon/robot/owner = get_host() - dampening_field = new(owner, field_radius, TRUE, src) + dampening_field = new(owner, field_radius, TRUE, src, /datum/dampener_projectile_effects/peacekeeper) RegisterSignal(dampening_field, COMSIG_DAMPENER_CAPTURE, PROC_REF(dampen_projectile)) RegisterSignal(dampening_field, COMSIG_DAMPENER_RELEASE, PROC_REF(restore_projectile)) owner?.model.allow_riding = FALSE @@ -103,8 +95,7 @@ /obj/item/borg/projectile_dampen/proc/deactivate_field() QDEL_NULL(dampening_field) visible_message(span_warning("\The [src] shuts off!")) - for(var/projectile in tracked) - restore_projectile(projectile = projectile) + tracked_bullet_cost.Cut() active = FALSE var/mob/living/silicon/robot/owner = get_host() @@ -137,11 +128,9 @@ /obj/item/borg/projectile_dampen/proc/process_usage(seconds_per_tick) var/usage = 0 - for(var/obj/projectile/inner_projectile as anything in tracked) - if(!inner_projectile.is_hostile_projectile()) - continue + for(var/projectile as anything in tracked_bullet_cost) usage += projectile_tick_speed_ecost * seconds_per_tick - usage += tracked[inner_projectile] * projectile_damage_tick_ecost_coefficient * seconds_per_tick + usage += tracked_bullet_cost[projectile] * projectile_damage_tick_ecost_coefficient * seconds_per_tick energy = clamp(energy - usage, 0, maxenergy) if(energy <= 0) deactivate_field() @@ -161,18 +150,12 @@ /obj/item/borg/projectile_dampen/proc/dampen_projectile(datum/source, obj/projectile/projectile) SIGNAL_HANDLER - tracked[projectile] = projectile.damage - projectile.damage *= projectile_damage_coefficient - projectile.speed *= projectile_speed_coefficient - projectile.add_overlay(projectile_effect) + if(projectile.is_hostile_projectile()) + tracked_bullet_cost[REF(projectile)] = projectile.damage /obj/item/borg/projectile_dampen/proc/restore_projectile(datum/source, obj/projectile/projectile) SIGNAL_HANDLER - - tracked -= projectile - projectile.damage *= (1 / projectile_damage_coefficient) - projectile.speed *= (1 / projectile_speed_coefficient) - projectile.cut_overlay(projectile_effect) + tracked_bullet_cost -= REF(projectile) //bare minimum omni-toolset for modularity /obj/item/borg/cyborg_omnitool diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 3e5cc1eb8d560..bbebd91e7cb0c 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -12,7 +12,7 @@ var/require_model = FALSE var/list/model_type = null /// Bitflags listing model compatibility. Used in the exosuit fabricator for creating sub-categories. - var/list/model_flags = NONE + var/model_flags = NONE /// List of items to add with the module, if any var/list/items_to_add @@ -647,24 +647,8 @@ require_model = TRUE model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) model_flags = BORG_MODEL_ENGINEERING - items_to_add = list(/obj/item/inducer/cyborg) -/obj/item/inducer/cyborg - name = "Internal inducer" - icon = 'icons/obj/tools.dmi' - icon_state = "inducer-engi" - powerdevice = null - -/obj/item/inducer/cyborg/get_cell() - var/obj/item/robot_model/possible_model = loc - var/mob/living/silicon/robot/silicon_friend = istype(possible_model) ? possible_model.robot : possible_model - if(istype(silicon_friend)) - . = silicon_friend.cell - -/obj/item/inducer/cyborg/screwdriver_act(mob/living/user, obj/item/tool) - return NONE - /obj/item/borg/upgrade/pinpointer name = "medical cyborg crew pinpointer" desc = "A crew pinpointer module for the medical cyborg. Permits remote access to the crew monitor." diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index ff08886e7d3ed..0930de71c0e0c 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -82,6 +82,6 @@ desc = "A shooting target that looks like a useless clown." max_integrity = 2000 -/obj/item/target/clown/bullet_act(obj/projectile/P) +/obj/item/target/clown/bullet_act(obj/projectile/proj) . = ..() playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE) diff --git a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm index bb6e90187ef38..f8c15a3ba869c 100644 --- a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm +++ b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm @@ -433,7 +433,7 @@ return owner.body_position == LYING_DOWN /datum/status_effect/golem/bananium/on_remove() - owner.remove_traits(owner, list(TRAIT_WADDLING, TRAIT_NO_SLIP_WATER), TRAIT_STATUS_EFFECT(id)) + owner.remove_traits(list(TRAIT_WADDLING, TRAIT_NO_SLIP_WATER), TRAIT_STATUS_EFFECT(id)) QDEL_NULL(slipperiness) return ..() diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index cb3bb78f65683..6eda30d328dea 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -32,16 +32,35 @@ var/sanitization /// How much we add to flesh_healing for burn wounds on application var/flesh_regeneration - /// Time it takes to assess injuries when looping healing - var/assessing_injury_delay = 1 SECONDS /obj/item/stack/medical/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isliving(interacting_with)) return NONE - if(!begin_heal_loop(interacting_with, user)) + if(!begin_heal_loop(interacting_with, user, auto_change_zone = TRUE)) return NONE // [ITEM_INTERACT_BLOCKING] would be redundant as we are nobludgeon return ITEM_INTERACT_SUCCESS +/obj/item/stack/medical/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) + if(!isliving(interacting_with)) + return NONE + if(!begin_heal_loop(interacting_with, user, auto_change_zone = FALSE)) + return NONE // see above + return ITEM_INTERACT_SUCCESS + +/obj/item/stack/medical/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt) + . = ..() + register_item_context() + +/obj/item/stack/medical/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + if(!isliving(target)) + return NONE + if(iscarbon(target)) + context[SCREENTIP_CONTEXT_LMB] = "Auto Heal" + context[SCREENTIP_CONTEXT_RMB] = "Manual Heal" + else + context[SCREENTIP_CONTEXT_LMB] = "Heal" + return CONTEXTUAL_SCREENTIP_SET + /obj/item/stack/medical/apply_fantasy_bonuses(bonus) . = ..() if(heal_brute) @@ -65,134 +84,251 @@ /// Used to begin the recursive healing loop. /// Returns TRUE if we entered the loop, FALSE if we didn't -/obj/item/stack/medical/proc/begin_heal_loop(mob/living/patient, mob/user) - if(!can_heal(patient, user)) +/obj/item/stack/medical/proc/begin_heal_loop(mob/living/patient, mob/living/user, auto_change_zone = TRUE) + if(DOING_INTERACTION_WITH_TARGET(user, patient)) return FALSE - - INVOKE_ASYNC(src, PROC_REF(try_heal), patient, user) + var/heal_zone = check_zone(user.zone_selected) + if(!try_heal_checks(patient, user, heal_zone)) + return FALSE + SSblackbox.record_feedback("nested tally", "medical_item_used", 1, list(type, auto_change_zone ? "auto" : "manual")) + patient.balloon_alert(user, "treating [parse_zone(heal_zone)]...") + INVOKE_ASYNC(src, PROC_REF(try_heal), patient, user, heal_zone, FALSE, iscarbon(patient) && auto_change_zone) // auto change is useless for non-carbons return TRUE -/// Checks if the passed patient can be healed by the passed user -/obj/item/stack/medical/proc/can_heal(mob/living/patient, mob/user) - return patient.try_inject(user, injection_flags = INJECT_TRY_SHOW_ERROR_MESSAGE) - -/// In which we print the message that we're starting to heal someone, then we try healing them. Does the do_after whether or not it can actually succeed on a targeted mob -/obj/item/stack/medical/proc/try_heal(mob/living/patient, mob/user, silent = FALSE, looping = FALSE) - if(!try_heal_checks(patient, user, heal_brute, heal_burn, looping)) - return - var/new_self_delay = self_delay - var/new_other_delay = other_delay - if(iscarbon(patient)) - new_self_delay = looping ? clamp((self_delay - assessing_injury_delay), 0, self_delay) : self_delay - new_other_delay = looping ? clamp((other_delay - assessing_injury_delay), 0, other_delay) : other_delay +/** + * What actually handles printing the message that we're starting to heal someone, and trying to heal them + * + * This proc is recursively called until we run out of charges OR until the patient is fully healed + * OR until the target zone is fully healed (if auto_change_zone is FALSE) + * + * * patient - The mob we're trying to heal + * * user - The mob that's trying to heal the patient + * * healed_zone - The zone we're trying to heal on the patient + * Disregarded if auto_change_zone is TRUE + * * silent - If we should not print the message that we're starting to heal the patient + * Used so looping the proc doesn't spam messages + * * auto_change_zone - Handles the behavior when we finish healing a zone + * If auto_change_zone is set to TRUE, it picks the next most damaged zone to heal + * If auto_change_zone is set to FALSE, it'll give the user a chance to pick a new zone to heal + */ +/obj/item/stack/medical/proc/try_heal(mob/living/patient, mob/living/user, healed_zone, silent = FALSE, auto_change_zone = TRUE) if(patient == user) if(!silent) + user.balloon_alert(user, "treating [parse_zone(healed_zone)]...") user.visible_message( span_notice("[user] starts to apply [src] on [user.p_them()]self..."), span_notice("You begin applying [src] on yourself..."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, ) if(!do_after( user, - new_self_delay, + self_delay * (auto_change_zone ? 1 : 0.9), patient, - extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user), + extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user, healed_zone), )) return + if(!auto_change_zone) + healed_zone = check_zone(user.zone_selected) + if(!try_heal_checks(patient, user, healed_zone)) + return else if(other_delay) if(!silent) + patient.balloon_alert(user, "treating [parse_zone(healed_zone)]...") user.visible_message( span_notice("[user] starts to apply [src] on [patient]."), span_notice("You begin applying [src] on [patient]..."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, ) if(!do_after( user, - new_other_delay, + other_delay * (auto_change_zone ? 1 : 0.9), patient, - extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user), + extra_checks = CALLBACK(src, PROC_REF(can_heal), patient, user, healed_zone), )) return + if(!auto_change_zone) + healed_zone = check_zone(user.zone_selected) + if(!try_heal_checks(patient, user, healed_zone)) + return - if(!heal(patient, user)) - return - log_combat(user, patient, "healed", name) + else + if(!silent) + user.visible_message( + span_notice("[user] applies [src] on [patient]."), + span_notice("You apply [src] on [patient]."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + ) + + if(iscarbon(patient)) + if(!heal_carbon(patient, user, healed_zone)) + return + else if(isanimal_or_basicmob(patient)) + if(!heal_simplemob(patient, user)) + return + else + CRASH("Stack medical item healing a non-carbon, non-animal mob [patient] ([patient.type])") + + log_combat(user, patient, "healed", src) if(!use(1) || !repeating || amount <= 0) + var/atom/alert_loc = QDELETED(src) ? user : src + alert_loc.balloon_alert(user, repeating ? "all used up!" : "treated [parse_zone(healed_zone)]") + return + + // first, just try looping + // 1. we can keep healing the current target + // 2. the user's changed their target (and thus we should heal that limb instead) + var/preferred_target = check_zone(user.zone_selected) + if(try_heal_checks(patient, user, preferred_target, silent = TRUE)) + if(preferred_target != healed_zone) + patient.balloon_alert(user, "treating [parse_zone(preferred_target)]...") + try_heal(patient, user, preferred_target, TRUE, auto_change_zone) + return + + // second, handle what happens otherwise + if(!iscarbon(patient)) + // behavior 0: non-carbons have no limbs so we can assume they are fully healed + patient.balloon_alert(user, "fully treated") + else if(auto_change_zone) + // behavior 1: automatically pick another zone to heal + try_heal_auto_change_zone(patient, user, preferred_target, healed_zone) + else + // behavior 2: assess injury, giving the user time to manually pick another zone + try_heal_manual_target(patient, user) + +/obj/item/stack/medical/proc/try_heal_auto_change_zone(mob/living/carbon/patient, mob/living/user, preferred_target, last_zone) + PRIVATE_PROC(TRUE) + + var/list/other_affected_limbs = list() + for(var/obj/item/bodypart/limb as anything in patient.bodyparts) + if(!try_heal_checks(patient, user, limb.body_zone, silent = TRUE)) + continue + other_affected_limbs += limb.body_zone + + if(!length(other_affected_limbs)) + patient.balloon_alert(user, "fully treated") + return + + var/next_picked = (preferred_target in other_affected_limbs) ? preferred_target : other_affected_limbs[1] + if(next_picked != last_zone) + user.balloon_alert(user, "treating [parse_zone(next_picked)]...") + try_heal(patient, user, next_picked, silent = TRUE, auto_change_zone = TRUE) + +/obj/item/stack/medical/proc/try_heal_manual_target(mob/living/carbon/patient, mob/living/user) + PRIVATE_PROC(TRUE) + + patient.balloon_alert(user, "assessing injury...") + if(!do_after(user, 1 SECONDS, patient)) return - if(!can_heal(patient, user)) + var/new_zone = check_zone(user.zone_selected) + if(!try_heal_checks(patient, user, new_zone)) return - try_heal(patient, user, silent = TRUE, looping = TRUE) + patient.balloon_alert(user, "treating [parse_zone(new_zone)]...") + try_heal(patient, user, new_zone, silent = TRUE, auto_change_zone = FALSE) -/// Apply the actual effects of the healing if it's a simple animal, goes to [/obj/item/stack/medical/proc/heal_carbon] if it's a carbon, returns TRUE if it works, FALSE if it doesn't -/obj/item/stack/medical/proc/heal(mob/living/patient, mob/user) +/// Checks if the passed patient can be healed by the passed user +/obj/item/stack/medical/proc/can_heal(mob/living/patient, mob/living/user, healed_zone, silent = FALSE) + return patient.try_inject(user, healed_zone, injection_flags = silent ? NONE : INJECT_TRY_SHOW_ERROR_MESSAGE) + +/// Checks a bunch of stuff to see if we can heal the patient, including can_heal +/// Gives a feedback if we can't ultimatly heal the patient (unless silent is TRUE) +/obj/item/stack/medical/proc/try_heal_checks(mob/living/patient, mob/living/user, healed_zone, silent = FALSE) + if(!can_heal(patient, user, healed_zone, silent)) + // has its own feedback + return FALSE if(patient.stat == DEAD) - patient.balloon_alert(user, "they're dead!") + if(!silent) + patient.balloon_alert(user, "[patient.p_theyre()] dead!") return FALSE - if(iscarbon(patient)) - return heal_carbon(patient, user, heal_brute, heal_burn) - else if(isanimal_or_basicmob(patient)) - if(!try_heal_checks(patient, user, heal_brute, heal_burn)) - return FALSE - if(patient.heal_bodypart_damage((heal_brute * patient.maxHealth/100))) - user.visible_message(span_infoplain(span_green("[user] applies [src] on [patient].")), span_infoplain(span_green("You apply [src] on [patient]."))) - return TRUE - patient.balloon_alert(user, "can't heal [patient]!") - return FALSE -/obj/item/stack/medical/proc/try_heal_checks(mob/living/patient, mob/user, brute, burn, looping = FALSE) if(iscarbon(patient)) - if(looping) - balloon_alert(user, "assessing injuries...") - if(!do_after(user, assessing_injury_delay, patient)) - return FALSE var/mob/living/carbon/carbon_patient = patient - var/obj/item/bodypart/affecting = carbon_patient.get_bodypart(check_zone(user.zone_selected)) + var/obj/item/bodypart/affecting = carbon_patient.get_bodypart(healed_zone) if(!affecting) //Missing limb? - carbon_patient.balloon_alert(user, "no [parse_zone(user.zone_selected)]!") + if(!silent) + carbon_patient.balloon_alert(user, "no [parse_zone(healed_zone)]!") return FALSE if(!IS_ORGANIC_LIMB(affecting)) //Limb must be organic to be healed - RR - carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not organic!") + if(!silent) + carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not organic!") return FALSE - if(!(affecting.brute_dam && brute) && !(affecting.burn_dam && burn)) - if(!affecting.brute_dam && !affecting.burn_dam) - if(patient != user || !looping) + + var/datum/wound/burn/flesh/any_burn_wound = locate() in affecting.wounds + var/can_heal_burn_wounds = (flesh_regeneration || sanitization) && any_burn_wound?.can_be_ointmented_or_meshed() + var/can_suture_bleeding = stop_bleeding && affecting.get_modified_bleed_rate() > 0 + var/brute_to_heal = heal_brute && affecting.brute_dam > 0 + var/burn_to_heal = heal_burn && affecting.burn_dam > 0 + + if(!brute_to_heal && !burn_to_heal && !can_heal_burn_wounds && !can_suture_bleeding) + if(!silent) + if(!brute_to_heal && stop_bleeding) // no brute, no bleeding + carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not bleeding or bruised!") + else if(!burn_to_heal && (flesh_regeneration || sanitization) && any_burn_wound) // no burns, existing burn wounds are treated + carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] has been fully treated!") + else if(!affecting.brute_dam && !affecting.burn_dam) // not hurt at all carbon_patient.balloon_alert(user, "[affecting.plaintext_zone] is not hurt!") - else - carbon_patient.balloon_alert(user, "can't heal [affecting.plaintext_zone] with [name]!") + else // probably hurt in some way but we are not the right item for this + carbon_patient.balloon_alert(user, "can't heal [affecting.plaintext_zone] with [name]!") return FALSE return TRUE + if(isanimal_or_basicmob(patient)) - if(patient.stat == DEAD) - patient.balloon_alert(user, "they're dead!") - return FALSE if(!heal_brute) // only brute can heal - patient.balloon_alert(user, "can't heal with [name]!") + if(!silent) + patient.balloon_alert(user, "can't heal with [name]!") return FALSE if(!(patient.mob_biotypes & MOB_ORGANIC)) - patient.balloon_alert(user, "no organic tissue!") + if(!silent) + patient.balloon_alert(user, "no organic tissue!") return FALSE if(patient.health == patient.maxHealth) - patient.balloon_alert(user, "not hurt!") + if(!silent) + patient.balloon_alert(user, "not hurt!") return FALSE return TRUE + return FALSE -/// The healing effects on a carbon patient. Since we have extra details for dealing with bodyparts, we get our own fancy proc. Still returns TRUE on success and FALSE on fail -/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/patient, mob/user, brute, burn) - var/obj/item/bodypart/affecting = patient.get_bodypart(check_zone(user.zone_selected)) - if(!try_heal_checks(patient, user, brute, burn)) - return FALSE +/// The healing effects on a carbon patient. +/// Since we have extra details for dealing with bodyparts, we get our own fancy proc. +/// Still returns TRUE on success and FALSE on fail +/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/patient, mob/living/user, healed_zone) + var/obj/item/bodypart/affecting = patient.get_bodypart(healed_zone) user.visible_message( - span_infoplain(span_green("[user] applies [src] on [patient]'s [affecting.plaintext_zone].")), - span_infoplain(span_green("You apply [src] on [patient]'s [affecting.plaintext_zone].")) + span_green("[user] applies [src] on [patient]'s [affecting.plaintext_zone]."), + span_green("You apply [src] on [patient]'s [affecting.plaintext_zone]."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, ) var/previous_damage = affecting.get_damage() - if(affecting.heal_damage(brute, burn)) + if(affecting.heal_damage(heal_brute, heal_burn)) patient.update_damage_overlays() + if(stop_bleeding) + for(var/datum/wound/wound as anything in affecting.wounds) + if(wound.blood_flow) + wound.adjust_blood_flow(-1 * stop_bleeding * (user == patient ? 0.7 : 1)) + break // one at a time + affecting.adjustBleedStacks(-1 * stop_bleeding, 0) + if(flesh_regeneration || sanitization) + for(var/datum/wound/burn/flesh/wound as anything in affecting.wounds) + if(wound.can_be_ointmented_or_meshed()) + wound.flesh_healing += flesh_regeneration + wound.sanitization += sanitization + break // one at a time post_heal_effects(max(previous_damage - affecting.get_damage(), 0), patient, user) return TRUE -///Override this proc for special post heal effects. -/obj/item/stack/medical/proc/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user) +/// Healing a simple mob, just an adjustbruteloss call +/obj/item/stack/medical/proc/heal_simplemob(mob/living/patient, mob/living/user) + patient.adjustBruteLoss(-1 * (heal_brute * patient.maxHealth / 100)) + user.visible_message( + span_green("[user] applies [src] on [patient]."), + span_green("You apply [src] on [patient]."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + ) + return TRUE + +///Override this proc for special post heal effects. Only called for carbon patients. +/obj/item/stack/medical/proc/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/living/user) return /obj/item/stack/medical/bruise_pack @@ -239,47 +375,79 @@ SEND_SIGNAL(gauzed_bodypart, COMSIG_BODYPART_UNGAUZED, src) gauzed_bodypart = null -// gauze is only relevant for wounds, which are handled in the wounds themselves -/obj/item/stack/medical/gauze/try_heal(mob/living/patient, mob/user, silent, looping) - - var/treatment_delay = (user == patient ? self_delay : other_delay) +/obj/item/stack/medical/gauze/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + if(iscarbon(target)) + context[SCREENTIP_CONTEXT_LMB] = "Apply Gauze" + return CONTEXTUAL_SCREENTIP_SET + return NONE - var/obj/item/bodypart/limb = patient.get_bodypart(check_zone(user.zone_selected)) - if(!limb) - patient.balloon_alert(user, "missing limb!") - return +/obj/item/stack/medical/gauze/try_heal_checks(mob/living/patient, mob/living/user, healed_zone, silent = FALSE) + var/obj/item/bodypart/limb = patient.get_bodypart(healed_zone) + if(isnull(limb)) + if(!silent) + patient.balloon_alert(user, "no [parse_zone(healed_zone)]!") + return FALSE if(!LAZYLEN(limb.wounds)) - patient.balloon_alert(user, "no wounds!") // good problem to have imo - return - - var/gauzeable_wound = FALSE - var/datum/wound/woundies - for(var/i in limb.wounds) - woundies = i + if(!silent) + patient.balloon_alert(user, "no wounds!") // good problem to have imo + return FALSE + if(limb.current_gauze && (limb.current_gauze.absorption_capacity * 1.2 > absorption_capacity)) // ignore if our new wrap is < 20% better than the current one, so someone doesn't bandage it 5 times in a row + if(!silent) + patient.balloon_alert(user, pick("already bandaged!", "bandage is clean!")) // good enough + return FALSE + for(var/datum/wound/woundies as anything in limb.wounds) if(woundies.wound_flags & ACCEPTS_GAUZE) - gauzeable_wound = TRUE - break - if(!gauzeable_wound) - patient.balloon_alert(user, "can't heal those!") - return + return TRUE + if(!silent) + patient.balloon_alert(user, "can't gauze!") + return FALSE - if(limb.current_gauze && (limb.current_gauze.absorption_capacity * 1.2 > absorption_capacity)) // ignore if our new wrap is < 20% better than the current one, so someone doesn't bandage it 5 times in a row - patient.balloon_alert(user, pick("already bandaged!", "bandage is clean!")) // good enough - return +// gauze is only relevant for wounds, which are handled in the wounds themselves +/obj/item/stack/medical/gauze/try_heal(mob/living/patient, mob/living/user, silent, healed_zone, auto_change_zone) + var/obj/item/bodypart/limb = patient.get_bodypart(healed_zone) + var/treatment_delay = (user == patient ? self_delay : other_delay) + var/any_scanned = FALSE + for(var/datum/wound/woundies as anything in limb.wounds) + if(HAS_TRAIT(woundies, TRAIT_WOUND_SCANNED)) + any_scanned = TRUE + break - if(HAS_TRAIT(woundies, TRAIT_WOUND_SCANNED)) + if(any_scanned) treatment_delay *= 0.5 if(user == patient) - to_chat(user, span_notice("You keep in mind the indications from the holo-image about your injury, and expertly begin wrapping your wounds with [src].")) + if(!silent) + user.visible_message( + span_warning("[user] begins expertly wrapping the wounds on [p_their()]'s [limb.plaintext_zone] with [src]..."), + span_warning("You begin quickly wrapping the wounds on your [limb.plaintext_zone] with [src], keeping the holo-image indications in mind..."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + ) else - user.visible_message(span_warning("[user] begins expertly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), span_warning("You begin quickly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src], keeping the holo-image indications in mind...")) + if(!silent) + user.visible_message( + span_warning("[user] begins expertly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), + span_warning("You begin quickly wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src], keeping the holo-image indications in mind..."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + ) else - user.visible_message(span_warning("[user] begins wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), span_warning("You begin wrapping the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone] with [src]...")) + if(!silent) + user.visible_message( + span_warning("[user] begins wrapping the wounds on [patient]'s [limb.plaintext_zone] with [src]..."), + span_warning("You begin wrapping the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone] with [src]..."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + ) + + patient.balloon_alert(user, "wrapping [parse_zone(healed_zone)]...") if(!do_after(user, treatment_delay, target = patient)) return - user.visible_message(span_infoplain(span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone].")), span_infoplain(span_green("You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone]."))) + if(!silent) + patient.balloon_alert(user, "wrapped [parse_zone(healed_zone)]") + user.visible_message( + span_green("[user] applies [src] to [patient]'s [limb.plaintext_zone]."), + span_green("You bandage the wounds on [user == patient ? "your" : "[patient]'s"] [limb.plaintext_zone]."), + visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE, + ) limb.apply_gauze(src) /obj/item/stack/medical/gauze/twelve @@ -413,10 +581,11 @@ return ..() icon_state = "regen_mesh_closed" -/obj/item/stack/medical/mesh/try_heal(mob/living/patient, mob/user, silent = FALSE, looping) +/obj/item/stack/medical/mesh/try_heal_checks(mob/living/patient, mob/living/user, silent = FALSE) if(!is_open) - balloon_alert(user, "open it first!") - return + if(!silent) + balloon_alert(user, "open it first!") + return FALSE return ..() /obj/item/stack/medical/mesh/click_alt(mob/living/user) @@ -475,6 +644,10 @@ grind_results = list(/datum/reagent/consumable/aloejuice = 1) merge_type = /obj/item/stack/medical/aloe +/obj/item/stack/medical/aloe/Initialize(mapload, new_amount, merge, list/mat_override, mat_amt) + . = ..() + AddComponent(/datum/component/bakeable, /obj/item/food/badrecipe, rand(10 SECONDS, 15 SECONDS), FALSE) + /obj/item/stack/medical/aloe/fresh amount = 2 @@ -512,16 +685,14 @@ return BRUTELOSS patient.emote("scream") - for(var/i in patient.bodyparts) - var/obj/item/bodypart/bone = i // fine to just, use these raw, its a meme anyway + for(var/obj/item/bodypart/bone as anything in patient.bodyparts) + // fine to just, use these raw, its a meme anyway var/datum/wound/blunt/bone/severe/oof_ouch = new oof_ouch.apply_wound(bone, wound_source = "bone gel") var/datum/wound/blunt/bone/critical/oof_OUCH = new oof_OUCH.apply_wound(bone, wound_source = "bone gel") - - for(var/i in patient.bodyparts) - var/obj/item/bodypart/bone = i - bone.receive_damage(brute=60) + for(var/zone in GLOB.all_body_zones) + patient.apply_damage(60, BRUTE, zone) use(1) return BRUTELOSS @@ -531,7 +702,11 @@ /obj/item/stack/medical/poultice name = "mourning poultices" singular_name = "mourning poultice" - desc = "A type of primitive herbal poultice.\nWhile traditionally used to prepare corpses for the mourning feast, it can also treat scrapes and burns on the living, however, it is liable to cause shortness of breath when employed in this manner.\nIt is imbued with ancient wisdom." + desc = "A type of primitive herbal poultice.\n\ + While traditionally used to prepare corpses for the mourning feast, \ + it can also treat scrapes and burns on the living, however, \ + it is liable to cause shortness of breath when employed in this manner.\n\ + It is imbued with ancient wisdom." icon_state = "poultice" amount = 15 max_amount = 15 @@ -545,14 +720,9 @@ hitsound = 'sound/misc/moist_impact.ogg' merge_type = /obj/item/stack/medical/poultice -/obj/item/stack/medical/poultice/heal(mob/living/patient, mob/user) - if(iscarbon(patient)) - playsound(src, 'sound/misc/soggy.ogg', 30, TRUE) - return heal_carbon(patient, user, heal_brute, heal_burn) - return ..() - -/obj/item/stack/medical/poultice/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/user) +/obj/item/stack/medical/poultice/post_heal_effects(amount_healed, mob/living/carbon/healed_mob, mob/living/user) . = ..() + playsound(src, 'sound/misc/soggy.ogg', 30, TRUE) healed_mob.adjustOxyLoss(amount_healed) /obj/item/stack/medical/bandage diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 0d4393efea6a4..ef3ddb77c0e44 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -41,6 +41,8 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ merge_type = /obj/item/stack/sheet/mineral/sandstone walltype = /turf/closed/wall/mineral/sandstone material_type = /datum/material/sandstone + drop_sound = SFX_STONE_DROP + pickup_sound = SFX_STONE_PICKUP /obj/item/stack/sheet/mineral/sandstone/get_main_recipes() . = ..() diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index fd1529eb3301c..999fbd5608d2b 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -591,7 +591,7 @@ return FALSE if(is_cyborg) // No merging cyborg stacks into other stacks return FALSE - if(ismob(loc) && !inhand) // no merging with items that are on the mob + if(ismob(loc) && !inhand && !HAS_TRAIT(loc, TRAIT_MOB_MERGE_STACKS)) // no merging with items that are on the mob return FALSE if(istype(loc, /obj/machinery)) // no merging items in machines that aren't both in componentparts var/obj/machinery/machine = loc diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index d3d3e51490363..20ee0e69df6d7 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -336,6 +336,9 @@ /obj/item/stack/tile/carpet/fifty amount = 50 +/obj/item/stack/tile/iron/fifty + amount = 50 + /obj/item/stack/tile/carpet/black/fifty amount = 50 diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 3964ccf6f80ba..f7784b9d3b8a8 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -46,35 +46,9 @@ . = ..() atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL atom_storage.max_total_storage = 21 - atom_storage.set_holdable(list( - /obj/item/airlock_painter, - /obj/item/analyzer, - /obj/item/assembly/signaler, + atom_storage.set_holdable(GLOB.tool_items + list( /obj/item/clothing/gloves, - /obj/item/construction/rcd, - /obj/item/construction/rld, - /obj/item/construction/rtd, - /obj/item/crowbar, - /obj/item/extinguisher/mini, - /obj/item/flashlight, - /obj/item/forcefield_projector, - /obj/item/geiger_counter, - /obj/item/holosign_creator/atmos, - /obj/item/holosign_creator/engineering, - /obj/item/inducer, - /obj/item/lightreplacer, - /obj/item/multitool, - /obj/item/pipe_dispenser, - /obj/item/pipe_painter, - /obj/item/plunger, /obj/item/radio, - /obj/item/screwdriver, - /obj/item/stack/cable_coil, - /obj/item/t_scanner, - /obj/item/weldingtool, - /obj/item/wirecutters, - /obj/item/wrench, - /obj/item/spess_knife, /obj/item/melee/sickly_blade/lock, /obj/item/reagent_containers/cup/soda_cans, )) @@ -749,7 +723,7 @@ atom_storage.set_holdable(list( /obj/item/ammo_casing/strilka310, /obj/item/ammo_casing/shotgun, - /obj/item/ammo_casing/a357, + /obj/item/ammo_casing/c357, /obj/item/ammo_casing/junk, )) diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index a8ced4fdad48e..6ff9643702cb3 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -17,7 +17,7 @@ /obj/item/storage/box/survival/Initialize(mapload) . = ..() - if(crafted || !HAS_TRAIT(SSstation, STATION_TRAIT_PREMIUM_INTERNALS)) + if(crafted) //DOPPLER EDIT CHANGE - ORIGINAL: if(crafted || !HAS_TRAIT(SSstation, STATION_TRAIT_PREMIUM_INTERNALS)) return atom_storage.max_slots += 2 atom_storage.max_total_storage += 4 @@ -46,6 +46,11 @@ if(length(SSmapping.levels_by_trait(ZTRAIT_STATION)) > 1) new /obj/item/climbing_hook/emergency(src) + //DOPPLER EDIT ADDITION + new /obj/item/oxygen_candle(src) + new /obj/item/grenade/chem_grenade/budget_smart_metal(src) + //DOPPLER EDIT END + /obj/item/storage/box/survival/radio/PopulateContents() ..() // we want the survival stuff too. new /obj/item/radio/off(src) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 5f08747e60c92..0374b7a3744e7 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -23,6 +23,15 @@ var/latches = "single_latch" var/has_latches = TRUE wound_bonus = 5 + /// How many interactions are we currently performing + var/current_interactions = 0 + /// Items we should not interact with when left clicking + var/static/list/lmb_exception_typecache = typecacheof(list( + /obj/structure/table, + /obj/structure/rack, + /obj/structure/closet, + /obj/machinery/disposal, + )) /obj/item/storage/toolbox/Initialize(mapload) . = ..() @@ -32,11 +41,79 @@ latches = "double_latch" if(prob(1)) latches = "triple_latch" + if(prob(0.1)) + latches = "quad_latch" // like winning the lottery, but worse update_appearance() atom_storage.open_sound = 'sound/items/handling/toolbox/toolbox_open.ogg' atom_storage.rustle_sound = 'sound/items/handling/toolbox/toolbox_rustle.ogg' AddElement(/datum/element/falling_hazard, damage = force, wound_bonus = wound_bonus, hardhat_safety = TRUE, crushes = FALSE, impact_sound = hitsound) +/obj/item/storage/toolbox/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + if (user.combat_mode || !user.has_hand_for_held_index(user.get_inactive_hand_index())) + return NONE + + if (is_type_in_typecache(interacting_with, lmb_exception_typecache) && !LAZYACCESS(modifiers, RIGHT_CLICK)) + return NONE + + if (current_interactions) + var/obj/item/other_tool = user.get_inactive_held_item() + if (!istype(other_tool)) // what even + return NONE + INVOKE_ASYNC(src, PROC_REF(use_tool_on), interacting_with, user, modifiers, other_tool) + return ITEM_INTERACT_SUCCESS + + if (user.get_inactive_held_item()) + user.balloon_alert(user, "hands busy!") + return ITEM_INTERACT_BLOCKING + + var/list/item_radial = list() + for (var/obj/item/tool in atom_storage.real_location) + if(is_type_in_list(tool, GLOB.tool_items)) + item_radial[tool] = tool.appearance + + if (!length(item_radial)) + return NONE + + playsound(user, 'sound/items/handling/toolbox/toolbox_open.ogg', 50) + var/obj/item/picked_item = show_radial_menu(user, interacting_with, item_radial, require_near = TRUE) + if (!picked_item) + return ITEM_INTERACT_BLOCKING + + playsound(user, 'sound/items/handling/toolbox/toolbox_rustle.ogg', 50) + if (!user.put_in_inactive_hand(picked_item)) + return ITEM_INTERACT_BLOCKING + + atom_storage.animate_parent() + if (istype(picked_item, /obj/item/weldingtool)) + var/obj/item/weldingtool/welder = picked_item + if (!welder.welding) + welder.attack_self(user) + + if (istype(picked_item, /obj/item/spess_knife)) + picked_item.attack_self(user) + + INVOKE_ASYNC(src, PROC_REF(use_tool_on), interacting_with, user, modifiers, picked_item) + return ITEM_INTERACT_SUCCESS + +/obj/item/storage/toolbox/proc/use_tool_on(atom/interacting_with, mob/living/user, list/modifiers, obj/item/picked_tool) + current_interactions += 1 + picked_tool.melee_attack_chain(user, interacting_with, list2params(modifiers)) + current_interactions -= 1 + + if (QDELETED(picked_tool) || picked_tool.loc != user || !user.CanReach(picked_tool)) + current_interactions = 0 + return + + if (current_interactions) + return + + if (istype(picked_tool, /obj/item/weldingtool)) + var/obj/item/weldingtool/welder = picked_tool + if (welder.welding) + welder.attack_self(user) + + atom_storage.attempt_insert(picked_tool, user) + /obj/item/storage/toolbox/update_overlays() . = ..() if(has_latches) @@ -107,6 +184,12 @@ /obj/item/storage/toolbox/mechanical/old/heirloom/PopulateContents() return +// version of below that isn't a traitor item +/obj/item/storage/toolbox/mechanical/old/cleaner + name = "old blue toolbox" + icon_state = "oldtoolboxclean" + icon_state = "toolbox_blue_old" + /obj/item/storage/toolbox/mechanical/old/clean // the assistant traitor toolbox, damage scales with TC inside name = "toolbox" desc = "An old, blue toolbox, it looks robust." @@ -225,6 +308,51 @@ new /obj/item/stack/pipe_cleaner_coil/white(src) new /obj/item/stack/pipe_cleaner_coil/brown(src) +/obj/item/storage/toolbox/medical + name = "medical toolbox" + desc = "A toolbox painted soft white and light blue. This is getting ridiculous." + icon_state = "medical" + inhand_icon_state = "toolbox_medical" + attack_verb_continuous = list("treats", "surgeries", "tends", "tends wounds on") + attack_verb_simple = list("treat", "surgery", "tend", "tend wounds on") + w_class = WEIGHT_CLASS_BULKY + material_flags = NONE + force = 5 // its for healing + wound_bonus = 25 // wounds are medical right? + /// Tray we steal the og contents from. + var/obj/item/surgery_tray/tray_type = /obj/item/surgery_tray + +/obj/item/storage/toolbox/medical/Initialize(mapload) + . = ..() + // what do any of these numbers fucking mean + atom_storage.max_total_storage = 20 + atom_storage.max_slots = 11 + +/obj/item/storage/toolbox/medical/PopulateContents() + var/atom/fake_tray = new tray_type(get_turf(src)) // not in src lest it fill storage that we need for its tools later + for(var/atom/movable/thingy in fake_tray) + thingy.forceMove(src) + qdel(fake_tray) + +/obj/item/storage/toolbox/medical/full + tray_type = /obj/item/surgery_tray/full + +/obj/item/storage/toolbox/medical/coroner + name = "coroner toolbox" + desc = "A toolbox painted soft white and dark grey. This is getting beyond ridiculous." + icon_state = "coroner" + inhand_icon_state = "toolbox_coroner" + attack_verb_continuous = list("dissects", "autopsies", "corones") + attack_verb_simple = list("dissect", "autopsy", "corone") + w_class = WEIGHT_CLASS_BULKY + material_flags = NONE + force = 17 // it's not for healing + tray_type = /obj/item/surgery_tray/full/morgue + +/obj/item/storage/toolbox/medical/coroner/Initialize(mapload) + . = ..() + AddElement(/datum/element/bane, mob_biotypes = MOB_UNDEAD, damage_multiplier = 1) //Just in case one of the tennants get uppity + /obj/item/storage/toolbox/ammobox name = "ammo canister" desc = "A metal canister designed to hold ammunition" @@ -273,9 +401,9 @@ new /obj/item/gun_maintenance_supplies(src) new /obj/item/gun_maintenance_supplies(src) -//floorbot assembly +//repairbot assembly /obj/item/storage/toolbox/tool_act(mob/living/user, obj/item/tool, list/modifiers) - if(!istype(tool, /obj/item/stack/tile/iron)) + if(!istype(tool, /obj/item/assembly/prox_sensor)) return ..() var/static/list/allowed_toolbox = list( /obj/item/storage/toolbox/artistic, @@ -290,26 +418,22 @@ if(contents.len >= 1) balloon_alert(user, "not empty!") return ITEM_INTERACT_BLOCKING - if(tool.use(10)) - var/obj/item/bot_assembly/floorbot/B = new - B.toolbox = type - switch(B.toolbox) - if(/obj/item/storage/toolbox) - B.toolbox_color = "r" - if(/obj/item/storage/toolbox/emergency) - B.toolbox_color = "r" - if(/obj/item/storage/toolbox/electrical) - B.toolbox_color = "y" - if(/obj/item/storage/toolbox/artistic) - B.toolbox_color = "g" - if(/obj/item/storage/toolbox/syndicate) - B.toolbox_color = "s" - user.put_in_hands(B) - B.update_appearance() - B.balloon_alert(user, "tiles added") - qdel(src) - return ITEM_INTERACT_BLOCKING - balloon_alert(user, "needs 10 tiles!") + var/static/list/toolbox_colors = list( + /obj/item/storage/toolbox = "#445eb3", + /obj/item/storage/toolbox/emergency = "#445eb3", + /obj/item/storage/toolbox/electrical = "#b77931", + /obj/item/storage/toolbox/artistic = "#378752", + /obj/item/storage/toolbox/syndicate = "#3d3d3d", + ) + var/obj/item/bot_assembly/repairbot/repair = new + repair.toolbox = type + var/new_color = toolbox_colors[type] || "#445eb3" + repair.set_color(new_color) + user.put_in_hands(repair) + repair.update_appearance() + repair.balloon_alert(user, "sensor added!") + qdel(tool) + qdel(src) return ITEM_INTERACT_SUCCESS /obj/item/storage/toolbox/haunted diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 9e5ae3ba74b1c..d945a3fd711db 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -461,7 +461,7 @@ /obj/item/storage/box/syndie_kit/chemical/Initialize(mapload) . = ..() - atom_storage.max_slots = 14 + atom_storage.max_slots = 15 /obj/item/storage/box/syndie_kit/chemical/PopulateContents() new /obj/item/reagent_containers/cup/bottle/polonium(src) @@ -469,6 +469,7 @@ new /obj/item/reagent_containers/cup/bottle/fentanyl(src) new /obj/item/reagent_containers/cup/bottle/formaldehyde(src) new /obj/item/reagent_containers/cup/bottle/spewium(src) + new /obj/item/reagent_containers/cup/bottle/syndol(src) new /obj/item/reagent_containers/cup/bottle/cyanide(src) new /obj/item/reagent_containers/cup/bottle/histamine(src) new /obj/item/reagent_containers/cup/bottle/initropidril(src) @@ -570,6 +571,11 @@ new /obj/item/book/granter/action/spell/mime/mimery_blockade(src) new /obj/item/book/granter/action/spell/mime/mimery_guns(src) +/obj/item/storage/box/syndie_kit/moltobeso/PopulateContents() + new /obj/item/reagent_containers/cup/bottle/moltobeso(src) + new /obj/item/reagent_containers/syringe(src) + new /obj/item/reagent_containers/dropper(src) + /obj/item/storage/box/syndie_kit/combat_baking/PopulateContents() new /obj/item/food/baguette/combat(src) for(var/i in 1 to 2) diff --git a/code/game/objects/items/surgery_tray.dm b/code/game/objects/items/surgery_tray.dm index 4e84bd3ac3559..9485be4c3585e 100644 --- a/code/game/objects/items/surgery_tray.dm +++ b/code/game/objects/items/surgery_tray.dm @@ -1,3 +1,4 @@ + /** * Surgery Trays * A storage object that displays tools in its contents based on tier, better tools are more visible. @@ -16,11 +17,17 @@ /// If true we're currently portable var/is_portable = TRUE + /// List of contents to populate with in populatecontents() + var/list/starting_items = list() + /// Fills the tray with items it should contain on creation /obj/item/surgery_tray/proc/populate_contents() + for(var/obj in starting_items) + new obj(src) + update_appearance(UPDATE_ICON) return -/obj/item/surgery_tray/Initialize(mapload) +/obj/item/surgery_tray/Initialize(mapload, effect_spawner = FALSE) . = ..() AddElement(/datum/element/drag_pickup) create_storage(storage_type = /datum/storage/surgery_tray) @@ -159,57 +166,100 @@ is_portable = FALSE /obj/item/surgery_tray/full + starting_items = list( + /obj/item/blood_filter, + /obj/item/bonesetter, + /obj/item/cautery, + /obj/item/circular_saw, + /obj/item/clothing/mask/surgical, + /obj/item/hemostat, + /obj/item/razor/surgery, + /obj/item/retractor, + /obj/item/scalpel, + /obj/item/stack/medical/bone_gel, + /obj/item/stack/sticky_tape/surgical, + /obj/item/surgical_drapes, + /obj/item/surgicaldrill, + ) /obj/item/surgery_tray/full/deployed is_portable = FALSE -/obj/item/surgery_tray/full/populate_contents() - new /obj/item/blood_filter(src) - new /obj/item/bonesetter(src) - new /obj/item/cautery(src) - new /obj/item/circular_saw(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/hemostat(src) - new /obj/item/razor/surgery(src) - new /obj/item/retractor(src) - new /obj/item/scalpel(src) - new /obj/item/stack/medical/bone_gel(src) - new /obj/item/stack/sticky_tape/surgical(src) - new /obj/item/surgical_drapes(src) - new /obj/item/surgicaldrill(src) - update_appearance(UPDATE_OVERLAYS) - /obj/item/surgery_tray/full/morgue name = "autopsy tray" desc = "A Deforest brand surgery tray, made for use in morgues. It is a folding model, \ meaning the wheels on the bottom can be extended outwards, making it a cart." + starting_items = list( + /obj/item/blood_filter, + /obj/item/bonesetter, + /obj/item/cautery/cruel, + /obj/item/circular_saw, + /obj/item/clothing/mask/surgical, + /obj/item/hemostat/cruel, + /obj/item/razor/surgery, + /obj/item/retractor/cruel, + /obj/item/scalpel/cruel, + /obj/item/stack/medical/bone_gel, + /obj/item/stack/sticky_tape/surgical, + /obj/item/surgical_drapes, + /obj/item/surgicaldrill, + ) -/obj/item/surgery_tray/full/morgue/populate_contents() - new /obj/item/blood_filter(src) - new /obj/item/bonesetter(src) - new /obj/item/cautery/cruel(src) - new /obj/item/circular_saw(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/hemostat/cruel(src) - new /obj/item/razor/surgery(src) - new /obj/item/retractor/cruel(src) - new /obj/item/scalpel/cruel(src) - new /obj/item/stack/medical/bone_gel(src) - new /obj/item/stack/sticky_tape/surgical(src) - new /obj/item/surgical_drapes(src) - new /obj/item/surgicaldrill(src) +/obj/item/surgery_tray/full/morgue/deployed + is_portable = FALSE /// Surgery tray with advanced tools for debug /obj/item/surgery_tray/full/advanced + starting_items = list( + /obj/item/scalpel/advanced, + /obj/item/retractor/advanced, + /obj/item/cautery/advanced, + /obj/item/surgical_drapes, + /obj/item/reagent_containers/medigel/sterilizine, + /obj/item/bonesetter, + /obj/item/blood_filter, + /obj/item/stack/medical/bone_gel, + /obj/item/stack/sticky_tape/surgical, + /obj/item/clothing/mask/surgical, + ) + +/obj/effect/spawner/surgery_tray + name = "surgery tray spawner" + icon = 'icons/obj/medical/medicart.dmi' + icon_state = "tray" + /// Tray to usually spawn in. + var/tray_to_spawn = /obj/item/surgery_tray + /// Toolbox to sometimes replace the above tray with. + var/rare_toolbox_replacement = /obj/item/storage/toolbox/medical + /// Chance for replacement + var/toolbox_chance = 1 + +/obj/effect/spawner/surgery_tray/Initialize(mapload) + . = ..() + if(prob(toolbox_chance)) + new rare_toolbox_replacement(loc) + return + new tray_to_spawn(loc, TRUE) + +/obj/effect/spawner/surgery_tray/full + name = "full surgery tray spawner" + icon_state = "tray" + tray_to_spawn = /obj/item/surgery_tray/full + rare_toolbox_replacement = /obj/item/storage/toolbox/medical/full + +/obj/effect/spawner/surgery_tray/full/deployed + name = "full deployed tray spawner" + icon_state = "medicart" + tray_to_spawn = /obj/item/surgery_tray/full + +/obj/effect/spawner/surgery_tray/full/morgue + name = "full autopsy tray spawner" + icon_state = "tray" + tray_to_spawn = /obj/item/surgery_tray/full/morgue + rare_toolbox_replacement = /obj/item/storage/toolbox/medical/coroner + toolbox_chance = 3 // tray is rarer, so toolbox is more common -/obj/item/surgery_tray/full/advanced/populate_contents() - new /obj/item/scalpel/advanced(src) - new /obj/item/retractor/advanced(src) - new /obj/item/cautery/advanced(src) - new /obj/item/surgical_drapes(src) - new /obj/item/reagent_containers/medigel/sterilizine(src) - new /obj/item/bonesetter(src) - new /obj/item/blood_filter(src) - new /obj/item/stack/medical/bone_gel(src) - new /obj/item/stack/sticky_tape/surgical(src) - new /obj/item/clothing/mask/surgical(src) +/obj/effect/spawner/surgery_tray/full/morgue/deployed + name = "full deployed autopsy tray spawner" + icon_state = "medicart" + tray_to_spawn = /obj/item/surgery_tray/full/morgue/deployed diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 6976c936b665f..674e50caade0a 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -53,6 +53,7 @@ COMSIG_JETPACK_DEACTIVATED, \ JETPACK_ACTIVATION_FAILED, \ thrust_callback, \ + thrust_callback, \ /datum/effect_system/trail_follow/ion, \ ) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 1c23937d2b589..eba0bc82054d2 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -290,6 +290,9 @@ /obj/item/extinguisher/mini/nozzle/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(AttemptRefill(interacting_with, user)) return NONE + return ..() + +/obj/item/extinguisher/mini/nozzle/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(nozzle_mode == EXTINGUISHER) return ..() diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index b98ace86cf006..38ca59038f04a 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -50,7 +50,7 @@ usesound = 'sound/items/weapons/sonic_jackhammer.ogg' custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT) icon_state = "crowbar" - belt_icon_state = "crowbar_alien" + inside_belt_icon_state = "crowbar_alien" toolspeed = 0.1 /obj/item/crowbar/large @@ -80,7 +80,7 @@ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' inhand_icon_state = "clawhammer" - belt_icon_state = "clawhammer" + inside_belt_icon_state = "clawhammer" throwforce = 10 throw_range = 5 throw_speed = 3 @@ -88,7 +88,7 @@ custom_materials = list(/datum/material/wood=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/iron=SMALL_MATERIAL_AMOUNT*0.7) wound_bonus = 35 -/obj/item/crowbar/large/heavy //from space ruin +/obj/item/crowbar/large/twenty_force //from space ruin name = "heavy crowbar" desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big. It feels oddly heavy.." force = 20 diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 8cf9005d19137..cb6411e7e8c09 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -5,7 +5,7 @@ icon_state = "screwdriver_map" inhand_icon_state = "screwdriver" worn_icon_state = "screwdriver" - belt_icon_state = "screwdriver" + inside_belt_icon_state = "screwdriver" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' flags_1 = IS_PLAYER_COLORABLE_1 @@ -81,7 +81,7 @@ name = "hand drill" desc = "A simple powered hand drill." icon_state = "drill" - belt_icon_state = null + inside_belt_icon_state = null inhand_icon_state = "drill" worn_icon_state = "drill" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' diff --git a/code/game/objects/items/tools/spess_knife.dm b/code/game/objects/items/tools/spess_knife.dm index 4019aa41c701d..3550f4df5aeda 100644 --- a/code/game/objects/items/tools/spess_knife.dm +++ b/code/game/objects/items/tools/spess_knife.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/tools.dmi' icon_state = "spess_knife" worn_icon_state = "spess_knife" - belt_icon_state = "spess_knife" + inside_belt_icon_state = "spess_knife" inhand_icon_state = "spess_knife" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 41bcc25eba652..e48a19743c137 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -234,7 +234,7 @@ // /Switches the welder on /obj/item/weldingtool/proc/switched_on(mob/user) if(!status) - to_chat(user, span_warning("[src] can't be turned on while unsecured!")) + balloon_alert(user, "unsecured!") return set_welding(!welding) if(welding) diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 41b4556ebace5..564403acf0ec3 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -42,7 +42,7 @@ name = "alien wrench" desc = "A polarized wrench. It causes anything placed between the jaws to turn." icon = 'icons/obj/antags/abductor.dmi' - belt_icon_state = "wrench_alien" + inside_belt_icon_state = "wrench_alien" custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT) usesound = 'sound/effects/empulse.ogg' toolspeed = 0.1 @@ -96,7 +96,7 @@ desc = "It's like a normal wrench but edgier. Can be found on the battlefield." icon_state = "wrench_combat" inhand_icon_state = "wrench_combat" - belt_icon_state = "wrench_combat" + inside_belt_icon_state = "wrench_combat" attack_verb_continuous = list("devastates", "brutalizes", "commits a war crime against", "obliterates", "humiliates") attack_verb_simple = list("devastate", "brutalize", "commit a war crime against", "obliterate", "humiliate") tool_behaviour = null diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index fa3aadbae95cf..a731772b0902c 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -64,7 +64,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/balloon_mallet/examine(mob/user) . = ..() if(HAS_TRAIT(user,TRAIT_BALLOON_SUTRA)) - . = "A sacred weapon of the higher castes from the clown planet, used to strike fear into the hearts of their foes. Wield it with care." + . += "A sacred weapon of the higher castes from the clown planet, used to strike fear into the hearts of their foes. Wield it with care." /obj/item/balloon_mallet/attack(mob/living/target, mob/living/user) playsound(loc, 'sound/mobs/non-humanoids/clown/hehe.ogg', 20) @@ -297,19 +297,19 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 new_name = "triple-notched claymore" add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY) if(4) - to_chat(user, span_notice("You've lost count of how many you've killed.")) + to_chat(user, span_notice("You've lost count of how many you've killed.")) new_name = "many-notched claymore" add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY) if(5) - to_chat(user, span_boldannounce("Five voices now echo in your mind, cheering the slaughter.")) + to_chat(user, span_bolddanger("Five voices now echo in your mind, cheering the slaughter.")) new_name = "battle-tested claymore" add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY) if(6) - to_chat(user, span_boldannounce("Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.")) + to_chat(user, span_bolddanger("Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.")) new_name = "battle-scarred claymore" add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY) if(7) - to_chat(user, span_boldannounce("Kill. Butcher. Conquer.")) + to_chat(user, span_bolddanger("Kill. Butcher. Conquer.")) new_name = "vicious claymore" add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY) if(8) @@ -432,6 +432,44 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 pain_mult = 0 jostle_pain_mult = 0 +/obj/item/carpenter_hammer + name = "carpenter hammer" + icon = 'icons/obj/weapons/hammer.dmi' + icon_state = "carpenter_hammer" + inhand_icon_state = "carpenter_hammer" + worn_icon_state = "clawhammer" //plaecholder + lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' + desc = "Uncanny looking hammer." + force = 20 + throwforce = 20 + throw_range = 4 + w_class = WEIGHT_CLASS_NORMAL + wound_bonus = 20 + demolition_mod = 1.25 + slot_flags = ITEM_SLOT_BELT + +/obj/item/carpenter_hammer/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_killsound, \ + allowed_mobs = list(/mob/living/carbon/human), \ + killsound = 'sound/items/weapons/hammer_death_scream.ogg', \ + replace_default_death_sound = TRUE, \ + ) + +/obj/item/carpenter_hammer/examine(mob/user) + . = ..() + . += "" + . += "Real World Tip:" + . += pick( + "Every building, from hospitals to homes, has a room that serves as the heart of the building \ + and carries blood and nutrients to its extremities. Try to find the heart of your home!", + "All the food you've tried is rotten. You've never eaten fresh food.", + "Viruses do not exist. Illness is simply your body punishing you for what you have done wrong.", + "Space stations must have at least 50 mammalian teeth embedded in the north walls for structural safety reasons.", + "Queen dragonfly sleeps and smiles.", + ) + /obj/item/switchblade name = "switchblade" icon = 'icons/obj/weapons/sword.dmi' diff --git a/code/game/objects/items_reskin.dm b/code/game/objects/items_reskin.dm index f8bffa7bf5f63..b73df0a487b72 100644 --- a/code/game/objects/items_reskin.dm +++ b/code/game/objects/items_reskin.dm @@ -64,6 +64,8 @@ return current_skin = pick icon_state = unique_reskin[pick] + if (unique_reskin_changes_inhand) + inhand_icon_state = icon_state to_chat(user, "[src] is now skinned as '[pick].'") SEND_SIGNAL(src, COMSIG_OBJ_RESKIN, user, pick) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 77f670bf9fc92..45bc7f9110636 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -1,7 +1,11 @@ -/obj/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) +/obj/hitby(atom/movable/hit_by, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) ..() - take_damage(AM.throwforce, BRUTE, MELEE, 1, get_dir(src, AM)) + var/damage_taken = hit_by.throwforce + if(isitem(hit_by)) + var/obj/item/as_item = hit_by + damage_taken *= as_item.demolition_mod + take_damage(damage_taken, BRUTE, MELEE, 1, get_dir(src, hit_by)) /obj/ex_act(severity, target) if(resistance_flags & INDESTRUCTIBLE) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 7c8173fae3653..91991bec3a774 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -206,10 +206,10 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag) SHOULD_CALL_PARENT(FALSE) CRASH("Unimplemented.") -/obj/handle_ricochet(obj/projectile/P) +/obj/handle_ricochet(obj/projectile/proj) . = ..() if(. && receive_ricochet_damage_coeff) - take_damage(P.damage * receive_ricochet_damage_coeff, P.damage_type, P.armor_flag, 0, REVERSE_DIR(P.dir), P.armour_penetration) // pass along receive_ricochet_damage_coeff damage to the structure for the ricochet + take_damage(proj.damage * receive_ricochet_damage_coeff, proj.damage_type, proj.armor_flag, 0, REVERSE_DIR(proj.dir), proj.armour_penetration) // pass along receive_ricochet_damage_coeff damage to the structure for the ricochet /// Handles exposing an object to reagents. /obj/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE) @@ -218,9 +218,9 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag) return SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_OBJ, src, reagents, methods, volume_modifier, show_message) - for(var/reagent in reagents) - var/datum/reagent/R = reagent - . |= R.expose_obj(src, reagents[R]) + for(var/datum/reagent/reagent as anything in reagents) + var/reac_volume = reagents[reagent] + . |= reagent.expose_obj(src, reac_volume, methods, show_message) /// Attempt to freeze this obj if possible. returns TRUE if it succeeded, FALSE otherwise. /obj/proc/freeze() diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 50d06bafef0fd..38aadbb266229 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -271,11 +271,16 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool, 0) return if(!item_chair || has_buckled_mobs()) return + if(flags_1 & HOLOGRAM_1) + to_chat(user, span_notice("You try to pick up \the [src], but it fades away!")) + qdel(src) + return + user.visible_message(span_notice("[user] grabs \the [src.name]."), span_notice("You grab \the [src.name].")) - var/obj/item/C = new item_chair(loc) - C.set_custom_materials(custom_materials) - TransferComponents(C) - user.put_in_hands(C) + var/obj/item/chair_item = new item_chair(loc) + chair_item.set_custom_materials(custom_materials) + TransferComponents(chair_item) + user.put_in_hands(chair_item) qdel(src) /obj/structure/chair/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) @@ -344,6 +349,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0) if(isgroundlessturf(T)) to_chat(user, span_warning("You need ground to plant this on!")) return + if(flags_1 & HOLOGRAM_1) + to_chat(user, span_notice("You try to place down \the [src], but it fades away!")) + qdel(src) + return + for(var/obj/A in T) if(istype(A, /obj/structure/chair)) to_chat(user, span_warning("There is already a chair here!")) @@ -353,10 +363,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0) return user.visible_message(span_notice("[user] rights \the [src.name]."), span_notice("You right \the [name].")) - var/obj/structure/chair/C = new origin_type(get_turf(loc)) - C.set_custom_materials(custom_materials) - TransferComponents(C) - C.setDir(user.dir) + var/obj/structure/chair/chair = new origin_type(get_turf(loc)) + chair.set_custom_materials(custom_materials) + TransferComponents(chair) + chair.setDir(user.dir) qdel(src) /obj/item/chair/proc/smash(mob/living/user) diff --git a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm index f0fa9e27d7869..fa49fe0a106d5 100644 --- a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm +++ b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm @@ -22,7 +22,7 @@ ///Accepted "ammo" type var/obj/item/ammo_type = /obj/item/ammo_casing/strilka310 ///Projectile from said gun. Doesnt automatically inherit said ammo's projectile in case you wanted to make a gun that shoots floor tiles or something. - var/obj/item/projectile_type = /obj/projectile/bullet/strilka310 + var/obj/projectile/projectile_type = /obj/projectile/bullet/strilka310 ///If the gun has anything in it. var/loaded_gun = TRUE ///If the gun is currently loaded with its maximum capacity. diff --git a/code/game/objects/structures/construction_console/construction_actions.dm b/code/game/objects/structures/construction_console/construction_actions.dm index b3a4e309ffa96..cce7d2ee51628 100644 --- a/code/game/objects/structures/construction_console/construction_actions.dm +++ b/code/game/objects/structures/construction_console/construction_actions.dm @@ -5,7 +5,7 @@ /datum/action/innate/construction button_icon = 'icons/mob/actions/actions_construction.dmi' ///Console's eye mob - var/mob/eye/ai_eye/remote/base_construction/remote_eye + var/mob/eye/camera/remote/base_construction/remote_eye ///Console itself var/obj/machinery/computer/camera_advanced/base_construction/base_console ///Is this used to build only on the station z level? diff --git a/code/game/objects/structures/construction_console/construction_console.dm b/code/game/objects/structures/construction_console/construction_console.dm index 97b83acccae06..69275d0e95133 100644 --- a/code/game/objects/structures/construction_console/construction_console.dm +++ b/code/game/objects/structures/construction_console/construction_console.dm @@ -1,7 +1,7 @@ /** * Camera console used to control a base building drone * - * Using this console will put the user in control of a [base building drone][/mob/eye/ai_eye/remote/base_construction]. + * Using this console will put the user in control of a [base building drone][/mob/eye/camera/remote/base_construction]. * The drone will appear somewhere within the allowed_area var, or if no area is specified, at the location of the console.area * Upon interacting, the user will be granted a set of base building actions that will generally be carried out at the drone's location. * To create a new base builder system, this class should be the only thing that needs to be subtyped. @@ -61,8 +61,7 @@ var/turf/spawn_spot = find_spawn_spot() if (!spawn_spot) return FALSE - eyeobj = new /mob/eye/ai_eye/remote/base_construction(spawn_spot, src) - eyeobj.origin = src + eyeobj = new /mob/eye/camera/remote/base_construction(spawn_spot, src) return TRUE /obj/machinery/computer/camera_advanced/base_construction/attackby(obj/item/W, mob/user, params) @@ -95,7 +94,7 @@ * The mob is constrained to a given area defined by the base construction console. * */ -/mob/eye/ai_eye/remote/base_construction +/mob/eye/camera/remote/base_construction name = "construction holo-drone" //Allows any curious crew to watch the base after it leaves. (This is safe as the base cannot be modified once it leaves) move_on_shuttle = TRUE @@ -105,20 +104,20 @@ ///Reference to the camera console controlling this drone var/obj/machinery/computer/camera_advanced/base_construction/linked_console -/mob/eye/ai_eye/remote/base_construction/Initialize(mapload, obj/machinery/computer/camera_advanced/console_link) +/mob/eye/camera/remote/base_construction/Initialize(mapload, obj/machinery/computer/camera_advanced/console_link) linked_console = console_link if(!linked_console) stack_trace("A base consturuction drone was created with no linked console") return INITIALIZE_HINT_QDEL return ..() -/mob/eye/ai_eye/remote/base_construction/setLoc(turf/destination, force_update = FALSE) +/mob/eye/camera/remote/base_construction/setLoc(turf/destination, force_update = FALSE) var/area/curr_area = get_area(destination) //Only move if we're in the allowed area. If no allowed area is defined, then we're free to move wherever. if(!linked_console.allowed_area || istype(curr_area, linked_console.allowed_area)) return ..() -/mob/eye/ai_eye/remote/base_construction/relaymove(mob/living/user, direction) +/mob/eye/camera/remote/base_construction/relaymove(mob/living/user, direction) //This camera eye is visible, and as such needs to keep its dir updated dir = direction return ..() diff --git a/code/game/objects/structures/containers.dm b/code/game/objects/structures/containers.dm index bf56f7850f82d..965d74ae94d09 100644 --- a/code/game/objects/structures/containers.dm +++ b/code/game/objects/structures/containers.dm @@ -2,7 +2,7 @@ name = "shipping container" desc = "A standard-measure shipping container for bulk transport of goods. This one is blank, offering no clue as to its contents." icon = 'icons/obj/fluff/containers.dmi' - icon_state = "container_blank" + icon_state = "blank" max_integrity = 1000 bound_width = 96 bound_height = 32 @@ -16,19 +16,40 @@ AddComponent(/datum/component/seethrough, SEE_THROUGH_MAP_SHIPPING_CONTAINER) +/obj/structure/shipping_container/amsco + name = "\improper AMSCO shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Amundsen-Scott, and so is probably carrying prospecting gear." + icon_state = "amsco" + +/obj/structure/shipping_container/blue + icon_state = "blue" + /obj/structure/shipping_container/conarex name = "\improper Conarex Aeronautics shipping container" desc = "A standard-measure shipping container for bulk transport of goods. This one is from Conarex Aeronautics, and is probably carrying spacecraft parts (or a bribery scandal) as a result." icon_state = "conarex" +/obj/structure/shipping_container/defaced + name = "defaced shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one's covered in tasteful graffiti." + icon_state = "defaced" + /obj/structure/shipping_container/deforest - name = "\improper DeForest Medical Corp. shipping container" - desc = "A standard-measure shipping container for bulk transport of goods. This one is from DeForest, and so is probably carrying medical supplies." + name = "\improper Nanotrasen-DeForest shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Nanotrasen-DeForest, and so is probably carrying medical supplies." icon_state = "deforest" +/obj/structure/shipping_container/great_northern + name = "\improper Great Northern shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Great Northern, and is probably carrying farming equipment." + icon_state = "great_northern" + +/obj/structure/shipping_container/green + icon_state = "green" + /obj/structure/shipping_container/kahraman name = "\improper Kahraman Heavy Industry shipping container" - desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kahraman, and is reinforced for carrying ore." + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kahraman, and is reinforced for carrying mining equipment." icon_state = "kahraman" /obj/structure/shipping_container/kahraman/alt @@ -36,13 +57,11 @@ /obj/structure/shipping_container/kosmologistika name = "\improper Kosmologistika shipping container" - desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kosmologistika, the logistics company owned and operated by the SSC." + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Kosmologistika, the state logistics company owned and operated by the SSC." icon_state = "kosmologistika" -/obj/structure/shipping_container/interdyne - name = "\improper Interdyne shipping container" - desc = "A standard-measure shipping container for bulk transport of goods. This one is from Interdyne, a private pharmaceutical company. Probably carrying medical or research supplies, probably." - icon_state = "interdyne" +/obj/structure/shipping_container/magenta + icon_state = "magenta" /obj/structure/shipping_container/nakamura name = "\improper Nakamura Engineering shipping container" @@ -54,27 +73,86 @@ desc = "A standard-measure shipping container for bulk transport of goods. This one prominently features Nanotrasen's logo, and so presumably could be carrying anything." icon_state = "nanotrasen" +/obj/structure/shipping_container/ntfid + name = "\improper Nanotrasen Futures and Innovation shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from NTFID: Nanotrasen's research and development subdivision." + icon_state = "ntfid" + +/obj/structure/shipping_container/ntfid/defaced + desc = "A standard-measure shipping container for bulk transport of goods. Someone clearly has a bone to pick with NTFID." + icon_state = "ntfid_defaced" + /obj/structure/shipping_container/nthi name = "\improper Nanotrasen Heavy Industries shipping container" - desc = "A standard-measure shipping container for bulk transport of goods. This one is from NTHI: Nanotrasen's mining and refining subdivision." + desc = "A standard-measure shipping container for bulk transport of common metals and minerals. This one is from NTHI: Nanotrasen's mining and refining subdivision." icon_state = "nthi" +/obj/structure/shipping_container/nthi/minor + desc = "A standard-measure shipping container for bulk transport of rare metals and minerals. This one is from NTHI: Nanotrasen's mining and refining subdivision." + icon_state = "nthi_minor" + +/obj/structure/shipping_container/nthi/precious + desc = "A standard-measure shipping container for bulk transport of precious metals and minerals. This one is from NTHI: Nanotrasen's mining and refining subdivision." + icon_state = "nthi_precious" + +/obj/structure/shipping_container/orange + icon_state = "orange" + +/obj/structure/shipping_container/purple + icon_state = "purple" + +/obj/structure/shipping_container/red + icon_state = "red" + +/obj/structure/shipping_container/sunda + name = "\improper Sunda Galaksi shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Sunda Galaksi, and could be carrying just about anything." + icon_state = "sunda" + /obj/structure/shipping_container/vitezstvi name = "\improper Vítězství Arms shipping container" desc = "A standard-measure shipping container for bulk transport of goods. This one is from Vítězství Arms, proudly proclaiming that Vítězství weapons mean victory." icon_state = "vitezstvi" +/obj/structure/shipping_container/vitezstvi/flags + icon_state = "vitezstvi_flags" + +/obj/structure/shipping_container/yellow + icon_state = "yellow" + //Syndies +/obj/structure/shipping_container/biosustain + name = "\improper Biosustain shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Biosustain, and so it's probably carrying seeds or farming equipment." + icon_state = "biosustain" + /obj/structure/shipping_container/cybersun name = "\improper Cybersun Industries shipping container" desc = "A standard-measure shipping container for bulk transport of goods. This one prominently features Cybersun's logo, and so presumably could be carrying almost anything." icon_state = "cybersun" +/obj/structure/shipping_container/cybersun/defaced + desc = "A standard-measure shipping container for bulk transport of goods. This one originally featured Cybersun's logo, before it was painted over by an enterprising artist." + icon_state = "cybersun_defaced" + /obj/structure/shipping_container/donk_co name = "\improper Donk Co. shipping container" - desc = "A standard-measure shipping container for bulk transport of goods. This one is from Donk Co. and so could be carrying just about anything- although it's probably Donk Pockets." + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Donk Co. and so could be carrying just about anything- although it's probably just Donk Pockets." icon_state = "donk_co" +/obj/structure/shipping_container/exagon + name = "\improper Exagon-Ichikawa shipping container" + desc = "A standard-measure shipping container for bulk transport of common metals and minerals. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision." + icon_state = "exagon" + +/obj/structure/shipping_container/exagon/minor + desc = "A standard-measure shipping container for bulk transport of rare metals and minerals. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision." + icon_state = "exagon_minor" + +/obj/structure/shipping_container/exagon/precious + desc = "A standard-measure shipping container for bulk transport of precious metals and minerals. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision." + icon_state = "exagon_precious" + /obj/structure/shipping_container/gorlex name = "\improper Gorlex Securities shipping container" desc = "A standard-measure shipping container for bulk transport of goods. This one is from Gorlex Securities, and is probably carrying their primary export: war crimes." @@ -82,3 +160,68 @@ /obj/structure/shipping_container/gorlex/red icon_state = "gorlex_red" + +/obj/structure/shipping_container/interdyne + name = "\improper Interdyne shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Interdyne, a private pharmaceutical company. Probably carrying medical or research supplies, probably." + icon_state = "interdyne" + +/obj/structure/shipping_container/oms + name = "\improper OMS shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This one is from Cybersun's medical subdivision OMS (Osaka Medical Systems), and is probably carrying medical cybernetics or somesuch." + icon_state = "oms" + +/obj/structure/shipping_container/tiger_coop + name = "suspicious shipping container" + desc = "A standard-measure shipping container for bulk transport of goods. This previously blank container has been spray-painted with the insignia of the Tiger Cooperative, meaning whatever's inside is probably dangerous." + icon_state = "tiger_coop" + +/obj/structure/shipping_container/tiger_coop/text + icon_state = "tiger_coop_text" + +// REEFER CONTAINERS (REFRIGERATED) +/obj/structure/shipping_container/reefer + name = "reefer shipping container" + desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is blank, offering no clue as to its contents." + icon_state = "blank_reefer" + +/obj/structure/shipping_container/reefer/deforest + name = "\improper Nanotrasen-DeForest reefer shipping container" + desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is from Nanotrasen-DeForest, and is probably carrying temperature sensitive biological material." + icon_state = "deforest_reefer" + +/obj/structure/shipping_container/reefer/biosustain + name = "\improper Biosustain reefer shipping container" + desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is from Biosustain, and so it's probably carrying GMOs or agrichemicals." + icon_state = "biosustain_reefer" + +/obj/structure/shipping_container/reefer/interdyne + name = "\improper Interdyne reefer shipping container" + desc = "A standard-measure reefer shipping container for bulk transport of refrigerated goods. This one is from Interdyne, a private pharmaceutical company, and is probably carrying organs or blood, maybe both." + icon_state = "interdyne_reefer" + +// GAS TANK +/obj/structure/shipping_container/gas + name = "bulk gas tank" + desc = "A standard-measure gas tank for bulk transport of gases. This one is rather irresponsibly blank, offering no clue as to its contents." + icon_state = "blank_gas" + +/obj/structure/shipping_container/gas/apda + name = "\improper APdA S.p.A. bulk helium tank" + desc = "A standard-measure gas tank for bulk transport of gases. This one is from Associato Petrochimico dell'Adriatico, containing their second most important export: helium-3 for fuel use." + icon_state = "apda_gas_helium" + +/obj/structure/shipping_container/gas/apda/hydrogen + name = "\improper APdA S.p.A. bulk hydrogen tank" + desc = "A standard-measure gas tank for bulk transport of gases. This one is from Associato Petrochimico dell'Adriatico, containing their most important export: hydrogen for fuel use." + icon_state = "apda_gas_hydrogen" + +/obj/structure/shipping_container/gas/nthi + name = "\improper NTHI bulk plasma tank" + desc = "A standard-measure gas tank for bulk transport of gases. This one is from NTHI, Nanotrasen's mining and refining subdivision, and contains high-grade gaseous plasma from the Spinward Sector." + icon_state = "nthi_gas_plasma" + +/obj/structure/shipping_container/gas/exagon + name = "\improper Exagon-Ichikawa bulk plasma tank" + desc = "A standard-measure gas tank for bulk transport of gases. This one is from Exagon-Ichikawa, Cybersun Industries' mining and refining subdivision, and contains gaseous plasma most likely sourced from Mars." + icon_state = "exagon_gas_plasma" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 6046d356892b8..207b85122dd21 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -236,7 +236,8 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) . += door_overlay door_overlay.overlays += emissive_blocker(door_overlay.icon, door_overlay.icon_state, src, alpha = door_overlay.alpha) // If we don't do this the door doesn't block emissives and it looks weird. else if(has_closed_overlay) - . += "[icon_door || overlay_state]_door" + var/mutable_appearance/door_overlay = mutable_appearance(icon, "[icon_door || overlay_state]_door", alpha = src.alpha) + . += door_overlay if(opened) return diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index f7a0ccd66dfdd..bb25ba5158bd8 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -299,6 +299,21 @@ new /obj/item/bodypart/leg/right/robot/surplus(src) new /obj/item/bodypart/leg/right/robot/surplus(src) +/obj/structure/closet/crate/freezer/organ + name = "organ freezer" + desc = "A freezer containing a set of organic organs." + +/obj/structure/closet/crate/freezer/organ/PopulateContents() + . = ..() + new /obj/item/organ/heart(src) + new /obj/item/organ/lungs(src) + new /obj/item/organ/eyes(src) + new /obj/item/organ/ears(src) + new /obj/item/organ/tongue(src) + new /obj/item/organ/liver(src) + new /obj/item/organ/stomach(src) + new /obj/item/organ/appendix(src) + /obj/structure/closet/crate/freezer/food name = "food icebox" icon_state = "food" diff --git a/code/game/objects/structures/deployable_turret.dm b/code/game/objects/structures/deployable_turret.dm index e9162294c8f42..a02481d8ef73d 100644 --- a/code/game/objects/structures/deployable_turret.dm +++ b/code/game/objects/structures/deployable_turret.dm @@ -195,7 +195,7 @@ target = target_turf var/obj/projectile/projectile_to_fire = new projectile_type(targets_from) playsound(src, firesound, 75, TRUE) - projectile_to_fire.preparePixelProjectile(target, targets_from) + projectile_to_fire.aim_projectile(target, targets_from) projectile_to_fire.firer = user projectile_to_fire.fired_from = src projectile_to_fire.fire() diff --git a/code/game/objects/structures/fireplace.dm b/code/game/objects/structures/fireplace.dm index 4e568a56f48b2..f1505cd1b50a0 100644 --- a/code/game/objects/structures/fireplace.dm +++ b/code/game/objects/structures/fireplace.dm @@ -30,6 +30,7 @@ /obj/structure/fireplace/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(burning_loop) + remove_shared_particles(/particles/smoke/burning) . = ..() /obj/structure/fireplace/setDir(newdir) @@ -166,17 +167,17 @@ fuel_added = 0 update_appearance() adjust_light() - particles = new /particles/smoke/burning() + var/obj/effect/abstract/shared_particle_holder/smoke_particles = add_shared_particles(/particles/smoke/burning) switch(dir) if(SOUTH) - particles.position = list(0, 29, 0) + smoke_particles.particles.position = list(0, 29, 0) if(EAST) - particles.position = list(-20, 9, 0) + smoke_particles.particles.position = list(-20, 9, 0) if(WEST) - particles.position = list(20, 9, 0) + smoke_particles.particles.position = list(20, 9, 0) if(NORTH) // there is no icon state for SOUTH - QDEL_NULL(particles) + remove_shared_particles(/particles/smoke/burning) /obj/structure/fireplace/proc/put_out() STOP_PROCESSING(SSobj, src) @@ -185,7 +186,7 @@ update_appearance() adjust_light() desc = initial(desc) - QDEL_NULL(particles) + remove_shared_particles(/particles/smoke/burning) #undef LOG_BURN_TIMER #undef PAPER_BURN_TIMER diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 4aaba04bc1835..c5a94edfdfdae 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -53,7 +53,8 @@ /obj/structure/grille/examine(mob/user) . = ..() - + if(resistance_flags & INDESTRUCTIBLE) + return if(anchored) . += span_notice("It's secured in place with screws. The rods look like they could be cut through.") else diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm index 838113cab8c38..19e35d30a5e6c 100644 --- a/code/game/objects/structures/hivebot.dm +++ b/code/game/objects/structures/hivebot.dm @@ -13,7 +13,7 @@ var/datum/effect_system/fluid_spread/smoke/smoke = new smoke.set_up(2, holder = src, location = loc) smoke.start() - visible_message(span_boldannounce("[src] warps in!")) + visible_message(span_bolddanger("[src] warps in!")) playsound(src.loc, 'sound/effects/empulse.ogg', 25, TRUE) addtimer(CALLBACK(src, PROC_REF(warpbots)), rand(1 SECONDS, 1 MINUTES)) @@ -30,7 +30,7 @@ if("rapid") new /mob/living/basic/hivebot/rapid(get_turf(src)) sleep(10 SECONDS) - visible_message(span_boldannounce("[src] warps out!")) + visible_message(span_bolddanger("[src] warps out!")) playsound(src.loc, 'sound/effects/empulse.ogg', 25, TRUE) qdel(src) return diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index f9d490a29b2e9..b53f11c711a61 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(ore_probability, list( */ /obj/structure/spawner/ice_moon/proc/destroy_effect() playsound(loc,'sound/effects/explosion/explosionfar.ogg', 200, TRUE) - visible_message(span_boldannounce("[src] collapses, sealing everything inside!\nOres fall out of the cave as it is destroyed!")) + visible_message(span_bolddanger("[src] collapses, sealing everything inside!\nOres fall out of the cave as it is destroyed!")) /** * Drops items after the spawner is destroyed @@ -123,7 +123,7 @@ GLOBAL_LIST_INIT(ore_probability, list( /obj/effect/collapsing_demonic_portal/Initialize(mapload) . = ..() playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) - visible_message(span_boldannounce("[src] begins to collapse, cutting it off from this world!")) + visible_message(span_bolddanger("[src] begins to collapse, cutting it off from this world!")) animate(src, transform = matrix().Scale(0, 1), alpha = 50, time = 5 SECONDS) addtimer(CALLBACK(src, PROC_REF(collapse)), 5 SECONDS) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index a0cf53487cf34..0a52c3cd9f638 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -34,6 +34,13 @@ . = ..() . += deconstruction_hints(user) +/obj/structure/lattice/Destroy(force) // so items on the lattice fall when the lattice is destroyed + var/turf/turfloc = loc + . = ..() + if(isturf(turfloc)) + for(var/thing_that_falls as anything in turfloc) // as anything because turfloc can only contain movables + turfloc.zFall((thing_that_falls)) + /obj/structure/lattice/proc/deconstruction_hints(mob/user) return span_notice("The rods look like they could be cut. There's space for more rods or a tile.") diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index b169868a85fb7..0461180721e2b 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_INIT(tendrils, list()) /obj/effect/collapse/Initialize(mapload) . = ..() emitted_light = new(loc) - visible_message(span_boldannounce("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!")) + visible_message(span_bolddanger("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!")) balloon_alert_to_viewers("interact to grab loot before collapse!", vision_distance = 7) playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) addtimer(CALLBACK(src, PROC_REF(collapse)), 5 SECONDS) @@ -132,7 +132,7 @@ GLOBAL_LIST_INIT(tendrils, list()) for(var/mob/M in range(7,src)) shake_camera(M, 15, 1) playsound(get_turf(src),'sound/effects/explosion/explosionfar.ogg', 200, TRUE) - visible_message(span_boldannounce("The tendril falls inward, the ground around it widening into a yawning chasm!")) + visible_message(span_bolddanger("The tendril falls inward, the ground around it widening into a yawning chasm!")) for(var/turf/T in RANGE_TURFS(2,src)) if(HAS_TRAIT(T, TRAIT_NO_TERRAFORM)) continue diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index a6933d534689b..d53935bda2974 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -207,10 +207,10 @@ /** * This confirms that the user wants to start the wave defense event, and that they can start it. */ -/obj/structure/ore_vent/proc/pre_wave_defense(mob/user, spawn_drone = TRUE) +/obj/structure/ore_vent/proc/pre_wave_defense(mob/user, spawn_drone = TRUE, mech_scan = FALSE) if(tgui_alert(user, excavation_warning, "Begin defending ore vent?", list("Yes", "No")) != "Yes") return FALSE - if(!can_interact(user)) + if(!can_interact(user) && !mech_scan) return FALSE if(!COOLDOWN_FINISHED(src, wave_cooldown) || node) return FALSE @@ -224,7 +224,7 @@ addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.25) addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.5) addtimer(CALLBACK(node, TYPE_PROC_REF(/atom, update_appearance)), wave_timer * 0.75) - particles = new /particles/smoke/ash() + add_shared_particles(/particles/smoke/ash) for(var/i in 1 to 5) // Clears the surroundings of the ore vent before starting wave defense. for(var/turf/closed/mineral/rock in oview(i)) if(istype(rock, /turf/open/misc/asteroid) && prob(35)) // so it's too common @@ -272,7 +272,7 @@ SEND_SIGNAL(src, COMSIG_VENT_WAVE_CONCLUDED) COOLDOWN_RESET(src, wave_cooldown) - particles = null + remove_shared_particles(/particles/smoke/ash) if(force) initiate_wave_win() @@ -337,24 +337,16 @@ * Gives a readout of the ores available in the vent that gets added to the description, * then asks the user if they want to start wave defense if it's already been discovered. * @params user The user who tapped the vent. - * @params scan_only If TRUE, the vent will only scan, and not prompt to start wave defense. Used by the mech mineral scanner. + * @params mech_scan If TRUE, will bypass interaction checks to allow mechs to be able to begin the wave defense. */ -/obj/structure/ore_vent/proc/scan_and_confirm(mob/living/user, scan_only = FALSE) +/obj/structure/ore_vent/proc/scan_and_confirm(mob/living/user, mech_scan = FALSE) if(tapped) balloon_alert_to_viewers("vent tapped!") return if(!COOLDOWN_FINISHED(src, wave_cooldown) || node) //We're already defending the vent, so don't scan it again. - if(!scan_only) - balloon_alert_to_viewers("protect the node drone!") + balloon_alert_to_viewers("protect the node drone!") return if(!discovered) - if(scan_only) - discovered = TRUE - generate_description(user) - balloon_alert_to_viewers("vent scanned!") - AddComponent(/datum/component/gps, name) - return - if(DOING_INTERACTION_WITH_TARGET(user, src)) balloon_alert(user, "already scanning!") return @@ -374,10 +366,8 @@ user_id_card.registered_account.mining_points += (MINER_POINT_MULTIPLIER) user_id_card.registered_account.bank_card_talk("You've been awarded [MINER_POINT_MULTIPLIER] mining points for discovery of an ore vent.") return - if(scan_only) - return - if(!pre_wave_defense(user, spawn_drone_on_tap)) + if(!pre_wave_defense(user, spawn_drone_on_tap, mech_scan)) return start_wave_defense() diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index d3eb552c46b8b..bf96397507afa 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -80,12 +80,11 @@ at the cost of risking a vicious bite.**/ return if(critter_infested && prob(50) && iscarbon(user)) var/mob/living/carbon/bite_victim = user - var/obj/item/bodypart/affecting = bite_victim.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") - to_chat(user, span_danger("You feel a sharp pain as an unseen creature sinks its [pick("fangs", "beak", "proboscis")] into your arm!")) - if(affecting?.receive_damage(30)) - bite_victim.update_damage_overlays() - playsound(src,'sound/items/weapons/bite.ogg', 70, TRUE) - return + var/obj/item/bodypart/affecting = bite_victim.get_active_hand() + to_chat(user, span_danger("You feel a sharp pain as an unseen creature sinks its [pick("fangs", "beak", "proboscis")] into your [affecting.plaintext_zone]!")) + bite_victim.apply_damage(30, BRUTE, affecting) + playsound(src,'sound/items/weapons/bite.ogg', 70, TRUE) + return to_chat(user, span_warning("You find nothing of value...")) /obj/structure/moisture_trap/attackby(obj/item/I, mob/user, params) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 5fd3b2b435a4a..b785c48ceb37f 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -248,13 +248,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror/broken, 28) to_chat(user, span_warning("A chill runs down your spine as [src] shatters...")) user.AddComponent(/datum/component/omen, incidents_left = 7) -/obj/structure/mirror/bullet_act(obj/projectile/P) - if(broken || !isliving(P.firer) || !P.damage) +/obj/structure/mirror/bullet_act(obj/projectile/proj) + if(broken || !isliving(proj.firer) || !proj.damage) return ..() . = ..() if(broken) // breaking a mirror truly gets you bad luck! - var/mob/living/unlucky_dude = P.firer + var/mob/living/unlucky_dude = proj.firer to_chat(unlucky_dude, span_warning("A chill runs down your spine as [src] shatters...")) unlucky_dude.AddComponent(/datum/component/omen, incidents_left = 7) diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index 0a0c9ca0a1017..3a1844aa2225e 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -272,10 +272,10 @@ GLOBAL_LIST_INIT(mystery_fishing, list( /obj/structure/mystery_box/wands/generate_valid_types() valid_types = GLOB.mystery_magic -///One of a kind, rarely found by fishing in the ocean. +///A fishing and pirate-themed mystery box, rarely found by fishing in the ocean, then another cannot be caught for the next 30 minutes. /obj/structure/mystery_box/fishing name = "treasure chest" - desc = "A pirate-y chest that seems equally magial and mysterious, capable of granting the user different pieces of gear." + desc = "A piratey coffer equally magical and mysterious, capable of granting different pieces of gear to whoever opens it." icon_state = "treasure" uses_left = 18 max_integrity = 100 diff --git a/code/game/objects/structures/ore_containers.dm b/code/game/objects/structures/ore_containers.dm index 6bc6f680116f4..75c7a03cfcfa9 100644 --- a/code/game/objects/structures/ore_containers.dm +++ b/code/game/objects/structures/ore_containers.dm @@ -23,25 +23,16 @@ ui.open() /obj/structure/ore_container/ui_data(mob/user) - var/list/data = list() - data["ores"] = list() + var/list/ores = list() for(var/obj/item/stack/ore/ore_item in contents) - data["ores"] += list(list( + ores += list(list( "id" = REF(ore_item), "name" = ore_item.name, "amount" = ore_item.amount, + "icon" = ore_item::icon, + "icon_state" = ore_item::icon_state, )) - return data - -/obj/structure/ore_container/ui_static_data(mob/user) - var/list/data = list() - data["ore_images"] = list() - for(var/obj/item/stack/ore_item as anything in subtypesof(/obj/item/stack/ore)) - data["ore_images"] += list(list( - "name" = initial(ore_item.name), - "icon" = icon2base64(getFlatIcon(image(icon = initial(ore_item.icon), icon_state = initial(ore_item.icon_state)), no_anim=TRUE)) - )) - return data + return list("ores" = ores) /obj/structure/ore_container/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() diff --git a/code/game/objects/structures/plaques/static_plaques.dm b/code/game/objects/structures/plaques/static_plaques.dm index 4b53ae0437301..31bec93ffc5f8 100644 --- a/code/game/objects/structures/plaques/static_plaques.dm +++ b/code/game/objects/structures/plaques/static_plaques.dm @@ -115,6 +115,14 @@ //Current stations +// Birdshot: added Apr 29, 2023 (#74371) +/obj/structure/plaque/static_plaque/golden/commission/birdshot + desc = "Spinward Sector Station SS-13\n'Birdshot' Class Outpost\nCommissioned 29/04/2563\n'Shooting for the Stars'" + +// Deltastation: added Dec 17, 2016 (#22066) +/obj/structure/plaque/static_plaque/golden/commission/delta + desc = "Spinward Sector Station SS-13\n'Delta' Class Outpost\nCommissioned 17/12/2556\n'Efficiency Through Redundancy'" + // Icebox Station: added May 13, 2020 (#51090) /obj/structure/plaque/static_plaque/golden/commission/icebox desc = "Spinward Sector Station SS-13\n'Box' Class Outpost (Revision 2.2: 'Icebox')\nCommissioned 13/05/2560\n'Cold Reliable'" @@ -123,25 +131,17 @@ /obj/structure/plaque/static_plaque/golden/commission/meta desc = "Spinward Sector Station SS-13\n'Meta' Class Outpost\nCommissioned 11/03/2553\n'Theseus' Station'" -// Deltastation: added Dec 17, 2016 (#22066) -/obj/structure/plaque/static_plaque/golden/commission/delta - desc = "Spinward Sector Station SS-13\n'Delta' Class Outpost\nCommissioned 17/12/2556\n'Efficiency Through Redundancy'" +// Nebulastation: added Nov 6, 2024 (#84826) +/obj/structure/plaque/static_plaque/golden/commission/nebula + desc = "Spinward Sector Station SS-13\n'Nebula' Class Outpost\nCommissioned 06/11/2564\n'The New Future'" // Tramstation: added Mar 11, 2021 (#56509) /obj/structure/plaque/static_plaque/golden/commission/tram desc = "Spinward Sector Station SS-13\n'Tram' Class Outpost\nCommissioned 11/03/2561\n'Making Moves'" -// Wawastation: added add date here +// Wawastation: added Jun 4, 2024 (#82298) /obj/structure/plaque/static_plaque/golden/commission/wawa - desc = "Spinward Sector Station SS-13\n'Wawa' Class Outpost\nCommissioned 11/03/add here\n'Forever Vertical'" - -// North Star: added Apr 13, 2023 (#74371) -/obj/structure/plaque/static_plaque/golden/commission/northstar - desc = "Spinward Sector Ship SS-13\n'North Star' Class Vessel\nCommissioned 13/04/2563\n'New Opportunities'" - -// Birdshot: added Apr 29, 2023 (#74371) -/obj/structure/plaque/static_plaque/golden/commission/birdshot - desc = "Spinward Sector Station SS-13\n'Birdshot' Class Outpost\nCommissioned 29/04/2563\n'Shooting for the Stars'" + desc = "Spinward Sector Station SS-13\n'Wawa' Class Outpost\nCommissioned 04/06/2564\n'Forever Vertical'" //Removed stations @@ -189,6 +189,10 @@ /obj/structure/plaque/static_plaque/golden/commission/mini desc = "Spinward Sector Station SS-08\n'Mini' Class Outpost\nCommissioned 29/01/2554\nDecommissioned 27/12/2556\n'The Littlest Station'" +// North Star: added Apr 13, 2023 (#74371), removed Nov 25, 2024 (#87937)- 1 year, 7 months, 12 days +/obj/structure/plaque/static_plaque/golden/commission/northstar + desc = "Spinward Sector Ship SS-13\n'North Star' Class Vessel\nCommissioned 13/04/2563\nDecommissioned 25/11/2564\n'New Opportunities'" + // Omegastation: added Dec 27, 2016 (#22453), removed Sep 20, 2018 (#40352)- 1 year, 8 months, 24 days /obj/structure/plaque/static_plaque/golden/commission/omega desc = "Spinward Sector Station SS-09\n'Omega' Class Outpost\nCommissioned 27/12/2556\nDecommissioned 20/09/2558\n'Tiny Take Two'" diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index 532ecebde0e5e..d470008bb9cad 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -75,8 +75,8 @@ /obj/structure/reflector/proc/auto_reflect(obj/projectile/proj, pdir, turf/ploc, pangle) proj.ignore_source_check = TRUE - proj.range = proj.decayedRange - proj.decayedRange = max(proj.decayedRange--, 0) + proj.range = proj.maximum_range + proj.maximum_range = max(proj.maximum_range--, 0) return BULLET_ACT_FORCE_PIERCE /obj/structure/reflector/tool_act(mob/living/user, obj/item/tool, list/modifiers) @@ -196,7 +196,7 @@ if(abs(incidence) > 90 && abs(incidence) < 270) return FALSE var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence) - proj.set_angle_centered(new_angle) + proj.set_angle_centered(loc, new_angle) return ..() //DOUBLE @@ -220,7 +220,8 @@ /obj/structure/reflector/double/auto_reflect(obj/projectile/proj, pdir, turf/ploc, pangle) var/incidence = GET_ANGLE_OF_INCIDENCE(rotation_angle, (proj.angle + 180)) var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence) - proj.set_angle_centered(new_angle) + proj.forceMove(loc) + proj.set_angle_centered(loc, new_angle) return ..() //BOX @@ -241,8 +242,8 @@ admin = TRUE anchored = TRUE -/obj/structure/reflector/box/auto_reflect(obj/projectile/P) - P.set_angle_centered(rotation_angle) +/obj/structure/reflector/box/auto_reflect(obj/projectile/proj) + proj.set_angle_centered(loc, rotation_angle) return ..() /obj/structure/reflector/ex_act() diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 65a23c9a88b53..9f7660b05e6ed 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -233,7 +233,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16)) if(mist && !(actually_on && current_temperature != SHOWER_FREEZING)) qdel(mist) - /obj/machinery/shower/proc/on_entered(datum/source, atom/movable/enterer) SIGNAL_HANDLER @@ -253,17 +252,37 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16)) take_his_status_effect.remove_status_effect(/datum/status_effect/washing_regen) /obj/machinery/shower/proc/wash_atom(atom/target) - target.wash(CLEAN_RAD | CLEAN_WASH) + var/purity_volume = reagents.total_volume*0.70 // need 70% of total reagents + var/datum/reagent/blood/bloody_shower = reagents.has_reagent(/datum/reagent/blood, amount=purity_volume) + var/datum/reagent/water/clean_shower = reagents.has_reagent(/datum/reagent/water, amount=purity_volume) + + // radiation my beloved + var/rad_purity_volume = reagents.total_volume*0.20 // need 20% of total reagents + var/radium_volume = reagents.get_reagent_amount(/datum/reagent/uranium/radium) + var/uranium_volume = reagents.get_reagent_amount(/datum/reagent/uranium) + var/polonium_volume = reagents.get_reagent_amount(/datum/reagent/toxin/polonium) * 3 // highly radioactive + var/total_radiation_volume = (radium_volume + uranium_volume + polonium_volume) + var/radioactive_shower = total_radiation_volume >= rad_purity_volume + + // we only care about blood and h20 for mood/status effect + var/datum/reagent/shower_reagent = bloody_shower || clean_shower || null + + var/wash_flags = NONE + if(clean_shower) + wash_flags |= CLEAN_WASH + if(!radioactive_shower) + // note it is possible to have a clean_shower that is radioactive (+70% water mixed with +20% radiation) + wash_flags |= CLEAN_RAD + target.wash(wash_flags) + reagents.expose(target, (TOUCH), SHOWER_EXPOSURE_MULTIPLIER * SHOWER_SPRAY_VOLUME / max(reagents.total_volume, SHOWER_SPRAY_VOLUME)) if(!isliving(target)) return var/mob/living/living_target = target check_heat(living_target) - living_target.apply_status_effect(/datum/status_effect/washing_regen) - if(!HAS_TRAIT(target, TRAIT_WATER_HATER) || HAS_TRAIT(target, TRAIT_WATER_ADAPTATION)) - living_target.add_mood_event("shower", /datum/mood_event/nice_shower) - else - living_target.add_mood_event("shower", /datum/mood_event/shower_hater) + + living_target.apply_status_effect(/datum/status_effect/washing_regen, shower_reagent) + living_target.add_mood_event("shower", /datum/mood_event/shower, shower_reagent) /** * Toggle whether shower is actually on and outputting water. diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index db4981aeac77a..6a0bc3123d1f5 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -299,5 +299,5 @@ proteon.add_filter("sentient_proteon", 3, list("type" = "outline", "color" = COLOR_CULT_RED, "size" = 2, "alpha" = 40)) /obj/structure/spawner/sentient/proteon_spawner/handle_deconstruct(disassembled) - playsound('sound/effects/hallucinations/veryfar_noise.ogg', 125) + playsound(src, 'sound/effects/hallucinations/veryfar_noise.ogg', 75) visible_message(span_cult_bold("[src] completely falls apart, the screams of the damned reaching a feverous pitch before slowly fading away into nothing.")) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index c57ce3bcecfbf..448c3eb5425a7 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -197,7 +197,7 @@ var/extra_wound = 0 if(HAS_TRAIT(user, TRAIT_HULK)) extra_wound = 20 - banged_limb?.receive_damage(30, wound_bonus = extra_wound) + pushed_mob.apply_damage(30, BRUTE, banged_limb, wound_bonus = extra_wound) pushed_mob.apply_damage(60, STAMINA) take_damage(50) if(user.mind?.martial_art?.smashes_tables && user.mind?.martial_art.can_use(user)) diff --git a/code/game/objects/structures/water_structures/sink.dm b/code/game/objects/structures/water_structures/sink.dm index 1cd3f7d7aaa53..3a6dfbb2a2c14 100644 --- a/code/game/objects/structures/water_structures/sink.dm +++ b/code/game/objects/structures/water_structures/sink.dm @@ -73,10 +73,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14)) if(busy) to_chat(user, span_warning("Someone's already washing here!")) return + var/selected_area = user.parse_zone_with_bodypart(user.zone_selected) - var/washing_face = 0 + var/washing_face = FALSE if(selected_area in list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)) - washing_face = 1 + washing_face = TRUE + + playsound(src, 'sound/machines/sink-faucet.ogg', 50) user.visible_message(span_notice("[user] starts washing [user.p_their()] [washing_face ? "face" : "hands"]..."), \ span_notice("You start washing your [washing_face ? "face" : "hands"]...")) busy = TRUE @@ -206,6 +209,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sink, (-14)) if(!user.combat_mode || (O.item_flags & NOBLUDGEON)) to_chat(user, span_notice("You start washing [O]...")) + playsound(src, 'sound/machines/sink-faucet.ogg', 50) busy = TRUE if(!do_after(user, 4 SECONDS, target = src)) busy = FALSE diff --git a/code/game/objects/structures/water_structures/toilet.dm b/code/game/objects/structures/water_structures/toilet.dm index 986d7eae4ea05..435af610996ae 100644 --- a/code/game/objects/structures/water_structures/toilet.dm +++ b/code/game/objects/structures/water_structures/toilet.dm @@ -31,7 +31,7 @@ cover_open = round(rand(0, 1)) update_appearance(UPDATE_ICON) if(mapload && SSmapping.level_trait(z, ZTRAIT_STATION)) - AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/toilet) + AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/toilet]) AddElement(/datum/element/fish_safe_storage) register_context() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index b3a3ea310386a..9924713d93908 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -82,12 +82,11 @@ /obj/structure/window/mouse_drop_receive(atom/dropping, mob/user, params) . = ..() - if (added_leaning || (flags_1 & ON_BORDER_1)) + if (flags_1 & ON_BORDER_1) return - /// For performance reasons and to cut down on init times we are "lazy-loading" the leaning component when someone drags their sprite onto us, and then calling dragging code again to trigger the component - AddComponent(/datum/component/leanable, 11) - added_leaning = TRUE - dropping.base_mouse_drop_handler(src, null, null, params) + + //Adds the component only once. We do it here & not in Initialize() because there are tons of windows & we don't want to add to their init times + LoadComponent(/datum/component/leanable, dropping) /obj/structure/window/examine(mob/user) . = ..() @@ -513,6 +512,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/unanchored/spawner, 0) return FALSE /obj/structure/window/reinforced/attackby_secondary(obj/item/tool, mob/user, params) + if(resistance_flags & INDESTRUCTIBLE) + balloon_alert(user, "too resilient!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN switch(state) if(RWINDOW_SECURE) if(tool.tool_behaviour == TOOL_WELDER) @@ -591,7 +593,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/unanchored/spawner, 0) /obj/structure/window/reinforced/examine(mob/user) . = ..() - + if(resistance_flags & INDESTRUCTIBLE) + return switch(state) if(RWINDOW_SECURE) . += span_notice("It's been screwed in with one way screws, you'd need to heat them to have any chance of backing them out.") diff --git a/code/game/say.dm b/code/game/say.dm index a1171515dac49..5ecc4e819119a 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(freqtospan, list( if(istype(dialect) && dialect.display_icon(src)) languageicon = "[dialect.get_icon()] " - messagepart = " [say_emphasis(messagepart)]" + messagepart = " [messagepart]" return "[spanpart1][spanpart2][freqpart][languageicon][compose_track_href(speaker, namepart)][namepart][compose_job(speaker, message_language, raw_message, radio_freq)][endspanpart][messagepart]" @@ -223,8 +223,14 @@ GLOBAL_LIST_INIT(freqtospan, list( if(copytext_char(input, -2) == "!!") spans |= SPAN_YELL - var/spanned = attach_spans(input, spans) - return "[say_mod], \"[spanned]\"" + /* all inputs should be fully figured out past this point */ + + var/processed_input = say_emphasis(input) //This MUST be done first so that we don't get clipped by spans + processed_input = attach_spans(processed_input, spans) + + var/processed_say_mod = say_emphasis(say_mod) + + return "[processed_say_mod], \"[processed_input]\"" /// Transforms the speech emphasis mods from [/atom/movable/proc/say_emphasis] into the appropriate HTML tags. Includes escaping. #define ENCODE_HTML_EMPHASIS(input, char, html, varname) \ @@ -235,8 +241,8 @@ GLOBAL_LIST_INIT(freqtospan, list( /atom/movable/proc/say_emphasis(input) ENCODE_HTML_EMPHASIS(input, "\\|", "i", italics) ENCODE_HTML_EMPHASIS(input, "\\+", "b", bold) - ENCODE_HTML_EMPHASIS(input, "_", "u", underline) - var/static/regex/remove_escape_backlashes = regex("\\\\(_|\\+|\\|)", "g") // Removes backslashes used to escape text modification. + ENCODE_HTML_EMPHASIS(input, "\\_", "u", underline) + var/static/regex/remove_escape_backlashes = regex("\\\\(\\_|\\+|\\|)", "g") // Removes backslashes used to escape text modification. input = remove_escape_backlashes.Replace_char(input, "$1") return input diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 32c531e34dc74..810b83cbcbe79 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -192,6 +192,10 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( QUEUE_SMOOTH_NEIGHBORS(src) QUEUE_SMOOTH(src) + // we need to update gravity for any mob on a tile that is being created or destroyed + for(var/mob/living/target in new_turf.contents) + target.refresh_gravity() + return new_turf /turf/open/ChangeTurf(path, list/new_baseturfs, flags) //Resist the temptation to make this default to keeping air. diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 3a6546f6eaa85..967c13f337220 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -25,7 +25,7 @@ transform = MAP_SWITCH(TRANSLATE_MATRIX(-4, -4), matrix()) temperature = TCMB - var/turf/open/floor/plating/turf_type = /turf/open/misc/asteroid/airless + var/turf/turf_type = /turf/open/misc/asteroid/airless /// The path of the ore stack we spawn when we're mined. var/obj/item/stack/ore/mineralType = null /// If we spawn a boulder like on the gulag, we use this in lou of mineralType diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index c656d0ee95a42..402d24c6c830d 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -51,13 +51,8 @@ underlays += underlay_appearance /turf/closed/wall/mouse_drop_receive(atom/dropping, mob/user, params) - . = ..() - if (added_leaning) - return - /// For performance reasons and to cut down on init times we are "lazy-loading" the leaning component when someone drags their sprite onto us, and then calling dragging code again to trigger the component - AddComponent(/datum/component/leanable, 11) - added_leaning = TRUE - dropping.base_mouse_drop_handler(src, null, null, params) + //Adds the component only once. We do it here & not in Initialize() because there are tons of walls & we don't want to add to their init times + LoadComponent(/datum/component/leanable, dropping) /turf/closed/wall/atom_destruction(damage_flag) . = ..() @@ -173,7 +168,7 @@ **arg2 is the hulk */ /turf/closed/wall/proc/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 20) - arm.receive_damage(brute = damage, blocked = 0, wound_bonus = CANT_WOUND) + hulkman.apply_damage(damage, BRUTE, arm, wound_bonus = CANT_WOUND) var/datum/mutation/human/hulk/smasher = locate(/datum/mutation/human/hulk) in hulkman.dna.mutations if(!smasher || !damage) //sanity check but also snow and wood walls deal no recoil damage, so no arm breaky return diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index c2b9963c5ed41..6ad32fe7a652c 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -344,7 +344,7 @@ movable_content.wash(CLEAN_WASH) return TRUE -/turf/open/handle_slip(mob/living/carbon/slipper, knockdown_amount, obj/slippable, lube, paralyze_amount, force_drop) +/turf/open/handle_slip(mob/living/slipper, knockdown_amount, obj/slippable, lube, paralyze_amount, force_drop) if(slipper.movement_type & MOVETYPES_NOT_TOUCHING_GROUND) return FALSE if(!has_gravity(src)) @@ -354,13 +354,15 @@ if(lube & SLIDE_ICE) // Ice slides only go 1 tile, this is so you will slip across ice until you reach a non-slip tile slide_distance = 1 - else if(HAS_TRAIT(slipper, TRAIT_CURSED)) + else if(HAS_TRAIT(slipper, TRAIT_CURSED) && !(lube & WEAK_SLIDE)) // When cursed, all slips send you flying lube |= SLIDE slide_distance = rand(5, 9) else if(HAS_TRAIT(slipper, TRAIT_NO_SLIP_SLIDE)) // Stops sliding slide_distance = 0 + else if(lube & WEAK_SLIDE) + slide_distance = rand(1, 2) var/obj/buckled_obj if(slipper.buckled) @@ -380,9 +382,10 @@ SEND_SIGNAL(slipper, COMSIG_ON_CARBON_SLIP) slipper.add_mood_event("slipped", /datum/mood_event/slipped) - if(force_drop) + if(force_drop && iscarbon(slipper)) //carbon specific behavior that living doesn't have + var/mob/living/carbon/carbon = slipper for(var/obj/item/item in slipper.held_items) - slipper.accident(item) + carbon.accident(item) var/olddir = slipper.dir slipper.moving_diagonally = 0 //If this was part of diagonal move slipping will stop it. @@ -390,12 +393,14 @@ // They need to be kept upright to maintain the combo effect (So don't knockdown) slipper.Immobilize(1 SECONDS) slipper.incapacitate(1 SECONDS) + else if(lube & WEAK_SLIDE) + slipper.adjust_staggered_up_to(STAGGERED_SLOWDOWN_LENGTH, 10 SECONDS) + slipper.stop_pulling() else slipper.Knockdown(knockdown_amount) slipper.Paralyze(paralyze_amount) - slipper.stop_pulling() - if(buckled_obj) + if(!isnull(buckled_obj) && !ismob(buckled_obj)) buckled_obj.unbuckle_mob(slipper) // This is added onto the end so they slip "out of their chair" (one tile) lube |= SLIDE_ICE @@ -403,7 +408,7 @@ if(slide_distance) var/turf/target = get_ranged_target_turf(slipper, olddir, slide_distance) - if(lube & SLIDE) + if(lube & (SLIDE|WEAK_SLIDE)) slipper.AddComponent(/datum/component/force_move, target, TRUE) else if(lube & SLIDE_ICE) slipper.AddComponent(/datum/component/force_move, target, FALSE)//spinning would be bad for ice, fucks up the next dir diff --git a/code/game/turfs/open/ashplanet.dm b/code/game/turfs/open/ashplanet.dm index 31369a2e5cec8..e6703c04eb559 100644 --- a/code/game/turfs/open/ashplanet.dm +++ b/code/game/turfs/open/ashplanet.dm @@ -69,3 +69,6 @@ /turf/open/misc/ashplanet/wateryrock/Initialize(mapload) icon_state = "[icon_state][rand(1, 9)]" . = ..() + +/turf/open/misc/ashplanet/wateryrock/lavaland_atmos + initial_gas_mix = LAVALAND_DEFAULT_ATMOS diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm index fa0b0c4b12872..2ec0b8e9a9c42 100644 --- a/code/game/turfs/open/lava.dm +++ b/code/game/turfs/open/lava.dm @@ -22,6 +22,7 @@ barefootstep = FOOTSTEP_LAVA clawfootstep = FOOTSTEP_LAVA heavyfootstep = FOOTSTEP_LAVA + rust_resistance = RUST_RESISTANCE_ABSOLUTE /// How much fire damage we deal to living mobs stepping on us var/lava_damage = 20 /// How many firestacks we add to living mobs stepping on us @@ -42,25 +43,50 @@ var/fish_source_type = /datum/fish_source/lavaland /// The color we use for our immersion overlay var/immerse_overlay_color = "#a15e1b" - rust_resistance = RUST_RESISTANCE_ABSOLUTE + /// Whether the immerse element has been added yet or not + var/immerse_added = FALSE /turf/open/lava/Initialize(mapload) . = ..() if(fish_source_type) - AddElement(/datum/element/lazy_fishing_spot, fish_source_type) + add_lazy_fishing(fish_source_type) // You can release chrabs and lavaloops and likes in lava, or be an absolute scumbag and drop other fish there too. ADD_TRAIT(src, TRAIT_CATCH_AND_RELEASE, INNATE_TRAIT) refresh_light() if(!smoothing_flags) update_appearance() - AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color) + RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(on_atom_inited)) /turf/open/lava/Destroy() + UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON) for(var/mob/living/leaving_mob in contents) leaving_mob.RemoveElement(/datum/element/perma_fire_overlay) REMOVE_TRAIT(leaving_mob, TRAIT_NO_EXTINGUISH, TURF_TRAIT) return ..() +///We lazily add the immerse element when something is spawned or crosses this turf and not before. +/turf/open/lava/proc/on_atom_inited(datum/source, atom/movable/movable) + SIGNAL_HANDLER + if(burn_stuff(movable)) + START_PROCESSING(SSobj, src) + if(immerse_added || is_type_in_typecache(movable, GLOB.immerse_ignored_movable)) + return + AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color) + immerse_added = TRUE + +/** + * turf/Initialize() calls Entered on its contents too, however + * we need to wait for movables that still need to be initialized + * before we add the immerse element. + */ +/turf/open/lava/Entered(atom/movable/arrived) + . = ..() + if(!immerse_added && !is_type_in_typecache(arrived, GLOB.immerse_ignored_movable)) + AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color) + immerse_added = TRUE + if(burn_stuff(arrived)) + START_PROCESSING(SSobj, src) + /turf/open/lava/update_overlays() . = ..() . += emissive_appearance(mask_icon, mask_state, src) @@ -124,6 +150,8 @@ update_appearance(~UPDATE_SMOOTHING) /turf/open/lava/ex_act(severity, target) + if(fish_source) + GLOB.preset_fish_sources[fish_source].spawn_reward_from_explosion(src, severity) return FALSE /turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) @@ -139,14 +167,6 @@ /turf/open/lava/MakeDry(wet_setting = TURF_WET_WATER) return -/turf/open/lava/airless - initial_gas_mix = AIRLESS_ATMOS - -/turf/open/lava/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) - . = ..() - if(burn_stuff(arrived)) - START_PROCESSING(SSobj, src) - /turf/open/lava/Exited(atom/movable/gone, direction) . = ..() if(isliving(gone) && !islava(gone.loc)) @@ -208,10 +228,10 @@ to_chat(user, span_warning("The [ciggie.name] is already lit!")) return TRUE var/clumsy_modifier = HAS_TRAIT(user, TRAIT_CLUMSY) ? 2 : 1 - if(prob(25 * clumsy_modifier )) + if(prob(25 * clumsy_modifier) && isliving(user)) ciggie.light(span_warning("[user] expertly dips \the [ciggie.name] into [src], along with the rest of [user.p_their()] arm. What a dumbass.")) - var/obj/item/bodypart/affecting = user.get_active_hand() - affecting?.receive_damage(burn = 90) + var/mob/living/burned_guy = user + burned_guy.apply_damage(90, BURN, user.get_active_hand()) else ciggie.light(span_rose("[user] expertly dips \the [ciggie.name] into [src], lighting it with the scorching heat of the planet. Witnessing such a feat is almost enough to make you cry.")) return TRUE @@ -322,6 +342,9 @@ /turf/open/lava/can_cross_safely(atom/movable/crossing) return HAS_TRAIT(src, TRAIT_LAVA_STOPPED) || HAS_TRAIT(crossing, immunity_trait ) || HAS_TRAIT(crossing, TRAIT_MOVE_FLYING) +/turf/open/lava/airless + initial_gas_mix = AIRLESS_ATMOS + /turf/open/lava/smooth name = "lava" baseturfs = /turf/open/lava/smooth diff --git a/code/game/turfs/open/sand.dm b/code/game/turfs/open/sand.dm index 254c595fcbdd6..af583de777910 100644 --- a/code/game/turfs/open/sand.dm +++ b/code/game/turfs/open/sand.dm @@ -12,9 +12,11 @@ /turf/open/misc/beach/Initialize(mapload) . = ..() - AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/sand) + add_lazy_fishing(/datum/fish_source/sand) /turf/open/misc/beach/ex_act(severity, target) + if(fish_source) + GLOB.preset_fish_sources[fish_source].spawn_reward_from_explosion(src, severity) return FALSE /turf/open/misc/beach/sand diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm index af1d06056b012..2e2daee48bc15 100644 --- a/code/game/turfs/open/water.dm +++ b/code/game/turfs/open/water.dm @@ -27,14 +27,42 @@ /// Fishing element for this specific water tile var/datum/fish_source/fishing_datum = /datum/fish_source/river + /// Whether the immerse element has been added yet or not + var/immerse_added = FALSE + /turf/open/water/Initialize(mapload) . = ..() - AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha) + RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(on_atom_inited)) AddElement(/datum/element/watery_tile) if(!isnull(fishing_datum)) - AddElement(/datum/element/lazy_fishing_spot, fishing_datum) + add_lazy_fishing(fishing_datum) ADD_TRAIT(src, TRAIT_CATCH_AND_RELEASE, INNATE_TRAIT) +///We lazily add the immerse element when something is spawned or crosses this turf and not before. +/turf/open/water/proc/on_atom_inited(datum/source, atom/movable/movable) + SIGNAL_HANDLER + UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON) + if(immerse_added || is_type_in_typecache(movable, GLOB.immerse_ignored_movable)) + return + AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha) + immerse_added = TRUE + +/turf/open/water/Destroy() + UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON) + return ..() + +/** + * turf/Initialize() calls Entered on its contents too, however + * we need to wait for movables that still need to be initialized + * before we add the immerse element. + */ +/turf/open/water/Entered(atom/movable/arrived) + . = ..() + if(immerse_added || is_type_in_typecache(arrived, GLOB.immerse_ignored_movable)) + return + AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha) + immerse_added = TRUE + /turf/open/water/jungle /turf/open/water/no_planet_atmos @@ -64,6 +92,7 @@ icon_state = "tizira_water" base_icon_state = "tizira_water" baseturfs = /turf/open/water/beach/tizira + fishing_datum = /datum/fish_source/tizira /** * A special subtype of water with steam particles and a status effect similar to showers, that's however only applied if @@ -81,33 +110,27 @@ immerse_overlay_alpha = 190 fishing_datum = /datum/fish_source/hot_spring /// Holder for the steam particles - var/obj/effect/abstract/particle_holder/cached/steam_effect + var/obj/effect/abstract/particle_holder/cached/particle_effect /turf/open/water/hot_spring/Initialize(mapload) . = ..() icon_state = "pool_[rand(1, 4)]" - steam_effect = new(src, /particles/hotspring_steam, 4) + particle_effect = new(src, /particles/hotspring_steam, 4) //render the steam over mobs and objects on the game plane - steam_effect.vis_flags &= ~VIS_INHERIT_PLANE + particle_effect.vis_flags &= ~VIS_INHERIT_PLANE //And be unaffected by ambient occlusions, which would render the steam grey - steam_effect.plane = MUTATE_PLANE(MASSIVE_OBJ_PLANE, src) + particle_effect.plane = MUTATE_PLANE(MASSIVE_OBJ_PLANE, src) add_filter("hot_spring_waves", 1, wave_filter(y = 1, size = 1, offset = 0, flags = WAVE_BOUNDED)) var/filter = get_filter("hot_spring_waves") animate(filter, offset = 1, time = 3 SECONDS, loop = -1, easing = SINE_EASING|EASE_IN|EASE_OUT) animate(offset = -1, time = 3 SECONDS, easing = SINE_EASING|EASE_IN|EASE_OUT) - /** - * turf/Initialize() calls Entered on its contents, however - * we need to wait for movables that still need to be initialized. - */ - RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(enter_initialized_movable)) /turf/open/water/hot_spring/Destroy() - QDEL_NULL(steam_effect) + QDEL_NULL(particle_effect) remove_filter("hot_spring_waves") for(var/atom/movable/movable as anything in contents) exit_hot_spring(movable) - UnregisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON) return ..() /turf/open/water/hot_spring/Entered(atom/movable/arrived, atom/old_loc) @@ -118,6 +141,9 @@ /turf/open/water/hot_spring/proc/enter_initialized_movable(datum/source, atom/movable/movable) SIGNAL_HANDLER + if(!immerse_added && !is_type_in_typecache(movable, GLOB.immerse_ignored_movable)) + AddElement(/datum/element/immerse, icon, icon_state, "immerse", immerse_overlay_color, alpha = immerse_overlay_alpha) + immerse_added = TRUE enter_hot_spring(movable) ///Registers the signals from the immerse element and calls dip_in if the movable has the required trait. @@ -167,3 +193,6 @@ living.add_mood_event("hot_spring", /datum/mood_event/hot_spring_left) else living.add_mood_event("hot_spring", /datum/mood_event/hot_spring_hater_left) + +/turf/open/water/hot_spring/lavaland_atmos + initial_gas_mix = LAVALAND_DEFAULT_ATMOS diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index fdbc1e04b8eb6..318bb5ebb4cef 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -109,6 +109,9 @@ GLOBAL_LIST_EMPTY(station_turfs) /// Never directly access this, use get_explosive_block() instead var/inherent_explosive_resistance = -1 + ///The typepath we use for lazy fishing on turfs, to save on world init time. + var/fish_source + /turf/vv_edit_var(var_name, new_value) var/static/list/banned_edits = list(NAMEOF_STATIC(src, x), NAMEOF_STATIC(src, y), NAMEOF_STATIC(src, z)) @@ -695,9 +698,9 @@ GLOBAL_LIST_EMPTY(station_turfs) return SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_TURF, src, reagents, methods, volume_modifier, show_message) - for(var/reagent in reagents) - var/datum/reagent/R = reagent - . |= R.expose_turf(src, reagents[R]) + for(var/datum/reagent/reagent as anything in reagents) + var/reac_volume = reagents[reagent] + . |= reagent.expose_turf(src, reac_volume) /** * Called when this turf is being washed. Washing a turf will also wash any mopable floor decals @@ -790,3 +793,67 @@ GLOBAL_LIST_EMPTY(station_turfs) /// Returns whether it is safe for an atom to move across this turf /turf/proc/can_cross_safely(atom/movable/crossing) return TRUE + +/** + * the following are some hacky fishing-related optimizations to shave off + * time we spend implementing the fishing as possible, even if that means + * doing hackier code, because we've hundreds of turfs like lava, water etc every round, + */ +/turf/proc/add_lazy_fishing(fish_source_path) + RegisterSignal(src, COMSIG_PRE_FISHING, PROC_REF(add_fishing_spot_comp)) + RegisterSignal(src, COMSIG_NPC_FISHING, PROC_REF(on_npc_fishing)) + RegisterSignal(src, COMSIG_FISH_RELEASED_INTO, PROC_REF(on_fish_release_into)) + RegisterSignal(src, COMSIG_TURF_CHANGE, PROC_REF(remove_lazy_fishing)) + ADD_TRAIT(src, TRAIT_FISHING_SPOT, INNATE_TRAIT) + fish_source = fish_source_path + +/turf/proc/remove_lazy_fishing() + SIGNAL_HANDLER + UnregisterSignal(src, list( + COMSIG_PRE_FISHING, + COMSIG_NPC_FISHING, + COMSIG_FISH_RELEASED_INTO, + COMSIG_ATOM_TOOL_ACT(TOOL_MULTITOOL), + COMSIG_TURF_CHANGE, + )) + REMOVE_TRAIT(src, TRAIT_FISHING_SPOT, INNATE_TRAIT) + fish_source = null + +/turf/proc/add_fishing_spot_comp(datum/source) + SIGNAL_HANDLER + source.AddComponent(/datum/component/fishing_spot, fish_source) + remove_lazy_fishing() + +/turf/proc/on_npc_fishing(datum/source, list/fish_spot_container) + SIGNAL_HANDLER + fish_spot_container[NPC_FISHING_SPOT] = GLOB.preset_fish_sources[fish_source] + +/turf/proc/on_fish_release_into(datum/source, obj/item/fish/fish, mob/living/releaser) + SIGNAL_HANDLER + GLOB.preset_fish_sources[fish_source].readd_fish(fish, releaser) + +/turf/examine(mob/user) + . = ..() + if(!fish_source || !HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT)) + return + if(!GLOB.preset_fish_sources[fish_source].has_known_fishes(src)) + return + . += span_tinynoticeital("This is a fishing spot. You can look again to list its fishes...") + +/turf/examine_more(mob/user) + . = ..() + if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISHING_SPOT) || !fish_source) + return + GLOB.preset_fish_sources[fish_source].get_catchable_fish_names(user, src, .) + +/turf/ex_act(severity, target) + . = ..() + if(!fish_source) + return + GLOB.preset_fish_sources[fish_source].spawn_reward_from_explosion(src, severity) + +/turf/multitool_act(mob/living/user, obj/item/multitool/tool) + if(!fish_source || !istype(tool.buffer, /obj/machinery/fishing_portal_generator)) + return ..() + var/obj/machinery/fishing_portal_generator/portal = tool.buffer + return portal.link_fishing_spot(GLOB.preset_fish_sources[fish_source], src, user) diff --git a/code/game/world.dm b/code/game/world.dm index fe55b3963b504..ea6c9cb976ff2 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -8,6 +8,13 @@ GLOBAL_VAR(restart_counter) GLOBAL_VAR(tracy_log) +GLOBAL_PROTECT(tracy_log) +GLOBAL_VAR(tracy_initialized) +GLOBAL_PROTECT(tracy_initialized) +GLOBAL_VAR(tracy_init_error) +GLOBAL_PROTECT(tracy_init_error) +GLOBAL_VAR(tracy_init_reason) +GLOBAL_PROTECT(tracy_init_reason) /** * WORLD INITIALIZATION @@ -66,15 +73,30 @@ GLOBAL_VAR(tracy_log) /world/proc/Genesis(tracy_initialized = FALSE) RETURN_TYPE(/datum/controller/master) + if(!tracy_initialized) + GLOB.tracy_initialized = FALSE +#ifndef OPENDREAM + if(!tracy_initialized) #ifdef USE_BYOND_TRACY #warn USE_BYOND_TRACY is enabled - if(!tracy_initialized) + var/should_init_tracy = TRUE + GLOB.tracy_init_reason = "USE_BYOND_TRACY defined" #else - if(!tracy_initialized && (USE_TRACY_PARAMETER in params)) + var/should_init_tracy = FALSE + if(USE_TRACY_PARAMETER in params) + should_init_tracy = TRUE + GLOB.tracy_init_reason = "world.params" + if(fexists(TRACY_ENABLE_PATH)) + GLOB.tracy_init_reason ||= "enabled for round" + SEND_TEXT(world.log, "[TRACY_ENABLE_PATH] exists, initializing byond-tracy!") + should_init_tracy = TRUE + fdel(TRACY_ENABLE_PATH) +#endif + if(should_init_tracy) + init_byond_tracy() + Genesis(tracy_initialized = TRUE) + return #endif - GLOB.tracy_log = init_byond_tracy() - Genesis(tracy_initialized = TRUE) - return Profile(PROFILE_RESTART) Profile(PROFILE_RESTART, type = "sendmaps") @@ -331,6 +353,7 @@ GLOBAL_VAR(tracy_log) if(do_hard_reboot) log_world("World hard rebooted at [time_stamp()]") shutdown_logging() // See comment below. + shutdown_byond_tracy() auxcleanup() TgsEndProcess() return ..() @@ -338,6 +361,7 @@ GLOBAL_VAR(tracy_log) log_world("World rebooted at [time_stamp()]") shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss. + shutdown_byond_tracy() auxcleanup() TgsReboot() // TGS can decide to kill us right here, so it's important to do it last @@ -351,6 +375,7 @@ GLOBAL_VAR(tracy_log) call_ext(debug_server, "auxtools_shutdown")() /world/Del() + shutdown_byond_tracy() auxcleanup() . = ..() @@ -397,8 +422,6 @@ GLOBAL_VAR(tracy_log) new_status += "
Time: [time2text(STATION_TIME_PASSED(), "hh:mm", 0)]" if(SSshuttle?.emergency && SSshuttle?.emergency?.mode != (SHUTTLE_IDLE || SHUTTLE_ENDGAME)) new_status += " | Shuttle: [SSshuttle.emergency.getModeStr()] [SSshuttle.emergency.getTimerStr()]" - if(SStime_track?.time_dilation_avg > 0) - new_status += " | Time Dilation: [round(SStime_track?.time_dilation_avg)]%" else if(SSticker.current_state == GAME_STATE_FINISHED) new_status += "
RESTARTING" if(SSmapping.current_map) @@ -483,21 +506,31 @@ GLOBAL_VAR(tracy_log) DREAMLUAU_SET_EXECUTION_LIMIT_MILLIS(tick_lag * 100) /world/proc/init_byond_tracy() - var/library - - switch (system_type) - if (MS_WINDOWS) - library = "prof.dll" - if (UNIX) - library = "libprof.so" - else - CRASH("Unsupported platform: [system_type]") + if(!fexists(TRACY_DLL_PATH)) + SEND_TEXT(world.log, "Error initializing byond-tracy: [TRACY_DLL_PATH] not found!") + CRASH("Error initializing byond-tracy: [TRACY_DLL_PATH] not found!") - var/init_result = call_ext(library, "init")("block") + var/init_result = call_ext(TRACY_DLL_PATH, "init")("block") if(length(init_result) != 0 && init_result[1] == ".") // if first character is ., then it returned the output filename - return init_result + SEND_TEXT(world.log, "byond-tracy initialized (logfile: [init_result])") + GLOB.tracy_initialized = TRUE + return GLOB.tracy_log = init_result + else if(init_result == "already initialized") // not gonna question it. + GLOB.tracy_initialized = TRUE + SEND_TEXT(world.log, "byond-tracy already initialized ([GLOB.tracy_log ? "logfile: [GLOB.tracy_log]" : "no logfile"])") else if(init_result != "0") + GLOB.tracy_init_error = init_result + SEND_TEXT(world.log, "Error initializing byond-tracy: [init_result]") CRASH("Error initializing byond-tracy: [init_result]") + else + GLOB.tracy_initialized = TRUE + SEND_TEXT(world.log, "byond-tracy initialized (no logfile)") + +/world/proc/shutdown_byond_tracy() + if(GLOB.tracy_initialized) + SEND_TEXT(world.log, "Shutting down byond-tracy") + GLOB.tracy_initialized = FALSE + call_ext(TRACY_DLL_PATH, "destroy")() /world/proc/init_debugger() var/dll = GetConfig("env", "AUXTOOLS_DEBUG_DLL") diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 52c9c65e5b917..f98520bb84a69 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -214,7 +214,7 @@ if (ban["fromdb"]) if(SSdbcore.Connect()) - INVOKE_ASYNC(SSdbcore, /datum/controller/subsystem/dbcore/proc.QuerySelect, list( + INVOKE_ASYNC(SSdbcore, TYPE_PROC_REF(/datum/controller/subsystem/dbcore, QuerySelect), list( SSdbcore.NewQuery( "INSERT INTO [format_table_name("stickyban_matched_ckey")] (matched_ckey, stickyban) VALUES (:ckey, :bannedckey) ON DUPLICATE KEY UPDATE last_matched = now()", list("ckey" = ckey, "bannedckey" = bannedckey) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index edc3525bf2f07..a329ad595fa50 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -1,6 +1,8 @@ /atom/proc/investigate_log(message, subject) - if(!message || !subject) + if(!message) return + if(!subject) + CRASH("No subject provided for investigate_log") var/F = file("[GLOB.log_directory]/[subject].html") var/source = "[src]" diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 4534ae9d93cff..944e230acd12f 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -37,7 +37,7 @@ * * (IE, no wacky hair styles / colors) */ -/proc/randomize_human_normie(mob/living/carbon/human/human, randomize_mutations = FALSE) +/proc/randomize_human_normie(mob/living/carbon/human/human, randomize_mutations = FALSE, update_body = TRUE) // Sorry enbys but statistically you are not average enough human.gender = human.dna.species.sexes ? pick(MALE, FEMALE) : PLURAL human.physique = human.gender @@ -59,4 +59,5 @@ // Normal DNA init stuff, these can generally be wacky but we care less, they're aliens after all human.dna.initialize_dna(newblood_type = random_blood_type(), create_mutation_blocks = randomize_mutations, randomize_features = TRUE) human.updatehealth() - human.updateappearance(mutcolor_update = TRUE) + if(update_body) + human.updateappearance(mutcolor_update = TRUE) diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index 296b6fd2dd86f..73987622202e6 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -300,7 +300,9 @@ ADMIN_VERB(edit_admin_permissions, R_PERMISSIONS, "Permissions Panel", "Edit adm D.deactivate() //after logs so the deadmined admin can see the message. /datum/admins/proc/auto_deadmin() - if (owner.prefs.read_preference(/datum/preference/toggle/bypass_deadmin_in_centcom) && is_centcom_level(owner.mob.z)) + if(owner.is_localhost()) + return FALSE + if(owner.prefs.read_preference(/datum/preference/toggle/bypass_deadmin_in_centcom) && is_centcom_level(owner.mob.z)) return FALSE to_chat(owner, span_interface("You are now a normal player."), confidential = TRUE) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 4da97d2c447bf..1305e5a660d6e 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -117,9 +117,6 @@ /proc/_text2num(T) return text2num(T) -/proc/_trimtext(Text) - return trimtext(Text) - /proc/_ohearers(Dist, Center = usr) return ohearers(Dist, Center) diff --git a/code/modules/admin/verbs/admin_newscaster.dm b/code/modules/admin/verbs/admin_newscaster.dm index b1be5560d69d9..7cac42e0b998e 100644 --- a/code/modules/admin/verbs/admin_newscaster.dm +++ b/code/modules/admin/verbs/admin_newscaster.dm @@ -128,7 +128,7 @@ ADMIN_VERB(access_news_network, R_ADMIN, "Access Newscaster Network", "Allows yo data["channelLocked"] = current_channel.locked data["channelCensored"] = current_channel.censored - //We send all the information about all channels and all messages in existance. + //We send all the information about all channels and all messages in existence. data["channels"] = channel_list data["messages"] = message_list data["wanted"] = wanted_info diff --git a/code/modules/admin/verbs/adminfun.dm b/code/modules/admin/verbs/adminfun.dm index 93b398397c284..984ced4c0bf7e 100644 --- a/code/modules/admin/verbs/adminfun.dm +++ b/code/modules/admin/verbs/adminfun.dm @@ -194,7 +194,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(admin_smite, R_ADMIN|R_FUN, "Smite", "Smite a player divine_wrath.original = target divine_wrath.def_zone = body_zone divine_wrath.spread = 0 - divine_wrath.preparePixelProjectile(target, source_turf) + divine_wrath.aim_projectile(target, source_turf) divine_wrath.fire() /client/proc/punish_log(whom, punishment) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 834e4741cdecf..abbcbb62ab648 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -502,7 +502,7 @@ ADMIN_VERB(cmd_admin_pm_panel, R_NONE, "Admin PM", "Show a list of clients to PM return TRUE -/// Notifies all admins about the existance of an admin pm, then logs the pm +/// Notifies all admins about the existence of an admin pm, then logs the pm /// message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel /// or a /client, in which case we send in the standard form /// log_message is the raw message to send, it will be filtered and treated to ensure we do not break any text handling diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index b6c5e10ca1d81..13f1995c9ba3d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -852,3 +852,42 @@ ADMIN_VERB(check_missing_sprites, R_DEBUG, "Debug Worn Item Sprites", "We're can actual_file_name = 'icons/mob/clothing/belt_mirror.dmi' if(!(sprite.icon_state in icon_states(actual_file_name))) to_chat(user, span_warning("ERROR sprites for [sprite.type]. Suit Storage slot."), confidential = TRUE) + +#ifndef OPENDREAM +ADMIN_VERB(start_tracy, R_DEBUG, "Run Tracy Now", "Start running the byond-tracy profiler immediately", ADMIN_CATEGORY_DEBUG) + if(GLOB.tracy_initialized) + to_chat(user, span_warning("byond-tracy is already running!"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE) + return + else if(GLOB.tracy_init_error) + to_chat(user, span_danger("byond-tracy failed to initialize during an earlier attempt: [GLOB.tracy_init_error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE) + return + message_admins(span_adminnotice("[key_name_admin(user)] is trying to start the byond-tracy profiler.")) + log_admin("[key_name(user)] is trying to start the byond-tracy profiler.") + GLOB.tracy_initialized = FALSE + GLOB.tracy_init_reason = "[user.ckey]" + world.init_byond_tracy() + if(GLOB.tracy_init_error) + to_chat(user, span_danger("byond-tracy failed to initialize: [GLOB.tracy_init_error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE) + message_admins(span_adminnotice("[key_name_admin(user)] tried to start the byond-tracy profiler, but it failed to initialize ([GLOB.tracy_init_error])")) + log_admin("[key_name(user)] tried to start the byond-tracy profiler, but it failed to initialize ([GLOB.tracy_init_error])") + return + to_chat(user, span_notice("byond-tracy successfully started!"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE) + message_admins(span_adminnotice("[key_name_admin(user)] started the byond-tracy profiler.")) + log_admin("[key_name(user)] started the byond-tracy profiler.") + if(GLOB.tracy_log) + rustg_file_write("[GLOB.tracy_log]", "[GLOB.log_directory]/tracy.loc") + +ADMIN_VERB_CUSTOM_EXIST_CHECK(start_tracy) + return CONFIG_GET(flag/allow_tracy_start) && fexists(TRACY_DLL_PATH) + +ADMIN_VERB(queue_tracy, R_DEBUG, "Toggle Tracy Next Round", "Toggle running the byond-tracy profiler next round", ADMIN_CATEGORY_DEBUG) + if(fexists(TRACY_ENABLE_PATH)) + fdel(TRACY_ENABLE_PATH) + else + rustg_file_write("[user.ckey]", TRACY_ENABLE_PATH) + message_admins(span_adminnotice("[key_name_admin(user)] [fexists(TRACY_ENABLE_PATH) ? "enabled" : "disabled"] the byond-tracy profiler for next round.")) + log_admin("[key_name(user)] [fexists(TRACY_ENABLE_PATH) ? "enabled" : "disabled"] the byond-tracy profiler for next round.") + +ADMIN_VERB_CUSTOM_EXIST_CHECK(queue_tracy) + return CONFIG_GET(flag/allow_tracy_queue) && fexists(TRACY_DLL_PATH) +#endif diff --git a/code/modules/admin/verbs/ert.dm b/code/modules/admin/verbs/ert.dm index 71722eb6d64ab..09903e7642978 100644 --- a/code/modules/admin/verbs/ert.dm +++ b/code/modules/admin/verbs/ert.dm @@ -157,7 +157,7 @@ spawn_turfs += get_turf(spawner) if(!brief_spawn) - brief_spawn = locate(/obj/effect/landmark/ert_shuttle_brief_spawn) in affected_turf + brief_spawn = get_turf(locate(/obj/effect/landmark/ert_shuttle_brief_spawn) in affected_turf) if(!length(spawn_turfs)) stack_trace("ERT shuttle loaded but found no spawnpoints, placing the ERT at wherever inside the shuttle instead.") @@ -206,7 +206,7 @@ candidate_living_exps = sort_list(candidate_living_exps, cmp=/proc/cmp_numeric_dsc) if(candidate_living_exps.len > ERT_EXPERIENCED_LEADER_CHOOSE_TOP) - candidate_living_exps = candidate_living_exps.Cut(ERT_EXPERIENCED_LEADER_CHOOSE_TOP+1) // pick from the top ERT_EXPERIENCED_LEADER_CHOOSE_TOP contenders in playtime + candidate_living_exps.Cut(ERT_EXPERIENCED_LEADER_CHOOSE_TOP+1) // pick from the top ERT_EXPERIENCED_LEADER_CHOOSE_TOP contenders in playtime earmarked_leader = pick(candidate_living_exps) else earmarked_leader = pick(candidates) diff --git a/code/modules/admin/verbs/highlander_datum.dm b/code/modules/admin/verbs/highlander_datum.dm index de7e4918fc00b..c574c39288213 100644 --- a/code/modules/admin/verbs/highlander_datum.dm +++ b/code/modules/admin/verbs/highlander_datum.dm @@ -11,7 +11,7 @@ GLOBAL_DATUM(highlander_controller, /datum/highlander_controller) . = ..() RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, PROC_REF(new_highlander)) sound_to_playing_players('sound/misc/highlander.ogg') - send_to_playing_players(span_boldannounce("THERE CAN BE ONLY ONE")) + send_to_playing_players(span_bolddanger("THERE CAN BE ONLY ONE")) for(var/obj/item/disk/nuclear/nuke_disk as anything in SSpoints_of_interest.real_nuclear_disks) var/datum/component/stationloving/component = nuke_disk.GetComponent(/datum/component/stationloving) component?.relocate() //Gets it out of bags and such diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index b70465666f3d0..5e68dcedbfaea 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -41,7 +41,8 @@ ADMIN_VERB(play_sound, R_SOUND, "Play Global Sound", "Play a sound to all connec ADMIN_VERB(play_local_sound, R_SOUND, "Play Local Sound", "Plays a sound only you can hear.", ADMIN_CATEGORY_FUN, sound as sound) log_admin("[key_name(user)] played a local sound [sound]") message_admins("[key_name_admin(user)] played a local sound [sound]") - playsound(get_turf(user.mob), sound, 50, FALSE, FALSE) + var/volume = tgui_input_number(user, "What volume would you like the sound to play at?", max_value = 100) + playsound(get_turf(user.mob), sound, volume || 50, FALSE) BLACKBOX_LOG_ADMIN_VERB("Play Local Sound") ADMIN_VERB(play_direct_mob_sound, R_SOUND, "Play Direct Mob Sound", "Play a sound directly to a mob.", ADMIN_CATEGORY_FUN, sound as sound, mob/target in world) @@ -51,6 +52,10 @@ ADMIN_VERB(play_direct_mob_sound, R_SOUND, "Play Direct Mob Sound", "Play a soun return log_admin("[key_name(user)] played a direct mob sound [sound] to [key_name_admin(target)].") message_admins("[key_name_admin(user)] played a direct mob sound [sound] to [ADMIN_LOOKUPFLW(target)].") + var/volume = tgui_input_number(user, "What volume would you like the sound to play at?", max_value = 100) + var/sound/admin_sound = sound(sound) + if(volume) + admin_sound.volume = volume SEND_SOUND(target, sound) BLACKBOX_LOG_ADMIN_VERB("Play Direct Mob Sound") @@ -175,6 +180,10 @@ ADMIN_VERB(play_web_sound, R_SOUND, "Play Internet Sound", "Play a given interne web_sound(user.mob, null) ADMIN_VERB(set_round_end_sound, R_SOUND, "Set Round End Sound", "Set the sound that plays on round end.", ADMIN_CATEGORY_FUN, sound as sound) + var/volume = tgui_input_number(user, "What volume would you like this sound to play at?", max_value = 100) + var/sound/admin_sound = sound(sound) + if(volume) + admin_sound.volume = volume SSticker.SetRoundEndSound(sound) log_admin("[key_name(user)] set the round end sound to [sound]") diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 82c6bdc480432..4277cae7d81fd 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -58,7 +58,7 @@ for(var/client/staff as anything in GLOB.admins) if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification)) SEND_SOUND(staff, sound('sound/misc/server-ready.ogg')) - to_chat(GLOB.admins, msg, confidential = TRUE) + to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE) for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list) console.override_cooldown() @@ -70,7 +70,7 @@ for(var/client/staff as anything in GLOB.admins) if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification)) SEND_SOUND(staff, sound('sound/misc/server-ready.ogg')) - to_chat(GLOB.admins, msg, confidential = TRUE) + to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE) for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list) console.override_cooldown() @@ -81,6 +81,6 @@ msg = span_adminnotice("NUKE CODE REQUEST:[ADMIN_FULLMONTY(sender)] [ADMIN_CENTCOM_REPLY(sender)] [ADMIN_SET_SD_CODE]: [msg]") for(var/client/staff as anything in GLOB.admins) SEND_SOUND(staff, sound('sound/misc/server-ready.ogg')) - to_chat(GLOB.admins, msg, confidential = TRUE) + to_chat(GLOB.admins, msg, type = MESSAGE_TYPE_PRAYER, confidential = TRUE) for(var/obj/machinery/computer/communications/console in GLOB.shuttle_caller_list) console.override_cooldown() diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm index 26cf122211305..e43164419d59c 100644 --- a/code/modules/admin/verbs/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -493,7 +493,7 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w return SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Mass Braindamage")) for(var/mob/living/carbon/human/H in GLOB.player_list) - to_chat(H, span_boldannounce("You suddenly feel stupid."), confidential = TRUE) + to_chat(H, span_bolddanger("You suddenly feel stupid."), confidential = TRUE) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 60, 80) message_admins("[key_name_admin(holder)] made everybody brain damaged") if("floorlava") diff --git a/code/modules/admin/view_variables/admin_delete.dm b/code/modules/admin/view_variables/admin_delete.dm index 5ef04b351cce3..b9a11b50e6547 100644 --- a/code/modules/admin/view_variables/admin_delete.dm +++ b/code/modules/admin/view_variables/admin_delete.dm @@ -16,6 +16,7 @@ log_admin("[key_name(usr)] deleted [D] [coords]") message_admins("[key_name_admin(usr)] deleted [D] [jmp_coords]") BLACKBOX_LOG_ADMIN_VERB("Delete") + SEND_SIGNAL(D, COMSIG_ADMIN_DELETING, src) if(isturf(D)) var/turf/T = D T.ScrapeAway() diff --git a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm index 296eef07e8141..790dd0f8e5355 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_surgery.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm @@ -60,5 +60,5 @@ user.visible_message(span_notice("[user] inserts [tool] into [target]."), span_notice("You insert [tool] into [target].")) user.temporarilyRemoveItemFromInventory(tool, TRUE) var/obj/item/organ/heart/gland/gland = tool - gland.Insert(target, 2) - return 1 + gland.Insert(target, special = TRUE, movement_flags = FROM_ABDUCTOR_SURGERY) + return TRUE diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index b991a16b8318d..02af10227e8df 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -50,8 +50,7 @@ if(!owner) return var/image/holder = owner.hud_list[GLAND_HUD] - var/icon/I = icon(owner.icon, owner.icon_state, owner.dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = owner.get_cached_height() - ICON_SIZE_Y if(active_mind_control) holder.icon_state = "hudgland_active" else if(mind_control_uses) @@ -84,7 +83,7 @@ active_mind_control = FALSE return TRUE -/obj/item/organ/heart/gland/mob_remove(mob/living/carbon/gland_owner, special, movement_flags) +/obj/item/organ/heart/gland/on_mob_remove(mob/living/carbon/gland_owner, special, movement_flags) . = ..() active = FALSE if(initial(uses) == 1) @@ -93,10 +92,10 @@ hud.remove_atom_from_hud(gland_owner) clear_mind_control() -/obj/item/organ/heart/gland/mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/heart/gland/on_mob_insert(mob/living/carbon/gland_owner, special = FALSE, movement_flags) . = ..() - if(special != 2 && uses) // Special 2 means abductor surgery + if(!(movement_flags & FROM_ABDUCTOR_SURGERY) && uses) Start() var/datum/atom_hud/abductor/hud = GLOB.huds[DATA_HUD_ABDUCTOR] hud.add_atom_to_hud(gland_owner) diff --git a/code/modules/antagonists/abductor/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm index f4ddd345075f8..644e3a827bf7b 100644 --- a/code/modules/antagonists/abductor/machinery/camera.dm +++ b/code/modules/antagonists/abductor/machinery/camera.dm @@ -21,11 +21,12 @@ return ..() /obj/machinery/computer/camera_advanced/abductor/CreateEye() - ..() - eyeobj.visible_icon = TRUE + . = ..() + //For observers eyeobj.icon = 'icons/mob/eyemob.dmi' eyeobj.icon_state = "abductor_camera" - eyeobj.SetInvisibility(INVISIBILITY_OBSERVER) + //For the user + eyeobj.set_user_icon(eyeobj.icon, eyeobj.icon_state) /obj/machinery/computer/camera_advanced/abductor/GrantActions(mob/living/carbon/user) if(!abduct_created) @@ -57,7 +58,7 @@ to_chat(owner, span_warning("You must wait [DisplayTimeText(use_delay - world.time)] to use the [target] again!")) return var/mob/living/carbon/human/C = owner - var/mob/eye/ai_eye/remote/remote_eye = C.remote_control + var/mob/eye/camera/remote/remote_eye = C.remote_control var/obj/machinery/abductor/pad/P = target var/area/target_area = get_area(remote_eye) @@ -101,7 +102,7 @@ to_chat(owner, span_warning("You can only teleport to one place at a time!")) return var/mob/living/carbon/human/C = owner - var/mob/eye/ai_eye/remote/remote_eye = C.remote_control + var/mob/eye/camera/remote/remote_eye = C.remote_control var/obj/machinery/abductor/pad/P = target var/area/target_area = get_area(remote_eye) @@ -151,7 +152,7 @@ return var/mob/living/carbon/human/C = owner - var/mob/eye/ai_eye/remote/remote_eye = C.remote_control + var/mob/eye/camera/remote/remote_eye = C.remote_control var/obj/machinery/abductor/console/console = target console.SetDroppoint(remote_eye.loc,owner) diff --git a/code/modules/antagonists/blob/blob_antag.dm b/code/modules/antagonists/blob/blob_antag.dm index 25bea4b083eaa..c5dfa6a1e10ca 100644 --- a/code/modules/antagonists/blob/blob_antag.dm +++ b/code/modules/antagonists/blob/blob_antag.dm @@ -100,7 +100,7 @@ . = ..() if(owner) addtimer(CALLBACK(src, PROC_REF(Activate), TRUE), autoplace_time, TIMER_UNIQUE|TIMER_OVERRIDE) - to_chat(owner, span_boldannounce("You will automatically pop and place your blob core in [DisplayTimeText(autoplace_time)].")) + to_chat(owner, span_bolddanger("You will automatically pop and place your blob core in [DisplayTimeText(autoplace_time)].")) /datum/action/innate/blobpop/Activate(timer_activated = FALSE) var/mob/living/old_body = owner @@ -183,5 +183,3 @@ /obj/effect/dummy/phased_mob/can_blob_attack() return FALSE - - diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index db40090615b07..bb43097bcd227 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -139,7 +139,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(!placed) if(manualplace_min_time && world.time >= manualplace_min_time) to_chat(src, span_boldnotice("You may now place your blob core.")) - to_chat(src, span_boldannounce("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)].")) + to_chat(src, span_bolddanger("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)].")) manualplace_min_time = 0 if(autoplace_max_time && world.time >= autoplace_max_time) place_blob_core(BLOB_RANDOM_PLACEMENT) @@ -261,8 +261,8 @@ GLOBAL_LIST_EMPTY(blob_nodes) return FALSE to_chat(src, span_blobannounce("You are the overmind!")) if(!placed && autoplace_max_time <= world.time) - to_chat(src, span_boldannounce("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)].")) - to_chat(src, span_boldannounce("You [manualplace_min_time ? "will be able to":"can"] manually place your blob core by pressing the Place Blob Core button in the bottom right corner of the screen.")) + to_chat(src, span_bolddanger("You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)].")) + to_chat(src, span_bolddanger("You [manualplace_min_time ? "will be able to":"can"] manually place your blob core by pressing the Place Blob Core button in the bottom right corner of the screen.")) update_health_hud() add_points(0) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 05881a3b4b3be..698ccda7ac9d1 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -1037,7 +1037,7 @@ /datum/antagonist/changeling/headslug/greet() play_stinger() - to_chat(owner, span_boldannounce("You are a fresh changeling birthed from a headslug! \ + to_chat(owner, span_bolddanger("You are a fresh changeling birthed from a headslug! \ You aren't as strong as a normal changeling, as you are newly born.")) diff --git a/code/modules/antagonists/changeling/headslug_eggs.dm b/code/modules/antagonists/changeling/headslug_eggs.dm index e2238d9d7e703..5c237b1156004 100644 --- a/code/modules/antagonists/changeling/headslug_eggs.dm +++ b/code/modules/antagonists/changeling/headslug_eggs.dm @@ -11,11 +11,11 @@ /// When this egg last got removed from a body. If -1, the egg hasn't been removed from a body. var/removal_time = -1 -/obj/item/organ/body_egg/changeling_egg/mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/body_egg/changeling_egg/on_mob_insert(mob/living/carbon/egg_owner, special = FALSE, movement_flags) . = ..() hatch_time = world.time + (removal_time == -1 ? EGG_INCUBATION_TIME : (hatch_time - removal_time)) -/obj/item/organ/body_egg/changeling_egg/mob_remove(mob/living/carbon/egg_owner, special, movement_flags) +/obj/item/organ/body_egg/changeling_egg/on_mob_remove(mob/living/carbon/egg_owner, special, movement_flags) . = ..() removal_time = world.time diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm index 71b1509ec816c..d8ebc7c599803 100644 --- a/code/modules/antagonists/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -7,6 +7,7 @@ req_human = TRUE ///if we're currently absorbing, used for sanity var/is_absorbing = FALSE + var/datum/looping_sound/changeling_absorb/absorbing_loop /datum/action/changeling/absorb_dna/can_sting(mob/living/carbon/owner) if(!..()) @@ -59,6 +60,7 @@ if(target.mind && owner.mind)//if the victim and owner have minds absorb_memories(target) + qdel(absorbing_loop) is_absorbing = FALSE changeling.adjust_chemicals(10) @@ -106,12 +108,12 @@ var/list/recent_speech = target.copy_recent_speech() if(recent_speech.len) - changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate [target.p_them()]!
" + changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate [target.p_them()]: " to_chat(owner, span_boldnotice("Some of [target]'s speech patterns, we should study these to better impersonate [target.p_them()]!")) for(var/spoken_memory in recent_speech) - changeling.antag_memory += "\"[spoken_memory]\"
" + changeling.antag_memory += " \"[spoken_memory]\"" to_chat(owner, span_notice("\"[spoken_memory]\"")) - changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
" + changeling.antag_memory += ". We have no more knowledge of [target]'s speech patterns. " to_chat(owner, span_boldnotice("We have no more knowledge of [target]'s speech patterns.")) @@ -146,6 +148,7 @@ if(2) owner.visible_message(span_warning("[owner] extends a proboscis!"), span_notice("We extend a proboscis.")) if(3) + absorbing_loop = new(owner, start_immediately = TRUE) owner.visible_message(span_danger("[owner] stabs [target] with the proboscis!"), span_notice("We stab [target] with the proboscis.")) to_chat(target, span_userdanger("You feel a sharp stabbing pain!")) target.take_overall_damage(40) @@ -153,6 +156,7 @@ SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[absorbing_iteration]")) if(!do_after(owner, 15 SECONDS, target, hidden = TRUE)) owner.balloon_alert(owner, "interrupted!") + qdel(absorbing_loop) is_absorbing = FALSE return FALSE return TRUE diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm index 1af11d3ad15ef..70f74d4e4297e 100644 --- a/code/modules/antagonists/changeling/powers/headcrab.dm +++ b/code/modules/antagonists/changeling/powers/headcrab.dm @@ -5,11 +5,17 @@ button_icon_state = "last_resort" chemical_cost = 20 dna_cost = CHANGELING_POWER_INNATE - req_human = TRUE req_stat = DEAD ignores_fakedeath = TRUE disabled_by_fire = FALSE +/datum/action/changeling/headcrab/can_be_used_by(mob/living/user) + if(HAS_TRAIT(user, TRAIT_TEMPORARY_BODY)) + return FALSE + if(isanimal_or_basicmob(user) && !istype(user, /mob/living/basic/headslug) && !isconstruct(user) && !(user.mob_biotypes & MOB_SPIRIT)) + return TRUE + return ..() + /datum/action/changeling/headcrab/sting_action(mob/living/user) set waitfor = FALSE var/confirm = tgui_alert(user, "Are we sure we wish to destroy our body and create a headslug?", "Last Resort", list("Yes", "No")) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 158b32df216f0..874141237a983 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -71,7 +71,7 @@ if(HAS_TRAIT_FROM_ONLY(user, TRAIT_PARALYSIS_L_ARM, CHANGELING_TRAIT) || HAS_TRAIT_FROM_ONLY(user, TRAIT_PARALYSIS_R_ARM, CHANGELING_TRAIT)) user.balloon_alert(user, "not enough muscle!") // no cheesing repuprosed glands return - if(user.active_hand_index % 2 == 0) //we regen the arm before changing it into the weapon + if(IS_RIGHT_INDEX(user.active_hand_index)) //we regen the arm before changing it into the weapon limb_regen = user.regenerate_limb(BODY_ZONE_R_ARM, 1) else limb_regen = user.regenerate_limb(BODY_ZONE_L_ARM, 1) diff --git a/code/modules/antagonists/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm index 733e0495118bc..b13b07f7f360d 100644 --- a/code/modules/antagonists/changeling/powers/transform.dm +++ b/code/modules/antagonists/changeling/powers/transform.dm @@ -141,8 +141,7 @@ . = ..() if(hud_icon) var/image/holder = user.hud_list[ID_HUD] - var/icon/I = icon(user.icon, user.icon_state, user.dir) - holder.pixel_y = I.Height() - ICON_SIZE_Y + holder.pixel_y = user.get_cached_height() - ICON_SIZE_Y holder.icon_state = hud_icon /** diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 150c61af29af6..32d1ca218769b 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -128,6 +128,7 @@ Striking a noncultist, however, will tear their flesh."} free_use = TRUE light_color = COLOR_HERETIC_GREEN light_range = 3 + demolition_mod = 1.5 /// holder for the actual action when created. var/list/datum/action/cooldown/spell/path_sword_actions /// holder for the actual action when created. @@ -1426,7 +1427,7 @@ Striking a noncultist, however, will tear their flesh."} qdel(src) return FALSE var/obj/projectile/projectile = hitby - if(projectile.reflectable & REFLECT_NORMAL) + if(projectile.reflectable) return FALSE //To avoid reflection chance double-dipping with block chance . = ..() if(.) diff --git a/code/modules/antagonists/cult/cult_turf_overlay.dm b/code/modules/antagonists/cult/cult_turf_overlay.dm index df92d7aec90f0..e5e70bac1f722 100644 --- a/code/modules/antagonists/cult/cult_turf_overlay.dm +++ b/code/modules/antagonists/cult/cult_turf_overlay.dm @@ -10,7 +10,8 @@ /obj/effect/cult_turf/examine(mob/user) if(linked) - linked.examine(user) + return linked.examine(user) + return list() /obj/effect/cult_turf/singularity_act() return diff --git a/code/modules/antagonists/fugitive/hunters/hunter.dm b/code/modules/antagonists/fugitive/hunters/hunter.dm index ba26645364712..8c68f0b63bf3b 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter.dm @@ -26,7 +26,7 @@ /datum/antagonist/fugitive_hunter/greet() switch(backstory) if(HUNTER_PACK_COPS) - to_chat(owner, span_boldannounce("Justice has arrived. I am a member of the Spacepol!")) + to_chat(owner, span_bolddanger("Justice has arrived. I am a member of the Spacepol!")) to_chat(owner, "The criminals should be on the station, we have special huds implanted to recognize them.") to_chat(owner, "As we have lost pretty much all power over these damned lawless megacorporations, it's a mystery if their security will cooperate with us.") if(HUNTER_PACK_RUSSIAN) @@ -47,7 +47,7 @@ to_chat(owner, span_danger("Your mission is simple. Infiltrate the facility and extract the target, dead or alive.")) to_chat(owner, span_danger("This is a stealth infiltration mission in hostile enemy territory. Be wary, and avoid being caught if possible.")) - to_chat(owner, span_boldannounce("You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station.")) + to_chat(owner, span_bolddanger("You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station.")) owner.announce_objectives() /datum/antagonist/fugitive_hunter/create_team(datum/team/fugitive_hunters/new_team) diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm index 9063760c5bcdc..8466eaf3130f2 100644 --- a/code/modules/antagonists/heretic/heretic_antag.dm +++ b/code/modules/antagonists/heretic/heretic_antag.dm @@ -7,6 +7,8 @@ * Used in creating spooky-text for heretic ascension announcements. */ /proc/generate_heretic_text(length = 25) + if(!isnum(length)) // stupid thing so we can use this directly in replacetext + length = 25 . = "" for(var/i in 1 to length) . += pick("!", "$", "^", "@", "&", "#", "*", "(", ")", "?") @@ -93,9 +95,9 @@ //if the knowledge is a spell, use the spell's button else if(ispath(knowledge,/datum/heretic_knowledge/spell)) var/datum/heretic_knowledge/spell/spell_knowledge = knowledge - var/datum/action/cooldown/spell/result_spell = spell_knowledge.spell_to_add - icon_path = result_spell.button_icon - icon_state = result_spell.button_icon_state + var/datum/action/result_action = spell_knowledge.action_to_add + icon_path = result_action.button_icon + icon_state = result_action.button_icon_state //if the knowledge is a summon, use the mob sprite else if(ispath(knowledge,/datum/heretic_knowledge/summon)) diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm index d4fdf79dfbb59..a0d77682cd8d4 100644 --- a/code/modules/antagonists/heretic/heretic_knowledge.dm +++ b/code/modules/antagonists/heretic/heretic_knowledge.dm @@ -187,26 +187,26 @@ /datum/heretic_knowledge/spell abstract_parent_type = /datum/heretic_knowledge/spell /// Spell path we add to the heretic. Type-path. - var/datum/action/cooldown/spell/spell_to_add + var/datum/action/action_to_add /// The spell we actually created. - var/datum/weakref/created_spell_ref + var/datum/weakref/created_action_ref /datum/heretic_knowledge/spell/Destroy() - QDEL_NULL(created_spell_ref) + QDEL_NULL(created_action_ref) return ..() /datum/heretic_knowledge/spell/on_gain(mob/user, datum/antagonist/heretic/our_heretic) // Added spells are tracked on the body, and not the mind, // because we handle heretic mind transfers // via the antag datum (on_gain and on_lose). - var/datum/action/cooldown/spell/created_spell = created_spell_ref?.resolve() || new spell_to_add(user) - created_spell.Grant(user) - created_spell_ref = WEAKREF(created_spell) + var/datum/action/created_action = created_action_ref?.resolve() || new action_to_add(user) + created_action.Grant(user) + created_action_ref = WEAKREF(created_action) /datum/heretic_knowledge/spell/on_lose(mob/user, datum/antagonist/heretic/our_heretic) - var/datum/action/cooldown/spell/created_spell = created_spell_ref?.resolve() - if(created_spell?.owner == user) - created_spell.Remove(user) + var/datum/action/cooldown/spell/created_action = created_action_ref?.resolve() + if(created_action?.owner == user) + created_action.Remove(user) /** * A knowledge subtype for knowledge that can only @@ -665,8 +665,14 @@ cost = 2 priority = MAX_KNOWLEDGE_PRIORITY + 1 // Yes, the final ritual should be ABOVE the max priority. required_atoms = list(/mob/living/carbon/human = 3) - //use this to store the achievement typepath + /// The typepath of the achievement to grant upon successful ascension. var/datum/award/achievement/misc/ascension_achievement + /// The text of the ascension announcement. + /// %NAME% is replaced with the heretic's real name, + /// and %SPOOKY% is replaced with output from [generate_heretic_text] + var/announcement_text + /// The sound that's played for the ascension announcement. + var/announcement_sound /datum/heretic_knowledge/ultimate/on_research(mob/user, datum/antagonist/heretic/our_heretic) . = ..() @@ -727,6 +733,13 @@ source = user, header = "A Heretic is Ascending!", ) + priority_announce( + text = replacetext(replacetext(announcement_text, "%NAME%", user.real_name), "%SPOOKY%", GLOBAL_PROC_REF(generate_heretic_text)), + title = generate_heretic_text(), + sound = announcement_sound, + color_override = "pink", + ) + if(!isnull(ascension_achievement)) user.client?.give_award(ascension_achievement, user) heretic_datum.increase_rust_strength() diff --git a/code/modules/antagonists/heretic/heretic_living_heart.dm b/code/modules/antagonists/heretic/heretic_living_heart.dm index 3e8f39fef4f94..b41f616b8b3a3 100644 --- a/code/modules/antagonists/heretic/heretic_living_heart.dm +++ b/code/modules/antagonists/heretic/heretic_living_heart.dm @@ -32,8 +32,8 @@ REMOVE_TRAIT(parent, TRAIT_LIVING_HEART, REF(src)) UnregisterSignal(parent, list(COMSIG_ORGAN_REMOVED, COMSIG_ORGAN_BEING_REPLACED)) -/datum/component/living_heart/PostTransfer() - if(!isorgan(parent)) +/datum/component/living_heart/PostTransfer(datum/new_parent) + if(!isorgan(new_parent)) return COMPONENT_INCOMPATIBLE /** @@ -80,6 +80,8 @@ var/last_tracked_name /// Whether the target radial is currently opened. var/radial_open = FALSE + /// Navigator to our target that we have. + var/datum/status_effect/agent_pinpointer/scan/heretic/heretic_pinpointer /datum/action/cooldown/track_target/Grant(mob/granted) if(!IS_HERETIC(granted)) @@ -144,6 +146,7 @@ playsound(owner, 'sound/effects/singlebeat.ogg', 50, TRUE, SILENCED_SOUND_EXTRARANGE) owner.balloon_alert(owner, get_balloon_message(tracked_mob)) + // Let them know how to sacrifice people if they're able to be sac'd if(tracked_mob.stat == DEAD) to_chat(owner, span_hierophant("[tracked_mob] is dead. Bring them to a transmutation rune \ @@ -152,6 +155,26 @@ StartCooldown() return TRUE +/datum/action/cooldown/track_target/proc/make_navigate_arrow(turf/tracked_turf, arrow_color) + var/datum/hud/user_hud = owner.hud_used + if(!user_hud) + return + var/atom/movable/screen/heretic_arrow/arrow = new /atom/movable/screen/heretic_arrow(null, user_hud) + animate(arrow, transform = matrix(dir2angle(get_dir(owner, tracked_turf)), MATRIX_ROTATE), 0.2 SECONDS) + arrow.screen_loc = around_player + arrow.color = arrow_color + user_hud.infodisplay += arrow + user_hud.show_hud(user_hud.hud_version) + addtimer(CALLBACK(src, PROC_REF(end_effect), user_hud, arrow), 1.6 SECONDS) + +/datum/action/cooldown/track_target/proc/end_effect(datum/hud/user_hud, atom/movable/screen/heretic_arrow/arrow) + arrow.icon_state = "heretic_arrow_disappear" + addtimer(CALLBACK(src, PROC_REF(null_arrow), user_hud, arrow), 0.4 SECONDS) + +/datum/action/cooldown/track_target/proc/null_arrow(datum/hud/user_hud, atom/movable/screen/heretic_arrow/arrow) + user_hud.infodisplay -= arrow + user_hud.show_hud(user_hud.hud_version) + /// Callback for the radial to ensure it's closed when not allowed. /datum/action/cooldown/track_target/proc/check_menu() if(QDELETED(src)) @@ -204,17 +227,32 @@ var/dist = get_dist(our_turf, their_turf) var/dir = get_dir(our_turf, their_turf) + var/arrow_color + switch(dist) if(0 to 15) balloon_message = "very near, [dir2text(dir)]!" + arrow_color = COLOR_GREEN if(16 to 31) balloon_message = "near, [dir2text(dir)]!" + arrow_color = COLOR_YELLOW if(32 to 127) balloon_message = "far, [dir2text(dir)]!" + arrow_color = COLOR_ORANGE else balloon_message = "very far!" + arrow_color = COLOR_RED + + make_navigate_arrow(their_turf, arrow_color) if(tracked_mob.stat == DEAD) balloon_message = "they're dead, " + balloon_message return balloon_message + +/atom/movable/screen/heretic_arrow + icon = 'icons/effects/96x96.dmi' + name = "heretic arrow" + icon_state = "heretic_arrow_appear" + pixel_x = -32 + pixel_y = -32 diff --git a/code/modules/antagonists/heretic/influences.dm b/code/modules/antagonists/heretic/influences.dm index 7b316d6cdb984..494a8d30521b9 100644 --- a/code/modules/antagonists/heretic/influences.dm +++ b/code/modules/antagonists/heretic/influences.dm @@ -114,7 +114,7 @@ their_poor_arm.dismember() qdel(their_poor_arm) else - to_chat(human_user,span_danger("You pull your hand away from the hole as the eldritch energy flails, trying to latch onto existance itself!")) + to_chat(human_user,span_danger("You pull your hand away from the hole as the eldritch energy flails, trying to latch onto existence itself!")) return TRUE /obj/effect/visible_heretic_influence/attack_tk(mob/user) diff --git a/code/modules/antagonists/heretic/items/corrupted_organs.dm b/code/modules/antagonists/heretic/items/corrupted_organs.dm index fec25094bb782..0e8699f6771e0 100644 --- a/code/modules/antagonists/heretic/items/corrupted_organs.dm +++ b/code/modules/antagonists/heretic/items/corrupted_organs.dm @@ -28,7 +28,7 @@ if (LAZYLEN(hallucinations)) organ_owner.client.images |= hallucinations -/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/eyes/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if (!LAZYLEN(hallucinations)) return @@ -51,7 +51,7 @@ . = ..() RegisterSignal(organ_owner, COMSIG_MOB_SAY, PROC_REF(on_spoken)) -/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/tongue/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_MOB_SAY) @@ -87,11 +87,11 @@ . = ..() AddElement(/datum/element/corrupted_organ) -/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank)) -/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS) @@ -124,11 +124,11 @@ AddElement(/datum/element/corrupted_organ) AddElement(/datum/element/noticable_organ, "%PRONOUN_They %PRONOUN_have an unhealthy pallor.") -/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/corrupt/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() RegisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_drank)) -/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/corrupt/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_ATOM_EXPOSE_REAGENTS) diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm index 6e0d3d7d18659..7b608223a9803 100644 --- a/code/modules/antagonists/heretic/items/heretic_blades.dm +++ b/code/modules/antagonists/heretic/items/heretic_blades.dm @@ -251,10 +251,7 @@ return TRUE if(prob(15)) to_chat(user, span_cult_large(pick("\"An untouched mind? Amusing.\"", "\" I suppose it isn't worth the effort to stop you.\"", "\"Go ahead. I don't care.\"", "\"You'll be mine soon enough.\""))) - var/obj/item/bodypart/affecting = user.get_active_hand() - if(!affecting) - return - affecting.receive_damage(burn = 5) + user.apply_damage(5, BURN, user.get_active_hand()) playsound(src, SFX_SEAR, 25, TRUE) to_chat(user, span_danger("Your hand sizzles.")) // Nar nar might not care but their essence still doesn't like you else if(prob(15)) diff --git a/code/modules/antagonists/heretic/items/keyring.dm b/code/modules/antagonists/heretic/items/keyring.dm index a37b55c17f3fb..1d8e88a8c5975 100644 --- a/code/modules/antagonists/heretic/items/keyring.dm +++ b/code/modules/antagonists/heretic/items/keyring.dm @@ -64,6 +64,8 @@ if(!do_teleport(teleportee, get_turf(doorstination), channel = TELEPORT_CHANNEL_MAGIC)) return + teleportee.client?.move_delay = 0 //make moving through smoother + if(!IS_HERETIC_OR_MONSTER(teleportee)) teleportee.apply_damage(20, BRUTE) //so they dont roll it like a jackpot machine to see if they can land in the armory to_chat(teleportee, span_userdanger("You stumble through [src], battered by forces beyond your comprehension, landing anywhere but where you thought you were going.")) @@ -109,7 +111,7 @@ if(!IS_HERETIC_OR_MONSTER(user)) return . += span_hypnophrase("Enchanted by the Mansus!") - . += span_hypnophrase("Using an ID on this will consume it and allow you to copy its accesses.") + . += span_hypnophrase("Using an ID on this or using this ID on another ID will consume it and allow you to copy its accesses.") . += span_hypnophrase("Using this in-hand allows you to change its appearance.") . += span_hypnophrase("Using this on a pair of doors, allows you to link them together. Entering one door will transport you to the other, while heathens are instead teleported to a random airlock.") . += span_hypnophrase("Ctrl-clicking the ID, makes the ID make inverted portals instead, which teleport you onto a random airlock onstation, while heathens are teleported to the destination.") @@ -169,18 +171,28 @@ portal_two.destination = portal_one balloon_alert(user, "[message]") -/obj/item/card/id/advanced/heretic/attackby(obj/item/thing, mob/user, params) - if(!istype(thing, /obj/item/card/id/advanced) || !IS_HERETIC(user)) +/obj/item/card/id/advanced/heretic/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/card/id/advanced) || !IS_HERETIC(user)) return ..() - var/obj/item/card/id/card = thing + eat_card(tool, user) + return ITEM_INTERACT_SUCCESS + +/obj/item/card/id/advanced/heretic/proc/eat_card(obj/item/card/id/card, mob/user) + if(card == src) + return //no self vore fused_ids[card.name] = card card.moveToNullspace() - playsound(drop_location(),'sound/items/eatfood.ogg', rand(10,50), TRUE) + playsound(drop_location(), 'sound/items/eatfood.ogg', rand(10,30), TRUE) access += card.access + if(!isnull(user)) + balloon_alert(user, "consumed card") /obj/item/card/id/advanced/heretic/interact_with_atom(atom/target, mob/living/user, list/modifiers) if(!IS_HERETIC(user)) return NONE + if(istype(target, /obj/item/card/id)) + eat_card(target, user) + return ITEM_INTERACT_SUCCESS if(istype(target, /obj/effect/lock_portal)) clear_portals() return ITEM_INTERACT_SUCCESS diff --git a/code/modules/antagonists/heretic/knife_effect.dm b/code/modules/antagonists/heretic/knife_effect.dm index 1bd44921cf957..e11fd79ab9f75 100644 --- a/code/modules/antagonists/heretic/knife_effect.dm +++ b/code/modules/antagonists/heretic/knife_effect.dm @@ -12,3 +12,7 @@ AddElement(/datum/element/movetype_handler) ADD_TRAIT(src, TRAIT_MOVE_FLYING, INNATE_TRAIT) add_filter("dio_knife", 2, list("type" = "outline", "color" = glow_color, "size" = 1)) + +/obj/effect/floating_blade/haunted + icon = 'icons/obj/weapons/khopesh.dmi' + icon_state = "render" diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm index 61056d4210f40..9d657c7b3e726 100644 --- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm @@ -63,7 +63,7 @@ desc = "Grants you Ashen Passage, a spell that lets you phase out of reality and traverse a short distance, passing though any walls." gain_text = "He knew how to walk between the planes." - spell_to_add = /datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash + action_to_add = /datum/action/cooldown/spell/jaunt/ethereal_jaunt/ash cost = 1 @@ -99,7 +99,7 @@ at a nearby enemy, setting them on fire and burning them. If they do not extinguish themselves, \ the beam will continue to another target." gain_text = "No fire was hot enough to rekindle them. No fire was bright enough to save them. No fire is eternal." - spell_to_add = /datum/action/cooldown/spell/charged/beam/fire_blast + action_to_add = /datum/action/cooldown/spell/charged/beam/fire_blast cost = 1 research_tree_icon_frame = 7 @@ -145,7 +145,7 @@ If any victims afflicted are in critical condition, they will also instantly die." gain_text = "The fire was inescapable, and yet, life remained in his charred body. \ The Nightwatcher was a particular man, always watching." - spell_to_add = /datum/action/cooldown/spell/aoe/fiery_rebirth + action_to_add = /datum/action/cooldown/spell/aoe/fiery_rebirth cost = 1 research_tree_icon_frame = 5 @@ -163,6 +163,8 @@ WITNESS MY ASCENSION, THE ASHY LANTERN BLAZES ONCE MORE!" ascension_achievement = /datum/award/achievement/misc/ash_ascension + announcement_text = "%SPOOKY% Fear the blaze, for the Ashlord, %NAME% has ascended! The flames shall consume all! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_ash.ogg' /// A static list of all traits we apply on ascension. var/static/list/traits_to_apply = list( TRAIT_BOMBIMMUNE, @@ -187,13 +189,6 @@ /datum/heretic_knowledge/ultimate/ash_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_ash.ogg', - color_override = "pink", - ) - var/datum/action/cooldown/spell/fire_sworn/circle_spell = new(user.mind) circle_spell.Grant(user) @@ -209,5 +204,4 @@ var/datum/action/cooldown/spell/aoe/fiery_rebirth/fiery_rebirth = locate() in user.actions fiery_rebirth?.cooldown_time *= 0.16 - if(length(traits_to_apply)) - user.add_traits(traits_to_apply, MAGIC_TRAIT) + user.add_traits(traits_to_apply, type) diff --git a/code/modules/antagonists/heretic/knowledge/blade_lore.dm b/code/modules/antagonists/heretic/knowledge/blade_lore.dm index 5cffc7bc304f2..993aa20c4287e 100644 --- a/code/modules/antagonists/heretic/knowledge/blade_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/blade_lore.dm @@ -185,7 +185,7 @@ During this process, you will rapidly regenerate stamina and quickly recover from stuns, however, you will be unable to attack. \ This spell can be cast in rapid succession, but doing so will increase the cooldown." gain_text = "In the flurry of death, he found peace within himself. Despite insurmountable odds, he forged on." - spell_to_add = /datum/action/cooldown/spell/realignment + action_to_add = /datum/action/cooldown/spell/realignment cost = 1 @@ -364,7 +364,7 @@ at a target, dealing damage and causing bleeding." gain_text = "Without thinking, I took the knife of a fallen soldier and threw with all my might. My aim was true! \ The Torn Champion smiled at their first taste of agony, and with a nod, their blades became my own." - spell_to_add = /datum/action/cooldown/spell/pointed/projectile/furious_steel + action_to_add = /datum/action/cooldown/spell/pointed/projectile/furious_steel cost = 1 /datum/heretic_knowledge/ultimate/blade_final @@ -380,6 +380,8 @@ I AM UNMATCHED! A STORM OF STEEL AND SILVER IS UPON US! WITNESS MY ASCENSION!" ascension_achievement = /datum/award/achievement/misc/blade_ascension + announcement_text = "%SPOOKY% Master of blades, the Torn Champion's disciple, %NAME% has ascended! Their steel is that which will cut reality in a maelstom of silver! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_blade.ogg' /datum/heretic_knowledge/ultimate/blade_final/is_valid_sacrifice(mob/living/carbon/human/sacrifice) . = ..() @@ -390,13 +392,7 @@ /datum/heretic_knowledge/ultimate/blade_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] Master of blades, the Torn Champion's disciple, [user.real_name] has ascended! Their steel is that which will cut reality in a maelstom of silver! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_blade.ogg', - color_override = "pink", - ) - ADD_TRAIT(user, TRAIT_NEVER_WOUNDED, name) + ADD_TRAIT(user, TRAIT_NEVER_WOUNDED, type) RegisterSignal(user, COMSIG_HERETIC_BLADE_ATTACK, PROC_REF(on_eldritch_blade)) user.apply_status_effect(/datum/status_effect/protective_blades/recharging, null, 8, 30, 0.25 SECONDS, /obj/effect/floating_blade, 1 MINUTES) user.add_stun_absorption( diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm index 6a895a7ffdfd2..d545e258a302e 100644 --- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm @@ -62,7 +62,7 @@ However, people with a star mark will get transported along with another person using the rune." gain_text = "The distant stars crept into my dreams, roaring and screaming without reason. \ I spoke, and heard my own words echoed back." - spell_to_add = /datum/action/cooldown/spell/cosmic_rune + action_to_add = /datum/action/cooldown/spell/cosmic_rune cost = 1 @@ -86,7 +86,7 @@ The beam lasts a minute, until the beam is obstructed or until a new target has been found." gain_text = "After waking in a cold sweat I felt a palm on my scalp, a sigil burned onto me. \ My veins now emitted a strange purple glow, the Beast knows I will surpass its expectations." - spell_to_add = /datum/action/cooldown/spell/touch/star_touch + action_to_add = /datum/action/cooldown/spell/touch/star_touch cost = 1 /datum/heretic_knowledge/spell/star_blast @@ -94,7 +94,7 @@ desc = "Fires a projectile that moves very slowly, raising a short-lived wall of cosmic fields where it goes. \ Anyone hit by the projectile will receive burn damage, a knockdown, and give people in a three tile range a star mark." gain_text = "The Beast was behind me now at all times, with each sacrifice words of affirmation coursed through me." - spell_to_add = /datum/action/cooldown/spell/pointed/projectile/star_blast + action_to_add = /datum/action/cooldown/spell/pointed/projectile/star_blast cost = 1 /datum/heretic_knowledge/blade_upgrade/cosmic @@ -199,7 +199,7 @@ desc = "Grants you Cosmic Expansion, a spell that creates a 3x3 area of cosmic fields around you. \ Nearby beings will also receive a star mark." gain_text = "The ground now shook beneath me. The Beast inhabited me, and their voice was intoxicating." - spell_to_add = /datum/action/cooldown/spell/conjure/cosmic_expansion + action_to_add = /datum/action/cooldown/spell/conjure/cosmic_expansion cost = 1 /datum/heretic_knowledge/ultimate/cosmic_final @@ -219,6 +219,8 @@ WITNESS MY ASCENSION!" ascension_achievement = /datum/award/achievement/misc/cosmic_ascension + announcement_text = "%SPOOKY% A Star Gazer has arrived into the station, %NAME% has ascended! This station is the domain of the Cosmos! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_cosmic.ogg' /// A static list of command we can use with our mob. var/static/list/star_gazer_commands = list( /datum/pet_command/idle, @@ -236,12 +238,6 @@ /datum/heretic_knowledge/ultimate/cosmic_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] A Star Gazer has arrived into the station, [user.real_name] has ascended! This station is the domain of the Cosmos! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_cosmic.ogg', - color_override = "pink", - ) var/mob/living/basic/heretic_summon/star_gazer/star_gazer_mob = new /mob/living/basic/heretic_summon/star_gazer(loc) star_gazer_mob.maxHealth = INFINITY star_gazer_mob.health = INFINITY diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm index 976ce2ae7ba4e..cfcd6ea9ceda1 100644 --- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm @@ -214,7 +214,7 @@ This spell also allows you to heal your minions and summons, or restore failing organs to acceptable status." gain_text = "But they were not out of my reach for long. With every step, the screams grew, until at last \ I learned that they could be silenced." - spell_to_add = /datum/action/cooldown/spell/touch/flesh_surgery + action_to_add = /datum/action/cooldown/spell/touch/flesh_surgery cost = 1 /datum/heretic_knowledge/summon/raw_prophet @@ -288,20 +288,14 @@ Reality will bend to THE LORD OF THE NIGHT or be unraveled! WITNESS MY ASCENSION!" required_atoms = list(/mob/living/carbon/human = 4) ascension_achievement = /datum/award/achievement/misc/flesh_ascension + announcement_text = "%SPOOKY% Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, %NAME% has ascended! Fear the ever twisting hand! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_flesh.ogg' /datum/heretic_knowledge/ultimate/flesh_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, [user.real_name] has ascended! Fear the ever twisting hand! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_flesh.ogg', - color_override = "pink", - ) - var/datum/action/cooldown/spell/shapeshift/shed_human_form/worm_spell = new(user.mind) worm_spell.Grant(user) - var/datum/antagonist/heretic/heretic_datum = GET_HERETIC(user) var/datum/heretic_knowledge/limited_amount/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/heretic_knowledge/limited_amount/flesh_grasp) grasp_ghoul.limit *= 3 diff --git a/code/modules/antagonists/heretic/knowledge/lock_lore.dm b/code/modules/antagonists/heretic/knowledge/lock_lore.dm index 28e02112fd70e..d323beecc1854 100644 --- a/code/modules/antagonists/heretic/knowledge/lock_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/lock_lore.dm @@ -117,11 +117,11 @@ /datum/heretic_knowledge/limited_amount/concierge_rite // item that creates 3 max at a time heretic only barriers, probably should limit to 1 only, holy people can also pass name = "Concierge's Rite" - desc = "Allows you to transmute a stick of chalk, a wooden plank, and a multitool to create a Labyrinth Handbook. \ + desc = "Allows you to transmute a crayon, a wooden plank, and a multitool to create a Labyrinth Handbook. \ It can materialize a barricade at range that only you and people resistant to magic can pass. 3 uses." gain_text = "The Concierge scribbled my name into the Handbook. \"Welcome to your new home, fellow Steward.\"" required_atoms = list( - /obj/item/toy/crayon/white = 1, + /obj/item/toy/crayon = 1, /obj/item/stack/sheet/mineral/wood = 1, /obj/item/multitool = 1, ) @@ -136,7 +136,7 @@ that puts a random item from the victims backpack into your hand." gain_text = "Consorting with Burglar spirits is frowned upon, but a Steward will always want to learn about new doors." - spell_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse + action_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse cost = 1 /datum/heretic_knowledge/blade_upgrade/flesh/lock //basically a chance-based weeping avulsion version of the former @@ -158,7 +158,7 @@ While in refuge, you cannot use your hands or spells, and you are immune to slowdown. \ You are invincible but unable to harm anything. Cancelled by being hit with an anti-magic item." gain_text = "Jealously, the Guard and the Hound hunted me. But I unlocked my form, and was but a haze, untouchable." - spell_to_add = /datum/action/cooldown/spell/caretaker + action_to_add = /datum/action/cooldown/spell/caretaker cost = 1 /datum/heretic_knowledge/ultimate/lock_final @@ -176,6 +176,8 @@ The Labyrinth will be Locked no more, and freedom will be ours! WITNESS US!" required_atoms = list(/mob/living/carbon/human = 3) ascension_achievement = /datum/award/achievement/misc/lock_ascension + announcement_text = "Delta-class dimensional anomaly detec%SPOOKY% Reality rended, torn. Gates open, doors open, %NAME% has ascended! Fear the tide! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_knock.ogg' /datum/heretic_knowledge/ultimate/lock_final/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc) . = ..() @@ -198,13 +200,6 @@ /datum/heretic_knowledge/ultimate/lock_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_knock.ogg', - color_override = "pink", - ) - // buffs var/datum/action/cooldown/spell/shapeshift/eldritch/ascension/transform_spell = new(user.mind) transform_spell.Grant(user) diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm index 2ab75e96c5a78..c5a6930eab799 100644 --- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm @@ -32,7 +32,7 @@ research_tree_icon_state = "moon_blade" /datum/heretic_knowledge/limited_amount/starting/base_moon/on_gain(mob/user, datum/antagonist/heretic/our_heretic) - add_traits(user ,TRAIT_EMPATH, REF(src)) + ADD_TRAIT(user, TRAIT_EMPATH, REF(src)) /datum/heretic_knowledge/moon_grasp name = "Grasp of Lunacy" @@ -70,7 +70,7 @@ duration based on their sanity." gain_text = "The moon smiles upon us all and those who see its true side can bring its joy." - spell_to_add = /datum/action/cooldown/spell/pointed/moon_smile + action_to_add = /datum/action/cooldown/spell/pointed/moon_smile cost = 1 /datum/heretic_knowledge/mark/moon_mark @@ -89,7 +89,7 @@ desc = "Grants you Lunar Parade, a spell that - after a short charge - sends a carnival forward \ when hitting someone they are forced to join the parade and suffer hallucinations." gain_text = "The music like a reflection of the soul compelled them, like moths to a flame they followed" - spell_to_add = /datum/action/cooldown/spell/pointed/projectile/moon_parade + action_to_add = /datum/action/cooldown/spell/pointed/projectile/moon_parade cost = 1 /datum/heretic_knowledge/moon_amulet @@ -144,7 +144,7 @@ gain_text = "I grabbed his hand and we rose, those who saw the truth rose with us. \ The ringleader pointed up and the dim light of truth illuminated us further." - spell_to_add = /datum/action/cooldown/spell/aoe/moon_ringleader + action_to_add = /datum/action/cooldown/spell/aoe/moon_ringleader cost = 1 @@ -162,6 +162,9 @@ WITNESS MY ASCENSION, THE MOON SMILES ONCE MORE AND FOREVER MORE IT SHALL!" ascension_achievement = /datum/award/achievement/misc/moon_ascension + announcement_text = "%SPOOKY% Laugh, for the ringleader %NAME% has ascended! \ + The truth shall finally devour the lie! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_moon.ogg' /datum/heretic_knowledge/ultimate/moon_final/is_valid_sacrifice(mob/living/sacrifice) @@ -174,15 +177,7 @@ /datum/heretic_knowledge/ultimate/moon_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] Laugh, for the ringleader [user.real_name] has ascended! \ - The truth shall finally devour the lie! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_moon.ogg', - color_override = "pink", - ) - - ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, REF(src)) + ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, type) user.mind.add_antag_datum(/datum/antagonist/lunatic/master) RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life)) diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm index a2f0a91e69a06..41db760f53ae6 100644 --- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm @@ -104,7 +104,7 @@ Anyone overtop the wall will be throw aside (or upwards) and sustain damage." gain_text = "Images of foreign and ominous structures began to dance in my mind. Covered head to toe in thick rust, \ they no longer looked man made. Or perhaps they never were in the first place." - spell_to_add = /datum/action/cooldown/spell/pointed/rust_construction + action_to_add = /datum/action/cooldown/spell/pointed/rust_construction cost = 1 /datum/heretic_knowledge/spell/area_conversion @@ -112,7 +112,7 @@ desc = "Grants you Aggressive Spread, a spell that spreads rust to nearby surfaces. \ Already rusted surfaces are destroyed \ Also improves the rusting abilities of non rust-heretics." gain_text = "All wise men know well not to visit the Rusted Hills... Yet the Blacksmith's tale was inspiring." - spell_to_add = /datum/action/cooldown/spell/aoe/rust_conversion + action_to_add = /datum/action/cooldown/spell/aoe/rust_conversion cost = 1 research_tree_icon_frame = 5 @@ -147,7 +147,7 @@ gain_text = "The corrosion was unstoppable. The rust was unpleasable. \ The Blacksmith was gone, and you hold their blade. Champions of hope, the Rustbringer is nigh!" - spell_to_add = /datum/action/cooldown/spell/cone/staggered/entropic_plume + action_to_add = /datum/action/cooldown/spell/cone/staggered/entropic_plume cost = 1 @@ -168,6 +168,8 @@ The Blacksmith forges ahead! Rusted Hills, CALL MY NAME! WITNESS MY ASCENSION!" ascension_achievement = /datum/award/achievement/misc/rust_ascension + announcement_text = "%SPOOKY% Fear the decay, for the Rustbringer, %NAME% has ascended! None shall escape the corrosion! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_rust.ogg' /// If TRUE, then immunities are currently active. var/immunities_active = FALSE /// A typepath to an area that we must finish the ritual in. @@ -208,12 +210,6 @@ /datum/heretic_knowledge/ultimate/rust_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_rust.ogg', - color_override = "pink", - ) trigger(loc) RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life)) diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm index 9c29d15ba67c6..6fec632e5102f 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_buff.dm @@ -117,7 +117,7 @@ new /obj/effect/temp_visual/dir_setting/curse/grasp_portal(spawn_turf, victim.dir) playsound(spawn_turf, 'sound/effects/curse/curse2.ogg', 80, TRUE, -1) var/obj/projectile/curse_hand/hel/hand = new (spawn_turf) - hand.preparePixelProjectile(victim, spawn_turf) + hand.aim_projectile(victim, spawn_turf) if (QDELETED(hand)) // safety check if above fails - above has a stack trace if it does fail return hand.fire() diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm index 07b126fe74f2f..3dee1c0176f12 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_map.dm @@ -84,7 +84,7 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks) /area/centcom/heretic_sacrifice name = "Mansus" icon_state = "heretic" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY ambience_index = AMBIENCE_SPOOKY sound_environment = SOUND_ENVIRONMENT_CAVE area_flags = UNIQUE_AREA | NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE | NO_BOH diff --git a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm index 05b414fe34634..a09c9cd87973d 100644 --- a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm +++ b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm @@ -112,7 +112,7 @@ desc = "A charge that must be started on a rusted tile and will destroy any rusted objects you come into contact with, will deal high damage to others and rust around you during the charge." gain_text = "The hills sparkled now, as I neared them my mind began to wander. I quickly regained my resolve and pushed forward, this last leg would be the most treacherous." - spell_to_add = /datum/action/cooldown/mob_cooldown/charge/rust + action_to_add = /datum/action/cooldown/mob_cooldown/charge/rust cost = 1 diff --git a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm index 03b4fc477ad1b..d15bb242989cf 100644 --- a/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm +++ b/code/modules/antagonists/heretic/knowledge/side_cosmos_ash.dm @@ -36,7 +36,7 @@ You can only phase in and out when you are on a space or misc turf." gain_text = "You feel like your body can move through space as if you where dust." - spell_to_add = /datum/action/cooldown/spell/jaunt/space_crawl + action_to_add = /datum/action/cooldown/spell/jaunt/space_crawl cost = 1 diff --git a/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm b/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm index 7891b50aabcc9..bd7f1cf621c6f 100644 --- a/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm +++ b/code/modules/antagonists/heretic/knowledge/side_flesh_void.dm @@ -35,7 +35,7 @@ Also has a chance to transfer wounds from you to the victim." gain_text = "\"No matter the man, we bleed all the same.\" That's what the Marshal told me." - spell_to_add = /datum/action/cooldown/spell/pointed/blood_siphon + action_to_add = /datum/action/cooldown/spell/pointed/blood_siphon cost = 1 /datum/heretic_knowledge/spell/void_prison @@ -47,7 +47,7 @@ But the only welts made are on my own beating fist. \ My smiling face turns to regard me, reflecting back in glassy eyes the empty path I have been lead down." - spell_to_add = /datum/action/cooldown/spell/pointed/void_prison + action_to_add = /datum/action/cooldown/spell/pointed/void_prison cost = 1 /datum/heretic_knowledge/spell/cleave @@ -57,7 +57,7 @@ gain_text = "At first I didn't understand these instruments of war, but the Priest \ told me to use them regardless. Soon, he said, I would know them well." - spell_to_add = /datum/action/cooldown/spell/pointed/cleave + action_to_add = /datum/action/cooldown/spell/pointed/cleave cost = 1 diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm b/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm index aa85f31d006c5..0f7c9d9fc70e1 100644 --- a/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm +++ b/code/modules/antagonists/heretic/knowledge/side_lock_flesh.dm @@ -22,7 +22,7 @@ However, you will fall unconscious a short time after casting this spell." gain_text = "My shackles undone in dark fury, their feeble bindings crumble before my power." - spell_to_add = /datum/action/cooldown/spell/aoe/wave_of_desperation + action_to_add = /datum/action/cooldown/spell/aoe/wave_of_desperation cost = 1 /datum/heretic_knowledge/spell/apetra_vulnera @@ -32,7 +32,7 @@ Wounds a random limb if no limb is sufficiently damaged." gain_text = "Flesh opens, and blood spills. My master seeks sacrifice, and I shall appease." - spell_to_add = /datum/action/cooldown/spell/pointed/apetra_vulnera + action_to_add = /datum/action/cooldown/spell/pointed/apetra_vulnera cost = 1 diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm index f8a3cdf465bd8..5d3795b0ce961 100644 --- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm +++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm @@ -25,7 +25,7 @@ The caster takes 20 brain damage per use." gain_text = "My mind swings open like a gate, and its insight will let me perceive the truth." - spell_to_add = /datum/action/cooldown/spell/pointed/mind_gate + action_to_add = /datum/action/cooldown/spell/pointed/mind_gate cost = 1 /datum/heretic_knowledge/unfathomable_curio diff --git a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm index 664db9969268b..df3ad9a34c7e3 100644 --- a/code/modules/antagonists/heretic/knowledge/side_void_blade.dm +++ b/code/modules/antagonists/heretic/knowledge/side_void_blade.dm @@ -116,22 +116,6 @@ demolition_mod = 1.5 sharpness = SHARP_EDGED -/obj/item/mutant_hand/shattered_risen/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - -/obj/item/mutant_hand/shattered_risen/visual_equipped(mob/user, slot) - . = ..() - - // Even hand indexes are right hands, - // Odd hand indexes are left hand - // ...But also, we swap it intentionally here, - // so right icon is shown on the left (Because hands) - if(user.get_held_index_of_item(src) % 2 == 1) - icon_state = "[base_icon_state]_right" - else - icon_state = "[base_icon_state]_left" - /datum/heretic_knowledge/rune_carver name = "Carving Knife" desc = "Allows you to transmute a knife, a shard of glass, and a piece of paper to create a Carving Knife. \ diff --git a/code/modules/antagonists/heretic/knowledge/starting_lore.dm b/code/modules/antagonists/heretic/knowledge/starting_lore.dm index d6c9d1bc216a7..8fd0c5a5713f3 100644 --- a/code/modules/antagonists/heretic/knowledge/starting_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/starting_lore.dm @@ -21,7 +21,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) desc = "Starts your journey into the Mansus. \ Grants you the Mansus Grasp, a powerful and upgradable \ disabling spell that can be cast regardless of having a focus." - spell_to_add = /datum/action/cooldown/spell/touch/mansus_grasp + action_to_add = /datum/action/cooldown/spell/touch/mansus_grasp cost = 0 is_starting_knowledge = TRUE @@ -211,7 +211,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) name = "Cloak of Shadow" desc = "Grants you the spell Cloak of Shadow. This spell will completely conceal your identity in a purple smoke \ for three minutes, assisting you in keeping secrecy. Requires a focus to cast." - spell_to_add = /datum/action/cooldown/spell/shadow_cloak + action_to_add = /datum/action/cooldown/spell/shadow_cloak cost = 0 is_starting_knowledge = TRUE @@ -272,7 +272,7 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) // A golem or an android doesn't have skin! var/exterior_text = "skin" // If carbon, it's the limb. If not, it's the body. - var/ripped_thing = body + var/atom/movable/ripped_thing = body // We will check if it's a carbon's body. // If it is, we will damage a random bodypart, and check that bodypart for its body type, to select between 'skin' or 'exterior'. @@ -280,14 +280,15 @@ GLOBAL_LIST_INIT(heretic_start_knowledge, initialize_starting_knowledge()) var/mob/living/carbon/carbody = body var/obj/item/bodypart/bodypart = pick(carbody.bodyparts) ripped_thing = bodypart - bodypart.receive_damage(25, sharpness = SHARP_EDGED) + + carbody.apply_damage(25, BRUTE, bodypart, sharpness = SHARP_EDGED) if(!(bodypart.bodytype & BODYTYPE_ORGANIC)) exterior_text = "exterior" else + body.apply_damage(25, BRUTE, sharpness = SHARP_EDGED) // If it is not a carbon mob, we will just check biotypes and damage it directly. if(body.mob_biotypes & (MOB_MINERAL|MOB_ROBOTIC)) exterior_text = "exterior" - body.apply_damage(25, BRUTE) // Procure book for flavor text. This is why we call parent at the end. var/obj/item/book/le_book = locate() in selected_atoms diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm index fb4bc57924784..0bb54d6d15798 100644 --- a/code/modules/antagonists/heretic/knowledge/void_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm @@ -116,7 +116,7 @@ gain_text = "The hum in the still, cold air turns to a cacophonous rattle. \ Over the noise, there is no distinction to the clattering of window panes and the yawning knowledge that ricochets through my skull. \ The doors won't close. I can't keep the cold out now." - spell_to_add = /datum/action/cooldown/spell/conjure/void_conduit + action_to_add = /datum/action/cooldown/spell/conjure/void_conduit cost = 1 /datum/heretic_knowledge/spell/void_phase @@ -125,7 +125,7 @@ Additionally causes damage to heathens around your original and target destination." gain_text = "The entity calls themself the Aristocrat. They effortlessly walk through air like \ nothing - leaving a harsh, cold breeze in their wake. They disappear, and I am left in the blizzard." - spell_to_add = /datum/action/cooldown/spell/pointed/void_phase + action_to_add = /datum/action/cooldown/spell/pointed/void_phase cost = 1 research_tree_icon_frame = 7 @@ -162,7 +162,7 @@ gain_text = "All is fleeting, but what else stays? I'm close to ending what was started. \ The Aristocrat reveals themselves to me again. They tell me I am late. Their pull is immense, I cannot turn back." - spell_to_add = /datum/action/cooldown/spell/aoe/void_pull + action_to_add = /datum/action/cooldown/spell/aoe/void_pull cost = 1 @@ -180,6 +180,8 @@ as the world is destroyed before our eyes. The void will return all to nothing, WITNESS MY ASCENSION!" ascension_achievement = /datum/award/achievement/misc/void_ascension + announcement_text = "%SPOOKY% The nobleman of void %NAME% has arrived, stepping along the Waltz that ends worlds! %SPOOKY%" + announcement_sound = 'sound/music/antag/heretic/ascend_void.ogg' ///soundloop for the void theme var/datum/looping_sound/void_loop/sound_loop ///Reference to the ongoing voidstrom that surrounds the heretic @@ -201,13 +203,7 @@ /datum/heretic_knowledge/ultimate/void_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc) . = ..() - priority_announce( - text = "[generate_heretic_text()] The nobleman of void [user.real_name] has arrived, stepping along the Waltz that ends worlds! [generate_heretic_text()]", - title = "[generate_heretic_text()]", - sound = 'sound/music/antag/heretic/ascend_void.ogg', - color_override = "pink", - ) - user.add_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_NEGATES_GRAVITY, TRAIT_MOVE_FLYING, TRAIT_FREE_HYPERSPACE_MOVEMENT), MAGIC_TRAIT) + user.add_traits(list(TRAIT_RESISTLOWPRESSURE, TRAIT_NEGATES_GRAVITY, TRAIT_MOVE_FLYING, TRAIT_FREE_HYPERSPACE_MOVEMENT), type) // Let's get this show on the road! sound_loop = new(user, TRUE, TRUE) diff --git a/code/modules/antagonists/heretic/magic/burglar_finesse.dm b/code/modules/antagonists/heretic/magic/burglar_finesse.dm index a90acb8495f14..fec0fb923bbd2 100644 --- a/code/modules/antagonists/heretic/magic/burglar_finesse.dm +++ b/code/modules/antagonists/heretic/magic/burglar_finesse.dm @@ -13,10 +13,13 @@ invocation_type = INVOCATION_WHISPER spell_requirements = NONE - cast_range = 4 + cast_range = 6 -/datum/action/cooldown/spell/pointed/burglar_finesse/is_valid_target(atom/cast_on) - return ..() && ishuman(cast_on) && (locate(/obj/item/storage/backpack) in cast_on.contents) +/datum/action/cooldown/spell/pointed/burglar_finesse/is_valid_target(mob/living/carbon/human/cast_on) + if(!istype(cast_on)) + return FALSE + var/obj/item/back_item = cast_on.get_item_by_slot(ITEM_SLOT_BACK) + return ..() && back_item?.atom_storage /datum/action/cooldown/spell/pointed/burglar_finesse/cast(mob/living/carbon/human/cast_on) . = ..() @@ -25,12 +28,12 @@ to_chat(owner, span_danger("[cast_on] is protected by holy forces!")) return FALSE - var/obj/storage_item = locate(/obj/item/storage/backpack) in cast_on.contents + var/obj/storage_item = cast_on.get_item_by_slot(ITEM_SLOT_BACK) if(isnull(storage_item)) return FALSE - var/item = pick(storage_item.contents) + var/item = pick(storage_item.atom_storage.return_inv(recursive = FALSE)) if(isnull(item)) return FALSE diff --git a/code/modules/antagonists/heretic/magic/caretaker.dm b/code/modules/antagonists/heretic/magic/caretaker.dm index b882386329a89..01a9970b20477 100644 --- a/code/modules/antagonists/heretic/magic/caretaker.dm +++ b/code/modules/antagonists/heretic/magic/caretaker.dm @@ -24,7 +24,7 @@ /datum/action/cooldown/spell/caretaker/is_valid_target(atom/cast_on) return isliving(cast_on) -/datum/action/cooldown/spell/caretaker/before_cast(atom/cast_on) +/datum/action/cooldown/spell/caretaker/before_cast(mob/living/cast_on) . = ..() if(. & SPELL_CANCEL_CAST) return @@ -34,6 +34,9 @@ owner.balloon_alert(owner, "other minds nearby!") return . | SPELL_CANCEL_CAST + if(!cast_on.has_status_effect(/datum/status_effect/caretaker_refuge)) + return SPELL_NO_IMMEDIATE_COOLDOWN // cooldown only on exit + /datum/action/cooldown/spell/caretaker/cast(mob/living/cast_on) . = ..() diff --git a/code/modules/antagonists/heretic/magic/furious_steel.dm b/code/modules/antagonists/heretic/magic/furious_steel.dm index 9414ca9d7116d..d72c7fc7c04e9 100644 --- a/code/modules/antagonists/heretic/magic/furious_steel.dm +++ b/code/modules/antagonists/heretic/magic/furious_steel.dm @@ -19,9 +19,11 @@ active_msg = "You summon forth three blades of furious silver." deactive_msg = "You conceal the blades of furious silver." cast_range = 20 - projectile_type = /obj/effect/floating_blade + projectile_type = /obj/projectile/floating_blade projectile_amount = 3 + ///Effect of the projectile that surrounds us while the spell is active + var/projectile_effect = /obj/effect/floating_blade /// A ref to the status effect surrounding our heretic on activation. var/datum/status_effect/protective_blades/blade_effect @@ -67,7 +69,7 @@ QDEL_NULL(blade_effect) var/mob/living/living_user = on_who - blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS, projectile_type) + blade_effect = living_user.apply_status_effect(/datum/status_effect/protective_blades, null, projectile_amount, 25, 0.66 SECONDS, projectile_effect) RegisterSignal(blade_effect, COMSIG_QDELETING, PROC_REF(on_status_effect_deleted)) /datum/action/cooldown/spell/pointed/projectile/furious_steel/on_deactivation(mob/on_who, refund_cooldown = TRUE) @@ -100,7 +102,7 @@ name = "blade" icon = 'icons/effects/eldritch.dmi' icon_state = "dio_knife" - speed = 2 + speed = 0.5 damage = 25 armour_penetration = 100 sharpness = SHARP_EDGED @@ -167,3 +169,4 @@ deactive_msg = "You conceal the cursed blades." projectile_amount = 2 projectile_type = /obj/projectile/floating_blade/haunted + projectile_effect = /obj/effect/floating_blade/haunted diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm index 6d18c2113f470..49f8c42808219 100644 --- a/code/modules/antagonists/heretic/magic/moon_parade.dm +++ b/code/modules/antagonists/heretic/magic/moon_parade.dm @@ -26,12 +26,11 @@ icon_state = "lunar_parade" damage = 0 damage_type = BURN - speed = 1 + speed = 0.2 range = 75 ricochets_max = 40 ricochet_chance = 500 ricochet_incidence_leeway = 0 - pixel_speed_multiplier = 0.2 projectile_piercing = PASSMOB|PASSVEHICLE ///looping sound datum for our projectile. var/datum/looping_sound/moon_parade/soundloop diff --git a/code/modules/antagonists/heretic/magic/rust_wave.dm b/code/modules/antagonists/heretic/magic/rust_wave.dm index b109a068042b9..1464829aa4c6a 100644 --- a/code/modules/antagonists/heretic/magic/rust_wave.dm +++ b/code/modules/antagonists/heretic/magic/rust_wave.dm @@ -119,4 +119,4 @@ /obj/projectile/magic/aoe/rust_wave/short range = 7 - speed = 2 + speed = 0.5 diff --git a/code/modules/antagonists/heretic/magic/space_crawl.dm b/code/modules/antagonists/heretic/magic/space_crawl.dm index cce9f46085bc6..74b02c59c10e7 100644 --- a/code/modules/antagonists/heretic/magic/space_crawl.dm +++ b/code/modules/antagonists/heretic/magic/space_crawl.dm @@ -7,7 +7,7 @@ */ /datum/action/cooldown/spell/jaunt/space_crawl name = "Space Phase" - desc = "Allows you to phase in and out of existance while in space or misc tiles." + desc = "Allows you to phase in and out of existence while in space or misc tiles." background_icon_state = "bg_heretic" overlay_icon_state = "bg_heretic_border" diff --git a/code/modules/antagonists/heretic/magic/star_blast.dm b/code/modules/antagonists/heretic/magic/star_blast.dm index e6f7a96811e40..ad36cf9186ace 100644 --- a/code/modules/antagonists/heretic/magic/star_blast.dm +++ b/code/modules/antagonists/heretic/magic/star_blast.dm @@ -24,10 +24,9 @@ icon_state = "star_ball" damage = 20 damage_type = BURN - speed = 1 + speed = 0.2 range = 100 knockdown = 4 SECONDS - pixel_speed_multiplier = 0.2 /// Effect for when the ball hits something var/obj/effect/explosion_effect = /obj/effect/temp_visual/cosmic_explosion /// The range at which people will get marked with a star mark. diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm index d9cd5a05eab2b..e8e824cc71851 100644 --- a/code/modules/antagonists/heretic/magic/star_touch.dm +++ b/code/modules/antagonists/heretic/magic/star_touch.dm @@ -201,35 +201,6 @@ if(current_target) on_beam_hit(current_target) -/// Checks if the beam is going through an invalid turf -/datum/status_effect/cosmic_beam/proc/los_check(atom/movable/user, mob/target) - var/turf/user_turf = user.loc - if(!istype(user_turf)) - return FALSE - var/obj/dummy = new(user_turf) - dummy.pass_flags |= PASSTABLE|PASSGLASS|PASSGRILLE //Grille/Glass so it can be used through common windows - var/turf/previous_step = user_turf - var/first_step = TRUE - for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf)) - if(first_step) - for(var/obj/blocker in user_turf) - if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1)) - continue - if(blocker.CanPass(dummy, get_dir(user_turf, next_step))) - continue - return FALSE // Could not leave the first turf. - first_step = FALSE - if(next_step.density) - qdel(dummy) - return FALSE - for(var/atom/movable/movable as anything in next_step) - if(!movable.CanPass(dummy, get_dir(next_step, previous_step))) - qdel(dummy) - return FALSE - previous_step = next_step - qdel(dummy) - return TRUE - /// What to add when the beam connects to a target /datum/status_effect/cosmic_beam/proc/on_beam_hit(mob/living/target) if(!istype(target, /mob/living/basic/heretic_summon/star_gazer)) diff --git a/code/modules/antagonists/heretic/magic/void_conduit.dm b/code/modules/antagonists/heretic/magic/void_conduit.dm index 036415269c975..16faf3b1a3844 100644 --- a/code/modules/antagonists/heretic/magic/void_conduit.dm +++ b/code/modules/antagonists/heretic/magic/void_conduit.dm @@ -94,7 +94,7 @@ var/mob/living/affected_mob = thing_to_affect if(affected_mob.can_block_magic(MAGIC_RESISTANCE)) continue - if(IS_HERETIC(affected_mob)) + if(IS_HERETIC_OR_MONSTER(affected_mob) || HAS_TRAIT(affected_mob, TRAIT_MANSUS_TOUCHED)) affected_mob.apply_status_effect(/datum/status_effect/void_conduit) else affected_mob.apply_status_effect(/datum/status_effect/void_chill, 1) @@ -116,13 +116,14 @@ falloff_exponent = 20 /datum/status_effect/void_conduit + id = "void_conduit" duration = 15 SECONDS status_type = STATUS_EFFECT_REPLACE alert_type = null /datum/status_effect/void_conduit/on_apply() - ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "void_conduit") + ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, type) return TRUE /datum/status_effect/void_conduit/on_remove() - REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "void_conduit") + REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, type) diff --git a/code/modules/antagonists/heretic/status_effects/buffs.dm b/code/modules/antagonists/heretic/status_effects/buffs.dm index 3004bdd9ee0ce..362e9750b49c1 100644 --- a/code/modules/antagonists/heretic/status_effects/buffs.dm +++ b/code/modules/antagonists/heretic/status_effects/buffs.dm @@ -260,7 +260,7 @@ max_num_blades = 4, blade_orbit_radius = 20, time_between_initial_blades = 0.25 SECONDS, - blade_type = /obj/effect/floating_blade, + blade_type = /obj/projectile/floating_blade, blade_recharge_time = 1 MINUTES, ) diff --git a/code/modules/antagonists/heretic/status_effects/mark_effects.dm b/code/modules/antagonists/heretic/status_effects/mark_effects.dm index de895d33caac8..ba8a86340d7ba 100644 --- a/code/modules/antagonists/heretic/status_effects/mark_effects.dm +++ b/code/modules/antagonists/heretic/status_effects/mark_effects.dm @@ -235,12 +235,16 @@ /datum/status_effect/eldritch/lock/on_apply() . = ..() - ADD_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT) + RegisterSignal(owner, COMSIG_MOB_TRIED_ACCESS, PROC_REF(attempt_access)) /datum/status_effect/eldritch/lock/on_remove() - REMOVE_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT) + UnregisterSignal(owner, COMSIG_MOB_TRIED_ACCESS) return ..() +/datum/status_effect/eldritch/lock/proc/attempt_access(datum/source, obj/door_attempt) + SIGNAL_HANDLER + return ACCESS_DISALLOWED + // MARK OF MOON /datum/status_effect/eldritch/moon diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index 184ca9c4f77f4..fa2dcee4d36eb 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -43,7 +43,7 @@ . = ..() /datum/antagonist/highlander/greet() - to_chat(owner, span_boldannounce("Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\ + to_chat(owner, span_bolddanger("Your [sword.name] cries out for blood. Claim the lives of others, and your own will be restored!\n\ Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.")) owner.announce_objectives() @@ -88,7 +88,7 @@ name = "\improper highlander" /datum/antagonist/highlander/robot/greet() - to_chat(owner, span_boldannounce("Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\ + to_chat(owner, span_bolddanger("Your integrated claymore cries out for blood. Claim the lives of others, and your own will be restored!\n\ Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.")) /datum/antagonist/highlander/robot/give_equipment() diff --git a/code/modules/antagonists/malf_ai/malf_ai_modules.dm b/code/modules/antagonists/malf_ai/malf_ai_modules.dm index f91d1b90ba46b..1776371bae9fe 100644 --- a/code/modules/antagonists/malf_ai/malf_ai_modules.dm +++ b/code/modules/antagonists/malf_ai/malf_ai_modules.dm @@ -191,30 +191,30 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf)) set waitfor = FALSE message_admins("[key_name_admin(owner)][ADMIN_FLW(owner)] has activated AI Doomsday.") var/pass = prob(10) ? "******" : "hunter2" - to_chat(owner, "run -o -a 'selfdestruct'") + to_chat(owner, "run -o -a 'selfdestruct'") sleep(0.5 SECONDS) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return - to_chat(owner, "Running executable 'selfdestruct'...") + to_chat(owner, "Running executable 'selfdestruct'...") sleep(rand(10, 30)) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return owner.playsound_local(owner, 'sound/announcer/alarm/bloblarm.ogg', 50, 0, use_reverb = FALSE) to_chat(owner, span_userdanger("!!! UNAUTHORIZED SELF-DESTRUCT ACCESS !!!")) - to_chat(owner, span_boldannounce("This is a class-3 security violation. This incident will be reported to Central Command.")) + to_chat(owner, span_bolddanger("This is a class-3 security violation. This incident will be reported to Central Command.")) for(var/i in 1 to 3) sleep(2 SECONDS) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return - to_chat(owner, span_boldannounce("Sending security report to Central Command.....[rand(0, 9) + (rand(20, 30) * i)]%")) + to_chat(owner, span_bolddanger("Sending security report to Central Command.....[rand(0, 9) + (rand(20, 30) * i)]%")) sleep(0.3 SECONDS) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return - to_chat(owner, "auth 'akjv9c88asdf12nb' [pass]") + to_chat(owner, "auth 'akjv9c88asdf12nb' [pass]") owner.playsound_local(owner, 'sound/items/timer.ogg', 50, 0, use_reverb = FALSE) sleep(3 SECONDS) if(QDELETED(owner) || !isturf(owner_AI.loc)) @@ -232,7 +232,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf)) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return - to_chat(owner, "Y") + to_chat(owner, "Y") sleep(1.5 SECONDS) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE @@ -243,7 +243,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf)) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return - to_chat(owner, "Y") + to_chat(owner, "Y") sleep(rand(15, 25)) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE @@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf)) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE return - to_chat(owner, "[pass]") + to_chat(owner, "[pass]") sleep(4 SECONDS) if(QDELETED(owner) || !isturf(owner_AI.loc)) active = FALSE diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm index ddfe675d4128a..e4b4528d61657 100644 --- a/code/modules/antagonists/nightmare/nightmare_organs.dm +++ b/code/modules/antagonists/nightmare/nightmare_organs.dm @@ -94,13 +94,13 @@ user.temporarilyRemoveItemFromInventory(src, TRUE) Insert(user) -/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special) +/obj/item/organ/heart/nightmare/on_mob_insert(mob/living/carbon/heart_owner, special, movement_flags) . = ..() if(special != HEART_SPECIAL_SHADOWIFY) blade = new/obj/item/light_eater heart_owner.put_in_hands(blade) -/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special) +/obj/item/organ/heart/nightmare/on_mob_remove(mob/living/carbon/heart_owner, special, movement_flags) . = ..() respawn_progress = 0 if(blade && special != HEART_SPECIAL_SHADOWIFY) diff --git a/code/modules/antagonists/nightmare/nightmare_species.dm b/code/modules/antagonists/nightmare/nightmare_species.dm index e81819e44fccd..757a6e6db055c 100644 --- a/code/modules/antagonists/nightmare/nightmare_species.dm +++ b/code/modules/antagonists/nightmare/nightmare_species.dm @@ -35,7 +35,7 @@ BODY_ZONE_CHEST = /obj/item/bodypart/chest/shadow, ) -/datum/species/shadow/nightmare/on_species_gain(mob/living/carbon/C, datum/species/old_species) +/datum/species/shadow/nightmare/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons) . = ..() C.fully_replace_character_name(null, pick(GLOB.nightmare_names)) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm index 7445b20cb902a..8598a929454b3 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/_nuclear_bomb.dm @@ -653,7 +653,7 @@ GLOBAL_VAR(station_nuke_source) if(istype(gibbed.loc, /obj/structure/closet/secure_closet/freezer)) var/obj/structure/closet/secure_closet/freezer/freezer = gibbed.loc if(!freezer.jones) - to_chat(gibbed, span_boldannounce("You hold onto [freezer] as [source] goes off. \ + to_chat(gibbed, span_bolddanger("You hold onto [freezer] as [source] goes off. \ Luckily, as [freezer] is lead-lined, you survive.")) freezer.jones = TRUE return FALSE diff --git a/code/modules/antagonists/revolution/enemy_of_the_state.dm b/code/modules/antagonists/revolution/enemy_of_the_state.dm index 90a6431d428b3..d835655b7efd4 100644 --- a/code/modules/antagonists/revolution/enemy_of_the_state.dm +++ b/code/modules/antagonists/revolution/enemy_of_the_state.dm @@ -30,7 +30,7 @@ /datum/antagonist/enemy_of_the_state/greet() . = ..() to_chat(owner, span_userdanger("The revolution is dead.")) - to_chat(owner, span_boldannounce("You're an enemy of the state to Nanotrasen. You're a loose end to the Syndicate.")) + to_chat(owner, span_bolddanger("You're an enemy of the state to Nanotrasen. You're a loose end to the Syndicate.")) to_chat(owner, "It's time to live out your days as an exile... Or go out in one last big bang.") owner.announce_objectives() diff --git a/code/modules/antagonists/santa/santa.dm b/code/modules/antagonists/santa/santa.dm index 2a5eb75e5c801..f3e1cbd02b963 100644 --- a/code/modules/antagonists/santa/santa.dm +++ b/code/modules/antagonists/santa/santa.dm @@ -14,7 +14,7 @@ /datum/antagonist/santa/greet() . = ..() - to_chat(owner, span_boldannounce("Your objective is to bring joy to the people on this station. You have a magical bag, which generates presents as long as you have it! You can examine the presents to take a peek inside, to make sure that you give the right gift to the right person.")) + to_chat(owner, span_bolddanger("Your objective is to bring joy to the people on this station. You have a magical bag, which generates presents as long as you have it! You can examine the presents to take a peek inside, to make sure that you give the right gift to the right person.")) /datum/antagonist/santa/proc/give_equipment() var/mob/living/carbon/human/H = owner.current diff --git a/code/modules/antagonists/spy/spy_bounty.dm b/code/modules/antagonists/spy/spy_bounty.dm index 1aa318fb6828d..f45da0fdce832 100644 --- a/code/modules/antagonists/spy/spy_bounty.dm +++ b/code/modules/antagonists/spy/spy_bounty.dm @@ -639,7 +639,7 @@ theft_time = 10 SECONDS black_market_prob = 0 /// What typepath of bot we want to steal. - var/mob/living/simple_animal/bot/bot_type + var/mob/living/bot_type /// Weakref to the bot we want to steal. VAR_FINAL/datum/weakref/target_bot_ref @@ -655,7 +655,7 @@ /datum/spy_bounty/some_bot/init_bounty(datum/spy_bounty_handler/handler) for(var/datum/spy_bounty/some_bot/existing_bounty in handler.get_all_bounties()) - var/mob/living/simple_animal/bot/existing_bot_type = existing_bounty.bot_type + var/mob/living/existing_bot_type = existing_bounty.bot_type // ensures we don't get two similar bounties. // may occasionally cast a wider net than we'd desire, but it's not that bad. if(ispath(bot_type, initial(existing_bot_type.parent_type))) diff --git a/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm b/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm index f0d4c4349cef7..8a5b95c849f55 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_kidnap.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(voidwalker_void) /area/centcom/voidwalker_void name = "Voidwalker void" icon_state = "voidwalker" - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY ambience_index = AMBIENCE_SPOOKY sound_environment = SOUND_ENVIRONMENT_CAVE area_flags = UNIQUE_AREA | NOTELEPORT | HIDDEN_AREA | BLOCK_SUICIDE diff --git a/code/modules/antagonists/voidwalker/voidwalker_organs.dm b/code/modules/antagonists/voidwalker/voidwalker_organs.dm index 23f1c6fb2fe47..760caf3c8d854 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_organs.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_organs.dm @@ -26,7 +26,7 @@ /// Speed modifier given when in gravity var/datum/movespeed_modifier/speed_modifier = /datum/movespeed_modifier/grounded_voidwalker /// The void eater weapon - var/obj/item/glass_breaker = /obj/item/void_eater + var/obj/item/glass_breaker /// Our brain transmit telepathy spell var/datum/action/transmit = /datum/action/cooldown/spell/list_target/telepathy/voidwalker @@ -52,7 +52,7 @@ glass_breaker = new/obj/item/void_eater organ_owner.put_in_hands(glass_breaker) -/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/brain/voidwalker/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_ENTER_AREA) @@ -72,8 +72,7 @@ transmit.Remove(organ_owner) transmit = initial(transmit) - if(glass_breaker) - qdel(glass_breaker) + QDEL_NULL(glass_breaker) /obj/item/organ/brain/voidwalker/proc/on_atom_entering(mob/living/carbon/organ_owner, atom/entering) SIGNAL_HANDLER diff --git a/code/modules/antagonists/voidwalker/voidwalker_species.dm b/code/modules/antagonists/voidwalker/voidwalker_species.dm index 8c417c97773ea..44c2ead61a3d7 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_species.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_species.dm @@ -43,7 +43,7 @@ siemens_coeff = 0 -/datum/species/voidwalker/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) +/datum/species/voidwalker/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) . = ..() human_who_gained_species.AddComponent(/datum/component/glass_passer) diff --git a/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm b/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm index 6b7f733265cae..6fbe461543a90 100644 --- a/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm +++ b/code/modules/antagonists/voidwalker/voidwalker_status_effects.dm @@ -32,15 +32,15 @@ icon_state = "paralysis" /datum/status_effect/void_eatered + id = "void_eatered" duration = 10 SECONDS remove_on_fullheal = TRUE + alert_type = null /datum/status_effect/void_eatered/on_apply() . = ..() - - ADD_TRAIT(owner, TRAIT_NODEATH, REF(src)) + ADD_TRAIT(owner, TRAIT_NODEATH, type) /datum/status_effect/void_eatered/on_remove() . = ..() - - REMOVE_TRAIT(owner, TRAIT_NODEATH, REF(src)) + REMOVE_TRAIT(owner, TRAIT_NODEATH, type) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index e56f651a095a8..465765c75a332 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -29,7 +29,7 @@ if(charges > 0) new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast) charges-- - user.visible_message(span_boldannounce("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!")) + user.visible_message(span_bolddanger("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!")) else to_chat(user, span_danger("The unearthly energies that powered the blade are now dormant.")) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 751873c836277..52cd80e7155b8 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -158,9 +158,8 @@ return ..() /obj/item/soulstone/proc/hot_potato(mob/living/user) - to_chat(user, span_userdanger("Holy magics residing in \the [src] burn your hand!")) - var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") - affecting.receive_damage( 0, 10 ) // 10 burn damage + to_chat(user, span_userdanger("Holy magics residing in [src] burn your hand!")) + user.apply_damage(10, BURN, user.get_active_hand()) user.emote("scream") user.update_damage_overlays() user.dropItemToGround(src) diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm index 18e2dae715c34..28432b1ada883 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm @@ -31,10 +31,10 @@ /// Whether the spell requires wizard garb or not var/requires_wizard_garb = FALSE /// Used so you can't have specific spells together - var/list/no_coexistance_typecache + var/list/no_coexistence_typecache /datum/spellbook_entry/New() - no_coexistance_typecache = typecacheof(no_coexistance_typecache) + no_coexistence_typecache = typecacheof(no_coexistence_typecache) if(ispath(spell_type)) if(isnull(limit)) @@ -68,13 +68,13 @@ if(!isnull(limit) && times >= limit) return FALSE for(var/spell in user.actions) - if(is_type_in_typecache(spell, no_coexistance_typecache)) + if(is_type_in_typecache(spell, no_coexistence_typecache)) return FALSE var/datum/antagonist/wizard/wizard_datum = user.mind.has_antag_datum(/datum/antagonist/wizard) if(!wizard_datum) return TRUE for(var/perks in wizard_datum.perks) - if(is_type_in_typecache(perks, no_coexistance_typecache)) + if(is_type_in_typecache(perks, no_coexistence_typecache)) return FALSE if(is_type_in_list(src, wizard_datum.perks)) to_chat(user, span_warning("This perk already learned!")) diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm index e7c204a39e214..585385e9d2ddf 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm @@ -55,7 +55,7 @@ it will become easier for others to find your item of power." spell_type = /datum/action/cooldown/spell/lichdom category = SPELLBOOK_CATEGORY_DEFENSIVE - no_coexistance_typecache = list(/datum/action/cooldown/spell/splattercasting, /datum/spellbook_entry/perks/wormborn) + no_coexistence_typecache = list(/datum/action/cooldown/spell/splattercasting, /datum/spellbook_entry/perks/wormborn) /datum/spellbook_entry/chuunibyou name = "Chuuni Invocations" diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm index 6b8272ed5b7ad..d65e14578ec32 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm @@ -77,7 +77,7 @@ spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/gun category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 - no_coexistance_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage) + no_coexistence_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage) /datum/spellbook_entry/arcane_barrage name = "Arcane Barrage" @@ -85,7 +85,7 @@ spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 - no_coexistance_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/gun) + no_coexistence_typecache = list(/datum/action/cooldown/spell/conjure_item/infinite_guns/gun) /datum/spellbook_entry/barnyard name = "Barnyard Curse" @@ -99,7 +99,7 @@ draining from you over time. You can replenish it from your victims, specifically their necks." spell_type = /datum/action/cooldown/spell/splattercasting category = SPELLBOOK_CATEGORY_OFFENSIVE - no_coexistance_typecache = list(/datum/action/cooldown/spell/lichdom) + no_coexistence_typecache = list(/datum/action/cooldown/spell/lichdom) /datum/spellbook_entry/sanguine_strike name = "Exsanguinating Strike" diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm index 07c152d113d68..6c4947639f6c5 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/perks.dm @@ -60,7 +60,7 @@ desc = "Your soul is infested with mana worms. When you die, you will be reborn as a large worm. \ When the worm dies, it has no such luck. Parasitic infection prevents you from binding your soul to objects." hud_icon = "wormborn" - no_coexistance_typecache = list(/datum/action/cooldown/spell/lichdom) + no_coexistence_typecache = list(/datum/action/cooldown/spell/lichdom) /datum/spellbook_entry/perks/wormborn/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy) . = ..() diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 5f50618e77dfa..5da6816eb8598 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -100,12 +100,12 @@ /obj/item/assembly_holder/update_overlays() . = ..() for(var/i in 1 to LAZYLEN(assemblies)) - if(i % 2 == 1) + if(IS_LEFT_INDEX(i)) var/obj/item/assembly/assembly = assemblies[i] . += "[assembly.icon_state]_left" for(var/left_overlay in assembly.attached_overlays) . += "[left_overlay]_l" - if(i % 2 == 0) + if(IS_RIGHT_INDEX(i)) var/obj/item/assembly/assembly = assemblies[i] var/mutable_appearance/right = mutable_appearance(icon, "[assembly.icon_state]_left") right.transform = matrix(-1, 0, 0, 0, 1, 0) diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 19f853885b5ac..93af285369af9 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -126,26 +126,25 @@ to_chat(victim, span_notice("[src] snaps onto your foot, then falls off uselessly.")) // DOPPLER ADDITION END else if(!victim.shoes) // DOPPLER EDIT, old code: if(!victim.shoes) - affecting = victim.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - victim.Paralyze(60) + affecting = victim.get_bodypart(pick(GLOB.leg_zones)) + victim.Paralyze(6 SECONDS) else - to_chat(victim, span_notice("Your [victim.shoes] protects you from [src].")) + to_chat(victim, span_notice("Your [victim.shoes.name] protects you from [src].")) if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND) if(!victim.gloves) affecting = victim.get_bodypart(type) - victim.Stun(60) + victim.Stun(6 SECONDS) else - to_chat(victim, span_notice("Your [victim.gloves] protects you from [src].")) + to_chat(victim, span_notice("Your [victim.gloves.name] protects you from [src].")) if(affecting) - if(affecting.receive_damage(1, 0)) - victim.update_damage_overlays() + victim.apply_damage(1, BRUTE, affecting, wound_bonus = CANT_WOUND) else if(ismouse(target)) var/mob/living/basic/mouse/splatted = target - visible_message(span_boldannounce("SPLAT!")) + visible_message(span_bolddanger("SPLAT!")) splatted.splat() // mousetraps are instadeath for mice else if(isregalrat(target)) - visible_message(span_boldannounce("Skreeeee!")) //He's simply too large to be affected by a tiny mouse trap. + visible_message(span_bolddanger("Skreeeee!")) //He's simply too large to be affected by a tiny mouse trap. playsound(src, 'sound/effects/snap.ogg', 50, TRUE) pulse() @@ -161,7 +160,7 @@ return FALSE if((HAS_TRAIT(user, TRAIT_DUMB) || HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) var/which_hand = BODY_ZONE_PRECISE_L_HAND - if(!(user.active_hand_index % 2)) + if(IS_RIGHT_INDEX(user.active_hand_index)) which_hand = BODY_ZONE_PRECISE_R_HAND triggered(user, which_hand) user.visible_message(span_warning("[user] accidentally sets off [src], breaking their fingers."), \ @@ -210,7 +209,7 @@ if(finder) finder.visible_message(span_warning("[finder] accidentally sets off [src], breaking their fingers."), \ span_warning("You accidentally trigger [src]!")) - triggered(finder, (finder.active_hand_index % 2 == 0) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND) + triggered(finder, (IS_RIGHT_INDEX(finder.active_hand_index)) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND) return TRUE //end the search! else visible_message(span_warning("[src] snaps shut!")) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 47a2af4651cbc..c2cd3e2844486 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -15,6 +15,28 @@ /turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) return +/turf/open/proc/set_active_hotspot(obj/effect/hotspot/new_lad) + if(active_hotspot == new_lad) + return + var/hotspot_around = NONE + if(active_hotspot) + if(new_lad) + hotspot_around = active_hotspot.smoothing_junction + if(!QDELETED(active_hotspot)) + QDEL_NULL(active_hotspot) + else + for(var/direction in GLOB.cardinals) + var/turf/open/open = get_step(src, direction) + if(!isopenturf(open) || !open.active_hotspot) + continue + var/existing_directions = open.active_hotspot.smoothing_junction + open.active_hotspot.set_smoothed_icon_state(existing_directions | REVERSE_DIR(direction)) + hotspot_around |= direction + + active_hotspot = new_lad + if(active_hotspot) + active_hotspot.set_smoothed_icon_state(hotspot_around) + /** * Handles the creation of hotspots and initial activation of turfs. * Setting the conditions for the reaction to actually happen for gasmixtures @@ -55,10 +77,13 @@ if(((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && (plas > 0.5 || trit > 0.5 || h2 > 0.5)) || \ ((exposed_temperature < FREON_MAXIMUM_BURN_TEMPERATURE) && (freon > 0.5))) - active_hotspot = new /obj/effect/hotspot(src, exposed_volume*25, exposed_temperature) + set_active_hotspot(new /obj/effect/hotspot(src, exposed_volume * 25, exposed_temperature)) + if(COOLDOWN_FINISHED(src, fire_puff_cooldown)) + playsound(src, 'sound/effects/fire_puff.ogg', 30) + COOLDOWN_START(src, fire_puff_cooldown, 5 SECONDS) active_hotspot.just_spawned = (current_cycle < SSair.times_fired) - //remove just_spawned protection if no longer processing this cell + //remove just_spawned protection if no longer processing this cell SSair.add_to_active(src) /** @@ -69,7 +94,7 @@ anchored = TRUE mouse_opacity = MOUSE_OPACITY_TRANSPARENT icon = 'icons/effects/fire.dmi' - icon_state = "1" + icon_state = "light" layer = GASFIRE_LAYER plane = ABOVE_GAME_PLANE blend_mode = BLEND_ADD @@ -78,6 +103,9 @@ light_power = 1 light_color = LIGHT_COLOR_FIRE + /// base sprite used for our icon states when smoothing + /// BAAAASICALY the same as icon_state but is helpful to avoid duplicated work + var/fire_stage = "" /** * Volume is the representation of how big and healthy a fire is. * Hotspot volume will be divided by turf volume to get the ratio for temperature setting on non bypassing mode. @@ -93,7 +121,8 @@ var/visual_update_tick = 0 ///Are we burning freon? var/cold_fire = FALSE - + ///the group of hotspots we are a part of + var/datum/hot_group/our_hot_group /obj/effect/hotspot/Initialize(mapload, starting_volume, starting_temperature) . = ..() @@ -110,6 +139,24 @@ COMSIG_ATOM_ABSTRACT_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) + var/turf/open/our_turf = loc + //on creation we check adjacent turfs for hot spot to start grouping, if surrounding do not have hot spots we create our own + for(var/turf/open/to_check as anything in our_turf.atmos_adjacent_turfs) + if(to_check.active_hotspot) + var/obj/effect/hotspot/enemy_spot = to_check.active_hotspot + if(!our_hot_group) + enemy_spot.our_hot_group.add_to_group(src) + else if(our_hot_group != enemy_spot.our_hot_group && enemy_spot.our_hot_group) //if we belongs to a hot group from prior loop and we encounter another hot spot with a group then we merge + our_hot_group.merge_hot_groups(enemy_spot.our_hot_group) + if(!our_hot_group)//if after loop through all the adjacents turfs and we havent belong to a group yet, make our own + our_hot_group = new + our_hot_group.add_to_group(src) + +/obj/effect/hotspot/set_smoothed_icon_state(new_junction) + + smoothing_junction = new_junction + + update_color() /** * Perform interactions between the hotspot and the gasmixture. @@ -130,7 +177,7 @@ if(!istype(location) || !(location.air)) return - location.active_hotspot = src + location.set_active_hotspot(src) bypassing = !just_spawned && (volume > CELL_VOLUME*0.95) @@ -199,7 +246,7 @@ sparkle_overlay.alpha = sparkle_amt * 255 add_overlay(sparkle_overlay) if(temperature > 400000 && temperature < 1500000) //Lightning because very anime. - var/mutable_appearance/lightning_overlay = mutable_appearance(icon, "overcharged") + var/mutable_appearance/lightning_overlay = mutable_appearance('icons/effects/fire.dmi', "overcharged") lightning_overlay.blend_mode = BLEND_ADD add_overlay(lightning_overlay) if(temperature > 4500000) //This is where noblium happens. Some fusion-y effects. @@ -264,7 +311,7 @@ perform_exposure() if(bypassing) - icon_state = "3" + set_fire_stage("heavy") if(!cold_fire) location.burn_tile() @@ -280,20 +327,30 @@ else if(volume > CELL_VOLUME*0.4) - icon_state = "2" + set_fire_stage("medium") else - icon_state = "1" + set_fire_stage("light") if((visual_update_tick++ % 7) == 0) update_color() return TRUE +/obj/effect/hotspot/proc/set_fire_stage(stage) + if(fire_stage == stage) + return + fire_stage = stage + icon_state = stage + dir = pick(GLOB.cardinals) + update_color() + /obj/effect/hotspot/Destroy() SSair.hotspots -= src var/turf/open/T = loc if(istype(T) && T.active_hotspot == src) - T.active_hotspot = null + our_hot_group.remove_from_group(src) + our_hot_group = null + T.set_active_hotspot(null) return ..() /obj/effect/hotspot/proc/on_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) @@ -305,4 +362,95 @@ /obj/effect/hotspot/singularity_pull(atom/singularity, current_size) return +/datum/looping_sound/fire + mid_sounds = list('sound/effects/fireclip1.ogg' = 1, 'sound/effects/fireclip2.ogg' = 1, 'sound/effects/fireclip3.ogg' = 1, 'sound/effects/fireclip4.ogg' = 1, + 'sound/effects/fireclip5.ogg' = 1, 'sound/effects/fireclip6.ogg' = 1, 'sound/effects/fireclip7.ogg' = 1) + volume = 30 + mid_length = 2 SECONDS + falloff_distance = 1 + +#define MIN_SIZE_SOUND 2 +///handle the grouping of hotspot and then determining an average center to play sound in +/datum/hot_group + var/list/obj/effect/hotspot/spot_list = list() + ///the sound center turf which the looping sound will play + var/turf/open/current_sound_loc + var/datum/looping_sound/fire/sound + var/tiles_limit = 80 // arbitrary limit so we dont have one giant group + ///these lists and average var are to find the average center of a group + var/list/x_coord = list() + var/list/y_coord = list() + var/list/z_coord = list() + var/average_x + var/average_y + var/average_Z + ///the range for the sound to drop off based on the size of the group + var/drop_off_dist + COOLDOWN_DECLARE(update_sound_center) + + +/datum/hot_group/Destroy() + . = ..() + current_sound_loc = null + spot_list = null + qdel(sound) + +/datum/hot_group/proc/remove_from_group(obj/effect/hotspot/target) + spot_list -= target + var/turf/open/target_turf = target.loc + x_coord -= target_turf.x + y_coord -= target_turf.y + if(!length(spot_list)) + qdel(src) + return + +/datum/hot_group/proc/add_to_group(obj/effect/hotspot/target) + spot_list += target + target.our_hot_group = src + var/turf/open/target_turf = target.loc + x_coord += target_turf.x + y_coord += target_turf.y + z_coord += target_turf.z + if(COOLDOWN_FINISHED(src, update_sound_center) && length(spot_list) > MIN_SIZE_SOUND)//arbitrary size to start playing the sound + update_sound() + COOLDOWN_START(src, update_sound_center, 5 SECONDS) + +/datum/hot_group/proc/merge_hot_groups(datum/hot_group/enemy_group) + if(length(spot_list) >= tiles_limit || length(enemy_group.spot_list) >= tiles_limit) + return + var/datum/hot_group/saving_group + var/datum/hot_group/sacrificial_group + if(length(spot_list) > length(enemy_group.spot_list) || (length(spot_list) == length(enemy_group.spot_list) && prob(50)))//we're bigger take all of their territory! + saving_group = src + sacrificial_group = enemy_group + else + saving_group = enemy_group + sacrificial_group = src + for(var/obj/effect/hotspot/reference as anything in sacrificial_group.spot_list) + reference.our_hot_group = saving_group + saving_group.spot_list += sacrificial_group.spot_list + saving_group.x_coord += sacrificial_group.x_coord + saving_group.y_coord += sacrificial_group.y_coord + qdel(sacrificial_group) + if(COOLDOWN_FINISHED(src, update_sound_center) && length(spot_list) > MIN_SIZE_SOUND)//arbitrary size to start playing the sound + update_sound() + COOLDOWN_START(src, update_sound_center, 5 SECONDS) + +/datum/hot_group/proc/update_sound() + //we can draw a cross around the average middle of any globs of group, curves or hollow groups may cause issues with this + average_x = round((max(x_coord) + min(x_coord))/2) + average_y = round((max(y_coord) + min(y_coord))/2) + average_Z = round((min(z_coord) + max(z_coord))/2) + drop_off_dist = max((max(y_coord) - min(y_coord)), (max(x_coord) - min(x_coord)), 1)// pick the largest value between the width and length of the group to determine sound drop off + var/turf/open/sound_turf = locate(average_x, average_y, average_Z) + if(sound) + sound.falloff_distance = drop_off_dist + if(sound_turf != current_sound_loc) + sound.parent = sound_turf + return + sound = new(sound_turf, TRUE) + sound.falloff_distance = drop_off_dist + current_sound_loc = sound_turf + +#undef MIN_SIZE_SOUND #undef INSUFFICIENT diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index dc56aa3fda7f7..ebdb64b9afd9d 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -37,7 +37,7 @@ ///Are we active? var/excited = FALSE ///Our gas mix - var/datum/gas_mixture/turf/air + var/datum/gas_mixture/air ///If there is an active hotspot on us store a reference to it here var/obj/effect/hotspot/active_hotspot @@ -50,6 +50,8 @@ ///gas IDs of current active gas overlays var/list/atmos_overlay_types var/significant_share_ticker = 0 + ///the cooldown on playing a fire starting sound each time a tile is ignited + COOLDOWN_DECLARE(fire_puff_cooldown) #ifdef TRACK_MAX_SHARE var/max_share = 0 #endif @@ -693,5 +695,6 @@ Then we space some of our heat, and think about if we should stop conducting. temperature += heat / heat_capacity //The higher your own heat cap the less heat you get from this arrangement sharer.temperature -= heat / sharer.heat_capacity + #undef LAST_SHARE_CHECK #undef PLANET_SHARE_CHECK diff --git a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm index 1e9045d82279c..47287197d4354 100644 --- a/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm +++ b/code/modules/atmospherics/machinery/air_alarm/_air_alarm.dm @@ -17,6 +17,8 @@ /// Current alert level of our air alarm. /// [AIR_ALARM_ALERT_NONE], [AIR_ALARM_ALERT_MINOR], [AIR_ALARM_ALERT_SEVERE] var/danger_level = AIR_ALARM_ALERT_NONE + /// Current alert level of the area of our air alarm. + var/area_danger = FALSE /// Currently selected mode of the alarm. An instance of [/datum/air_alarm_mode]. var/datum/air_alarm_mode/selected_mode @@ -245,7 +247,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) data["siliconUser"] = HAS_SILICON_ACCESS(user) data["emagged"] = (obj_flags & EMAGGED ? 1 : 0) data["dangerLevel"] = danger_level - data["atmosAlarm"] = !!my_area.active_alarms[ALARM_ATMOS] + data["atmosAlarm"] = !!area_danger data["fireAlarm"] = my_area.fire data["faultStatus"] = my_area.fault_status data["faultLocation"] = my_area.fault_location @@ -523,7 +525,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) var/color if(danger_level == AIR_ALARM_ALERT_HAZARD) color = "#FF0022" // red - else if(danger_level == AIR_ALARM_ALERT_WARNING || my_area.active_alarms[ALARM_ATMOS]) + else if(danger_level == AIR_ALARM_ALERT_WARNING || area_danger) color = "#FFAA00" // yellow else color = "#00FFCC" // teal @@ -553,7 +555,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) var/state if(danger_level == AIR_ALARM_ALERT_HAZARD) state = "alarm1" - else if(danger_level == AIR_ALARM_ALERT_WARNING || my_area.active_alarms[ALARM_ATMOS]) + else if(danger_level == AIR_ALARM_ALERT_WARNING || area_danger) state = "alarm2" else state = "alarm0" @@ -573,6 +575,8 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) var/old_danger = danger_level danger_level = AIR_ALARM_ALERT_NONE + var/old_area_danger = area_danger + area_danger = my_area.active_alarms[ALARM_ATMOS] var/total_moles = environment.total_moles() var/pressure = environment.return_pressure() @@ -624,7 +628,7 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) alarm_manager.clear_alarm(ALARM_ATMOS) warning_message = null - if(old_danger != danger_level) + if(old_danger != danger_level || old_area_danger != area_danger) update_appearance() selected_mode.replace(my_area, pressure) diff --git a/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm b/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm index 7feee7f9cae4f..5263ae26c6d64 100644 --- a/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm +++ b/code/modules/atmospherics/machinery/air_alarm/air_alarm_circuit.dm @@ -96,7 +96,7 @@ return connected_alarm.select_mode(parent.get_creator(), options_map[mode.value]) - connected_alarm.investigate_log("was turned to [connected_alarm.selected_mode.name] by [parent.get_creator()]") + connected_alarm.investigate_log("was turned to [connected_alarm.selected_mode.name] by [parent.get_creator()]", INVESTIGATE_ATMOS) /obj/item/circuit_component/air_alarm display_name = "Air Alarm Core Control" diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 99e014d564b86..9705246fa593c 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -26,7 +26,7 @@ ///Check if the object can be unwrenched var/can_unwrench = FALSE ///Bitflag of the initialized directions (NORTH | SOUTH | EAST | WEST) - var/initialize_directions = 0 + var/initialize_directions = NONE ///The color of the pipe var/pipe_color = COLOR_VERY_LIGHT_GRAY ///What layer the pipe is in (from 1 to 5, default 3) @@ -41,7 +41,7 @@ var/image/pipe_vision_img = null ///The type of the device (UNARY, BINARY, TRINARY, QUATERNARY) - var/device_type = 0 + var/device_type = NONE ///The lists of nodes that a pipe/device has, depends on the device_type var (from 1 to 4) var/list/obj/machinery/atmospherics/nodes @@ -257,8 +257,7 @@ * Return a list of the nodes that can connect to other machines, get called by atmos_init() */ /obj/machinery/atmospherics/proc/get_node_connects() - var/list/node_connects = list() - node_connects.len = device_type + var/list/node_connects[device_type] //empty list of size device_type var/init_directions = get_init_directions() for(var/i in 1 to device_type) diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm index 6308e1eee611e..a7ad6f4664fb2 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer_items.dm @@ -29,7 +29,7 @@ to_chat(user, span_notice("You see how the [worn_item] changes color, it's now pressure proof.")) worn_item.name = "pressure-resistant [worn_item.name]" worn_item.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - worn_item.add_atom_colour("#00fff7", FIXED_COLOUR_PRIORITY) + worn_item.add_atom_colour(color_transition_filter("#00fff7", SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY) worn_item.min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT worn_item.cold_protection = worn_item.body_parts_covered worn_item.clothing_flags |= STOPSPRESSUREDAMAGE diff --git a/code/modules/atmospherics/machinery/components/tank.dm b/code/modules/atmospherics/machinery/components/tank.dm index 6aa23f84e934b..118e1444ad68e 100644 --- a/code/modules/atmospherics/machinery/components/tank.dm +++ b/code/modules/atmospherics/machinery/components/tank.dm @@ -31,6 +31,8 @@ ///The image showing the gases inside of the tank var/image/window + /// The open node directions of the tank, assuming that the tank is facing NORTH. + var/open_ports = NONE /// The volume of the gas mixture var/volume = 2500 //in liters /// The max pressure of the gas mixture before damaging the tank @@ -97,7 +99,8 @@ // Mapped in tanks should automatically connect to adjacent pipenets in the direction set in dir if(mapload) - initialize_directions = dir + set_portdir_relative(dir, TRUE) + set_init_directions() return INITIALIZE_HINT_LATELOAD @@ -151,28 +154,60 @@ refresh_window() /////////////////////////////////////////////////////////////////// -// Pipenet stuff - -/obj/machinery/atmospherics/components/tank/return_analyzable_air() - return air_contents +// Port stuff + +/** + * Enables/Disables a port direction in var/open_ports. \ + * Use this, then call set_init_directions() instead of setting initialize_directions directly \ + * This system exists because tanks not having all initialize_directions set correctly breaks shuttle rotations + */ +/obj/machinery/atmospherics/components/tank/proc/set_portdir_relative(relative_port_dir, enable) + ASSERT(!isnull(enable), "Did not receive argument enable") + + // Rotate the given dir so that it's relative to north + var/port_dir + if(dir == NORTH) // We're already facing north, no rotation needed + port_dir = relative_port_dir + else + var/offnorth_angle = dir2angle(dir) + port_dir = turn(relative_port_dir, offnorth_angle) -/obj/machinery/atmospherics/components/tank/return_airs_for_reconcilation(datum/pipeline/requester) - . = ..() - if(!air_contents) + if(enable) + open_ports |= port_dir + else + open_ports &= ~port_dir + +/** + * Toggles a port direction in var/open_ports \ + * Use this, then call set_init_directions() instead of setting initialize_directions directly \ + * This system exists because tanks not having all initialize_directions set correctly breaks shuttle rotations + */ +/obj/machinery/atmospherics/components/tank/proc/toggle_portdir_relative(relative_port_dir) + var/toggle = ((initialize_directions & relative_port_dir) ? FALSE : TRUE) + set_portdir_relative(relative_port_dir, toggle) + +/obj/machinery/atmospherics/components/tank/set_init_directions() + if(!open_ports) + initialize_directions = NONE return - . += air_contents -/obj/machinery/atmospherics/components/tank/return_pipenets_for_reconcilation(datum/pipeline/requester) - . = ..() - var/datum/merger/merge_group = GetMergeGroup(merger_id, merger_typecache) - for(var/obj/machinery/atmospherics/components/tank/tank as anything in merge_group.members) - . += tank.parents + //We're rotating open_ports relative to dir, and + //setting initialize_directions to that rotated dir + var/relative_port_dirs = NONE + var/dir_angle = dir2angle(dir) + for(var/cardinal in GLOB.cardinals) + var/current_dir = cardinal & open_ports + if(!current_dir) + continue -/obj/machinery/atmospherics/components/tank/proc/toggle_side_port(new_dir) - if(initialize_directions & new_dir) - initialize_directions &= ~new_dir - else - initialize_directions |= new_dir + var/rotated_dir = turn(current_dir, -dir_angle) + relative_port_dirs |= rotated_dir + + initialize_directions = relative_port_dirs + +/obj/machinery/atmospherics/components/tank/proc/toggle_side_port(port_dir) + toggle_portdir_relative(port_dir) + set_init_directions() for(var/i in 1 to length(nodes)) var/obj/machinery/atmospherics/components/node = nodes[i] @@ -195,6 +230,24 @@ update_parents() +/////////////////////////////////////////////////////////////////// +// Pipenet stuff + +/obj/machinery/atmospherics/components/tank/return_analyzable_air() + return air_contents + +/obj/machinery/atmospherics/components/tank/return_airs_for_reconcilation(datum/pipeline/requester) + . = ..() + if(!air_contents) + return + . += air_contents + +/obj/machinery/atmospherics/components/tank/return_pipenets_for_reconcilation(datum/pipeline/requester) + . = ..() + var/datum/merger/merge_group = GetMergeGroup(merger_id, merger_typecache) + for(var/obj/machinery/atmospherics/components/tank/tank as anything in merge_group.members) + . += tank.parents + /////////////////////////////////////////////////////////////////// // Merger handling @@ -268,10 +321,14 @@ window = image(icon, icon_state = "window-bg", layer = FLOAT_LAYER) + var/static/alpha_filter + if(!alpha_filter) // Gotta do this separate since the icon may not be correct at world init + alpha_filter = filter(type="alpha", icon = icon('icons/obj/pipes_n_cables/stationary_canisters.dmi', "window-bg")) + var/list/new_underlays = list() for(var/obj/effect/overlay/gas/gas as anything in air_contents.return_visuals(get_turf(src))) var/image/new_underlay = image(gas.icon, icon_state = gas.icon_state, layer = FLOAT_LAYER) - new_underlay.filters = alpha_mask_filter(icon = icon(icon, icon_state = "window-bg")) + new_underlay.filters = alpha_filter new_underlays += new_underlay var/image/foreground = image(icon, icon_state = "window-fg", layer = FLOAT_LAYER) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 70cafb11be888..97b9741701f8a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -74,7 +74,6 @@ circuit = /obj/item/circuitboard/machine/cryo_tube occupant_typecache = list(/mob/living/carbon, /mob/living/simple_animal) processing_flags = NONE - fair_market_price = 10 payment_department = ACCOUNT_MED use_power = IDLE_POWER_USE idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.75 diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 4fcfe1582599d..25122b08a2191 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -690,7 +690,7 @@ shielding_powered = !shielding_powered SSair.start_processing_machine(src) message_admins("[ADMIN_LOOKUPFLW(user)] turned [shielding_powered ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] powered shielding.") - user.investigate_log("turned [shielding_powered ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] powered shielding.") + user.investigate_log("turned [shielding_powered ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] powered shielding.", INVESTIGATE_ATMOS) update_appearance() /// Ejects tank from canister, if any @@ -698,8 +698,8 @@ if(!holding) return FALSE if(valve_open) - message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_boldannounce("air")].") - user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS) + message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_bolddanger("air")].") + user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_bolddanger("air")].", INVESTIGATE_ATMOS) replace_tank(user, FALSE) return TRUE @@ -712,7 +712,7 @@ suppress_reactions = !suppress_reactions SSair.start_processing_machine(src) message_admins("[ADMIN_LOOKUPFLW(user)] turned [suppress_reactions ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] reaction suppression.") - user.investigate_log("turned [suppress_reactions ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] reaction suppression.") + user.investigate_log("turned [suppress_reactions ? "on" : "off"] [wire_pulsed ? "via wire pulse" : ""] the [src] reaction suppression.", INVESTIGATE_ATMOS) /obj/machinery/portable_atmospherics/canister/proc/recolor(datum/greyscale_modify_menu/menu) set_greyscale(menu.split_colors, menu.config.type) diff --git a/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm b/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm index 434f243d6a3ca..60f3ac82bb8f9 100644 --- a/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/pipe_scrubber.dm @@ -153,7 +153,7 @@ internal_tank.suppress_reactions = !internal_tank.suppress_reactions SSair.start_processing_machine(internal_tank) message_admins("[ADMIN_LOOKUPFLW(usr)] turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.") - usr.investigate_log("turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.") + usr.investigate_log("turned [internal_tank.suppress_reactions ? "on" : "off"] the [internal_tank] reaction suppression.", INVESTIGATE_ATMOS) . = TRUE update_appearance() diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 8284b212efc44..7abeb95477d70 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -220,7 +220,7 @@ return FALSE if(!user) return FALSE - if(!user.transferItemToLoc(new_tank, src)) + if(new_tank && !user.transferItemToLoc(new_tank, src)) return FALSE if(holding && new_tank)//for when we are actually switching tanks diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 36d5bf4eb7c5d..99b75afa0f64c 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -163,7 +163,7 @@ suppress_reactions = !suppress_reactions SSair.start_processing_machine(src) message_admins("[ADMIN_LOOKUPFLW(usr)] turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.") - usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.") + usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.", INVESTIGATE_ATMOS) . = TRUE update_appearance() diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 29759e52e4278..b1b094c9db014 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -185,7 +185,7 @@ suppress_reactions = !suppress_reactions SSair.start_processing_machine(src) message_admins("[ADMIN_LOOKUPFLW(usr)] turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.") - usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.") + usr.investigate_log("turned [suppress_reactions ? "on" : "off"] the [src] reaction suppression.", INVESTIGATE_ATMOS) . = TRUE update_appearance() diff --git a/code/modules/autowiki/pages/fishing.dm b/code/modules/autowiki/pages/fishing.dm index eab26bd6c6c03..ce2872235bb4a 100644 --- a/code/modules/autowiki/pages/fishing.dm +++ b/code/modules/autowiki/pages/fishing.dm @@ -44,7 +44,7 @@ if(fish::breeding_timeout != def_breeding) extra_info += "It takes [DisplayTimeText(fish::breeding_timeout)] to reproduce instead of [def_breeding_text]" if(length(extra_info)) - description += "
[extra_info.Join(extra_info,"
")]" + description += "
[extra_info.Join("
")]" var/list/output_list = list( "name" = full_capitalize(escape_value(fish::name)), diff --git a/code/modules/awaymissions/mission_code/Beach.dm b/code/modules/awaymissions/mission_code/Beach.dm index 7f0e27c090ae2..0755389c030ca 100644 --- a/code/modules/awaymissions/mission_code/Beach.dm +++ b/code/modules/awaymissions/mission_code/Beach.dm @@ -5,7 +5,7 @@ base_lighting_alpha = 255 base_lighting_color = "#FFFFCC" requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY ambientsounds = list('sound/ambience/beach/shore.ogg', 'sound/ambience/beach/seag1.ogg','sound/ambience/beach/seag2.ogg','sound/ambience/beach/seag3.ogg','sound/ambience/misc/ambiodd.ogg','sound/ambience/medical/ambinice.ogg') /obj/item/paper/fluff/old_pirate_note diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm index a59a491d4926f..f80c4c12ca113 100644 --- a/code/modules/awaymissions/mission_code/murderdome.dm +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -1,19 +1,14 @@ /obj/structure/window/reinforced/fulltile/indestructible name = "robust window" + move_resist = MOVE_FORCE_OVERPOWERING flags_1 = PREVENT_CLICK_UNDER_1 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/structure/window/reinforced/fulltile/indestructible/screwdriver_act(mob/living/user, obj/item/tool) - return NONE - -/obj/structure/window/reinforced/fulltile/indestructible/wrench_act(mob/living/user, obj/item/tool) - return NONE - -/obj/structure/window/reinforced/fulltile/indestructible/crowbar_act(mob/living/user, obj/item/tool) - return NONE /obj/structure/grille/indestructible + desc = "A STRONG framework of hardened plasteel rods, that you cannot possibly get through. If you were an engineer you would be drooling over its construction right now." + move_resist = MOVE_FORCE_OVERPOWERING obj_flags = CONDUCTS_ELECTRICITY resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/basketball/basketball_map_loading.dm b/code/modules/basketball/basketball_map_loading.dm index 469167367c0f0..5ed18997dde40 100644 --- a/code/modules/basketball/basketball_map_loading.dm +++ b/code/modules/basketball/basketball_map_loading.dm @@ -31,7 +31,7 @@ requires_power = FALSE static_lighting = FALSE base_lighting_alpha = 255 - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY flags_1 = NONE area_flags = UNIQUE_AREA | NOTELEPORT | NO_DEATH_MESSAGE | BLOCK_SUICIDE diff --git a/code/modules/bitrunning/alerts.dm b/code/modules/bitrunning/alerts.dm index 54738b594c22d..478ae3c04cbd3 100644 --- a/code/modules/bitrunning/alerts.dm +++ b/code/modules/bitrunning/alerts.dm @@ -7,6 +7,7 @@ name = "Domain Completed" desc = "The domain is completed. Activate to exit." timeout = 20 SECONDS + clickable_glow = TRUE /atom/movable/screen/alert/bitrunning/qserver_domain_complete/Click(location, control, params) . = ..() diff --git a/code/modules/bitrunning/areas.dm b/code/modules/bitrunning/areas.dm index 0656f9d65b389..f0ad122effc7c 100644 --- a/code/modules/bitrunning/areas.dm +++ b/code/modules/bitrunning/areas.dm @@ -15,7 +15,7 @@ icon_state = "bit_ruin" icon = 'icons/area/areas_station.dmi' area_flags = UNIQUE_AREA | NOTELEPORT | EVENT_PROTECTED | HIDDEN_AREA | UNLIMITED_FISHING - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY requires_power = FALSE /area/virtual_domain/fullbright diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm index 7925461652a00..9fdfe1f629ec2 100644 --- a/code/modules/bitrunning/components/avatar_connection.dm +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -64,7 +64,9 @@ var/alias = our_client?.prefs?.read_preference(/datum/preference/name/hacker_alias) || pick(GLOB.hacker_aliases) if(alias && avatar.real_name != alias) - avatar.fully_replace_character_name(avatar.real_name, alias) + avatar.fully_replace_character_name(newname = alias) + + update_avatar_id() for(var/skill_type in old_mind.known_skills) avatar.mind.set_experience(skill_type, old_mind.get_skill_exp(skill_type), silent = TRUE) @@ -74,15 +76,15 @@ avatar.set_temp_blindness(1 SECONDS) // I'm in -/datum/component/avatar_connection/PostTransfer() +/datum/component/avatar_connection/PostTransfer(datum/new_parent) var/obj/machinery/netpod/pod = netpod_ref?.resolve() if(isnull(pod)) return COMPONENT_INCOMPATIBLE - if(!isliving(parent)) + if(!isliving(new_parent)) return COMPONENT_INCOMPATIBLE - pod.avatar_ref = WEAKREF(parent) + pod.avatar_ref = WEAKREF(new_parent) /datum/component/avatar_connection/RegisterWithParent() @@ -111,6 +113,20 @@ )) +/// Updates our avatar's ID to match our avatar's name. +/datum/component/avatar_connection/proc/update_avatar_id() + var/mob/living/avatar = parent + var/obj/item/card/id/our_id = locate() in avatar.get_all_contents() + if(isnull(our_id)) + return + + our_id.registered_name = avatar.real_name + our_id.update_label() + our_id.update_icon() + if(our_id.registered_account) + our_id.registered_account.account_holder = avatar.real_name + + /// Disconnects the avatar and returns the mind to the old_body. /datum/component/avatar_connection/proc/full_avatar_disconnect(cause_damage = FALSE, datum/source) #ifndef UNIT_TESTS diff --git a/code/modules/bitrunning/components/virtual_entity.dm b/code/modules/bitrunning/components/virtual_entity.dm index db81f376a8094..dba5e9db34ec3 100644 --- a/code/modules/bitrunning/components/virtual_entity.dm +++ b/code/modules/bitrunning/components/virtual_entity.dm @@ -31,7 +31,7 @@ /datum/component/virtual_entity/proc/jailbreak_mobs() SIGNAL_HANDLER - to_chat(parent, span_boldannounce("You shiver for a moment with a sense of clarity you haven't felt before.")) + to_chat(parent, span_bolddanger("You shiver for a moment with a sense of clarity you haven't felt before.")) to_chat(parent, span_notice("You could go anywhere, do anything! You could leave this simulation right now if you wanted!")) to_chat(parent, span_danger("But be warned, quantum entanglement will interfere with any previous lives.")) to_chat(parent, span_notice("You'll have just one chance to go nova, and there's no turning back.")) diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm index 17b768c54d08f..dd81a0f463ed0 100644 --- a/code/modules/bitrunning/objects/disks.dm +++ b/code/modules/bitrunning/objects/disks.dm @@ -185,3 +185,9 @@ /obj/item/crusher_trophy/vortex_talisman, /obj/item/crusher_trophy/ice_demon_cube, ) + +/obj/item/bitrunning_disk/item/mini_uzi + name = "bitrunning gear: mini-uzi" + selectable_items = list( + /obj/item/gun/ballistic/automatic/mini_uzi, + ) diff --git a/code/modules/bitrunning/objects/vendor.dm b/code/modules/bitrunning/objects/vendor.dm index d44630bc3beed..f373a8617b445 100644 --- a/code/modules/bitrunning/objects/vendor.dm +++ b/code/modules/bitrunning/objects/vendor.dm @@ -33,7 +33,7 @@ /obj/machinery/computer/order_console/bitrunning/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries) var/list/things_to_order = list() for(var/datum/orderable_item/item as anything in groceries) - things_to_order[item.item_path] = groceries[item] + things_to_order[item.purchase_path] = groceries[item] var/datum/supply_pack/bitrunning/pack = new( purchaser = purchaser, \ diff --git a/code/modules/bitrunning/orders/bepis.dm b/code/modules/bitrunning/orders/bepis.dm index 4b7253bdaf24a..f10eaaf3245a2 100644 --- a/code/modules/bitrunning/orders/bepis.dm +++ b/code/modules/bitrunning/orders/bepis.dm @@ -2,18 +2,18 @@ category_index = CATEGORY_BEPIS /datum/orderable_item/bepis/circuit_stack - item_path = /obj/item/stack/circuit_stack/full + purchase_path = /obj/item/stack/circuit_stack/full cost_per_order = 150 /datum/orderable_item/bepis/survival_pen - item_path = /obj/item/pen/survival + purchase_path = /obj/item/pen/survival cost_per_order = 150 /datum/orderable_item/bepis/party_sleeper - item_path = /obj/item/circuitboard/machine/sleeper/party + purchase_path = /obj/item/circuitboard/machine/sleeper/party cost_per_order = 750 desc = "A decommissioned sleeper circuitboard, repurposed for recreational purposes." /datum/orderable_item/bepis/sprayoncan - item_path = /obj/item/toy/sprayoncan + purchase_path = /obj/item/toy/sprayoncan cost_per_order = 750 diff --git a/code/modules/bitrunning/orders/flair.dm b/code/modules/bitrunning/orders/flair.dm index ef36348eb6ae9..0b1b79b03d0b9 100644 --- a/code/modules/bitrunning/orders/flair.dm +++ b/code/modules/bitrunning/orders/flair.dm @@ -2,39 +2,39 @@ category_index = CATEGORY_BITRUNNING_FLAIR /datum/orderable_item/bitrunning_flair/cornchips - item_path = /obj/item/food/cornchips + purchase_path = /obj/item/food/cornchips cost_per_order = 100 /datum/orderable_item/bitrunning_flair/mountain_wind - item_path = /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind + purchase_path = /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind cost_per_order = 100 /datum/orderable_item/bitrunning_flair/pwr_game - item_path = /obj/item/reagent_containers/cup/soda_cans/pwr_game + purchase_path = /obj/item/reagent_containers/cup/soda_cans/pwr_game cost_per_order = 200 /datum/orderable_item/bitrunning_flair/grey_bull - item_path = /obj/item/reagent_containers/cup/soda_cans/grey_bull + purchase_path = /obj/item/reagent_containers/cup/soda_cans/grey_bull cost_per_order = 200 /datum/orderable_item/bitrunning_flair/medkit - item_path = /obj/item/storage/medkit/brute + purchase_path = /obj/item/storage/medkit/brute desc = "Don't beat yourself up, it's just a game!" cost_per_order = 500 /datum/orderable_item/bitrunning_flair/medkit_fire - item_path = /obj/item/storage/medkit/fire + purchase_path = /obj/item/storage/medkit/fire desc = "Great after heated gaming sessions." cost_per_order = 500 /datum/orderable_item/bitrunning_flair/oval_sunglasses - item_path = /obj/item/clothing/glasses/sunglasses/oval + purchase_path = /obj/item/clothing/glasses/sunglasses/oval cost_per_order = 1000 /datum/orderable_item/bitrunning_flair/trenchcoat - item_path = /obj/item/clothing/suit/jacket/trenchcoat + purchase_path = /obj/item/clothing/suit/jacket/trenchcoat cost_per_order = 1000 /datum/orderable_item/bitrunning_flair/jackboots - item_path = /obj/item/clothing/shoes/jackboots + purchase_path = /obj/item/clothing/shoes/jackboots cost_per_order = 1000 diff --git a/code/modules/bitrunning/orders/tech.dm b/code/modules/bitrunning/orders/tech.dm index 9dd1db17c799d..cb509fb625201 100644 --- a/code/modules/bitrunning/orders/tech.dm +++ b/code/modules/bitrunning/orders/tech.dm @@ -3,54 +3,54 @@ /datum/orderable_item/bitrunning_tech/item_tier1 cost_per_order = 750 - item_path = /obj/item/bitrunning_disk/item/tier1 + purchase_path = /obj/item/bitrunning_disk/item/tier1 desc = "This disk contains a program that lets you equip a medical beamgun, a C4 explosive, or a box of infinite pizza." /datum/orderable_item/bitrunning_tech/item_tier2 cost_per_order = 1250 - item_path = /obj/item/bitrunning_disk/item/tier2 + purchase_path = /obj/item/bitrunning_disk/item/tier2 desc = "This disk contains a program that lets you equip a luxury medipen, a pistol, or an armour vest." /datum/orderable_item/bitrunning_tech/item_tier3 cost_per_order = 2000 - item_path = /obj/item/bitrunning_disk/item/tier3 + purchase_path = /obj/item/bitrunning_disk/item/tier3 desc = "This disk contains a program that lets you equip an advanced energy gun, a dual bladed energy sword, or a minibomb." /datum/orderable_item/bitrunning_tech/ability_tier1 cost_per_order = 750 - item_path = /obj/item/bitrunning_disk/ability/tier1 + purchase_path = /obj/item/bitrunning_disk/ability/tier1 desc = "This disk contains a program that lets you cast Summon Cheese or Lesser Heal." /datum/orderable_item/bitrunning_tech/ability_tier2 cost_per_order = 1500 - item_path = /obj/item/bitrunning_disk/ability/tier2 + purchase_path = /obj/item/bitrunning_disk/ability/tier2 desc = "This disk contains a program that lets you cast Fireball, Lightning Bolt, or Forcewall." /datum/orderable_item/bitrunning_tech/ability_tier3 cost_per_order = 2500 - item_path = /obj/item/bitrunning_disk/ability/tier3 + purchase_path = /obj/item/bitrunning_disk/ability/tier3 desc = "This disk contains a program that lets you shapeshift into a lesser ashdrake, or a polar bear." /datum/orderable_item/bitrunning_tech/flip_skillchip - item_path = /obj/item/skillchip/matrix_taunt + purchase_path = /obj/item/skillchip/matrix_taunt cost_per_order = 1500 /datum/orderable_item/bitrunning_tech/pka_mod - item_path = /obj/item/bitrunning_disk/item/pka_mods + purchase_path = /obj/item/bitrunning_disk/item/pka_mods cost_per_order = 750 desc = "This disk contains a program that lets you equip modkits for the proto-kinetic accelerator. Proto-kinetic accelerator not included." /datum/orderable_item/bitrunning_tech/pka_mod/premium - item_path = /obj/item/bitrunning_disk/item/pka_mods/premium + purchase_path = /obj/item/bitrunning_disk/item/pka_mods/premium cost_per_order = 1600 desc = "This disk contains a program that lets you equip stronger modkits for the proto-kinetic accelerator. Proto-kinetic accelerator not included." /datum/orderable_item/bitrunning_tech/pkc_mod - item_path = /obj/item/bitrunning_disk/item/pkc_mods + purchase_path = /obj/item/bitrunning_disk/item/pkc_mods cost_per_order = 750 desc = "This disk contains a program that lets you equip trophies for the proto-kinetic crusher. Proto-kinetic crusher no included." /datum/orderable_item/bitrunning_tech/pkc_mod/premium - item_path = /obj/item/bitrunning_disk/item/pkc_mods/premium + purchase_path = /obj/item/bitrunning_disk/item/pkc_mods/premium cost_per_order = 1600 desc = "This disk contains a program that lets you equip stronger trophies for the proto-kinetic crusher. Proto-kinetic crusher not included." diff --git a/code/modules/bitrunning/server/_parent.dm b/code/modules/bitrunning/server/_parent.dm index 672a79ba72cef..5e29c1729b490 100644 --- a/code/modules/bitrunning/server/_parent.dm +++ b/code/modules/bitrunning/server/_parent.dm @@ -45,7 +45,7 @@ /// Maximum rate at which a glitch can spawn var/threat_prob_max = 15 /// The turfs we can place a hololadder on. - var/turf/exit_turfs = list() + var/list/turf/exit_turfs = list() /// Determines if we broadcast to entertainment monitors or not var/broadcasting = FALSE /// Cooldown between being able to toggle broadcasting diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index 9f473980bbf96..9d63e153eb347 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -145,6 +145,9 @@ to_chat(neo, span_warning("This domain forbids the use of [english_list(import_ban)], your disk [english_list(disk_ban)] will not be granted!")) var/failed = FALSE + //DOPPLER EDIT ADDITION BEGIN - BITRUNNING_PREFS_DISKS - Track if we've used multiple avatar preference disks, for avoiding overrides and displaying the failure message. + var/duplicate_prefs = FALSE + //DOPPLER EDIT ADDITION END // We don't need to bother going over the disks if neither of the types can be used. if(domain_forbids_spells && domain_forbids_items) @@ -175,6 +178,24 @@ avatar.put_in_hands(new item_disk.granted_item()) + //DOPPLER EDIT ADDITION BEGIN - BITRUNNING_PREFS_DISKS - Handles our avatar preference disks, if present. + if(istype(disk, /obj/item/bitrunning_disk/preferences)) + var/obj/item/bitrunning_disk/preferences/prefs_disk = disk + var/datum/preferences/avatar_preference = prefs_disk.chosen_preference + + if(isnull(avatar_preference) || duplicate_prefs) + failed = TRUE + continue + + if(!domain_forbids_spells) + avatar_preference.safe_transfer_prefs_to(avatar) + SSquirks.AssignQuirks(avatar, prefs_disk.mock_client) + if(!domain_forbids_items && prefs_disk.include_loadout) + avatar.equip_outfit_and_loadout(/datum/outfit, avatar_preference) + + duplicate_prefs = TRUE + //DOPPLER EDIT ADDITION END + if(failed) to_chat(neo, span_warning("One of your disks failed to load. Check for duplicate or inactive disks.")) diff --git a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm index 84eb53e026a29..3969907205750 100644 --- a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm +++ b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm @@ -13,10 +13,10 @@ /obj/item/toy/beach_ball = 2, /obj/item/clothing/shoes/sandal = 1, /obj/item/clothing/glasses/sunglasses = 1, - /obj/item/gun/ballistic/automatic/mini_uzi = 1, + /obj/item/gun/energy/laser/chameleon/ballistic_only = 1, + /obj/item/bitrunning_disk/item/mini_uzi = 1, ) - /datum/lazy_template/virtual_domain/island_brawl/setup_domain(list/created_atoms) for(var/obj/effect/mob_spawn/ghost_role/human/virtual_domain/islander/spawner in created_atoms) custom_spawns += spawner diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm index d9a0a0faf63d8..0bf7350937372 100644 --- a/code/modules/buildmode/buttons.dm +++ b/code/modules/buildmode/buttons.dm @@ -1,5 +1,6 @@ /atom/movable/screen/buildmode icon = 'icons/hud/buildmode.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER var/datum/buildmode/bd // If we don't do this, we get occluded by item action buttons plane = ABOVE_HUD_PLANE diff --git a/code/modules/capture_the_flag/ctf_game.dm b/code/modules/capture_the_flag/ctf_game.dm index 2f292218e79f6..968e6e2953e95 100644 --- a/code/modules/capture_the_flag/ctf_game.dm +++ b/code/modules/capture_the_flag/ctf_game.dm @@ -403,7 +403,7 @@ alpha = 255 /obj/structure/trap/ctf/examine(mob/user) - return + return list() /obj/structure/trap/ctf/trap_effect(mob/living/living) if(!is_ctf_target(living)) diff --git a/code/modules/capture_the_flag/ctf_player_component.dm b/code/modules/capture_the_flag/ctf_player_component.dm index 5a02a954aba6a..0424fe13166b5 100644 --- a/code/modules/capture_the_flag/ctf_player_component.dm +++ b/code/modules/capture_the_flag/ctf_player_component.dm @@ -24,10 +24,10 @@ ckey_reference = player_mob.ckey register_mob() -/datum/component/ctf_player/PostTransfer() - if(!istype(parent, /datum/mind)) +/datum/component/ctf_player/PostTransfer(datum/new_parent) + if(!istype(new_parent, /datum/mind)) return COMPONENT_INCOMPATIBLE - var/datum/mind/true_parent = parent + var/datum/mind/true_parent = new_parent player_mob = true_parent.current register_mob() diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 23e578c2ed2db..a93fdc97d8e69 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -174,7 +174,7 @@ name = "Crayons" description = "Dr. Jones's kid ate all of our crayons again. Please send us yours." reward = CARGO_CRATE_VALUE * 4 - required_count = 24 + required_count = 8 wanted_types = list(/obj/item/toy/crayon = TRUE) /datum/bounty/item/assistant/pens diff --git a/code/modules/cargo/bounties/botany.dm b/code/modules/cargo/bounties/botany.dm index 905122584bf34..042bb60636f09 100644 --- a/code/modules/cargo/bounties/botany.dm +++ b/code/modules/cargo/bounties/botany.dm @@ -1,8 +1,8 @@ /datum/bounty/item/botany reward = CARGO_CRATE_VALUE * 10 - var/datum/bounty/item/botany/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations - var/datum/bounty/item/botany/bonus_desc //for adding extra flavor text to bounty descriptions - var/datum/bounty/item/botany/foodtype = "meal" //same here + var/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations + var/bonus_desc //for adding extra flavor text to bounty descriptions + var/foodtype = "meal" //same here /datum/bounty/item/botany/New() ..() diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index 1ba739d3343a4..bb1c4ea8a8b86 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -303,7 +303,7 @@ ADMIN_VERB(centcom_podlauncher, R_ADMIN, "Config/Launch Supplypod", "Configure a return if (!isnum(boomInput[i])) //If the user doesn't input a number, set that specific explosion value to zero tgui_alert(usr, "That wasn't a number! Value set to default (zero) instead.") - boomInput = 0 + boomInput[i] = 0 explosionChoice = 1 temp_pod.explosionSize = boomInput . = TRUE diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 0b6451e569828..5abf8f2dd27f7 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -32,6 +32,27 @@ access_view = ACCESS_WEAPONS contains = list(/obj/item/ammo_box/c38/match/bouncy) +/datum/supply_pack/goody/dumdum38br + name = ".38 DumDum Magazine Single-Pack" + desc = "Contains one magazine of .38 DumDum ammunition, good for embedding in soft targets." + cost = PAYCHECK_CREW * 2 + access_view = ACCESS_WEAPONS + contains = list(/obj/item/ammo_box/magazine/m38/dumdum) + +/datum/supply_pack/goody/match38br + name = ".38 Match Grade Magazine Single-Pack" + desc = "Contains one magazine of match grade .38 ammunition, perfect for showing off trickshots." + cost = PAYCHECK_CREW * 2 + access_view = ACCESS_WEAPONS + contains = list(/obj/item/ammo_box/magazine/m38/match) + +/datum/supply_pack/goody/rubber + name = ".38 Rubber Magazine Single-Pack" + desc = "Contains one magazine of bouncy rubber .38 ammunition, for when you want to bounce your shots off anything and everything." + cost = PAYCHECK_CREW * 1.5 + access_view = ACCESS_WEAPONS + contains = list(/obj/item/ammo_box/magazine/m38/match/bouncy) + /datum/supply_pack/goody/mars_single name = "Colt Detective Special Single-Pack" desc = "The HoS took your gun and your badge? No problem! Just pay the absurd taxation fee and you too can be reunited with the lethal power of a .38!" diff --git a/code/modules/cargo/markets/market_items/misc.dm b/code/modules/cargo/markets/market_items/misc.dm index bb8d3da04d825..a35d85fa7ccca 100644 --- a/code/modules/cargo/markets/market_items/misc.dm +++ b/code/modules/cargo/markets/market_items/misc.dm @@ -51,6 +51,33 @@ stock_max = 2 availability_prob = 30 +/datum/market_item/misc/atrocinator + name = "MOD Anti-Gravity Module" + desc = "We found this module in a maintenance tunnel, behind several warning cones and hazard signs, unlabeled. It's probably safe." + item = /obj/item/mod/module/atrocinator + price_min = CARGO_CRATE_VALUE * 4 + price_max = CARGO_CRATE_VALUE * 7 + stock_max = 1 + availability_prob = 22 + +/datum/market_item/misc/tanner + name = "MOD Tanning Module" + desc = "Ever wanted to be at the beach AND at work? Now you can with this snazzy tanning module!" + item = /obj/item/mod/module/tanner + price_min = CARGO_CRATE_VALUE * 2 + price_max = CARGO_CRATE_VALUE * 3 + stock_max = 2 + availability_prob = 30 + +/datum/market_item/misc/hat_stabilizer + name = "MOD Hat Stabilizer Module" + desc = "Don't sacrifice style for substance with this module! Hats not included." + item = /obj/item/mod/module/tanner + price_min = CARGO_CRATE_VALUE * 2 + price_max = CARGO_CRATE_VALUE * 3 + stock_max = 2 + availability_prob = 35 + /datum/market_item/misc/shove_blocker name = "MOD Bulwark Module" desc = "You have no idea how much effort it took us to extract this module from that damn safeguard MODsuit last shift." diff --git a/code/modules/cargo/markets/market_items/weapons.dm b/code/modules/cargo/markets/market_items/weapons.dm index 94aa533c26e3f..f9fd6245c8d99 100644 --- a/code/modules/cargo/markets/market_items/weapons.dm +++ b/code/modules/cargo/markets/market_items/weapons.dm @@ -64,6 +64,16 @@ stock_max = 3 availability_prob = 45 +/datum/market_item/weapon/carpenter_hammer + name = "Carpenter hammer" + desc = "When you really want to look like a psycho..." + item = /obj/item/carpenter_hammer + + price_min = CARGO_CRATE_VALUE * 1 + price_max = CARGO_CRATE_VALUE * 1.25 + stock_max = 2 + availability_prob = 65 + /datum/market_item/weapon/emp_grenade name = "EMP Grenade" desc = "Use this grenade for SHOCKING results!" diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 2d19c276ec115..3cbe3b56aff65 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -24,7 +24,7 @@ cost = CARGO_CRATE_VALUE * 4 contains = list( /mob/living/basic/bot/medbot = 2, - /mob/living/simple_animal/bot/floorbot = 2, + /mob/living/basic/bot/repairbot = 2, /obj/item/tank/internals/emergency_oxygen = 5, /obj/item/clothing/mask/breath = 5, ) diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index d021fa8665ff2..4b3847bd89835 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -192,6 +192,14 @@ crate_name = "Strong-Arm implant crate" discountable = SUPPLY_PACK_RARE_DISCOUNTABLE +/datum/supply_pack/medical/paperwork_implants + name = "Paperwork Implant Set" + desc = "A crate containing two implants, which can be surgically implanted to effectivize crewmembers at paperwork. Warranty void if exposed to electromagnetic pulses." + cost = CARGO_CRATE_VALUE * 3 + contains = list(/obj/item/organ/cyberimp/arm/paperwork = 2) + crate_name = "Paperwork implant crate" + discountable = SUPPLY_PACK_RARE_DISCOUNTABLE + /datum/supply_pack/medical/lost_crew name = "Recovered NT Employee corpse" desc = "We don't have the accomodations to bring them back, could we send them to you? Please revive and employ them. \ @@ -200,3 +208,4 @@ contains = list(/obj/structure/closet/body_bag/lost_crew/with_body) crate_name = "body freezer" crate_type = /obj/structure/closet/crate/secure/freezer + diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 1823ef5174f94..b233ecd78dd38 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -248,6 +248,30 @@ crate_name = "disabler smg crate" crate_type = /obj/structure/closet/crate/secure/plasma +/datum/supply_pack/security/armory/battle_rifle + name = "NT BR-38 Crate" + desc = "An experimental energy-based ballistc battle rifle. Only available to \ + Nanotrasen stations for security purposes. DO NOT RESELL TO OUTSIDE COMPANIES. \ + Contains three NT BR-38 rifles and three magazines containing .38 Standard." + cost = CARGO_CRATE_VALUE * 100 + contains = list( + /obj/item/gun/ballistic/automatic/battle_rifle = 2, + /obj/item/ammo_box/magazine/m38 = 4, + ) + crate_name = "battle rifle crate" + +/datum/supply_pack/security/armory/br_mag + name = "NT BR-38 Magazine Crate" + desc = "Six .38 magazines, able to fit into the NT BR-38. Contains \ + two standard magazines, two Hot Shot magazines and two Iceblox magazines." + cost = CARGO_CRATE_VALUE * 7 + contains = list( + /obj/item/ammo_box/magazine/m38 = 2, + /obj/item/ammo_box/magazine/m38/hotshot = 2, + /obj/item/ammo_box/magazine/m38/iceblox =2, + ) + crate_name = ".38 magazine crate" + /datum/supply_pack/security/armory/exileimp name = "Exile Implants Crate" desc = "Contains five Exile implants." diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index bde635695fd28..89ce9a5c3716c 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -237,12 +237,16 @@ /datum/supply_pack/service/randomized/ready_donk name = "Ready-Donk Variety Crate" - desc = "Featuring a line up of Donk Co.'s most popular pastry! Contains \ + desc = "Featuring a line up of Donk Co.'s fan-favourite microwave meal! Contains \ a random assortment of Ready Donk products." cost = CARGO_CRATE_VALUE * 3 contains = list(/obj/item/food/ready_donk, /obj/item/food/ready_donk/mac_n_cheese, /obj/item/food/ready_donk/donkhiladas, + /obj/item/food/ready_donk/nachos_grandes, + /obj/item/food/ready_donk/donkrange_chicken, + /obj/item/food/ready_donk/salisbury_steak, + /obj/item/food/ready_donk/country_chicken, ) crate_name = "\improper Ready-Donk crate" crate_type = /obj/structure/closet/crate/freezer/donk @@ -281,21 +285,6 @@ crate_type = /obj/structure/closet/crate/large discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE -/datum/supply_pack/service/aquarium_kit - name = "Aquarium Kit" - desc = "Everything you need to start your own aquarium. Contains aquarium construction kit, \ - fish catalog, fish food and three freshwater fish from our collection." - cost = CARGO_CRATE_VALUE * 5 - contains = list(/obj/item/book/manual/fish_catalog, - /obj/item/storage/fish_case/random/freshwater = 3, - /obj/item/reagent_containers/cup/fish_feed, - /obj/item/storage/box/aquarium_props, - /obj/item/aquarium_kit, - ) - crate_name = "aquarium kit crate" - crate_type = /obj/structure/closet/crate/wooden - discountable = SUPPLY_PACK_UNCOMMON_DISCOUNTABLE - /// Spare bar sign wallmount /datum/supply_pack/service/bar_sign name = "Bar Sign Replacement Kit" diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm index 4ca500a9e7198..08e79c305a454 100644 --- a/code/modules/client/client_colour.dm +++ b/code/modules/client/client_colour.dm @@ -220,6 +220,9 @@ /datum/client_colour/malfunction colour = list(/*R*/ 0,0,0,0, /*G*/ 0,175,0,0, /*B*/ 0,0,0,0, /*A*/ 0,0,0,1, /*C*/0,-130,0,0) // Matrix colors +/datum/client_colour/perceptomatrix + colour = list(/*R*/ 1,0,0,0, /*G*/ 0,1,0,0, /*B*/ 0,0,1,0, /*A*/ 0,0,0,1, /*C*/0,-0.02,-0.02,0) // veeery slightly pink + /datum/client_colour/monochrome colour = COLOR_MATRIX_GRAYSCALE priority = PRIORITY_HIGH //we can't see colors anyway! diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index c8e9e9a64c270..fe559b2b71bfa 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -269,3 +269,7 @@ ///Which ambient sound this client is currently being provided. var/current_ambient_sound + + /// Does this client's mob need to rebuild its plane masters after login? + /// This is currently only used so a client can switch between 515 and 516 without breaking their rendering. + var/rebuild_plane_masters = FALSE diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index e0f359ac1e639..4bd8ce5497e2d 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -329,10 +329,20 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(GLOB.player_details[ckey]) reconnecting = TRUE player_details = GLOB.player_details[ckey] - player_details.byond_version = full_version + var/old_version = player_details.byond_version + player_details.byond_version = byond_version + player_details.byond_build = byond_build + +#if MIN_COMPILER_VERSION > 516 + #warn Fully change default relay_loc to "1,1", rather than changing it based on client version +#endif + if(old_version != byond_version) + rebuild_plane_masters = TRUE + else player_details = new(ckey) - player_details.byond_version = full_version + player_details.byond_version = byond_version + player_details.byond_build = byond_build GLOB.player_details[ckey] = player_details @@ -726,22 +736,16 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( qdel(query_datediff) qdel(query_get_client_age) if(!new_player) - var/datum/db_query/query_log_player = SSdbcore.NewQuery( + SSdbcore.FireAndForget( "UPDATE [format_table_name("player")] SET lastseen = Now(), lastseen_round_id = :round_id, ip = INET_ATON(:ip), computerid = :computerid, lastadminrank = :admin_rank, accountjoindate = :account_join_date WHERE ckey = :ckey", list("round_id" = GLOB.round_id, "ip" = address, "computerid" = computer_id, "admin_rank" = admin_rank, "account_join_date" = account_join_date || null, "ckey" = ckey) ) - if(!query_log_player.Execute()) - qdel(query_log_player) - return - qdel(query_log_player) if(!account_join_date) account_join_date = "Error" - var/datum/db_query/query_log_connection = SSdbcore.NewQuery({" + SSdbcore.FireAndForget({" INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`round_id`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON(:internet_address),:port,:round_id,:ckey,INET_ATON(:ip),:computerid) "}, list("internet_address" = world.internet_address || "0", "port" = world.port, "round_id" = GLOB.round_id, "ckey" = ckey, "ip" = address, "computerid" = computer_id)) - query_log_connection.Execute() - qdel(query_log_connection) SSserver_maint.UpdateHubStatus() diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index 3a880dcdbb550..d0982a0c31268 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -1,6 +1,6 @@ ///assoc list of ckey -> /datum/player_details -GLOBAL_LIST_EMPTY(player_details) +GLOBAL_LIST_EMPTY_TYPED(player_details, /datum/player_details) /// Tracks information about a client between log in and log outs /datum/player_details @@ -18,8 +18,10 @@ GLOBAL_LIST_EMPTY(player_details) /// Lazylist of preference slots this client has joined the round under /// Numbers are stored as strings var/list/joined_as_slots - /// Version of byond this client is using - var/byond_version = "Unknown" + /// Major version of BYOND this client is using. + var/byond_version + /// Build number of BYOND this client is using. + var/byond_build /// Tracks achievements they have earned var/datum/achievement_data/achievements /// World.time this player last died @@ -35,6 +37,12 @@ GLOBAL_LIST_EMPTY(player_details) previous_names += html_encode("[previous_name] ([played_names[previous_name]])") return previous_names.Join("; ") +/// Returns the full version string (i.e 515.1642) of the BYOND version and build. +/datum/player_details/proc/full_byond_version() + if(!byond_version) + return "Unknown" + return "[byond_version].[byond_build || "xxx"]" + /// Adds the new names to the player's played_names list on their /datum/player_details for use of admins. /// `ckey` should be their ckey, and `data` should be an associative list with the keys being the names they played under and the values being the unique mob ID tied to that name. /proc/log_played_names(ckey, data) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ba031f80c96bd..e82d2531eb763 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -9,7 +9,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) /// Ensures that we always load the last used save, QOL var/default_slot = 1 /// The maximum number of slots we're allowed to contain - var/max_save_slots = 15 // DOPPLER EDIT: moar slots + var/max_save_slots = 30 // DOPPLER EDIT: moar slots /// Bitflags for communications that are muted var/muted = NONE @@ -598,4 +598,4 @@ GLOBAL_LIST_EMPTY(preferences_datums) unlock_content = !!byond_member if(unlock_content) - max_save_slots = 30 // DOPPLER EDIT: moar slots + max_save_slots = 45 // DOPPLER EDIT: moar slots diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index 127840631d631..dd09deae54059 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -66,7 +66,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") if(handle_spam_prevention(msg,MUTE_OOC)) return if(findtext(msg, "byond://")) - to_chat(src, span_boldannounce("Advertising other servers is not allowed.")) + to_chat(src, span_boldannounce("Advertising other servers is not allowed.")) log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]") message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]") return diff --git a/code/modules/clothing/chameleon/chameleon_action_subtypes.dm b/code/modules/clothing/chameleon/chameleon_action_subtypes.dm index bd15bb908f227..1c433f0c0d953 100644 --- a/code/modules/clothing/chameleon/chameleon_action_subtypes.dm +++ b/code/modules/clothing/chameleon/chameleon_action_subtypes.dm @@ -301,3 +301,7 @@ . = ..() for(var/other_type in other_cham_types) add_chameleon_items(other_type) + +/datum/action/item_action/chameleon/change/gun/ballistic + chameleon_type = /obj/item/gun/ballistic + chameleon_name = "Gun" diff --git a/code/modules/clothing/chameleon/chameleon_gun.dm b/code/modules/clothing/chameleon/chameleon_gun.dm index dafd0ba5f624a..4a282a3e75aee 100644 --- a/code/modules/clothing/chameleon/chameleon_gun.dm +++ b/code/modules/clothing/chameleon/chameleon_gun.dm @@ -11,14 +11,15 @@ /// The badmin mode. Makes your projectiles act like the real deal. var/real_hits = FALSE + /// how it looks by default. + var/default_look = /obj/item/gun/energy/laser /obj/item/gun/energy/laser/chameleon/Initialize(mapload) . = ..() - recharge_newshot() AddElement(/datum/element/empprotection, EMP_PROTECT_SELF|EMP_PROTECT_CONTENTS) // Init order shenanigans dictate we have to do this last so we can't just use `active_type` var/datum/action/item_action/chameleon/change/gun/gun_action = locate() in actions - gun_action?.update_look(/obj/item/gun/energy/laser) + gun_action?.update_look(default_look) /** * Description: Resets the currently loaded chameleon variables, essentially resetting it to brand new. @@ -54,36 +55,34 @@ inhand_x_dimension = gun_to_set.inhand_x_dimension inhand_y_dimension = gun_to_set.inhand_y_dimension + // We dupe this casing and then delete it at the end, to grab the projectile. + var/obj/item/ammo_casing/casing_to_dupe + if(istype(gun_to_set, /obj/item/gun/ballistic)) var/obj/item/gun/ballistic/ball_gun = gun_to_set - var/obj/item/ammo_box/ball_ammo = new ball_gun.spawn_magazine_type(gun_to_set) - qdel(ball_gun) - - if(!istype(ball_ammo) || !ball_ammo.ammo_type) - qdel(ball_ammo) - return FALSE - - var/obj/item/ammo_casing/ball_cartridge = new ball_ammo.ammo_type(gun_to_set) - set_chameleon_ammo(ball_cartridge) + // We also need to copy the starting magazine for ballistics. + casing_to_dupe = initial(ball_gun.spawn_magazine_type.ammo_type) + casing_to_dupe = new casing_to_dupe(src) else if(istype(gun_to_set, /obj/item/gun/magic)) var/obj/item/gun/magic/magic_gun = gun_to_set - var/obj/item/ammo_casing/magic_cartridge = new magic_gun.ammo_type(gun_to_set) - set_chameleon_ammo(magic_cartridge) + casing_to_dupe = new magic_gun.ammo_type(src) else if(istype(gun_to_set, /obj/item/gun/energy)) var/obj/item/gun/energy/energy_gun = gun_to_set + // Even if the energy gun has multiple ammo types, we copy the first. Energy guns always (should) have a list in ammo_type. if(islist(energy_gun.ammo_type) && energy_gun.ammo_type.len) - var/obj/item/ammo_casing/energy_cartridge = energy_gun.ammo_type[1] - set_chameleon_ammo(energy_cartridge) + var/obj/item/first_casing = energy_gun.ammo_type[1] + casing_to_dupe = new first_casing.type(src) else if(istype(gun_to_set, /obj/item/gun/syringe)) - var/obj/item/ammo_casing/syringe_cartridge = new /obj/item/ammo_casing/syringegun(src) - set_chameleon_ammo(syringe_cartridge) + casing_to_dupe = new /obj/item/ammo_casing/syringegun(src) else - var/obj/item/ammo_casing/default_cartridge = new /obj/item/ammo_casing(src) - set_chameleon_ammo(default_cartridge) + casing_to_dupe = new /obj/item/ammo_casing(src) + + set_chameleon_ammo(casing_to_dupe) + qdel(casing_to_dupe) /** * Description: Sets the ammo type our gun should have. @@ -155,3 +154,11 @@ var/obj/item/gun/new_gun = new guntype(src) set_chameleon_gun(new_gun) qdel(new_gun) + +/obj/item/gun/energy/laser/chameleon/ballistic_only + actions_types = list(/datum/action/item_action/chameleon/change/gun/ballistic) + default_look = /obj/item/gun/ballistic/automatic/mini_uzi + +/obj/item/gun/energy/laser/chameleon/ballistic_only/Initialize(mapload) + . = ..() + set_chameleon_disguise(default_look) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 0c0e73940d27c..9f68581e3ab6f 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -431,9 +431,9 @@ parts_covered += "head" if(body_parts_covered & CHEST) parts_covered += "torso" - if(body_parts_covered & ARMS|HANDS) + if(body_parts_covered & (ARMS|HANDS)) parts_covered += "arms" - if(body_parts_covered & LEGS|FEET) + if(body_parts_covered & (LEGS|FEET)) parts_covered += "legs" if(length(parts_covered)) readout += "[output_string] will protect the wearer's [english_list(parts_covered)] from [span_tooltip("The extremely low pressure is the biggest danger posed by the vacuum of space.", "low pressure")]." diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index 064a24cf5c779..4d7951a62f62a 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -183,26 +183,26 @@ continue var/datum/gas_mixture/environment = open.return_air() var/temp = round(environment.return_temperature()) - var/image/pic = image('icons/turf/overlays.dmi', open, "greyOverlay", ABOVE_ALL_MOB_LAYER) + var/image/turf_overlay = image('icons/turf/overlays.dmi', open, "greyOverlay", ABOVE_OPEN_TURF_LAYER) // Lower than TEMP_SHADE_CYAN should be deep blue switch(temp) if(-INFINITY to TEMP_SHADE_CYAN) - pic.color = COLOR_STRONG_BLUE + turf_overlay.color = COLOR_STRONG_BLUE // Between TEMP_SHADE_CYAN and TEMP_SHADE_GREEN if(TEMP_SHADE_CYAN to TEMP_SHADE_GREEN) - pic.color = BlendRGB(COLOR_DARK_CYAN, COLOR_LIME, max(round((temp - TEMP_SHADE_CYAN)/(TEMP_SHADE_GREEN - TEMP_SHADE_CYAN), 0.01), 0)) + turf_overlay.color = BlendRGB(COLOR_DARK_CYAN, COLOR_LIME, max(round((temp - TEMP_SHADE_CYAN)/(TEMP_SHADE_GREEN - TEMP_SHADE_CYAN), 0.01), 0)) // Between TEMP_SHADE_GREEN and TEMP_SHADE_YELLOW if(TEMP_SHADE_GREEN to TEMP_SHADE_YELLOW) - pic.color = BlendRGB(COLOR_LIME, COLOR_YELLOW, clamp(round((temp-TEMP_SHADE_GREEN)/(TEMP_SHADE_YELLOW - TEMP_SHADE_GREEN), 0.01), 0, 1)) + turf_overlay.color = BlendRGB(COLOR_LIME, COLOR_YELLOW, clamp(round((temp-TEMP_SHADE_GREEN)/(TEMP_SHADE_YELLOW - TEMP_SHADE_GREEN), 0.01), 0, 1)) // Between TEMP_SHADE_YELLOW and TEMP_SHADE_RED if(TEMP_SHADE_YELLOW to TEMP_SHADE_RED) - pic.color = BlendRGB(COLOR_YELLOW, COLOR_RED, clamp(round((temp-TEMP_SHADE_YELLOW)/(TEMP_SHADE_RED - TEMP_SHADE_YELLOW), 0.01), 0, 1)) + turf_overlay.color = BlendRGB(COLOR_YELLOW, COLOR_RED, clamp(round((temp-TEMP_SHADE_YELLOW)/(TEMP_SHADE_RED - TEMP_SHADE_YELLOW), 0.01), 0, 1)) // Over TEMP_SHADE_RED should be red if(TEMP_SHADE_RED to INFINITY) - pic.color = COLOR_RED - pic.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - pic.alpha = 200 - flick_overlay_global(pic, list(viewer.client), duration) + turf_overlay.color = COLOR_RED + turf_overlay.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + turf_overlay.alpha = 200 + flick_overlay_global(turf_overlay, list(viewer.client), duration) #undef MODE_NONE diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm index dcbc798eab92a..09df92bb8c4f2 100644 --- a/code/modules/clothing/gloves/special.dm +++ b/code/modules/clothing/gloves/special.dm @@ -273,9 +273,3 @@ var/body_zone = pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM) user.apply_damage(damage, BRUTE, body_zone, user.run_armor_check(body_zone, MELEE)) playsound(src,'sound/items/weapons/bite.ogg', damage * 2, TRUE) - -/obj/item/clothing/gloves/botanic_leather/janitor - name = "janitor gloves" - desc = "These rubber gloves protect against thorns, barbs, prickles, glass shards and any other threats that might be found in the station's trash. They're also quite warm." - icon_state = "janitor_doppler" - inhand_icon_state = null diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 56a8661a4127a..44fb8120a4411 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -143,15 +143,17 @@ /obj/item/clothing/head/utility/hardhat/welding/adjust_visor(mob/living/user) . = ..() if(.) - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE) + playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE) /obj/item/clothing/head/utility/hardhat/welding/worn_overlays(mutable_appearance/standing, isinhands) . = ..() if(isinhands) return - if(!up) + if(!up && !mask_overlay_icon) // DOPPLER EDIT - ORIGINAL - if(!up) . += mutable_appearance('icons/mob/clothing/head/utility.dmi', visor_state) + else if(!up) // DOPPLER EDIT ADDITION - SEE modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm + . += mutable_appearance(mask_overlay_icon, visor_state) // DOPPLER EDIT ADDITION /obj/item/clothing/head/utility/hardhat/welding/update_overlays() . = ..() diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm index 426ab39b3edb9..a8247a55603e2 100644 --- a/code/modules/clothing/head/hat.dm +++ b/code/modules/clothing/head/hat.dm @@ -352,9 +352,3 @@ icon_state = "paper" worn_icon_state = "paper" dog_fashion = /datum/dog_fashion/head - -/obj/item/clothing/head/hats/janitor_doppler - name = "janitor cap" - desc = "A regal purple cap to keep your head clean as you clean the filthy." - icon_state = "janitor_doppler" - inhand_icon_state = "greyscale_softcap" diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm index e9ff99782395f..602f64eefb274 100644 --- a/code/modules/clothing/head/mind_monkey_helmet.dm +++ b/code/modules/clothing/head/mind_monkey_helmet.dm @@ -12,8 +12,8 @@ var/light_colors = 1 ///which icon state color this is (red, blue, yellow) /// This chance is increased by 7 every time the helmet fails to get a host, to dissuade spam. starts negative to add 1 safe reuse var/rage_chance = -7 - /// Holds the steam effect at dangerous rage chance levels. - var/obj/effect/abstract/particle_holder/particle_effect + /// Currently used particle type + var/particle_path /obj/item/clothing/head/helmet/monkey_sentience/Initialize(mapload) . = ..() @@ -60,7 +60,8 @@ UnregisterSignal(magnification, COMSIG_SPECIES_LOSS) magnification = null visible_message(span_notice("[src] falls silent and drops on the floor. Maybe you should try again later?")) - var/particle_path + if (particle_path) + remove_shared_particles(particle_path) switch(rage_chance) if(-7 to 0) user.visible_message(span_notice("[src] falls silent and drops on the floor. Try again later?")) @@ -83,11 +84,10 @@ playsound(src, 'sound/machines/buzz/buzz-two.ogg', 30, TRUE) particle_path = /particles/smoke/steam rage_chance += 7 - - QDEL_NULL(particle_effect) if(particle_path) - particle_effect = new(src, particle_path) - QDEL_IN(particle_effect, 2 MINUTES) + add_shared_particles(particle_path) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, remove_shared_particles), particle_path), 2 MINUTES) + addtimer(VARSET_CALLBACK(src, particle_path, null), 2 MINUTES) if((rage_chance > 0) && prob(rage_chance)) // too much spam means agnry gorilla running at you malfunction(user) diff --git a/code/modules/clothing/head/perceptomatrix.dm b/code/modules/clothing/head/perceptomatrix.dm new file mode 100644 index 0000000000000..e8b75bbdef5bc --- /dev/null +++ b/code/modules/clothing/head/perceptomatrix.dm @@ -0,0 +1,250 @@ + +#define PERCEPTOMATRIX_INACTIVE_FLAGS SNUG_FIT|STACKABLE_HELMET_EXEMPT|STOPSPRESSUREDAMAGE|BLOCK_GAS_SMOKE_EFFECT +#define PERCEPTOMATRIX_ACTIVE_FLAGS PERCEPTOMATRIX_INACTIVE_FLAGS|CASTING_CLOTHES // we love casting spells + +/// Helmet which can turn you into a BEAST!! once an anomaly core is inserted +/obj/item/clothing/head/helmet/perceptomatrix + name = "perceptomatrix helm" + desc = "This piece of headgear harnesses the energies of a hallucinative anomaly to create a safe audiovisual replica of -all- external stimuli directly into the cerebral cortex, \ + granting the user effective immunity to both psychic threats, and anything that would affect their perception - be it ear, eye, or even brain damage. \ + It can also violently discharge said energy, inducing hallucinations in others." + icon_state = "perceptomatrix_helmet_inactive" + worn_icon_state = "perceptomatrix_helmet_inactive" + base_icon_state = "perceptomatrix_helmet" + force = 10 + dog_fashion = null + cold_protection = HEAD + min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT + heat_protection = HEAD + max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT + strip_delay = 8 SECONDS + clothing_flags = PERCEPTOMATRIX_ACTIVE_FLAGS + clothing_traits = list( + /* eye/ear protection */ + TRAIT_NOFLASH, + TRAIT_TRUE_NIGHT_VISION, + TRAIT_SIGHT_BYPASS, + TRAIT_EXPANDED_FOV, + TRAIT_GOOD_HEARING, + /* mental protection */ + TRAIT_PERCEPTUAL_TRAUMA_BYPASS, + TRAIT_RDS_SUPPRESSED, + TRAIT_MADNESS_IMMUNE, + TRAIT_HALLUCINATION_IMMUNE, + /* psychic protection */ + TRAIT_NO_MINDSWAP, + TRAIT_UNCONVERTABLE, + ) + flags_cover = HEADCOVERSEYES|EARS_COVERED + flags_inv = HIDEHAIR|HIDEFACE + flash_protect = FLASH_PROTECTION_WELDER_SENSITIVE + resistance_flags = FIRE_PROOF | ACID_PROOF + equip_sound = 'sound/items/handling/helmet/helmet_equip1.ogg' + pickup_sound = 'sound/items/handling/helmet/helmet_pickup1.ogg' + drop_sound = 'sound/items/handling/helmet/helmet_drop1.ogg' + armor_type = /datum/armor/head_helmet_matrix + actions_types = list(/datum/action/cooldown/spell/pointed/percept_hallucination) + + /// If we have a core or not + var/core_installed = FALSE + /// Active components to add onto the mob, deleted and created on core installation/removal + var/list/active_components = list() + +// weaker overall but better against energy +/datum/armor/head_helmet_matrix + melee = 15 + bullet = 15 + laser = 45 + energy = 60 + bomb = 15 + fire = 50 + acid = 50 + wound = 10 + +/obj/item/clothing/head/helmet/perceptomatrix/Initialize(mapload) + . = ..() + + update_appearance(UPDATE_ICON_STATE) + update_anomaly_state() + AddComponent(/datum/component/adjust_fishing_difficulty, -7) // PSYCHIC FISHING + AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) + +/obj/item/clothing/head/helmet/perceptomatrix/equipped(mob/living/user, slot) + . = ..() + if(slot & ITEM_SLOT_HEAD) + RegisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST, PROC_REF(pre_cast_core_check)) + +/obj/item/clothing/head/helmet/perceptomatrix/dropped(mob/living/user, silent) + UnregisterSignal(user, COMSIG_MOB_BEFORE_SPELL_CAST) + ..() + +// Prevent casting the spell w/o the core. +/obj/item/clothing/head/helmet/perceptomatrix/proc/pre_cast_core_check(mob/caster, datum/action/cooldown/spell/spell) + SIGNAL_HANDLER + if((!core_installed) && spell.school == SCHOOL_PSYCHIC) + to_chat(caster, span_warning("You can't zap minds through [src]'s shielding without a core installed!")) + return SPELL_CANCEL_CAST + +/obj/item/clothing/head/helmet/perceptomatrix/proc/update_anomaly_state() + + // If the core isn't installed, or it's temporarily deactivated, disable special functions. + if(!core_installed) + clothing_flags = PERCEPTOMATRIX_INACTIVE_FLAGS + detach_clothing_traits(clothing_traits) + QDEL_LIST(active_components) + RemoveElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, forced = TRUE) + return + + clothing_flags = PERCEPTOMATRIX_ACTIVE_FLAGS + attach_clothing_traits(initial(clothing_traits)) + + // When someone makes TRAIT_DEAF an element, or status effect, or whatever, give this item a way to bypass said deafness. + // just blocking future instances of deafness isn't what the item is meant to do but there's no proper way to do it otherwise at the moment. + active_components += AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_HEAD), reduce_amount = 2) // should be same as highest value + active_components += AddComponent( + /datum/component/anti_magic, \ + antimagic_flags = MAGIC_RESISTANCE_MIND, \ + inventory_flags = ITEM_SLOT_HEAD, \ + ) + AddElement(/datum/element/wearable_client_colour, /datum/client_colour/perceptomatrix, ITEM_SLOT_HEAD, forced = TRUE) + + update_icon_state() + +/obj/item/clothing/head/helmet/perceptomatrix/Destroy(force) + QDEL_LIST(active_components) + return ..() + +/obj/item/clothing/head/helmet/perceptomatrix/examine(mob/user) + . = ..() + if (!core_installed) + . += span_warning("It requires a hallucination anomaly core in order to function.") + +/obj/item/clothing/head/helmet/perceptomatrix/item_action_slot_check(slot, mob/user, datum/action/action) + return slot & ITEM_SLOT_HEAD + +/obj/item/clothing/head/helmet/perceptomatrix/update_icon_state() + icon_state = base_icon_state + (core_installed ? "" : "_inactive") + worn_icon_state = base_icon_state + (core_installed ? "" : "_inactive") + return ..() + +/obj/item/clothing/head/helmet/perceptomatrix/item_interaction(mob/user, obj/item/weapon, params) + if (!istype(weapon, /obj/item/assembly/signaler/anomaly/hallucination)) + return NONE + balloon_alert(user, "inserting...") + if (!do_after(user, delay = 3 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + qdel(weapon) + core_installed = TRUE + update_anomaly_state() + update_appearance(UPDATE_ICON_STATE) + playsound(src, 'sound/machines/crate/crate_open.ogg', 50, FALSE) + return ITEM_INTERACT_SUCCESS + +/obj/item/clothing/head/helmet/perceptomatrix/functioning + core_installed = TRUE + +/datum/action/cooldown/spell/pointed/percept_hallucination + name = "Hallucinate" + desc = "Redirect perceptual energies towards a target, staggering them." + button_icon_state = "blind" + ranged_mousepointer = 'icons/effects/mouse_pointers/blind_target.dmi' + + sound = 'sound/items/weapons/emitter2.ogg' + school = SCHOOL_PSYCHIC + cooldown_time = 15 SECONDS + + invocation_type = INVOCATION_NONE + spell_requirements = NONE + antimagic_flags = MAGIC_RESISTANCE_MIND + + active_msg = "You prepare to zap a target with hallucinations..." + + /// The amount of blurriness to apply + var/eye_blur_duration = 7 SECONDS + /// The amount of stagger to apply + var/stagger_duration = 3 SECONDS + /// The amount of hallucination to apply + var/hallucination_duration = 25 SECONDS + /// Spark system + var/datum/effect_system/spark_spread/quantum/spark_sys + +/datum/action/cooldown/spell/pointed/percept_hallucination/New(Target) + . = ..() + + spark_sys = new /datum/effect_system/spark_spread/quantum + +/datum/action/cooldown/spell/pointed/percept_hallucination/Destroy() + QDEL_NULL(spark_sys) + return ..() + +/datum/action/cooldown/spell/pointed/percept_hallucination/is_valid_target(atom/cast_on) + . = ..() + if(!.) + return FALSE + if(ishuman(cast_on)) + return TRUE + if(istype(cast_on, /obj/item/food/pancakes)) + return TRUE + + return FALSE + +/datum/action/cooldown/spell/pointed/percept_hallucination/proc/blows_up_pancakes_with_mind(obj/item/food/pancakes/pancakes) + + owner.visible_message( + span_userdanger("[owner] blows up [pancakes] with [owner.p_their()] mind!"), + span_userdanger("You blow up [pancakes] with your mind!") + ) + + for(var/mob/chef in get_hearers_in_view(7, pancakes)) + if(!chef.mind) + continue + // if cooked by chef, or if EITHER 5% chance OR its april fools. a || (b || c) + if(HAS_TRAIT_FROM(pancakes, TRAIT_FOOD_CHEF_MADE, REF(chef.mind)) || (prob(5) || check_holidays(APRIL_FOOLS))) + chef.say("Ma fuckin' pancakes!") + + playsound(pancakes, 'sound/effects/fuse.ogg', 80) + animate(pancakes, time = 1, pixel_z = 12, easing = ELASTIC_EASING) + animate(time = 1, pixel_z = 0, easing = BOUNCE_EASING) + for(var/i in 1 to 15) + animate(color = (i % 2) ? "#ffffff": "#ff6739", time = 1, easing = QUAD_EASING, flags = ANIMATION_CONTINUE) + + addtimer(CALLBACK(src, PROC_REF(pancake_explosion), pancakes), 1.5 SECONDS) + +/datum/action/cooldown/spell/pointed/percept_hallucination/proc/pancake_explosion(obj/pancakes) + explosion(pancakes, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 1, flame_range = 2) + qdel(pancakes) + StartCooldown() + +/datum/action/cooldown/spell/pointed/percept_hallucination/proc/cast_fx(atom/cast_on) + owner.Beam(cast_on, icon_state = "greyscale_lightning", beam_color = COLOR_FADED_PINK, time = 0.5 SECONDS) + + spark_sys.set_up(2, 1, get_turf(owner)) + spark_sys.start() + spark_sys.set_up(4, 1, get_turf(cast_on)) + spark_sys.start() + +/datum/action/cooldown/spell/pointed/percept_hallucination/cast(mob/living/carbon/human/cast_on) + . = ..() + + cast_fx(cast_on) + + if(istype(cast_on, /obj/item/food/pancakes)) + blows_up_pancakes_with_mind(cast_on) + return + + if(cast_on.can_block_magic(antimagic_flags)) + to_chat(cast_on, span_notice("You feel psychic energies reflecting off you.")) + to_chat(owner, span_warning("[cast_on] deflects the energy!")) + return + + to_chat(cast_on, span_warning("Your brain feels like it's on fire!")) + cast_on.emote("scream") + cast_on.set_eye_blur_if_lower(eye_blur_duration) + cast_on.adjust_staggered(stagger_duration) + cast_on.apply_status_effect(/datum/status_effect/hallucination, hallucination_duration, \ + hallucination_duration * 0.2, hallucination_duration) // lower/upper hallucination freq. bound + + return + +#undef PERCEPTOMATRIX_INACTIVE_FLAGS +#undef PERCEPTOMATRIX_ACTIVE_FLAGS diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index afbdeef519224..bae0225c021a4 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -94,9 +94,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( var/valid_wearer = ismob(loc) var/mob/wearer = loc if(istype(tool, /obj/item/cigarette)) - if(flags_cover & MASKCOVERSMOUTH) - balloon_alert(user, "mask's mouth is covered!") - return ..() if(max_filters <= 0 || cig) balloon_alert(user, "can't hold that!") @@ -240,7 +237,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( /obj/item/clothing/mask/gas/welding/adjust_visor(mob/living/user) . = ..() if(.) - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE) + playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE) if(!fishing_modifier) return if(up) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 3ecec813a95ce..14d4616bd45d2 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -110,6 +110,9 @@ var/mob/M = loc M.update_worn_shoes() +/obj/item/clothing/shoes/generate_digitigrade_icons(icon/base_icon, greyscale_colors) + return icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "boots_worn") + /** * adjust_laces adjusts whether our shoes (assuming they can_be_tied) and tied, untied, or knotted * @@ -148,17 +151,13 @@ * * * * user: who is the person interacting with the shoes? */ -/obj/item/clothing/shoes/proc/handle_tying(mob/user) +/obj/item/clothing/shoes/proc/handle_tying(mob/living/user) ///our_guy here is the wearer, if one exists (and he must exist, or we don't care) var/mob/living/carbon/human/our_guy = loc if(!istype(our_guy)) return - if (!isliving(user)) - return - - var/mob/living/living_user = user - if (!(living_user.mobility_flags & MOBILITY_USE)) + if (!isliving(user) || !(user.mobility_flags & MOBILITY_USE)) return if(!in_range(user, our_guy)) @@ -179,7 +178,7 @@ adjust_laces(SHOES_UNTIED, user) else // if they're someone else's shoes, go knot-wards - if(istype(living_user) && living_user.body_position == STANDING_UP) + if(user.body_position == STANDING_UP) to_chat(user, span_warning("You must be on the floor to interact with [src]!")) return if(tied == SHOES_KNOTTED) @@ -204,12 +203,9 @@ user.visible_message(span_danger("[our_guy] stamps on [user]'s hand, mid-shoelace [tied ? "knotting" : "untying"]!"), span_userdanger("Ow! [our_guy] stamps on your hand!"), list(our_guy)) to_chat(our_guy, span_userdanger("You stamp on [user]'s hand! What the- [user.p_they()] [user.p_were()] [tied ? "knotting" : "untying"] your shoelaces!")) user.emote("scream") - if(istype(living_user)) - var/obj/item/bodypart/ouchie = living_user.get_bodypart(pick(GLOB.arm_zones)) - if(ouchie) - ouchie.receive_damage(brute = 10) - living_user.adjustStaminaLoss(40) - living_user.Paralyze(10) + user.apply_damage(10, BRUTE, user.get_active_hand(), wound_bonus = CANT_WOUND) + user.apply_damage(40, STAMINA) + user.Paralyze(1 SECONDS) ///checking to make sure we're still on the person we're supposed to be, for lacing do_after's /obj/item/clothing/shoes/proc/still_shoed(mob/living/carbon/our_guy) diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm index 77e7b2ff369e2..2dba6ed24fce7 100644 --- a/code/modules/clothing/shoes/boots.dm +++ b/code/modules/clothing/shoes/boots.dm @@ -3,6 +3,7 @@ desc = "High speed, low drag combat boots." icon_state = "jackboots" inhand_icon_state = "jackboots" + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK body_parts_covered = FEET|LEGS armor_type = /datum/armor/shoes_combat strip_delay = 40 @@ -45,6 +46,7 @@ desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time." icon_state = "jackboots" inhand_icon_state = "jackboots" + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK strip_delay = 30 equip_delay_other = 50 resistance_flags = NONE @@ -71,6 +73,7 @@ desc = "Is it just me or is there a pair of jackboots on the floor?" icon_state = "ftc_boots" inhand_icon_state = null + supports_variations_flags = NONE /obj/item/clothing/shoes/jackboots/floortile/Initialize(mapload) . = ..() @@ -81,6 +84,7 @@ desc = "Boots lined with 'synthetic' animal fur." icon_state = "winterboots" inhand_icon_state = null + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK armor_type = /datum/armor/shoes_winterboots cold_protection = FEET|LEGS min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT @@ -131,6 +135,7 @@ icon_state = "workboots" inhand_icon_state = "jackboots" armor_type = /datum/armor/shoes_workboots + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK strip_delay = 20 equip_delay_other = 40 lace_time = 8 SECONDS @@ -155,6 +160,7 @@ icon_state = "rus_shoes" inhand_icon_state = null lace_time = 8 SECONDS + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK /obj/item/clothing/shoes/russian/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/shoes/galoshes.dm b/code/modules/clothing/shoes/galoshes.dm index 584ab3ff72ced..d42b8ffddb388 100644 --- a/code/modules/clothing/shoes/galoshes.dm +++ b/code/modules/clothing/shoes/galoshes.dm @@ -39,8 +39,3 @@ var/turf/open/t_loc = get_turf(src) SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY) - -/obj/item/clothing/shoes/galoshes/doppler - name = "purple galoshes" - desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces." - icon_state = "galoshes_doppler" diff --git a/code/modules/clothing/shoes/gunboots.dm b/code/modules/clothing/shoes/gunboots.dm index de74703d449ed..6c9da817146c7 100644 --- a/code/modules/clothing/shoes/gunboots.dm +++ b/code/modules/clothing/shoes/gunboots.dm @@ -61,7 +61,7 @@ shot.firer = wearer // don't hit ourself that would be really annoying shot.impacted = list(WEAKREF(wearer) = TRUE) shot.def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) // they're fired from boots after all - shot.preparePixelProjectile(target, wearer) + shot.aim_projectile(target, wearer) if(!shot.suppressed) wearer.visible_message(span_danger("[wearer]'s [name] fires \a [shot]!"), "", blind_message = span_hear("You hear a gunshot!"), vision_distance=COMBAT_MESSAGE_RANGE) shot.fire() diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm index 0ae1e6e9caad9..1fc47accd3534 100644 --- a/code/modules/clothing/shoes/sneakers.dm +++ b/code/modules/clothing/shoes/sneakers.dm @@ -9,9 +9,17 @@ greyscale_config_worn = /datum/greyscale_config/sneakers/worn greyscale_config_inhand_left = /datum/greyscale_config/sneakers/inhand_left greyscale_config_inhand_right = /datum/greyscale_config/sneakers/inhand_right + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK flags_1 = IS_PLAYER_COLORABLE_1 interaction_flags_mouse_drop = NEED_HANDS +/obj/item/clothing/shoes/sneakers/get_general_color(icon/base_icon) + var/colors = SSgreyscale.ParseColorString(greyscale_colors) + return colors ? colors[1] : ..() + +/obj/item/clothing/shoes/sneakers/generate_digitigrade_icons(icon/base_icon, greyscale_colors) + return icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "sneakers_worn") + /obj/item/clothing/shoes/sneakers/random/Initialize(mapload) . = ..() greyscale_colors = "#" + random_color() + "#" + random_color() diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index eb8cb2a11e524..81a9a4809f521 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -36,6 +36,10 @@ . = ..() if(fishing_modifier) AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier) + add_stabilizer() + +/obj/item/clothing/head/helmet/space/proc/add_stabilizer(loose_hat = TRUE) + AddComponent(/datum/component/hat_stabilizer, loose_hat = loose_hat) /datum/armor/helmet_space bio = 100 diff --git a/code/modules/clothing/spacesuits/pirate.dm b/code/modules/clothing/spacesuits/pirate.dm index 8ead0aeaa6619..f9625467ccd19 100644 --- a/code/modules/clothing/spacesuits/pirate.dm +++ b/code/modules/clothing/spacesuits/pirate.dm @@ -39,6 +39,9 @@ desc = "A modified EVA helmet with a five-thousand credit Lizzy Vuitton hat affixed to the top, proving that working in deep space is no excuse for being poor." icon_state = "spacetophat" +/obj/item/clothing/head/helmet/space/pirate/tophat/add_stabilizer(loose_hat = FALSE) + return + /obj/item/clothing/suit/space/pirate/silverscale name = "designer pirate suit" desc = "A specially-made Cybersun branded space suit; the fine plastisilk exterior is woven from the cocoons of black-market Lümlan mothroaches \ diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 0a672d5566ac3..d2c31498d184b 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -109,10 +109,12 @@ /obj/item/clothing/head/helmet/space/plasmaman/Initialize(mapload) . = ..() visor_toggling() - AddComponent(/datum/component/hat_stabilizer) update_appearance() register_context() +/obj/item/clothing/head/helmet/space/plasmaman/add_stabilizer(loose_hat = FALSE) + ..() + /obj/item/clothing/head/helmet/space/plasmaman/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) context[SCREENTIP_CONTEXT_ALT_LMB] = "Toggle Welding Screen" if(istype(held_item, /obj/item/toy/crayon)) @@ -139,7 +141,7 @@ to_chat(user, span_notice("Your helmet's torch can't pass through your welding visor!")) set_light_on(FALSE) helmet_on = FALSE - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing + playsound(src, up ? SFX_VISOR_UP : SFX_VISOR_DOWN, 50, TRUE) update_appearance() /obj/item/clothing/head/helmet/space/plasmaman/update_icon_state() diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index ecae343f68506..78ea1d2f3b7a1 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -43,3 +43,7 @@ if(ismob(loc)) var/mob/M = loc M.update_worn_oversuit() + +/obj/item/clothing/suit/generate_digitigrade_icons(icon/base_icon, greyscale_colors) + var/icon/legs = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "oversuit_worn") + return replace_icon_legs(base_icon, legs) diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 25b28c74d1a7a..919d1da261ecb 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -17,6 +17,7 @@ if(flags_inv & HIDEFACE) AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) AddComponent(/datum/component/adjust_fishing_difficulty, 6) + AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) /datum/armor/head_bio_hood bio = 100 diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 2976314e60e5f..affe103e307bf 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -56,16 +56,6 @@ . = ..() AddComponent(/datum/component/adjust_fishing_difficulty, -4) -//Janitor -/obj/item/clothing/suit/apron/janitor_cloak - name = "waterproof poncho" - desc = "A transparent, waterproof cloak for your cleaning needs." - icon_state = "janicloak" - inhand_icon_state = null - body_parts_covered = CHEST|GROIN|ARMS - - - //Captain /obj/item/clothing/suit/jacket/capjacket name = "captain's parade jacket" diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index bb42fb1ed3975..2608c41eb4ad5 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -109,6 +109,7 @@ if(flags_inv & HIDEFACE) AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) AddComponent(/datum/component/adjust_fishing_difficulty, 8) + AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) /datum/armor/utility_bomb_hood melee = 20 @@ -189,6 +190,7 @@ if(flags_inv & HIDEFACE) AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) AddComponent(/datum/component/adjust_fishing_difficulty, 7) + AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) /datum/armor/utility_radiation bio = 60 diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index f09b6ac2f8585..581d1c49964b6 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -67,7 +67,8 @@ body_parts_covered = HEAD cold_protection = HEAD min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - flags_inv = HIDEHAIR|HIDEEARS + flags_inv = HIDEEARS + hair_mask = HAIR_MASK_HIDE_WINTERHOOD armor_type = /datum/armor/hooded_winterhood // An coat intended for use for general crew EVA, with values close to those of the space suits found in EVA normally @@ -78,6 +79,7 @@ /obj/item/clothing/suit/hooded/wintercoat/eva name = "\proper Endotherm winter coat" desc = "A thickly padded winter coat to keep the wearer well insulated no matter the circumstances. It has a harness for a larger oxygen tank attached to the back." + icon_state = "coateva" w_class = WEIGHT_CLASS_BULKY slowdown = 0.75 armor_type = /datum/armor/wintercoat_eva @@ -85,7 +87,6 @@ equip_delay_other = 6 SECONDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT // Protects very cold. max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT // Protects a little hot. - flags_inv = HIDEJUMPSUIT clothing_flags = THICKMATERIAL resistance_flags = NONE hoodtype = /obj/item/clothing/head/hooded/winterhood/eva @@ -105,6 +106,7 @@ /obj/item/clothing/head/hooded/winterhood/eva name = "\proper Endotherm winter hood" desc = "A thickly padded hood attached to an even thicker coat." + icon_state = "hood_eva" armor_type = /datum/armor/winterhood_eva min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 25e02975d093b..f8e7b7723a1c9 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -9,7 +9,6 @@ interaction_flags_click = NEED_DEXTERITY armor_type = /datum/armor/clothing_under supports_variations_flags = CLOTHING_DIGITIGRADE_MASK - digitigrade_greyscale_config_worn = /datum/greyscale_config/jumpsuit/worn_digi equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' drop_sound = 'sound/items/handling/cloth_drop.ogg' pickup_sound = 'sound/items/handling/cloth_pickup.ogg' @@ -147,6 +146,10 @@ */ /// DOPPLER SHIFT REMOVAL END +/obj/item/clothing/under/generate_digitigrade_icons(icon/base_icon, greyscale_colors) + var/icon/legs = icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "jumpsuit_worn") + return replace_icon_legs(base_icon, legs) + /obj/item/clothing/under/equipped(mob/living/user, slot) ..() if((slot & ITEM_SLOT_ICLOTHING) && freshly_laundered) diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 9ae1c7d63e366..af64ca4e999e3 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -224,10 +224,12 @@ greyscale_config_inhand_left = null greyscale_config_inhand_right = null greyscale_config_worn = null - digitigrade_greyscale_colors = "#3f3f3f" can_adjust = FALSE flags_1 = NONE +/obj/item/clothing/under/color/rainbow/get_general_color(icon/base_icon) + return "#3f3f3f" + /obj/item/clothing/under/color/jumpskirt/rainbow name = "rainbow jumpskirt" desc = "A multi-colored jumpskirt!" diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm index c25f6f7792942..71557e68a4797 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm @@ -59,7 +59,7 @@ /obj/item/clothing/under/plasmaman/item_interaction(mob/living/user, obj/item/tool, list/modifiers) if (!istype(tool, /obj/item/extinguisher_refill)) - return + return ..() if (extinguishes_left == 5) to_chat(user, span_notice("The inbuilt extinguisher is full.")) diff --git a/code/modules/clothing/under/jobs/centcom.dm b/code/modules/clothing/under/jobs/centcom.dm index da1fe5d7a1d76..ccd268eb7641d 100644 --- a/code/modules/clothing/under/jobs/centcom.dm +++ b/code/modules/clothing/under/jobs/centcom.dm @@ -60,6 +60,7 @@ desc = "A dark colored uniform worn by CentCom's conscripted military forces." icon_state = "military" inhand_icon_state = "bl_suit" + can_adjust = FALSE armor_type = /datum/armor/clothing_under/centcom_military /datum/armor/clothing_under/centcom_military diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm index b0246f2deca66..35eb2db3029dd 100644 --- a/code/modules/clothing/under/jobs/civilian/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian/civilian.dm @@ -108,24 +108,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY can_adjust = FALSE -/obj/item/clothing/under/rank/civilian/janitor/doppler - name = "janitor uniform" - desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." - icon_state = "janitor_doppler" - inhand_icon_state = "janitor" - body_parts_covered = CHEST|GROIN - can_adjust = TRUE - alt_covers_chest = TRUE - -/obj/item/clothing/under/rank/civilian/janitor/doppler_ct - name = "janitor crop top" - desc = "It's the unofficial uniform of the station's janitor. It has minor protection from biohazards." - icon_state = "janitor_doppler_ct" - inhand_icon_state = "janitor" - body_parts_covered = CHEST|GROIN - can_adjust = TRUE - alt_covers_chest = TRUE - /obj/item/clothing/under/rank/civilian/lawyer name = "Lawyer suit" desc = "Slick threads." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 70d2a5eeadb94..2c428f1c35c1a 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -33,7 +33,9 @@ desc = "Groovy!" icon_state = "psyche" inhand_icon_state = "p_suit" - digitigrade_greyscale_colors = "#3f3f3f" + +/obj/item/clothing/under/misc/psyche/get_general_color(icon/base_icon) + return "#3f3f3f" /obj/item/clothing/under/misc/vice_officer name = "vice officer's jumpsuit" diff --git a/code/modules/deathmatch/deathmatch_mapping.dm b/code/modules/deathmatch/deathmatch_mapping.dm index a0651f7da121b..62058629cdb08 100644 --- a/code/modules/deathmatch/deathmatch_mapping.dm +++ b/code/modules/deathmatch/deathmatch_mapping.dm @@ -1,7 +1,7 @@ /area/deathmatch name = "Deathmatch Arena" requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = UNIQUE_AREA | NOTELEPORT | EVENT_PROTECTED | QUIET_LOGS | NO_DEATH_MESSAGE | BINARY_JAMMING /area/deathmatch/fullbright diff --git a/code/modules/deathmatch/deathmatch_modifier.dm b/code/modules/deathmatch/deathmatch_modifier.dm index 9671f19c92a33..edddbe7e267bc 100644 --- a/code/modules/deathmatch/deathmatch_modifier.dm +++ b/code/modules/deathmatch/deathmatch_modifier.dm @@ -82,7 +82,7 @@ description = "Unaffected by critical condition and pain" /datum/deathmatch_modifier/tenacity/apply(mob/living/carbon/player, datum/deathmatch_lobby/lobby) - player.add_traits(list(TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_ANALGESIA), DEATHMATCH_TRAIT) + player.add_traits(list(TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_ANALGESIA, TRAIT_NO_DAMAGE_OVERLAY), DEATHMATCH_TRAIT) /datum/deathmatch_modifier/no_wounds name = "No Wounds" diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm index c81852958b4a8..59e2f0feb86b1 100644 --- a/code/modules/detectivework/evidence.dm +++ b/code/modules/detectivework/evidence.dm @@ -18,23 +18,13 @@ max_slots = 1, max_specific_storage = WEIGHT_CLASS_NORMAL, ) + atom_storage.allow_quick_gather = TRUE + atom_storage.collection_mode = COLLECT_ONE RegisterSignal(atom_storage, COMSIG_STORAGE_STORED_ITEM, PROC_REF(on_insert)) RegisterSignal(atom_storage, COMSIG_STORAGE_REMOVED_ITEM, PROC_REF(on_remove)) atom_storage.rustle_sound = 'sound/items/evidence_bag/evidence_bag_zip.ogg' atom_storage.remove_rustle_sound = 'sound/items/evidence_bag/evidence_bag_unzip.ogg' -/obj/item/evidencebag/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) - if(interacting_with == loc || !isitem(interacting_with) || HAS_TRAIT(interacting_with, TRAIT_COMBAT_MODE_SKIP_INTERACTION)) - return NONE - if(atom_storage.attempt_insert(interacting_with, user)) - return ITEM_INTERACT_SUCCESS - return NONE - -/obj/item/evidencebag/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - if(atom_storage.attempt_insert(tool, user)) - return ITEM_INTERACT_SUCCESS - return NONE - /obj/item/evidencebag/update_desc(updates) . = ..() if(!atom_storage.get_total_weight()) @@ -65,12 +55,15 @@ /obj/item/evidencebag/proc/on_insert(datum/storage/storage, obj/item/to_insert, mob/user, force) SIGNAL_HANDLER + update_weight_class(to_insert.w_class) /obj/item/evidencebag/proc/on_remove(datum/storage/storage, obj/item/to_remove, atom/remove_to_loc, silent) SIGNAL_HANDLER + if(!atom_storage.get_total_weight()) return + update_weight_class(WEIGHT_CLASS_TINY) /obj/item/evidencebag/attack_self(mob/user) diff --git a/code/modules/escape_menu/details.dm b/code/modules/escape_menu/details.dm index ab6ff05d3ea46..8f35781b8ab03 100644 --- a/code/modules/escape_menu/details.dm +++ b/code/modules/escape_menu/details.dm @@ -9,7 +9,7 @@ GLOBAL_DATUM(escape_menu_details, /atom/movable/screen/escape_menu/details) return GLOB.escape_menu_details /atom/movable/screen/escape_menu/details - screen_loc = "EAST:-180,NORTH:-25" + screen_loc = "EAST:-180,NORTH:-34" maptext_height = 100 maptext_width = 200 diff --git a/code/modules/escape_menu/escape_menu.dm b/code/modules/escape_menu/escape_menu.dm index 57fe4b88813cc..38d456594de51 100644 --- a/code/modules/escape_menu/escape_menu.dm +++ b/code/modules/escape_menu/escape_menu.dm @@ -47,6 +47,10 @@ GLOBAL_LIST_EMPTY(escape_menus) RegisterSignal(client, COMSIG_QDELETING, PROC_REF(on_client_qdel)) RegisterSignal(client, COMSIG_CLIENT_MOB_LOGIN, PROC_REF(on_client_mob_login)) + SEND_SOUND(client, 'sound/misc/escape_menu/esc_open.ogg') + var/sound/esc_middle = sound('sound/misc/escape_menu/esc_middle.ogg', repeat = FALSE, channel = CHANNEL_ESCAPEMENU, volume = 80) + SEND_SOUND(client, esc_middle) + if (!isnull(ckey)) GLOB.escape_menus[ckey] = src @@ -57,6 +61,10 @@ GLOBAL_LIST_EMPTY(escape_menus) GLOB.escape_menus -= ckey plane_master_controller.remove_filter("escape_menu_blur") + var/sound/esc_clear = sound(null, repeat = FALSE, channel = CHANNEL_ESCAPEMENU) //yes, I'm doing it like this with a null, no its absolutely intentional, cuts off the sound right as needed. + SEND_SOUND(client, esc_clear) + SEND_SOUND(client, 'sound/misc/escape_menu/esc_close.ogg') + return ..() /datum/escape_menu/proc/on_client_qdel() diff --git a/code/modules/escape_menu/leave_body.dm b/code/modules/escape_menu/leave_body.dm index 428afe899dfcf..9bfb8b8a06910 100644 --- a/code/modules/escape_menu/leave_body.dm +++ b/code/modules/escape_menu/leave_body.dm @@ -9,7 +9,8 @@ stack_trace("The leave body menu was opened before the atoms SS. This shouldn't be possible, as the leave body menu should only be accessible when you have a body.") page_holder.give_screen_object(new /atom/movable/screen/escape_menu/leave_body_button( - src, + null, + /* hud_owner = */ null, "Suicide", "Perform a dramatic suicide in game", /* pixel_offset = */ -105, @@ -19,7 +20,8 @@ page_holder.give_screen_object( new /atom/movable/screen/escape_menu/leave_body_button( - src, + null, + /* hud_owner = */ null, "Ghost", "Exit quietly, leaving your body", /* pixel_offset = */ 0, @@ -30,7 +32,8 @@ page_holder.give_screen_object( new /atom/movable/screen/escape_menu/leave_body_button( - src, + null, + /* hud_owner = */ null, "Back", /* tooltip_text = */ null, /* pixel_offset = */ 105, @@ -84,6 +87,7 @@ /atom/movable/screen/escape_menu/leave_body_button/Initialize( mapload, + datum/hud/hud_owner, button_text, tooltip_text, pixel_offset, diff --git a/code/modules/events/anomaly/anomaly_bioscrambler.dm b/code/modules/events/anomaly/anomaly_bioscrambler.dm index 08afff8dd31c7..b67e70b2412c6 100644 --- a/code/modules/events/anomaly/anomaly_bioscrambler.dm +++ b/code/modules/events/anomaly/anomaly_bioscrambler.dm @@ -17,4 +17,4 @@ /datum/round_event/anomaly/anomaly_bioscrambler/announce(fake) if(isnull(impact_area)) impact_area = placer.findValidArea() - priority_announce("Biologic limb swapping agent detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name]. Wear biosuits or other protective gear to counter the effects. Calculated half-life of %9£$T$%F3 years.", "Anomaly Alert") + priority_announce("Biologic limb swapping agent detected on [ANOMALY_ANNOUNCE_MEDIUM_TEXT] [impact_area.name]. Wear biosuits or other protective gear to counter the effects.", "Anomaly Alert") diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index dfd69a52f9f5e..7efd1eabbf9a8 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -111,6 +111,7 @@ /datum/disease/flu, /datum/disease/fluspanish, /datum/disease/magnitis, + /datum/disease/weightlessness, /// And here are some that will never roll for real, just to mess around. /datum/disease/death_sandwich_poisoning, /datum/disease/dna_retrovirus, @@ -138,7 +139,7 @@ virus_candidates += list(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish) //The wacky ones - virus_candidates += list(/datum/disease/magnitis, /datum/disease/anxiety) + virus_candidates += list(/datum/disease/magnitis, /datum/disease/anxiety, /datum/disease/weightlessness) //The rest of the diseases either aren't conventional "diseases" or are too unique/extreme to be considered for a normal event virus_type = pick(virus_candidates) diff --git a/code/modules/events/immovable_rod/immovable_rod.dm b/code/modules/events/immovable_rod/immovable_rod.dm index d73adf8ed756b..69e7883310aca 100644 --- a/code/modules/events/immovable_rod/immovable_rod.dm +++ b/code/modules/events/immovable_rod/immovable_rod.dm @@ -212,11 +212,8 @@ transform = transform.Scale(1.005, 1.005) name = "[initial(name)] of sentient slaying +[num_sentient_mobs_hit]" - if(iscarbon(smeared_mob)) - var/mob/living/carbon/smeared_carbon = smeared_mob - smeared_carbon.adjustBruteLoss(100) - var/obj/item/bodypart/penetrated_chest = smeared_carbon.get_bodypart(BODY_ZONE_CHEST) - penetrated_chest?.receive_damage(60, wound_bonus = 20, sharpness=SHARP_POINTY) + smeared_mob.apply_damage(100, BRUTE, spread_damage = TRUE) + smeared_mob.apply_damage(60, BRUTE, BODY_ZONE_CHEST, wound_bonus = 20, sharpness = SHARP_POINTY) if(smeared_mob.density || prob(10)) EX_ACT(smeared_mob, EXPLODE_HEAVY) diff --git a/code/modules/events/tram_malfunction.dm b/code/modules/events/tram_malfunction.dm index 600dfed805b2f..088285e4f17e2 100644 --- a/code/modules/events/tram_malfunction.dm +++ b/code/modules/events/tram_malfunction.dm @@ -42,7 +42,7 @@ /datum/round_event/tram_malfunction/end() for(var/datum/transport_controller/linear/tram/malfunctioning_controller as anything in SStransport.transports_by_type[TRANSPORT_TYPE_TRAM]) - if(malfunctioning_controller.specific_transport_id == specific_transport_id && malfunctioning_controller.malf_active) + if(malfunctioning_controller.specific_transport_id == specific_transport_id && malfunctioning_controller.malf_active != TRANSPORT_SYSTEM_NORMAL) malfunctioning_controller.end_malf_event() return diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 685c24fcc2779..0284bef43724c 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -65,7 +65,7 @@ GLOBAL_LIST_EMPTY(all_wormholes) // So we can pick wormholes to teleport to . = ..() GLOB.all_wormholes -= src -/obj/effect/portal/wormhole/teleport(atom/movable/M) +/obj/effect/portal/wormhole/teleport(atom/movable/M, force = FALSE) if(iseffect(M)) //sparks don't teleport return if(M.anchored) diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index 4b4871e33f67d..b98ae843f7102 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -452,7 +452,7 @@ return if (isandroid(check)) return TRUE - if (check.organs < 6 || check.bodyparts < 6) + if (length(check.organs) < 6 || length(check.bodyparts) < 6) return FALSE var/static/list/augmented_organ_slots = list( diff --git a/code/modules/experisci/experiment/physical_experiments.dm b/code/modules/experisci/experiment/physical_experiments.dm index 6b88e19e4a3b6..60303814e44ef 100644 --- a/code/modules/experisci/experiment/physical_experiments.dm +++ b/code/modules/experisci/experiment/physical_experiments.dm @@ -21,9 +21,9 @@ /datum/experiment/physical/meat_wall_explosion/check_progress() . += EXPERIMENT_PROG_BOOL("Fire an emitter at a tracked meat wall", is_complete()) -/datum/experiment/physical/meat_wall_explosion/proc/check_experiment(datum/source, obj/projectile/Proj) +/datum/experiment/physical/meat_wall_explosion/proc/check_experiment(datum/source, obj/projectile/proj) SIGNAL_HANDLER - if(istype(Proj, /obj/projectile/beam/emitter)) + if(istype(proj, /obj/projectile/beam/emitter)) finish_experiment(linked_experiment_handler) /datum/experiment/physical/meat_wall_explosion/finish_experiment(datum/component/experiment_handler/experiment_handler) diff --git a/code/modules/explorer_drone/loot.dm b/code/modules/explorer_drone/loot.dm index b6aaa26c6c662..0609a05219df1 100644 --- a/code/modules/explorer_drone/loot.dm +++ b/code/modules/explorer_drone/loot.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(adventure_loot_generator_index,generate_generator_index()) var/datum/adventure_loot_generator/simple/cash/replacement = new return replacement.generate() var/chosen_pack_type = pick(still_locked_packs) - return new /obj/item/trade_chip(null,chosen_pack_type) + return list(new /obj/item/trade_chip(null, chosen_pack_type)) /// Just picks and instatiates the path from the list /datum/adventure_loot_generator/simple @@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(adventure_loot_generator_index,generate_generator_index()) var/chosen_pet_type = pick(possible_pets) var/mob/living/basic/pet/pet = new chosen_pet_type() carrier.add_occupant(pet) - return carrier + return list(carrier) /obj/item/antique name = "antique" diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm index 7301f1a296e44..d83865497805c 100644 --- a/code/modules/fishing/aquarium/aquarium.dm +++ b/code/modules/fishing/aquarium/aquarium.dm @@ -1,14 +1,3 @@ -#define AQUARIUM_LAYER_STEP 0.01 -/// Aquarium content layer offsets -#define AQUARIUM_MIN_OFFSET 0.02 -#define AQUARIUM_MAX_OFFSET 1 -/// The layer of the glass overlay -#define AQUARIUM_GLASS_LAYER 0.01 -/// The layer of the aquarium pane borders -#define AQUARIUM_BORDERS_LAYER AQUARIUM_MAX_OFFSET + AQUARIUM_LAYER_STEP -/// Layer for stuff rendered below the glass overlay -#define AQUARIUM_BELOW_GLASS_LAYER 0.01 - /obj/structure/aquarium name = "aquarium" desc = "A vivarium in which aquatic fauna and flora are usually kept and displayed." @@ -17,351 +6,75 @@ icon = 'icons/obj/aquarium/tanks.dmi' icon_state = "aquarium_map" + base_icon_state = "aquarium" integrity_failure = 0.3 - /// The icon state is used for mapping so mappers know what they're placing. This prefixes the real icon used in game. - /// For an example, "aquarium" gives the base sprite of "aquarium_base", the glass is "aquarium_glass_water", and so on. - var/icon_prefix = "aquarium" - - var/fluid_type = AQUARIUM_FLUID_FRESHWATER - var/fluid_temp = DEFAULT_AQUARIUM_TEMP - var/min_fluid_temp = MIN_AQUARIUM_TEMP - var/max_fluid_temp = MAX_AQUARIUM_TEMP - - ///While the feed storage is not empty, this is the interval which the fish are fed. - var/feeding_interval = 3 MINUTES - ///The last time fishes were fed by the acquarium itsef. - var/last_feeding - - /// Can fish reproduce in this quarium. - var/reproduction_and_growth = TRUE - //This is the area where fish can swim var/aquarium_zone_min_px = 2 var/aquarium_zone_max_px = 31 var/aquarium_zone_min_py = 10 var/aquarium_zone_max_py = 28 - var/list/fluid_types = list(AQUARIUM_FLUID_SALTWATER, AQUARIUM_FLUID_FRESHWATER, AQUARIUM_FLUID_SULPHWATEVER, AQUARIUM_FLUID_AIR) - - var/panel_open = FALSE + /// Default beauty of the aquarium, without anything inside it + var/default_beauty = 150 - ///Current layers in use by aquarium contents - var/list/used_layers = list() - - /// /obj/item/fish in the aquarium, sorted by type - does not include things with aquarium visuals that are not fish - var/list/tracked_fish_by_type - - /// Var used to keep track of the current beauty of the aquarium, which can be throughfully changed by aquarium content. - var/current_beauty = 150 + ///Tracks the fluid type of our aquarium component. Used for the icon suffix of some overlays and splashing water when broken. + var/fluid_type = AQUARIUM_FLUID_FRESHWATER /obj/structure/aquarium/Initialize(mapload) . = ..() - update_appearance() - RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(track_if_fish)) - AddElement(/datum/element/relay_attackers) - RegisterSignal(src, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked)) - create_reagents(6, SEALED_CONTAINER) - RegisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed)) + AddComponent(/datum/component/aquarium, aquarium_zone_min_px, aquarium_zone_max_px, aquarium_zone_min_py, aquarium_zone_max_py, default_beauty) AddComponent(/datum/component/plumbing/aquarium, start = anchored) - if(current_beauty) - AddElement(/datum/element/beauty, current_beauty) - ADD_KEEP_TOGETHER(src, INNATE_TRAIT) - -/obj/structure/aquarium/proc/track_if_fish(atom/source, atom/initialized) - SIGNAL_HANDLER - if(isfish(initialized)) - LAZYADDASSOCLIST(tracked_fish_by_type, initialized.type, initialized) - -/obj/structure/aquarium/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) - . = ..() - if(isfish(arrived)) - LAZYADDASSOCLIST(tracked_fish_by_type, arrived.type, arrived) - -/obj/structure/aquarium/Exited(atom/movable/gone, direction) - . = ..() - LAZYREMOVEASSOC(tracked_fish_by_type, gone.type, gone) - -/obj/structure/aquarium/proc/start_autofeed(datum/source, new_reagent, amount, reagtemp, data, no_react) - SIGNAL_HANDLER - START_PROCESSING(SSobj, src) - UnregisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT) - -/obj/structure/aquarium/process(seconds_per_tick) - if(!reagents.total_volume) - RegisterSignal(reagents, COMSIG_REAGENTS_NEW_REAGENT, PROC_REF(start_autofeed)) - return PROCESS_KILL - if(world.time < last_feeding + feeding_interval) - return - last_feeding = world.time - var/list/fishes = get_fishes() - for(var/obj/item/fish/fish as anything in fishes) - fish.feed(reagents) - -/// Returns tracked_fish_by_type but flattened and without the items in the blacklist, also shuffled if shuffle is TRUE. -/obj/structure/aquarium/proc/get_fishes(shuffle = FALSE, blacklist) - . = list() - for(var/fish_type in tracked_fish_by_type) - . += tracked_fish_by_type[fish_type] - . -= blacklist - if(shuffle) - . = shuffle(.) - return . - -/obj/structure/aquarium/proc/request_layer(layer_type) - /** - * base aq layer - * min_offset = this value is returned on bottom layer mode - * min_offset + 0.1 fish1 - * min_offset + 0.2 fish2 - * ... these layers are returned for auto layer mode and tracked by used_layers - * min_offset + max_offset = this value is returned for top layer mode - * min_offset + max_offset + 1 = this is used for glass overlay - */ - //optional todo: hook up sending surface changed on aquarium changing layers - switch(layer_type) - if(AQUARIUM_LAYER_MODE_BEHIND_GLASS) - return layer + AQUARIUM_BELOW_GLASS_LAYER - if(AQUARIUM_LAYER_MODE_BOTTOM) - return layer + AQUARIUM_MIN_OFFSET - if(AQUARIUM_LAYER_MODE_TOP) - return layer + AQUARIUM_MAX_OFFSET - if(AQUARIUM_LAYER_MODE_AUTO) - var/chosen_layer = AQUARIUM_MIN_OFFSET + AQUARIUM_LAYER_STEP - while((chosen_layer in used_layers) && (chosen_layer <= AQUARIUM_MAX_OFFSET)) - chosen_layer += AQUARIUM_LAYER_STEP - used_layers += chosen_layer - return layer + chosen_layer - -/obj/structure/aquarium/proc/free_layer(value) - used_layers -= value - -/obj/structure/aquarium/proc/get_surface_properties() - . = list() - .[AQUARIUM_PROPERTIES_PX_MIN] = aquarium_zone_min_px - .[AQUARIUM_PROPERTIES_PX_MAX] = aquarium_zone_max_px - .[AQUARIUM_PROPERTIES_PY_MIN] = aquarium_zone_min_py - .[AQUARIUM_PROPERTIES_PY_MAX] = aquarium_zone_max_py + RegisterSignal(src, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_aquarium_liquid_changed)) + update_appearance() /obj/structure/aquarium/update_icon() . = ..() ///"aquarium_map" is used for mapping, so mappers can tell what it's. - icon_state = icon_prefix + "_base" + icon_state = base_icon_state + "_base" + +/obj/structure/aquarium/proc/on_aquarium_liquid_changed(datum/source, fluid_type) + SIGNAL_HANDLER + src.fluid_type = fluid_type + update_appearance() /obj/structure/aquarium/update_overlays() . = ..() - if(panel_open) - . += icon_prefix + "_panel" + if(HAS_TRAIT(src, TRAIT_AQUARIUM_PANEL_OPEN)) + . += base_icon_state + "_panel" + var/icon_suffix = fluid_type == AQUARIUM_FLUID_AIR ? "air" : "water" ///The glass overlay - var/suffix = fluid_type == AQUARIUM_FLUID_AIR ? "air" : "water" if(broken) - suffix += "_broken" - . += mutable_appearance(icon, icon_prefix + "_glass_cracks", layer = layer + AQUARIUM_BORDERS_LAYER) - . += mutable_appearance(icon, icon_prefix + "_glass_[suffix]", layer = layer + AQUARIUM_GLASS_LAYER) - . += mutable_appearance(icon, icon_prefix + "_borders", layer = layer + AQUARIUM_BORDERS_LAYER) - -/obj/structure/aquarium/examine(mob/user) - . = ..() - . += span_notice("Alt-click to [panel_open ? "close" : "open"] the control and feed panel.") - if(panel_open && reagents.total_volume) - . += span_notice("You can use a plunger to empty the feed storage.") - -/obj/structure/aquarium/click_alt(mob/living/user) - panel_open = !panel_open - balloon_alert(user, "panel [panel_open ? "open" : "closed"]") - if(panel_open) - reagents.flags |= TRANSPARENT|REFILLABLE - else - reagents.flags &= ~(TRANSPARENT|REFILLABLE) - update_appearance() - return CLICK_ACTION_SUCCESS + icon_suffix += "_broken" + . += mutable_appearance(icon, base_icon_state + "_glass_cracks", layer = layer + AQUARIUM_BORDERS_LAYER) + . += mutable_appearance(icon, base_icon_state + "_glass_[icon_suffix]", layer = layer + AQUARIUM_GLASS_LAYER) + . += mutable_appearance(icon, base_icon_state + "_borders", layer = layer + AQUARIUM_BORDERS_LAYER) /obj/structure/aquarium/wrench_act(mob/living/user, obj/item/tool) . = ..() default_unfasten_wrench(user, tool) return ITEM_INTERACT_SUCCESS -/obj/structure/aquarium/plunger_act(obj/item/plunger/P, mob/living/user, reinforced) - if(!panel_open) - return - user.balloon_alert_to_viewers("plunging...") - if(do_after(user, 3 SECONDS, target = src)) - user.balloon_alert_to_viewers("finished plunging") - reagents.expose(get_turf(src), TOUCH) //splash on the floor - reagents.clear_reagents() - -/obj/structure/aquarium/attackby(obj/item/item, mob/living/user, params) - if(broken) - var/obj/item/stack/sheet/glass/glass = item - if(istype(glass)) - if(glass.get_amount() < 2) - balloon_alert(user, "it needs two sheets!") - return - balloon_alert(user, "fixing the aquarium...") - if(do_after(user, 2 SECONDS, target = src)) - glass.use(2) - broken = FALSE - atom_integrity = max_integrity - update_appearance() - return TRUE - else - var/insert_attempt = SEND_SIGNAL(item, COMSIG_TRY_INSERTING_IN_AQUARIUM, src) - switch(insert_attempt) - if(COMSIG_CAN_INSERT_IN_AQUARIUM) - if(!user.transferItemToLoc(item, src)) - user.balloon_alert(user, "stuck to your hand!") - return TRUE - balloon_alert(user, "added to aquarium") - update_appearance() - return TRUE - if(COMSIG_CANNOT_INSERT_IN_AQUARIUM) - balloon_alert(user, "cannot add to aquarium!") - return TRUE - - if(istype(item, /obj/item/reagent_containers/cup/fish_feed) && !panel_open) - if(!item.reagents.total_volume) - balloon_alert(user, "[item] is empty!") - return TRUE - var/list/fishes = get_fishes() - if(!length(fishes)) - balloon_alert(user, "no fish to feed!") - return TRUE - for(var/obj/item/fish/fish as anything in fishes) - fish.feed(item.reagents) - balloon_alert(user, "fed the fish") - return TRUE - if(istype(item, /obj/item/aquarium_upgrade)) - var/obj/item/aquarium_upgrade/upgrade = item - if(upgrade.upgrade_from_type != type) - balloon_alert(user, "wrong kind of aquarium!") - return - balloon_alert(user, "upgrading...") - if(!do_after(user, 5 SECONDS, src)) - return - var/obj/structure/aquarium/upgraded_aquarium = new upgrade.upgrade_to_type(loc) - for(var/atom/movable/moving in contents) - moving.forceMove(upgraded_aquarium) - balloon_alert(user, "upgraded") - qdel(upgrade) - qdel(src) - return - return ..() - -/obj/structure/aquarium/proc/on_attacked(datum/source, mob/attacker, attack_flags) - var/list/fishes = get_fishes() - //I wish this were an aquarium signal, but the aquarium_content component got in the way. - for(var/obj/item/fish/fish as anything in fishes) - SEND_SIGNAL(fish, COMSIG_FISH_STIRRED) - -/obj/structure/aquarium/interact(mob/user) - if(panel_open) - return ..() //call base ui_interact - else - admire(user) - -///Apply mood bonus depending on aquarium status -/obj/structure/aquarium/proc/admire(mob/living/user) - user.balloon_alert(user, "admiring aquarium...") - if(!do_after(user, 5 SECONDS, target = src)) - return - var/alive_fish = 0 - var/dead_fish = 0 - var/list/tracked_fish = get_fishes() - for(var/obj/item/fish/fish in tracked_fish) - if(fish.status == FISH_ALIVE) - alive_fish++ - else - dead_fish++ - - var/morb = HAS_MIND_TRAIT(user, TRAIT_MORBID) - //Check if there are live fish - good mood - //All fish dead - bad mood. - //No fish - nothing. - if(alive_fish > 0) - user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_bad : /datum/mood_event/aquarium_positive) - else if(dead_fish > 0) - user.add_mood_event("aquarium", morb ? /datum/mood_event/morbid_aquarium_good : /datum/mood_event/aquarium_negative) - // Could maybe scale power of this mood with number/types of fish - -/obj/structure/aquarium/ui_data(mob/user) - . = ..() - .["fluidType"] = fluid_type - .["temperature"] = fluid_temp - .["allowBreeding"] = reproduction_and_growth - .["fishData"] = list() - .["feedingInterval"] = feeding_interval / (1 MINUTES) - .["propData"] = list() - for(var/atom/movable/item in contents) - if(isfish(item)) - var/obj/item/fish/fish = item - .["fishData"] += list(list( - "fish_ref" = REF(fish), - "fish_name" = uppertext(fish.name), - "fish_happiness" = fish.get_happiness_value(), - "fish_icon" = fish::icon, - "fish_icon_state" = fish::icon_state, - "fish_health" = fish.health, - )) - continue - .["propData"] += list(list( - "prop_ref" = REF(item), - "prop_name" = item.name, - "prop_icon" = item::icon, - "prop_icon_state" = item::icon_state, - )) - -/obj/structure/aquarium/ui_static_data(mob/user) - . = ..() - //I guess these should depend on the fluid so lava critters can get high or stuff below water freezing point but let's keep it simple for now. - .["minTemperature"] = min_fluid_temp - .["maxTemperature"] = max_fluid_temp - .["fluidTypes"] = fluid_types - .["heartIcon"] = 'icons/effects/effects.dmi' - -/obj/structure/aquarium/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) +/obj/structure/aquarium/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/stack/sheet/glass)) return - var/mob/user = usr - switch(action) - if("temperature") - var/temperature = params["temperature"] - if(isnum(temperature)) - fluid_temp = clamp(temperature, min_fluid_temp, max_fluid_temp) - . = TRUE - if("fluid") - if(params["fluid"] in fluid_types) - fluid_type = params["fluid"] - SEND_SIGNAL(src, COMSIG_AQUARIUM_FLUID_CHANGED, fluid_type) - . = TRUE - if("allow_breeding") - reproduction_and_growth = !reproduction_and_growth - . = TRUE - if("feeding_interval") - feeding_interval = params["feeding_interval"] MINUTES - . = TRUE - if("pet_fish") - var/obj/item/fish/fish = locate(params["fish_reference"]) in contents - fish?.pet_fish(user) - if("remove_item") - var/atom/movable/item = locate(params["item_reference"]) in contents - item?.forceMove(drop_location()) - to_chat(user, span_notice("You take out [item] from [src].")) - if("rename_fish") - var/new_name = sanitize_name(params["chosen_name"]) - var/atom/movable/fish = locate(params["fish_reference"]) in contents - if(!fish || !new_name || new_name == fish.name) - return - fish.AddComponent(/datum/component/rename, new_name, fish.desc) - -/obj/structure/aquarium/ui_interact(mob/user, datum/tgui/ui) - . = ..() - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Aquarium", name) - ui.open() + if(!broken) + balloon_alert(user, "aquarium not broken!") + return ITEM_INTERACT_BLOCKING + var/obj/item/stack/sheet/glass/glass = tool + if(glass.get_amount() < 2) + balloon_alert(user, "it needs two sheets!") + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "fixing the aquarium...") + if(!do_after(user, 2 SECONDS, target = src)) + return ITEM_INTERACT_BLOCKING + glass.use(2) + broken = FALSE + atom_integrity = max_integrity + update_appearance() + return ITEM_INTERACT_SUCCESS /obj/structure/aquarium/atom_break(damage_flag) . = ..() @@ -377,50 +90,172 @@ else possible_destinations_for_fish = list(droploc) playsound(src, 'sound/effects/glass/glassbr3.ogg', 100, TRUE) - for(var/atom/movable/fish in contents) - fish.forceMove(pick(possible_destinations_for_fish)) + for(var/atom/movable/content as anything in contents) + content.forceMove(pick(possible_destinations_for_fish)) if(fluid_type != AQUARIUM_FLUID_AIR) var/datum/reagents/reagent_splash = new() reagent_splash.add_reagent(/datum/reagent/water, 30) chem_splash(droploc, null, 3, list(reagent_splash)) update_appearance() -#undef AQUARIUM_LAYER_STEP -#undef AQUARIUM_MIN_OFFSET -#undef AQUARIUM_MAX_OFFSET -#undef AQUARIUM_GLASS_LAYER -#undef AQUARIUM_BORDERS_LAYER -#undef AQUARIUM_BELOW_GLASS_LAYER - -/obj/structure/aquarium/lawyer +/obj/structure/aquarium/prefilled anchored = TRUE -/obj/structure/aquarium/lawyer/Initialize(mapload) +/obj/structure/aquarium/prefilled/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) //start with safe mode on + new /obj/item/aquarium_prop/sand(src) new /obj/item/aquarium_prop/seaweed(src) - if(prob(85)) - new /obj/item/fish/goldfish/gill(src) - reagents.add_reagent(/datum/reagent/consumable/nutriment, 2) + new /obj/item/fish/goldfish(src) + new /obj/item/fish/angelfish(src) + new /obj/item/fish/guppy(src) + + //They'll be alive for about 30 minutes with this amount. + reagents.add_reagent(/datum/reagent/consumable/nutriment, 3) + +/obj/item/fish_tank + name = "fish tank" + desc = "A more portable sort of aquarium to store various fishes in, unless they're too big or there're too many of them." + icon = 'icons/obj/aquarium/tanks.dmi' + icon_state = "fish_tank_map" + base_icon_state = "fish_tank" + force = 5 + throwforce = 5 + throw_range = 3 + w_class = WEIGHT_CLASS_BULKY + item_flags = SLOWS_WHILE_IN_HAND + + custom_price = PAYCHECK_CREW * 9 + + ///Tracks the fluid type of our aquarium component. Used for overlays + var/fluid_type = AQUARIUM_FLUID_FRESHWATER + + ///Fish which size exceed this value cannot be inserted + var/maximum_relative_size = 100 + ///Fish cannot be inserted if the sum of the size of all fish in this tank exceeds this value. + var/max_total_size = 220 + ///Tracks the sum of the size of all fish in this tank + var/current_summed_size = 0 + ///Tracks the sum of the weight of all fish in this tank + var/current_summed_weight = 0 + + var/slowdown_coeff = 1 + + ///The minimum fluid temperature of this fish tank + var/min_fluid_temp = MIN_AQUARIUM_TEMP + 12 + ///The maximum fluid temperature of this fish tank + var/max_fluid_temp = MAX_AQUARIUM_TEMP - 32 + ///The reagent capacity of this fish tank + var/reagent_size = 4 + +/obj/item/fish_tank/Initialize(mapload) + . = ..() + update_appearance() + AddComponent(\ + /datum/component/aquarium,\ + min_px = 6,\ + max_px = 26,\ + min_py = 6,\ + max_py = 24,\ + default_beauty = 100,\ + reagents_size = src.reagent_size,\ + min_fluid_temp = src.min_fluid_temp,\ + max_fluid_temp = src.max_fluid_temp,\ + ) + AddComponent(/datum/component/plumbing/aquarium, start = anchored) + RegisterSignal(src, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_aquarium_liquid_changed)) + RegisterSignal(src, COMSIG_AQUARIUM_CAN_INSERT, PROC_REF(can_insert)) + RegisterSignal(src, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON, PROC_REF(on_new_fish)) + +/obj/item/fish_tank/update_icon() + . = ..() + ///"aquarium_map" is used for mapping, so mappers can tell what it's. + icon_state = base_icon_state + +/obj/item/fish_tank/proc/on_aquarium_liquid_changed(datum/source, fluid_type) + SIGNAL_HANDLER + src.fluid_type = fluid_type + update_appearance() + +/obj/item/fish_tank/update_overlays() + . = ..() + . += "[base_icon_state]_panel[HAS_TRAIT(src, TRAIT_AQUARIUM_PANEL_OPEN) ? "_open" : ""]" + . += mutable_appearance(icon, "[base_icon_state]_[fluid_type == AQUARIUM_FLUID_AIR ? "air" : "water"]", layer = layer + AQUARIUM_GLASS_LAYER) + . += mutable_appearance(icon, "[base_icon_state]_borders", layer = layer + AQUARIUM_BORDERS_LAYER) + +/obj/item/fish_tank/proc/can_insert(atom/movable/source, obj/item/item, mob/living/user) + SIGNAL_HANDLER + if(!isfish(item)) + return + var/obj/item/fish/fish = item + if(fish.size > maximum_relative_size) + balloon_alert(user, "fish is too big!") + return COMSIG_CANNOT_INSERT_IN_AQUARIUM + if(current_summed_size > max_total_size) + balloon_alert(user, "fish tank is full!") + return COMSIG_CANNOT_INSERT_IN_AQUARIUM + return COMSIG_CAN_INSERT_IN_AQUARIUM + +/obj/item/fish_tank/Entered(atom/movable/entered) + . = ..() + on_new_fish(src, entered) + +/obj/item/fish_tank/proc/on_new_fish(datum/source, atom/movable/movable) + SIGNAL_HANDLER + if(!isfish(movable)) + return + var/obj/item/fish/fish = movable + change_size_weight(fish.size, fish.weight) + RegisterSignal(fish, COMSIG_FISH_UPDATE_SIZE_AND_WEIGHT, PROC_REF(on_fish_size_weight_updated)) + +/obj/item/fish_tank/proc/on_fish_size_weight_updated(obj/item/fish/source, new_size, new_weight) + SIGNAL_HANDLER + change_size_weight(new_size - source.size, new_weight - source.weight) + +/obj/item/fish_tank/Exited(atom/movable/gone) + if(isfish(gone)) + var/obj/item/fish/fish = gone + change_size_weight(-fish.size, -fish.weight) + UnregisterSignal(fish, COMSIG_FISH_UPDATE_SIZE_AND_WEIGHT) + return ..() + +/obj/item/fish_tank/proc/change_size_weight(size_change, weight_change) + current_summed_size += size_change + current_summed_weight += weight_change + if(current_summed_size > max_total_size) + ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, INNATE_TRAIT) else - new /obj/item/fish/goldfish/three_eyes/gill(src) - reagents.add_reagent(/datum/reagent/toxin/mutagen, 2) //three eyes goldfish feed on mutagen. + REMOVE_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, INNATE_TRAIT) + if(HAS_TRAIT(src, TRAIT_SPEED_POTIONED) || current_summed_weight < FISH_WEIGHT_SLOWDOWN) + slowdown = 0 + drag_slowdown = 0 + else + slowdown = GET_FISH_SLOWDOWN(current_summed_weight) * slowdown_coeff + drag_slowdown = slowdown * 0.5 + if(ismob(loc)) + var/mob/mob = loc + mob.update_equipment_speed_mods() + force = min(2 + (GET_FISH_WEIGHT_RANK(current_summed_weight) * 3), 21) + throwforce = force -/obj/structure/aquarium/prefilled - anchored = TRUE +///The lawyer's own pet goldfish's fish tank. It used to be an aquarium, but now it can be held and carried around. +/obj/item/fish_tank/lawyer -/obj/structure/aquarium/prefilled/Initialize(mapload) +/obj/item/fish_tank/lawyer/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) //start with safe mode on + new /obj/item/aquarium_prop/sand(src) new /obj/item/aquarium_prop/seaweed(src) - new /obj/item/fish/goldfish(src) - new /obj/item/fish/angelfish(src) - new /obj/item/fish/guppy(src) - - //They'll be alive for about 30 minutes with this amount. - reagents.add_reagent(/datum/reagent/consumable/nutriment, 3) + if(prob(85)) + new /obj/item/fish/goldfish/gill(src) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 3) + else + new /obj/item/fish/goldfish/three_eyes/gill(src) + reagents.add_reagent(/datum/reagent/toxin/mutagen, 3) //three eyes goldfish feed on mutagen. diff --git a/code/modules/fishing/aquarium/aquarium_kit.dm b/code/modules/fishing/aquarium/aquarium_kit.dm index 17dd518710d9d..f18f67b931370 100644 --- a/code/modules/fishing/aquarium/aquarium_kit.dm +++ b/code/modules/fishing/aquarium/aquarium_kit.dm @@ -117,20 +117,20 @@ /obj/item/aquarium_kit name = "DIY Aquarium Construction Kit" - desc = "Everything you need to build your own aquarium. Raw materials sold separately." + desc = "Everything you need to build your own aquarium or fish tank. Raw materials sold separately." icon = 'icons/obj/aquarium/supplies.dmi' icon_state = "construction_kit" w_class = WEIGHT_CLASS_TINY /obj/item/aquarium_kit/Initialize(mapload) . = ..() - var/static/list/recipes = list(/datum/crafting_recipe/aquarium) + var/static/list/recipes = list(/datum/crafting_recipe/aquarium, /datum/crafting_recipe/fish_tank) AddElement(/datum/element/slapcrafting, recipes) /obj/item/aquarium_prop name = "generic aquarium prop" desc = "very boring" - icon = 'icons/obj/aquarium/supplies.dmi' + icon = 'icons/obj/aquarium/tanks.dmi' w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/plastic = COIN_MATERIAL_AMOUNT) @@ -141,15 +141,21 @@ . = ..() //It's important that we register the signals before the component is attached. RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, PROC_REF(generate_aquarium_appearance)) - AddComponent(/datum/component/aquarium_content, beauty = beauty) + AddComponent(/datum/component/aquarium_content) ADD_TRAIT(src, TRAIT_UNIQUE_AQUARIUM_CONTENT, INNATE_TRAIT) -/obj/item/aquarium_prop/proc/generate_aquarium_appearance(datum/source, obj/effect/aquarium/visual) + RegisterSignal(src, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, PROC_REF(get_aquarium_beauty)) + +/obj/item/aquarium_prop/proc/generate_aquarium_appearance(datum/source, obj/effect/aquarium/visual, atom/movable/aquarium) SIGNAL_HANDLER - visual.icon = icon - visual.icon_state = icon_state + visual.icon = aquarium.icon + visual.icon_state = "[icon_state][isitem(aquarium) ? "_fish_tank" : ""]" visual.layer_mode = layer_mode +/obj/item/aquarium_prop/proc/get_aquarium_beauty(datum/source, list/beauty_holder) + SIGNAL_HANDLER + beauty_holder += beauty + /obj/item/aquarium_prop/rocks name = "decorative rocks" desc = "A bunch of tiny plastic rocks for decorating an aquarium. Surely you could have just used real pebbles?" diff --git a/code/modules/fishing/aquarium/aquarium_upgrades.dm b/code/modules/fishing/aquarium/aquarium_upgrades.dm index c73e6e9d230ae..042074500afb0 100644 --- a/code/modules/fishing/aquarium/aquarium_upgrades.dm +++ b/code/modules/fishing/aquarium/aquarium_upgrades.dm @@ -11,8 +11,25 @@ /// typepath of the new aquarium subtype created. var/upgrade_to_type = /obj/structure/aquarium +/obj/item/aquarium_upgrade/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + if(!HAS_TRAIT(interacting_with, TRAIT_IS_AQUARIUM)) + return NONE + if(upgrade_from_type != interacting_with.type) + interacting_with.balloon_alert(user, "wrong kind of aquarium!") + return ITEM_INTERACT_BLOCKING + interacting_with.balloon_alert(user, "upgrading...") + if(!PERFORM_ALL_TESTS(aquarium_upgrade) && !do_after(user, 5 SECONDS, interacting_with)) + return ITEM_INTERACT_BLOCKING + var/atom/movable/upgraded_aquarium = new upgrade_to_type(interacting_with.drop_location()) + //This should transfer all the fish, reagents and settings from the aquarium component + interacting_with.TransferComponents(upgraded_aquarium) + upgraded_aquarium.balloon_alert(user, "upgraded") + qdel(src) + qdel(interacting_with) + return ITEM_INTERACT_SUCCESS + /obj/item/aquarium_upgrade/bioelec_gen - name = "Aquarium Bioelectricity Kit" + name = "aquarium bioelectricity kit" desc = "All the required components to allow an aquarium to harness energy bioelectric fish." icon_state = "bioelec_kit" upgrade_to_type = /obj/structure/aquarium/bioelec_gen @@ -22,9 +39,13 @@ desc = "An unconventional type of generator that boosts and harvests the energy produced by bioelectric fish." icon_state = "bioelec_map" - icon_prefix = "bioelec" + base_icon_state = "bioelec" + + default_beauty = 0 - current_beauty = 0 +/obj/structure/aquarium/bioelec_gen/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_BIOELECTRIC_GENERATOR, INNATE_TRAIT) /obj/structure/aquarium/bioelec_gen/zap_act(power, zap_flags) var/explosive = zap_flags & ZAP_MACHINE_EXPLOSIVE @@ -37,3 +58,23 @@ . += span_boldwarning("WARNING! WARNING! WARNING!") . += span_warning("The bioelectric potential of the fish inside is magnified to dangerous levels by the generator.") . += span_notice("Tesla coils are required to collect this magnified energy... and you'll want a grounding rod to protect yourself as well.") + +/obj/item/aquarium_upgrade/bluespace_tank + name = "bluespace fish tank kit" + desc = "The required components to upgrade your portable fish tank into bottomless, handheld aquarium." + icon_state = "bluespace_kit" + upgrade_from_type = /obj/item/fish_tank + upgrade_to_type = /obj/item/fish_tank/bluespace + +/obj/item/fish_tank/bluespace + name = "bluespace fish tank" + desc = "All the capacity of a bulky room aquarium, squeezed in a bag-sized rectangular cuboid." + icon_state = "fish_tank_bluespace_map" + base_icon_state = "fish_tank_bluespace" + w_class = WEIGHT_CLASS_NORMAL + maximum_relative_size = INFINITY + max_total_size = 2000 + slowdown_coeff = 0.15 + min_fluid_temp = MIN_AQUARIUM_TEMP + max_fluid_temp = MAX_AQUARIUM_TEMP + reagent_size = 6 diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm index 617d8b600baaa..3df28e326ac3f 100644 --- a/code/modules/fishing/aquarium/fish_analyzer.dm +++ b/code/modules/fishing/aquarium/fish_analyzer.dm @@ -59,18 +59,15 @@ . += emissive_appearance(icon, "fish_analyzer_emissive", src) /obj/item/fish_analyzer/interact_with_atom(atom/target, mob/living/user, list/modifiers) - if(!isfish(target) && !isaquarium(target)) + if(!isfish(target) && !HAS_TRAIT(target, TRAIT_IS_AQUARIUM)) return NONE if(!user.can_read(src) || user.is_blind()) return ITEM_INTERACT_BLOCKING - if(isfish(target) || istype(target, /obj/structure/aquarium)) - scanned_item = WEAKREF(target) - SEND_SIGNAL(src, COMSIG_FISH_ANALYZER_ANALYZE_STATUS, target, user) - ui_interact(user) - return ITEM_INTERACT_SUCCESS - - return NONE + scanned_item = WEAKREF(target) + SEND_SIGNAL(src, COMSIG_FISH_ANALYZER_ANALYZE_STATUS, target, user) + ui_interact(user) + return ITEM_INTERACT_SUCCESS /obj/item/fish_analyzer/ui_interact(mob/user, datum/tgui/ui) if(isnull(scanned_item?.resolve())) @@ -92,13 +89,13 @@ data["fish_scanned"] = TRUE return extract_fish_info(data, scanned_object) - var/obj/structure/aquarium/aquarium = scanned_object + var/atom/movable/aquarium = scanned_object for(var/obj/item/fish/fishie in aquarium) - extract_fish_info(data, fishie, aquarium) + extract_fish_info(data, fishie) return data -/obj/item/fish_analyzer/proc/extract_fish_info(list/data, obj/item/fish/fishie, obj/structure/aquarium/aquarium) +/obj/item/fish_analyzer/proc/extract_fish_info(list/data, obj/item/fish/fishie) var/list/fish_traits = list() var/list/fish_evolutions = list() @@ -129,12 +126,12 @@ "fish_min_temp" = fishie.required_temperature_min, "fish_max_temp" = fishie.required_temperature_max, "fish_hunger" = HAS_TRAIT(fishie, TRAIT_FISH_NO_HUNGER) ? 0 : 1 - fishie.get_hunger(), - "fish_fluid_compatible" = aquarium ? compatible_fluid_type(fishie.required_fluid_type, aquarium.fluid_type) : null, + "fish_fluid_compatible" = fishie.fish_flags & FISH_FLAG_SAFE_FLUID, "fish_fluid_type" = fishie.required_fluid_type, "fish_breed_timer" = round(max(fishie.breeding_wait - world.time, 0) / 10), "fish_traits" = fish_traits, "fish_evolutions" = fish_evolutions, - "fish_suitable_temp" = aquarium ? ISINRANGE(aquarium.fluid_temp, fishie.required_temperature_min, fishie.required_temperature_max) : null + "fish_suitable_temp" = fishie.fish_flags & FISH_FLAG_SAFE_TEMPERATURE, )) return data diff --git a/code/modules/fishing/bait.dm b/code/modules/fishing/bait.dm index aad7a8d3d1d89..50cb6ef09b163 100644 --- a/code/modules/fishing/bait.dm +++ b/code/modules/fishing/bait.dm @@ -63,7 +63,7 @@ /obj/item/fishing_lure name = "artificial minnow" - desc = "A fishing lure meant to attract smaller omnivore fish." + desc = "A fishing lure that may attract small fish. Too tiny, too large, or too picky prey won't be interested in it, though." icon = 'icons/obj/fishing.dmi' icon_state = "minnow" w_class = WEIGHT_CLASS_SMALL @@ -88,13 +88,11 @@ rod.spin_frequency = null ///Called for every fish subtype by the fishing subsystem when initializing, to populate the list of fish that can be catched with this lure. -/obj/item/fishing_lure/proc/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/avg_size = initial(fish_type.average_size) +/obj/item/fishing_lure/proc/is_catchable_fish(obj/item/fish/fish, list/fish_properties) var/intermediate_size = FISH_SIZE_SMALL_MAX + (FISH_SIZE_NORMAL_MAX - FISH_SIZE_SMALL_MAX) - if(!ISINRANGE(avg_size, FISH_SIZE_TINY_MAX * 0.5, intermediate_size)) + if(!ISINRANGE(fish.size, FISH_SIZE_TINY_MAX * 0.5, intermediate_size)) return FALSE - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits)) + if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits)) return FALSE return TRUE @@ -120,25 +118,28 @@ . += span_info("You can catch the following fish with this lure: [english_list(known_fishes)].") ///Check if the fish is in the list of catchable fish for this fishing lure. Return value is a multiplier. -/obj/item/fishing_lure/check_bait(obj/item/fish/fish_type) +/obj/item/fishing_lure/check_bait(obj/item/fish/fish) var/multiplier = 0 - if(is_type_in_list(/obj/item/fishing_lure, SSfishing.fish_properties[fish_type][FISH_PROPERTIES_FAV_BAIT])) + var/is_instance = istype(fish) + var/list/fish_properties = SSfishing.fish_properties[is_instance ? fish.type : fish] + if(is_type_in_list(/obj/item/fishing_lure, fish_properties[FISH_PROPERTIES_FAV_BAIT])) multiplier += 2 - if(fish_type in SSfishing.lure_catchables[type]) + if(is_instance) + if(is_catchable_fish(fish, fish_properties)) + multiplier += 10 + else if(fish in SSfishing.lure_catchables[type]) multiplier += 10 return multiplier /obj/item/fishing_lure/plug - name = "big plug lure" - desc = "A fishing lure used to catch larger omnivore fish." + name = "artificial plug lure" + desc = "A bigger fishing lure that may attract larger fish. Tiny or picky prey will remain uninterested." icon_state = "plug" -/obj/item/fishing_lure/plug/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/avg_size = initial(fish_type.average_size) - if(avg_size <= FISH_SIZE_SMALL_MAX) +/obj/item/fishing_lure/plug/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(fish.size <= FISH_SIZE_SMALL_MAX) return FALSE - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits)) + if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits)) return FALSE return TRUE @@ -148,55 +149,52 @@ icon_state = "dropping" spin_frequency = list(1.5 SECONDS, 2.8 SECONDS) -/obj/item/fishing_lure/dropping/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) +/obj/item/fishing_lure/dropping/is_catchable_fish(obj/item/fish/fish, list/fish_properties) var/list/sources = list(/datum/fish_source/toilet, /datum/fish_source/moisture_trap) for(var/datum/fish_source/source as anything in sources) var/datum/fish_source/instance = GLOB.preset_fish_sources[/datum/fish_source/toilet] - if(fish_type in instance.fish_table) + if(fish.type in instance.fish_table) return TRUE var/list/fav_baits = fish_properties[FISH_PROPERTIES_FAV_BAIT] for(var/list/identifier in fav_baits) if(identifier[FISH_BAIT_TYPE] == FISH_BAIT_FOODTYPE && (identifier[FISH_BAIT_VALUE] & (JUNKFOOD|GROSS|TOXIC))) return TRUE - if(initial(fish_type.beauty) <= FISH_BEAUTY_DISGUSTING) + if(fish.beauty <= FISH_BEAUTY_DISGUSTING) return TRUE return FALSE /obj/item/fishing_lure/spoon name = "\improper Indy spoon lure" - desc = "A lustrous piece of metal mimicking the scales of a fish. Good for catching small to medium freshwater omnivore fish." + desc = "A lustrous piece of metal mimicking the scales of a fish. It specializes in catching small-to-medium-sized fish that live in freshwater." icon_state = "spoon" spin_frequency = list(1.25 SECONDS, 2.25 SECONDS) -/obj/item/fishing_lure/spoon/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/avg_size = initial(fish_type.average_size) - if(!ISINRANGE(avg_size, FISH_SIZE_TINY_MAX + 1, FISH_SIZE_NORMAL_MAX)) +/obj/item/fishing_lure/spoon/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(!ISINRANGE(fish.size, FISH_SIZE_TINY_MAX + 1, FISH_SIZE_NORMAL_MAX)) return FALSE - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits)) + if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater, /datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits)) return FALSE - var/fluid_type = initial(fish_type.required_fluid_type) + var/fluid_type = fish.required_fluid_type if(fluid_type == AQUARIUM_FLUID_FRESHWATER || fluid_type == AQUARIUM_FLUID_ANADROMOUS || fluid_type == AQUARIUM_FLUID_ANY_WATER) return TRUE - if((/datum/fish_trait/amphibious in fish_traits) && fluid_type == AQUARIUM_FLUID_AIR) + if((/datum/fish_trait/amphibious in fish.fish_traits) && fluid_type == AQUARIUM_FLUID_AIR) return TRUE return FALSE /obj/item/fishing_lure/artificial_fly name = "\improper Silkbuzz artificial fly" - desc = "A fishing lure resembling a large wooly fly. Good for catching all sort of picky fish." + desc = "A fishing lure resembling a large wooly fly. Unlike most other lures, it's fancy enough to catch the interest of picky fish, but only those." icon_state = "artificial_fly" spin_frequency = list(1.1 SECONDS, 2 SECONDS) -/obj/item/fishing_lure/artificial_fly/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(/datum/fish_trait/picky_eater in fish_traits) +/obj/item/fishing_lure/artificial_fly/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(/datum/fish_trait/picky_eater in fish.fish_traits) return TRUE return FALSE /obj/item/fishing_lure/led name = "\improper LED fishing lure" - desc = "A heavy, waterproof and fish-looking LED stick, used to catch abyssal and demersal fish alike." + desc = "A heavy, waterproof and fish-looking LED stick, specialized to catch only nocturnal and deep-dwelling fish." icon_state = "led" spin_frequency = list(3 SECONDS, 3.8 SECONDS) @@ -216,15 +214,14 @@ . = ..() REMOVE_TRAIT(rod, TRAIT_ROD_IGNORE_ENVIRONMENT, type) -/obj/item/fishing_lure/led/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(length(list(/datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish_traits)) +/obj/item/fishing_lure/led/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(length(list(/datum/fish_trait/nocturnal, /datum/fish_trait/heavy) & fish.fish_traits)) return TRUE return FALSE /obj/item/fishing_lure/lucky_coin name = "\improper Maneki-Coin lure" - desc = "A faux-gold lure used to attract shiny-loving fish." + desc = "A faux-gold lure. Catches the attention of fishies that love shinies. Not nearly tasty-looking enough for anything else." icon_state = "lucky_coin" spin_frequency = list(1.5 SECONDS, 2.7 SECONDS) @@ -236,78 +233,72 @@ . = ..() REMOVE_TRAIT(rod, TRAIT_ROD_ATTRACT_SHINY_LOVERS, REF(src)) -/obj/item/fishing_lure/lucky_coin/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(/datum/fish_trait/shiny_lover in fish_traits) +/obj/item/fishing_lure/lucky_coin/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(/datum/fish_trait/shiny_lover in fish.fish_traits) return TRUE return FALSE /obj/item/fishing_lure/algae name = "plastic algae lure" - desc = "A soft clump of fake algae used to attract herbivore water critters." + desc = "A soft clump of fake algae. Herbivores love it. Nothing else does, not even omnivores." icon_state = "algae" spin_frequency = list(3 SECONDS, 5 SECONDS) -/obj/item/fishing_lure/algae/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(/datum/fish_trait/vegan in fish_traits) +/obj/item/fishing_lure/algae/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(/datum/fish_trait/vegan in fish.fish_traits) return TRUE return FALSE /obj/item/fishing_lure/grub name = "\improper Twister Worm lure" - desc = "A soft plastic lure with the body of a grub and a twisting tail. Good for panfish and other small omnivore fish." + desc = "A soft plastic lure with the body of a grub and a twisting tail. Specialized for catching small fish, as long as they aren't herbivores, picky, or picky herbivores." icon_state = "grub" spin_frequency = list(1 SECONDS, 2.7 SECONDS) -/obj/item/fishing_lure/grub/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - if(initial(fish_type.average_size) >= FISH_SIZE_SMALL_MAX) +/obj/item/fishing_lure/grub/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(fish.size >= FISH_SIZE_SMALL_MAX) return FALSE - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater) & fish_traits)) + if(length(list(/datum/fish_trait/vegan, /datum/fish_trait/picky_eater) & fish.fish_traits)) return FALSE return TRUE /obj/item/fishing_lure/buzzbait name = "\improper Electric-Buzz lure" - desc = "A metallic, colored clanked attached to a series of cables that somehow attract shock-worthy fish." + desc = "A metallic, colored clanker attached to a series of cables that somehow attract shock-worthy fish." icon_state = "buzzbait" spin_frequency = list(0.8 SECONDS, 1.7 SECONDS) -/obj/item/fishing_lure/buzzbait/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(/datum/fish_trait/electrogenesis in fish_traits) +/obj/item/fishing_lure/buzzbait/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(HAS_TRAIT(fish, TRAIT_FISH_ELECTROGENESIS)) return TRUE return FALSE /obj/item/fishing_lure/spinnerbait name = "spinnerbait lure" - desc = "A versatile lure, good for catching all sort of predatory freshwater fish." + desc = "A spinny, vulnerable lure, great for attracting freshwater predators, though omnivores won't be interested in it." icon_state = "spinnerbait" spin_frequency = list(2 SECONDS, 4 SECONDS) -/obj/item/fishing_lure/spinnerbait/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(!(/datum/fish_trait/predator in fish_traits)) +/obj/item/fishing_lure/spinnerbait/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(!(/datum/fish_trait/predator in fish.fish_traits)) return FALSE - var/init_fluid_type = initial(fish_type.required_fluid_type) + var/init_fluid_type = fish.required_fluid_type if(init_fluid_type == AQUARIUM_FLUID_FRESHWATER || init_fluid_type == AQUARIUM_FLUID_ANADROMOUS || init_fluid_type == AQUARIUM_FLUID_ANY_WATER) return TRUE - if((/datum/fish_trait/amphibious in fish_traits) && init_fluid_type == AQUARIUM_FLUID_AIR) //fluid type is changed to freshwater on init + if((/datum/fish_trait/amphibious in fish.fish_traits) && init_fluid_type == AQUARIUM_FLUID_AIR) //fluid type is changed to freshwater on init return TRUE return FALSE /obj/item/fishing_lure/daisy_chain name = "daisy chain lure" - desc = "A lure resembling a small school of fish, good for catching several saltwater predators." + desc = "A lure resembling a small school of fish. Saltwater predators love it, but not much else will." icon_state = "daisy_chain" spin_frequency = list(2 SECONDS, 4 SECONDS) -/obj/item/fishing_lure/daisy_chain/is_catchable_fish(obj/item/fish/fish_type, list/fish_properties) - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] - if(!(/datum/fish_trait/predator in fish_traits)) +/obj/item/fishing_lure/daisy_chain/is_catchable_fish(obj/item/fish/fish, list/fish_properties) + if(!(/datum/fish_trait/predator in fish.fish_traits)) return FALSE - var/init_fluid_type = initial(fish_type.required_fluid_type) + var/init_fluid_type = fish.required_fluid_type if(init_fluid_type == AQUARIUM_FLUID_SALTWATER || init_fluid_type == AQUARIUM_FLUID_ANADROMOUS || init_fluid_type == AQUARIUM_FLUID_ANY_WATER) return TRUE return FALSE diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm index 8eee6f1663503..0c09afb90cd2d 100644 --- a/code/modules/fishing/fish/_fish.dm +++ b/code/modules/fishing/fish/_fish.dm @@ -170,16 +170,21 @@ * Once set, the value shouldn't be changed, so don't make typos. */ var/fish_id + ///Used to redirect to another fish path so that catching this fish unlocks its entry instead. + var/obj/item/fish/fish_id_redirect_path + /// only used in the suicide for comedic value + var/suicide_slap_text = "*SLAP!*" /obj/item/fish/Initialize(mapload, apply_qualities = TRUE) . = ..() base_icon_state = icon_state //It's important that we register the signals before the component is attached. RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_DO_ANIMATION, PROC_REF(update_aquarium_animation)) - RegisterSignal(src, AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position)) + RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_RANDOMIZE_POSITION, PROC_REF(randomize_aquarium_position)) RegisterSignal(src, COMSIG_AQUARIUM_CONTENT_GENERATE_APPEARANCE, PROC_REF(update_aquarium_appearance)) - AddComponent(/datum/component/aquarium_content, list(COMSIG_FISH_STIRRED), beauty) + AddComponent(/datum/component/aquarium_content, list(COMSIG_ATOM_WAS_ATTACKED)) + RegisterSignal(src, COMSIG_MOVABLE_GET_AQUARIUM_BEAUTY, PROC_REF(get_aquarium_beauty)) RegisterSignal(src, COMSIG_ATOM_ON_LAZARUS_INJECTOR, PROC_REF(use_lazarus)) if(fish_flags & FISH_DO_FLOP_ANIM) RegisterSignal(src, COMSIG_ATOM_TEMPORARY_ANIMATION_START, PROC_REF(on_temp_animation)) @@ -188,6 +193,9 @@ ADD_TRAIT(src, TRAIT_UNCOMPOSTABLE, REF(src)) //Composting a food that is not real food wouldn't work anyway. START_PROCESSING(SSobj, src) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FISH_STASIS), PROC_REF(enter_stasis)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FISH_STASIS), PROC_REF(exit_stasis)) + //Adding this because not all fish have the gore foodtype that makes them automatically eligible for dna infusion. ADD_TRAIT(src, TRAIT_VALID_DNA_INFUSION, INNATE_TRAIT) @@ -202,6 +210,26 @@ register_context() register_item_context() +/obj/item/fish/suicide_act(mob/living/user) + if(force == 0) + user.visible_message(span_suicide("[user] slaps [user.p_them()]self with [src], but nothing happens!")) + return SHAME + user.visible_message(span_suicide("[user] starts rapidly slapping [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + user.set_combat_mode(TRUE) + ADD_TRAIT(user, TRAIT_COMBAT_MODE_LOCK, REF(src)) + slapperoni(user, iteration = 1) + return MANUAL_SUICIDE + +/obj/item/fish/proc/slapperoni(mob/living/user, iteration) + stoplag(0.1 SECONDS) + user.visible_message(span_bolddanger(suicide_slap_text)) + user.attackby(src, user) + if(user.stat > SOFT_CRIT || (iteration > 100)) + REMOVE_TRAIT(user, TRAIT_COMBAT_MODE_LOCK, REF(src)) + user.gib(DROP_ORGANS|DROP_BODYPARTS|DROP_ITEMS) + return + slapperoni(user, iteration++) + /obj/item/fish/add_item_context(atom/source, list/context, obj/item/held_item, mob/user) if(HAS_TRAIT(source, TRAIT_CATCH_AND_RELEASE)) context[SCREENTIP_CONTEXT_RMB] = "Release" @@ -218,8 +246,26 @@ if(istype(held_item, /obj/item/fish_analyzer)) context[SCREENTIP_CONTEXT_LMB] = "Scan" return CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/clothing/neck/stethoscope)) + context[SCREENTIP_CONTEXT_LMB] = "Check Pulse" + return CONTEXTUAL_SCREENTIP_SET return NONE +/obj/item/fish/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(!istype(tool, /obj/item/clothing/neck/stethoscope)) + return NONE + user.balloon_alert_to_viewers("checking pulse") + if(!do_after(user, 2.5 SECONDS, src)) + return ITEM_INTERACT_FAILURE + // Sir... I'm afraid your fish is dying. + user.visible_message(span_notice("[user] checks the pulse of [src] with [tool]."), span_notice("You check the pulse of [src] with [tool].")) + var/warns = get_health_warnings(user, always_deep = TRUE) + if(!warns) + to_chat(user, span_notice("[src] appears to be perfectly healthy!")) + return ITEM_INTERACT_SUCCESS + to_chat(user, warns) + return ITEM_INTERACT_SUCCESS + /obj/item/fish/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers) if(!HAS_TRAIT(interacting_with, TRAIT_CATCH_AND_RELEASE)) return NONE @@ -237,7 +283,7 @@ span_notice("You release [src] into [interacting_with]. [goodbye_text]"), \ span_notice("You hear a splash.")) playsound(interacting_with, 'sound/effects/splash.ogg', 50) - SEND_SIGNAL(interacting_with, COMSIG_FISH_RELEASED_INTO, src) + SEND_SIGNAL(interacting_with, COMSIG_FISH_RELEASED_INTO, src, user) qdel(src) return ITEM_INTERACT_SUCCESS @@ -433,27 +479,46 @@ /obj/item/fish/examine(mob/user) . = ..() - if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH)) - if(status == FISH_DEAD) - . += span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].") - else - var/list/warnings = list() - if(is_starving()) - warnings += "starving" - if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment()) - warnings += "drowning" - if(health < initial(health) * 0.6) - warnings += "sick" - if(length(warnings)) - . += span_warning("It's [english_list(warnings)].") if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISH)) . += span_notice("It's [size] cm long.") . += span_notice("It weighs [weight] g.") - if(HAS_TRAIT(src, TRAIT_FISHING_BAIT)) - . += span_smallnoticeital("It can be used as a fishing bait.") + + . += get_health_warnings(user, always_deep = FALSE) + + if(HAS_TRAIT(src, TRAIT_FISHING_BAIT)) + . += span_smallnoticeital("It can be used as a fishing bait.") + if(bites_amount) . += span_warning("It's been bitten by someone.") +/obj/item/fish/proc/get_health_warnings(mob/user, always_deep = FALSE) + if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH) && !always_deep) + return + if(status == FISH_DEAD) + return span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].") + + var/list/warnings = list() + if(get_starvation_mult()) + warnings += "starving" + if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment()) + warnings += "drowning" + + var/health_ratio = health / initial(health) + switch(health_ratio) + if(0 to 0.25) + warnings += "dying" + if(0.25 to 0.5) + warnings += "very unhealthy" + if(0.5 to 0.75) + warnings += "unhealthy" + if(0.75 to 0.9) + warnings += "mostly healthy" + + if(length(warnings)) + . += span_warning("It's [english_list(warnings)].") + + return . + /** * This proc takes a base size, base weight and deviation arguments to generate new size and weight through a gaussian distribution (bell curve) * Mainly used to determinate the size and weight of caught fish. @@ -474,7 +539,7 @@ if(!maximum_size) maximum_size = min(base_size * 2, average_size * MAX_FISH_DEVIATION_COEFF) if(!maximum_weight) - maximum_weight = min(base_weight * 2, average_size * MAX_FISH_DEVIATION_COEFF) + maximum_weight = min(base_weight * 2, average_weight * MAX_FISH_DEVIATION_COEFF) ///Updates weight and size, along with weight class, number of fillets you can get and grind results. /obj/item/fish/proc/update_size_and_weight(new_size = average_size, new_weight = average_weight, update_materials = TRUE) @@ -549,7 +614,7 @@ make_edible() if(weight >= FISH_WEIGHT_SLOWDOWN && !HAS_TRAIT(src, TRAIT_SPEED_POTIONED)) - slowdown = round(((weight/FISH_WEIGHT_SLOWDOWN_DIVISOR)**FISH_WEIGHT_SLOWDOWN_EXPONENT)-1.3, 0.1) + slowdown = GET_FISH_SLOWDOWN(weight) drag_slowdown = round(slowdown * 0.5, 1) else slowdown = 0 @@ -592,14 +657,6 @@ AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, amount, time, screentip_verb = "Cut") return amount //checked by a unit test -/** - * Weight, unlike size, is a bit more exponential, but the world isn't perfect, so isn't my code. - * Anyway, this returns a gross estimate of the "rank" of "category" for our fish weight, based on how - * weight generaly scales up (250, 500, 1000, 2000, 4000 etc...) - */ -/obj/item/fish/proc/get_weight_rank() - return max(round(1 + log(2, weight/FISH_WEIGHT_FORCE_DIVISOR), 1), 1) - ///Reset weapon-related variables of this items and recalculates those values based on the fish weight and size. /obj/item/fish/proc/update_fish_force() if(force >= 15 && hitsound == SFX_ALT_FISH_SLAP) @@ -619,7 +676,7 @@ bare_wound_bonus = initial(bare_wound_bonus) toolspeed = initial(toolspeed) - var/weight_rank = get_weight_rank() + var/weight_rank = GET_FISH_WEIGHT_RANK(weight) throw_range -= weight_rank get_force_rank() @@ -765,25 +822,29 @@ . = ..() check_flopping() -/obj/item/fish/proc/enter_stasis() - ADD_TRAIT(src, TRAIT_FISH_STASIS, INNATE_TRAIT) - // Stop processing until inserted into aquarium again. +/// Stop processing once the stasis trait is added +/obj/item/fish/proc/enter_stasis(datum/source) + SIGNAL_HANDLER stop_flopping() STOP_PROCESSING(SSobj, src) -/obj/item/fish/proc/exit_stasis() - REMOVE_TRAIT(src, TRAIT_FISH_STASIS, INNATE_TRAIT) - if(status != FISH_DEAD) - START_PROCESSING(SSobj, src) +/// Start processing again when the stasis trait is removed +/obj/item/fish/proc/exit_stasis(datum/source) + SIGNAL_HANDLER + if(status == FISH_DEAD) + return + START_PROCESSING(SSobj, src) + check_flopping() -///Returns the 0-1 value for hunger -/obj/item/fish/proc/get_hunger() - . = CLAMP01((world.time - last_feeding) / feeding_frequency) +///Returns the value for hunger ranging from 0 to the cap (by default 1) +/obj/item/fish/proc/get_hunger(cap = 1) + . = clamp((world.time - last_feeding) / feeding_frequency, 0, cap) if(HAS_TRAIT(src, TRAIT_FISH_NO_HUNGER)) return min(., 0.2) -/obj/item/fish/proc/is_starving() - return get_hunger() >= 1 +/obj/item/fish/proc/get_starvation_mult() + var/hunger = get_hunger(cap = 2) + return hunger >= 1 ? hunger : 0 ///Feed the fishes with the contents of the fish feed /obj/item/fish/proc/feed(datum/reagents/fed_reagents) @@ -816,33 +877,21 @@ return fed_reagents.remove_reagent(wrong_reagent.type, 0.1) -/** - * Base multiplier of the difference between current size and weight and their maximum value - * Used to calculate how much fish grow each time they're fed, alongside with the current hunger, - * and the current size and weight, meaning bigger fish naturally tend to grow way more slowly - * Growth peaks at 45% hunger but very rapidly wanes past that. - */ -#define FISH_GROWTH_MULT 0.38 -#define FISH_GROWTH_PEAK 0.45 -#define FISH_SIZE_WEIGHT_GROWTH_MALUS 0.5 - ///Proc that should be called when the fish is fed. By default, it grows the fish depending on various variables. /obj/item/fish/proc/sate_hunger() - if(isaquarium(loc)) - var/obj/structure/aquarium/aquarium = loc - if(!aquarium.reproduction_and_growth) - last_feeding = world.time - return - var/hunger = get_hunger() - if(hunger < 0.05) //don't bother growing for very small amounts. + if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) last_feeding = world.time return + var/hunger = get_hunger() last_feeding = world.time + if(hunger < 0.05) //don't bother growing for very small amounts. + return + var/new_size = size var/new_weight = weight var/hunger_mult - if(hunger < FISH_GROWTH_PEAK) - hunger_mult = hunger * (1/FISH_GROWTH_PEAK) + if(hunger <= FISH_GROWTH_PEAK) + hunger_mult = hunger / FISH_GROWTH_PEAK else hunger_mult = 1 - (hunger - FISH_GROWTH_PEAK) * 4 if(hunger_mult <= 0) @@ -854,15 +903,11 @@ new_size += CEILING((maximum_size - size) * base_mult / (w_class * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1) new_size = min(new_size, maximum_size) if(weight < maximum_weight) - new_weight += CEILING((maximum_weight - weight) * base_mult / (get_weight_rank() * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1) + new_weight += CEILING((maximum_weight - weight) * base_mult / (GET_FISH_WEIGHT_RANK(weight) * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1) new_weight = min(new_weight, maximum_weight) if(new_size != size || new_weight != weight) update_size_and_weight(new_size, new_weight) -#undef FISH_SIZE_WEIGHT_GROWTH_MALUS -#undef FISH_GROWTH_MULT -#undef FISH_GROWTH_PEAK - /obj/item/fish/proc/check_flopping() if(QDELETED(src)) //we don't care anymore return @@ -871,9 +916,8 @@ return // Do additional stuff - var/in_aquarium = isaquarium(loc) // Start flopping if outside of fish container - var/should_be_flopping = status == FISH_ALIVE && !HAS_TRAIT(src, TRAIT_FISH_STASIS) && !in_aquarium + var/should_be_flopping = status == FISH_ALIVE && !HAS_TRAIT(src, TRAIT_FISH_STASIS) && loc && !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM) if(should_be_flopping) start_flopping() @@ -884,12 +928,17 @@ if(HAS_TRAIT(src, TRAIT_FISH_STASIS) || status != FISH_ALIVE) return - process_health(seconds_per_tick) - if(ready_to_reproduce()) - try_to_reproduce() + //safe mode, don't do much except a few things that don't involve growing or reproducing. + if(loc && HAS_TRAIT_FROM(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT)) + last_feeding += seconds_per_tick SECONDS + breeding_wait += seconds_per_tick SECONDS + else + process_health(seconds_per_tick) + if(ready_to_reproduce()) + try_to_reproduce() - if(HAS_TRAIT(src, TRAIT_FISH_ELECTROGENESIS) && COOLDOWN_FINISHED(src, electrogenesis_cooldown)) - try_electrogenesis() + if(HAS_TRAIT(src, TRAIT_FISH_ELECTROGENESIS) && COOLDOWN_FINISHED(src, electrogenesis_cooldown)) + try_electrogenesis() SEND_SIGNAL(src, COMSIG_FISH_LIFE, seconds_per_tick) @@ -912,7 +961,7 @@ stop_flopping() if(!silent) var/message = span_notice(replacetext(death_text, "%SRC", "[src]")) - if(isaquarium(loc)) + if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) loc.visible_message(message) else visible_message(message) @@ -972,7 +1021,7 @@ var/datum/reagent/medicine/strange_reagent/revival = locate() in reagents if(!revival) return - if(reagents[revival] >= 2 * w_class) + if(reagents[revival] >= 2 * w_class && revival.pre_rez_check(src)) set_status(FISH_ALIVE) else balloon_alert_to_viewers("twitches for a moment!") @@ -997,47 +1046,44 @@ visual.icon_state = dedicated_in_aquarium_icon_state || "[initial(icon_state)]_small" visual.color = aquarium_vc_color -/obj/item/fish/proc/randomize_aquarium_position(datum/source, obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual) +/obj/item/fish/proc/randomize_aquarium_position(datum/source, atom/movable/current_aquarium, obj/effect/aquarium/visual) SIGNAL_HANDLER - var/list/aq_properties = current_aquarium.get_surface_properties() var/avg_width = round(sprite_width * 0.5) var/avg_height = round(sprite_height * 0.5) - var/px_min = aq_properties[AQUARIUM_PROPERTIES_PX_MIN] + avg_width - 16 - var/px_max = aq_properties[AQUARIUM_PROPERTIES_PX_MAX] - avg_width - 16 - var/py_min = aq_properties[AQUARIUM_PROPERTIES_PY_MIN] + avg_height - 16 - var/py_max = aq_properties[AQUARIUM_PROPERTIES_PY_MAX] - avg_height - 16 + var/px_min = visual.aquarium_zone_min_px + avg_width - 16 + var/px_max = visual.aquarium_zone_max_px - avg_width - 16 + var/py_min = visual.aquarium_zone_min_py + avg_height - 16 + var/py_max = visual.aquarium_zone_max_py - avg_height - 16 visual.pixel_x = visual.base_pixel_x = rand(px_min,px_max) visual.pixel_y = visual.base_pixel_y = rand(py_min,py_max) -/obj/item/fish/proc/get_aquarium_animation() - var/obj/structure/aquarium/aquarium = loc - if(!istype(aquarium) || aquarium.fluid_type == AQUARIUM_FLUID_AIR || status == FISH_DEAD) - return AQUARIUM_ANIMATION_FISH_DEAD - else - return AQUARIUM_ANIMATION_FISH_SWIM - -/obj/item/fish/proc/update_aquarium_animation(datum/source, current_animation, obj/structure/current_aquarium, obj/effect/visual) +/obj/item/fish/proc/update_aquarium_animation(datum/source, current_animation, obj/effect/visual, fluid_type) SIGNAL_HANDLER - var/animation = get_aquarium_animation() + var/animation = get_aquarium_animation(fluid_type) if(animation == current_animation) return switch(animation) if(AQUARIUM_ANIMATION_FISH_SWIM) - swim_animation(current_aquarium, visual) + swim_animation(visual) if(AQUARIUM_ANIMATION_FISH_DEAD) - dead_animation(current_aquarium, visual) + dead_animation(visual) + +/obj/item/fish/proc/get_aquarium_animation(fluid_type) + if(fluid_type == AQUARIUM_FLUID_AIR || status == FISH_DEAD) + return AQUARIUM_ANIMATION_FISH_DEAD + else + return AQUARIUM_ANIMATION_FISH_SWIM /// Create looping random path animation, pixel offsets parameters include offsets already -/obj/item/fish/proc/swim_animation(obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual) +/obj/item/fish/proc/swim_animation(obj/effect/aquarium/visual) var/avg_width = round(sprite_width / 2) var/avg_height = round(sprite_height / 2) - var/list/aq_properties = current_aquarium.get_surface_properties() - var/px_min = aq_properties[AQUARIUM_PROPERTIES_PX_MIN] + avg_width - 16 - var/px_max = aq_properties[AQUARIUM_PROPERTIES_PX_MAX] - avg_width - 16 - var/py_min = aq_properties[AQUARIUM_PROPERTIES_PY_MIN] + avg_height - 16 - var/py_max = aq_properties[AQUARIUM_PROPERTIES_PY_MAX] - avg_width - 16 + var/px_min = visual.aquarium_zone_min_px + avg_width - 16 + var/px_max = visual.aquarium_zone_max_px - avg_width - 16 + var/py_min = visual.aquarium_zone_min_py + avg_height - 16 + var/py_max = visual.aquarium_zone_max_py - avg_width - 16 var/origin_x = visual.base_pixel_x var/origin_y = visual.base_pixel_y @@ -1062,22 +1108,36 @@ animate(transform = dir_mx, time = 0, loop = -1) animate(pixel_x = target_x, pixel_y = target_y, time = eyeballed_time, loop = -1) -/obj/item/fish/proc/dead_animation(obj/structure/aquarium/current_aquarium, obj/effect/aquarium/visual) +/obj/item/fish/proc/dead_animation(obj/effect/aquarium/visual) //Set base_pixel_y to lowest possible value var/avg_height = round(sprite_height / 2) - var/list/aq_properties = current_aquarium.get_surface_properties() - var/py_min = aq_properties[AQUARIUM_PROPERTIES_PY_MIN] + avg_height - 16 + var/py_min = visual.aquarium_zone_min_py + avg_height - 16 visual.base_pixel_y = py_min animate(visual, pixel_y = py_min, time = 1) //flop to bottom and end current animation. +///Malus to the beauty value if the fish content is dead +#define DEAD_FISH_BEAUTY -500 +///Prevents more impressive fishes from providing a positive beauty even when dead. +#define MAX_DEAD_FISH_BEAUTY -200 +///Some fish are already so ugly, they can't get much worse when dead +#define MIN_DEAD_FISH_BEAUTY -600 + +/obj/item/fish/proc/get_aquarium_beauty(datum/source, list/beauty_holder) + SIGNAL_HANDLER + var/actual_beauty = beauty + if(status == FISH_DEAD) + actual_beauty = clamp(beauty + DEAD_FISH_BEAUTY, MIN_DEAD_FISH_BEAUTY, MAX_DEAD_FISH_BEAUTY) + + beauty_holder += actual_beauty + +#undef DEAD_FISH_BEAUTY +#undef MIN_DEAD_FISH_BEAUTY +#undef MAX_DEAD_FISH_BEAUTY + /// Checks if our current environment lets us live. /obj/item/fish/proc/proper_environment(temp_range_min = required_temperature_min, temp_range_max = required_temperature_max) - var/obj/structure/aquarium/aquarium = loc - if(istype(aquarium)) - if(!compatible_fluid_type(required_fluid_type, aquarium.fluid_type)) - if(aquarium.fluid_type != AQUARIUM_FLUID_AIR || !HAS_TRAIT(src, TRAIT_FISH_AMPHIBIOUS)) - return FALSE - if(!ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max)) + if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) + if(!(fish_flags & FISH_FLAG_SAFE_TEMPERATURE) || !(fish_flags & FISH_FLAG_SAFE_FLUID)) return FALSE return TRUE @@ -1098,13 +1158,14 @@ /obj/item/fish/proc/process_health(seconds_per_tick) var/health_change_per_second = 0 if(!proper_environment()) - health_change_per_second -= 3 //Dying here - if(is_starving()) - health_change_per_second -= 0.5 //Starving + health_change_per_second -= 2.5 //Dying here + var/starvation_mult = get_starvation_mult() + if(starvation_mult) + health_change_per_second -= 0.25 * starvation_mult //Starving else health_change_per_second += 0.5 //Slowly healing if(HAS_TRAIT(src, TRAIT_FISH_ON_TESLIUM)) - health_change_per_second -= 0.65 //This becomes - 0.15 if safe and not starving. + health_change_per_second -= 0.65 adjust_health(health + health_change_per_second * seconds_per_tick) @@ -1131,54 +1192,48 @@ bites_amount -= amount generate_fish_reagents(amount) +/// Returns tracked_fish_by_type but flattened and without the items in the blacklist, also shuffled if shuffle is TRUE. +/obj/item/fish/proc/get_aquarium_fishes(shuffle = FALSE, blacklist) + . = list() + for(var/obj/item/fish/fish in loc) + . += fish + . -= blacklist + if(shuffle) + . = shuffle(.) + return . + /obj/item/fish/proc/ready_to_reproduce(being_targeted = FALSE) - var/obj/structure/aquarium/aquarium = loc - if(!istype(aquarium)) + if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) return FALSE if(being_targeted && HAS_TRAIT(src, TRAIT_FISH_NO_MATING)) return FALSE - if(!being_targeted && length(aquarium.get_fishes()) >= AQUARIUM_MAX_BREEDING_POPULATION) + if(!being_targeted && length(get_aquarium_fishes()) >= AQUARIUM_MAX_BREEDING_POPULATION) return FALSE - return aquarium.reproduction_and_growth && health >= initial(health) * 0.8 && stable_population >= 1 && world.time >= breeding_wait + return !HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH) && health >= initial(health) * 0.8 && stable_population >= 1 && world.time >= breeding_wait /obj/item/fish/proc/try_to_reproduce() - var/obj/structure/aquarium/aquarium = loc - if(!istype(aquarium)) + if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) return FALSE var/obj/item/fish/second_fish - /** - * Fishes with this trait cannot mate, but could still reproduce asexually, so don't early return. - * Also mating takes priority over that. - */ + ///Fishes with this trait cannot mate, but could still reproduce asexually, so don't early return. if(!HAS_TRAIT(src, TRAIT_FISH_NO_MATING)) var/list/available_fishes = list() - var/types_to_mate_with = aquarium.tracked_fish_by_type - if(!HAS_TRAIT(src, TRAIT_FISH_CROSSBREEDER)) - var/list/types_to_check = list(type) - if(compatible_types) - types_to_check |= compatible_types - types_to_mate_with = types_to_mate_with & types_to_check - - for(var/obj/item/fish/fish_type as anything in types_to_mate_with) - var/list/type_fishes = types_to_mate_with[fish_type] - if(length(type_fishes) >= initial(fish_type.stable_population)) - continue - available_fishes += type_fishes - - available_fishes -= src //no self-mating. + SEND_SIGNAL(loc, COMSIG_AQUARIUM_GET_REPRODUCTION_CANDIDATES, src, available_fishes) if(length(available_fishes)) - for(var/obj/item/fish/other_fish as anything in shuffle(available_fishes)) + //make sure we check if the fish can reproduce with itself last, since that should've lower priority + available_fishes = shuffle(available_fishes) - src + available_fishes += src + for(var/obj/item/fish/other_fish as anything in available_fishes) if(other_fish.ready_to_reproduce(TRUE)) second_fish = other_fish break - if(!second_fish) + if(!second_fish || second_fish == src) //check if the fish can self-reproduce in these cases. if(!HAS_TRAIT(src, TRAIT_FISH_SELF_REPRODUCE)) return FALSE - if(length(aquarium.tracked_fish_by_type[type]) >= stable_population) - return FALSE + second_fish = null //set it to null, since this will make the following operations a bit easier if(PERFORM_ALL_TESTS(fish_breeding) && second_fish && !length(evolution_types)) return create_offspring(second_fish.type, second_fish) @@ -1188,13 +1243,13 @@ var/list/possible_evolutions = list() for(var/evolution_type in evolution_types) var/datum/fish_evolution/evolution = GLOB.fish_evolutions[evolution_type] - if(evolution.check_conditions(src, second_fish, aquarium)) + if(evolution.check_conditions(src, second_fish, loc)) possible_evolutions += evolution if(second_fish?.evolution_types) var/secondary_evolutions = (second_fish.evolution_types - evolution_types) for(var/evolution_type in secondary_evolutions) var/datum/fish_evolution/evolution = GLOB.fish_evolutions[evolution_type] - if(evolution.check_conditions(second_fish, src, aquarium)) + if(evolution.check_conditions(second_fish, src, loc)) possible_evolutions += evolution var/list/types = spawn_types || list(type) @@ -1205,7 +1260,7 @@ var/list/second_fish_types = second_fish.spawn_types || list(second_fish.type) var/recessive = HAS_TRAIT(src, TRAIT_FISH_RECESSIVE) var/recessive_partner = HAS_TRAIT(second_fish, TRAIT_FISH_RECESSIVE) - if(length(aquarium.tracked_fish_by_type[type]) >= stable_population) + if(fish_flags & FISH_FLAG_OVERPOPULATED) if(recessive_partner && !recessive) return FALSE chosen_type = pick(second_fish_types) @@ -1329,13 +1384,13 @@ flop_animation() /obj/item/fish/proc/try_electrogenesis() - if(status == FISH_DEAD || is_starving()) + if(status == FISH_DEAD || get_starvation_mult()) return COOLDOWN_START(src, electrogenesis_cooldown, ELECTROGENESIS_DURATION + ELECTROGENESIS_VARIANCE) var/fish_zap_range = 1 var/fish_zap_power = 1 KILO JOULES // ~5 damage, just a little friendly "yeeeouch!" var/fish_zap_flags = ZAP_MOB_DAMAGE - if(istype(loc, /obj/structure/aquarium/bioelec_gen)) + if(HAS_TRAIT(loc, TRAIT_BIOELECTRIC_GENERATOR)) fish_zap_range = 5 fish_zap_power = GET_FISH_ELECTROGENESIS(src) if(HAS_TRAIT(src, TRAIT_FISH_ON_TESLIUM)) @@ -1378,13 +1433,13 @@ happiness_value++ if(get_hunger() < 0.5) happiness_value++ - var/obj/structure/aquarium/aquarium = loc - if(!istype(aquarium)) - return happiness_value - if(compatible_fluid_type(required_fluid_type, aquarium.fluid_type)) - happiness_value++ - if(ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max)) - happiness_value++ + if(loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) + if(fish_flags & FISH_FLAG_SAFE_FLUID) + happiness_value++ + if(fish_flags & FISH_FLAG_SAFE_TEMPERATURE) + happiness_value++ + else if(proper_environment()) + happiness_value += 2 if(bites_amount) // ouch happiness_value -= 2 if(health < initial(health) * 0.6) @@ -1396,7 +1451,7 @@ pet_fish(user) /obj/item/fish/proc/pet_fish(mob/living/user) - var/in_aquarium = isaquarium(loc) + var/in_aquarium = loc && HAS_TRAIT(loc, TRAIT_IS_AQUARIUM) if(status == FISH_DEAD) to_chat(user, span_warning("You try to pet [src], but [p_theyre()] motionless!")) return FALSE @@ -1413,7 +1468,7 @@ user.electrocute_act(5, src) //was it all worth it? fish_flags |= FISH_FLAG_PETTED new /obj/effect/temp_visual/heart(get_turf(src)) - if((/datum/fish_trait/aggressive in fish_traits) && prob(50)) + if((/datum/fish_trait/predator in fish_traits) && prob(50)) if(!in_aquarium) user.visible_message( span_warning("[src] dances around before biting [user]!"), diff --git a/code/modules/fishing/fish/chasm_detritus.dm b/code/modules/fishing/fish/chasm_detritus.dm index 9595c552e18d2..05db957100470 100644 --- a/code/modules/fishing/fish/chasm_detritus.dm +++ b/code/modules/fishing/fish/chasm_detritus.dm @@ -43,11 +43,11 @@ GLOBAL_LIST_INIT_TYPED(chasm_detritus_types, /datum/chasm_detritus, init_chasm_d ), ) -/datum/chasm_detritus/proc/dispense_detritus(atom/spawn_location, turf/fishing_spot) +/datum/chasm_detritus/proc/dispense_detritus(atom/spawn_location, atom/fishing_spot) if(prob(default_contents_chance)) var/default_spawn = pick(default_contents[default_contents_key]) return new default_spawn(spawn_location) - return find_chasm_contents(fishing_spot, spawn_location) + return find_chasm_contents(get_turf(fishing_spot), spawn_location) /// Returns the chosen detritus from the given list of things to choose from /datum/chasm_detritus/proc/determine_detritus(list/chasm_stuff) @@ -61,7 +61,9 @@ GLOBAL_LIST_INIT_TYPED(chasm_detritus_types, /datum/chasm_detritus, init_chasm_d var/default_spawn = pick(default_contents[default_contents_key]) return new default_spawn(fisher_turf) - return determine_detritus(chasm_contents) + var/atom/movable/detritus = determine_detritus(chasm_contents) + detritus.forceMove(fisher_turf) + return detritus /datum/chasm_detritus/proc/get_chasm_contents(turf/fishing_spot) . = list() diff --git a/code/modules/fishing/fish/fish_evolution.dm b/code/modules/fishing/fish/fish_evolution.dm index a9261b091c9eb..1e4135b6ec12b 100644 --- a/code/modules/fishing/fish/fish_evolution.dm +++ b/code/modules/fishing/fish/fish_evolution.dm @@ -43,20 +43,14 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) * Keep in mind the mate and aquarium arguments may be null if * the fish is self-reproducing or this evolution is a result of a fish_growth component */ -/datum/fish_evolution/proc/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) +/datum/fish_evolution/proc/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium) SHOULD_CALL_PARENT(TRUE) - if(aquarium) - //chances are halved if only one parent has this evolution. - var/real_probability = (mate && (type in mate.evolution_types)) ? probability : probability/2 - if(HAS_TRAIT(source, TRAIT_FISH_MUTAGENIC) || (mate && HAS_TRAIT(mate, TRAIT_FISH_MUTAGENIC))) - real_probability *= 3 - if(!prob(real_probability)) - return FALSE - if(!ISINRANGE(aquarium.fluid_temp, required_temperature_min, required_temperature_max)) - return FALSE - else if(!source.proper_environment(required_temperature_min, required_temperature_max)) - return FALSE - return TRUE + //the fish don't reproduce outside of aquariums but can still grow there, so we just check if the temperature is right. + if(!aquarium) + return source.proper_environment(required_temperature_min, required_temperature_max) + if(SEND_SIGNAL(aquarium, COMSIG_AQUARIUM_CHECK_EVOLUTION_CONDITIONS, source, mate, src) & COMPONENT_ALLOW_EVOLUTION) + return TRUE + return FALSE ///This is called when the evolution is set as the result type of a fish_growth component /datum/fish_evolution/proc/growth_checks(obj/item/fish/source, seconds_per_tick, growth) @@ -66,20 +60,24 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) return COMPONENT_DONT_GROW if(source.get_hunger() >= 0.5) //too hungry to grow return COMPONENT_DONT_GROW - var/obj/structure/aquarium/aquarium = source.loc - if(istype(aquarium) && !aquarium.reproduction_and_growth) //the aquarium has breeding disabled + if(HAS_TRAIT(source.loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled return COMPONENT_DONT_GROW - else - aquarium = null - if(!check_conditions(source, aquarium = aquarium)) + if(!check_conditions(source)) return COMPONENT_DONT_GROW ///Called by the fish analyzer right click function. Returns a text string used as tooltip. /datum/fish_evolution/proc/get_evolution_tooltip() . = "" if(required_temperature_min > 0 || required_temperature_max < INFINITY) - var/max_temp = required_temperature_max < INFINITY ? " and [required_temperature_max]" : "" - . = "An aquarium temperature between [required_temperature_min][max_temp] is required." + var/temp_reqs = "" + if(required_temperature_min == 0) + temp_reqs = "below [required_temperature_max]" + else if(required_temperature_max == INFINITY) + temp_reqs = "above [required_temperature_min]" + else + temp_reqs = "of [required_temperature_min] to [required_temperature_max]" + . = "An aquarium temperature [temp_reqs]K is required." + if(conditions_note) . += " [conditions_note]" return . @@ -90,7 +88,7 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) new_traits = list(/datum/fish_trait/lubed) conditions_note = "The fish must be fed lube beforehand." -/datum/fish_evolution/lubefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) +/datum/fish_evolution/lubefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium) if(!HAS_TRAIT(source, TRAIT_FISH_FED_LUBE)) return FALSE return ..() @@ -105,11 +103,11 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) name = "???" //The resulting fish is not shown on the catalog. probability = 40 new_fish_type = /obj/item/fish/mastodon - new_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/predator, /datum/fish_trait/aggressive) + new_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/predator, /datum/fish_trait/territorial) conditions_note = "The fish (and its mate) needs to be unusually big both in size and weight." show_result_on_wiki = FALSE -/datum/fish_evolution/mastodon/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) +/datum/fish_evolution/mastodon/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium) if((source.size < 120 || source.weight < 3000) || (mate && (mate.size < 120 || mate.weight < 3000))) return FALSE return ..() @@ -134,13 +132,13 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) /datum/fish_evolution/chainsawfish probability = 30 new_fish_type = /obj/item/fish/chainsawfish - new_traits = list(/datum/fish_trait/predator, /datum/fish_trait/aggressive) - conditions_note = "The fish needs to be unusually big and aggressive" + new_traits = list(/datum/fish_trait/predator, /datum/fish_trait/territorial) + conditions_note = "The fish needs to be unusually big and territorial" -/datum/fish_evolution/chainsawfish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) +/datum/fish_evolution/chainsawfish/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium) var/double_avg_size = /obj/item/fish/goldfish::average_size * 2 var/double_avg_weight = /obj/item/fish/goldfish::average_weight * 2 - if(source.size >= double_avg_size && source.weight >= double_avg_weight && (/datum/fish_trait/aggressive in source.fish_traits)) + if(source.size >= double_avg_size && source.weight >= double_avg_weight && (/datum/fish_trait/territorial in source.fish_traits)) return ..() return FALSE @@ -149,7 +147,7 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) new_fish_type = /obj/item/fish/pike/armored conditions_note = "The fish needs to have the stinger trait" -/datum/fish_evolution/armored_pike/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) +/datum/fish_evolution/armored_pike/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium) if(HAS_TRAIT(source, TRAIT_FISH_STINGER)) return ..() return FALSE @@ -165,7 +163,7 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) conditions_note = "The final stage of fritterfish growth. It gotta be big!" show_result_on_wiki = FALSE -/datum/fish_evolution/nessiefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) +/datum/fish_evolution/nessiefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, atom/movable/aquarium) if(source.size >= (/obj/item/fish/fryish/fritterish::average_size * 1.5) && source.size >= (/obj/item/fish/fryish/fritterish::average_weight * 1.5)) return ..() return FALSE @@ -177,10 +175,10 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) /datum/fish_evolution/moonfish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) if(source.size < (/obj/item/fish/moonfish/dwarf::average_size * 1.5) && source.size < (/obj/item/fish/moonfish/dwarf::average_weight * 1.5)) - return ..() + return FALSE if(mate && (mate.size < (/obj/item/fish/moonfish::average_size * 1.3) && mate.size < (/obj/item/fish/moonfish::average_weight * 1.3))) return FALSE - return FALSE + return ..() /datum/fish_evolution/dwarf_moonfish probability = 200 //guaranteed if the conditions are met @@ -194,3 +192,12 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) return FALSE return ..() +/datum/fish_evolution/lavaloop + probability = 85 + new_fish_type = /obj/item/fish/lavaloop + required_temperature_min = MIN_AQUARIUM_TEMP + 60 + +/datum/fish_evolution/plasmaloop + probability = 85 + new_fish_type = /obj/item/fish/lavaloop/plasma_river + required_temperature_max = MIN_AQUARIUM_TEMP + 60 diff --git a/code/modules/fishing/fish/fish_traits.dm b/code/modules/fishing/fish/fish_traits.dm index 90a0aa2e75772..7211041915418 100644 --- a/code/modules/fishing/fish/fish_traits.dm +++ b/code/modules/fishing/fish/fish_traits.dm @@ -184,11 +184,12 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/nocturnal/proc/check_light(obj/item/fish/source, seconds_per_tick) SIGNAL_HANDLER - if(isturf(source.loc) || isaquarium(source)) - var/turf/turf = get_turf(source) - var/light_amount = turf.get_lumcount() - if(light_amount > SHADOW_SPECIES_LIGHT_THRESHOLD) - source.adjust_health(source.health - 0.5 * seconds_per_tick) + if(!source.loc || (!HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM) && !isturf(source.loc))) + return + var/turf/turf = get_turf(source) + var/light_amount = turf.get_lumcount() + if(light_amount > SHADOW_SPECIES_LIGHT_THRESHOLD) + source.adjust_health(source.health - 0.5 * seconds_per_tick) /datum/fish_trait/nocturnal/apply_to_mob(mob/living/basic/mob) . = ..() @@ -293,7 +294,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/emulsijack/proc/emulsify(obj/item/fish/source, seconds_per_tick) SIGNAL_HANDLER - if(!isaquarium(source.loc)) + if(!source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM)) return var/emulsified = FALSE for(var/obj/item/fish/victim in source.loc) @@ -332,7 +333,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/necrophage/proc/eat_dead_fishes(obj/item/fish/source, seconds_per_tick) SIGNAL_HANDLER - if(source.get_hunger() > 0.75 || !isaquarium(source.loc)) + if(source.get_hunger() > 0.75 || !source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM)) return for(var/obj/item/fish/victim in source.loc) if(victim.status != FISH_DEAD || victim == source || HAS_TRAIT(victim, TRAIT_YUCKY_FISH)) @@ -400,7 +401,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) return source.set_status(FISH_ALIVE) var/message = span_nicegreen("[source] twitches. It's alive!") - if(isaquarium(source.loc)) + if(source.loc && HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM)) source.loc.visible_message(message) else source.visible_message(message) @@ -425,10 +426,9 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) /datum/fish_trait/predator/proc/eat_fishes(obj/item/fish/source, seconds_per_tick) SIGNAL_HANDLER - if(source.get_hunger() > 0.75 || !isaquarium(source.loc)) + if(source.get_hunger() > 0.75 || !source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM)) return - var/obj/structure/aquarium/aquarium = source.loc - for(var/obj/item/fish/victim in aquarium.get_fishes(TRUE, source)) + for(var/obj/item/fish/victim as anything in source.get_aquarium_fishes(TRUE, source)) if(victim.size < source.size * 0.7) // It's a big fish eat small fish world continue if(victim.status != FISH_ALIVE || victim == source || HAS_TRAIT(victim, TRAIT_YUCKY_FISH) || SPT_PROB(80, seconds_per_tick)) @@ -519,25 +519,27 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) . = ..() ADD_TRAIT(fish, TRAIT_FISH_CROSSBREEDER, FISH_TRAIT_DATUM) -/datum/fish_trait/aggressive - name = "Aggressive" +/datum/fish_trait/territorial + name = "Territorial" inheritability = 80 diff_traits_inheritability = 40 - catalog_description = "This fish is aggressively territorial, and may attack fish that come close to it." + catalog_description = "This fish will start attacking other fish if the aquarium has five or more." -/datum/fish_trait/aggressive/apply_to_fish(obj/item/fish/fish) +/datum/fish_trait/territorial/apply_to_fish(obj/item/fish/fish) . = ..() RegisterSignal(fish, COMSIG_FISH_LIFE, PROC_REF(try_attack_fish)) -/datum/fish_trait/aggressive/proc/try_attack_fish(obj/item/fish/source, seconds_per_tick) +/datum/fish_trait/territorial/proc/try_attack_fish(obj/item/fish/source, seconds_per_tick) SIGNAL_HANDLER - if(!isaquarium(source.loc) || !SPT_PROB(1, seconds_per_tick)) + if(!source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM) || !SPT_PROB(1, seconds_per_tick)) + return + var/list/fishes = source.get_aquarium_fishes(TRUE, source) + if(length(fishes) < 5) return - var/obj/structure/aquarium/aquarium = source.loc - for(var/obj/item/fish/victim in aquarium.get_fishes(TRUE, source)) + for(var/obj/item/fish/victim as anything in source.get_aquarium_fishes(TRUE, source)) if(victim.status != FISH_ALIVE) continue - aquarium.visible_message(span_warning("[source] violently [pick("whips", "bites", "attacks", "slams")] [victim]")) + source.loc.visible_message(span_warning("[source] violently [pick("whips", "bites", "attacks", "slams")] [victim]")) var/damage = round(rand(4, 20) * (source.size / victim.size)) //smaller fishes take extra damage. victim.adjust_health(victim.health - damage) return @@ -598,6 +600,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) diff_traits_inheritability = 25 catalog_description = "This fish will invert the gravity of the bait at random. May fall upward outside after being caught." added_difficulty = 20 + reagents_to_add = list(/datum/reagent/gravitum = 2.3) /datum/fish_trait/antigrav/minigame_mod(obj/item/fishing_rod/rod, mob/fisherman, datum/fishing_challenge/minigame) minigame.special_effects |= FISHING_MINIGAME_RULE_ANTIGRAV @@ -806,4 +809,4 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits()) return var/init_alpha = initial(source.alpha) if(init_alpha != source.alpha) - animate(source.alpha, alpha = init_alpha, time = 1.2 SECONDS, easing = CIRCULAR_EASING|EASE_OUT) + animate(source, alpha = init_alpha, time = 1.2 SECONDS, easing = CIRCULAR_EASING|EASE_OUT) diff --git a/code/modules/fishing/fish/types/air_space.dm b/code/modules/fishing/fish/types/air_space.dm index c60fc7a36ef43..e25a3d7819b2e 100644 --- a/code/modules/fishing/fish/types/air_space.dm +++ b/code/modules/fishing/fish/types/air_space.dm @@ -104,6 +104,16 @@ /obj/item/fish/starfish/flop_animation() DO_FLOATING_ANIM(src) +/obj/item/fish/starfish/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src], and looks upwards...")) + user.say("I must go. My people need me.", forced = "starfish suicide") + addtimer(CALLBACK(src, PROC_REF(ascension), user), 1 SECONDS) + return MANUAL_SUICIDE + +/obj/item/fish/starfish/proc/ascension(mob/living/user) + user.apply_status_effect(/datum/status_effect/go_away/deluxe) + qdel(src) + /obj/item/fish/baby_carp name = "baby space carp" fish_id = "baby_carp" @@ -122,7 +132,7 @@ fillet_type = /obj/item/food/fishmeat/carp/no_tox fish_traits = list( /datum/fish_trait/carnivore, - /datum/fish_trait/aggressive, + /datum/fish_trait/territorial, /datum/fish_trait/predator, /datum/fish_trait/necrophage, /datum/fish_trait/no_mating, @@ -149,6 +159,37 @@ RegisterSignal(src, COMSIG_FISH_FINISH_GROWING, PROC_REF(on_growth)) update_appearance(UPDATE_OVERLAYS) +/obj/item/fish/baby_carp/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole!")) + src.forceMove(user) + if(status == FISH_DEAD) + user.emote("gasp") + user.visible_message(span_suicide("[user] chokes on [src] and dies!")) + return OXYLOSS + + // the fish grows + addtimer(CALLBACK(src, PROC_REF(gestation), user), 20 SECONDS) + user.visible_message(span_suicide("[user] starts growing unnaturally...")) + + var/matrix/M = matrix() + M.Scale(1.8, 1.2) + animate(user, time = 20 SECONDS, transform = M, easing = SINE_EASING) + return MANUAL_SUICIDE + +/obj/item/fish/baby_carp/proc/gestation(mob/living/user) + if(QDELETED(user) || QDELETED(src)) + return + // carp grow big and strong inside the nutritious innards of the human + var/mob/living/basic/carp/mega/babby = new(get_turf(user)) + babby.name = user.name + " Jr." + + var/obj/item/bodypart/chest = user.get_bodypart(BODY_ZONE_CHEST) + if(chest) + babby.set_greyscale(chest.species_color) // this isn't working. why isnt this working + + user.gib() + qdel(src) + /obj/item/fish/baby_carp/update_overlays() . = ..() var/mutable_appearance/eyes = mutable_appearance(icon, "baby_carp_eyes") @@ -173,13 +214,12 @@ if(health <= initial(health) * 0.6 || hunger >= 0.6) //if too hurt or hungry, don't grow. return COMPONENT_DONT_GROW - if(!isaquarium(loc)) + if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) return - var/obj/structure/aquarium/aquarium = loc - if(!aquarium.reproduction_and_growth) //the aquarium has breeding disabled + if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled return COMPONENT_DONT_GROW - if(length(aquarium.get_fishes()) > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate. + if(length(get_aquarium_fishes()) > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate. return COMPONENT_DONT_GROW /obj/item/fish/baby_carp/proc/on_growth(datum/source, mob/living/basic/carp/result) diff --git a/code/modules/fishing/fish/types/anadromous.dm b/code/modules/fishing/fish/types/anadromous.dm index 7f9e6b4d2e26c..02d126bb30183 100644 --- a/code/modules/fishing/fish/types/anadromous.dm +++ b/code/modules/fishing/fish/types/anadromous.dm @@ -55,7 +55,7 @@ fishing_difficulty_modifier = 10 required_temperature_min = MIN_AQUARIUM_TEMP+12 required_temperature_max = MIN_AQUARIUM_TEMP+27 - fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive) + fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/territorial) evolution_types = list(/datum/fish_evolution/armored_pike) compatible_types = list(/obj/item/fish/pike/armored) favorite_bait = list( diff --git a/code/modules/fishing/fish/types/freshwater.dm b/code/modules/fishing/fish/types/freshwater.dm index 660a406183cfa..8f39d7aa2c86a 100644 --- a/code/modules/fishing/fish/types/freshwater.dm +++ b/code/modules/fishing/fish/types/freshwater.dm @@ -25,6 +25,7 @@ /obj/item/fish/goldfish/gill name = "McGill" desc = "A great rubber duck tool for Lawyers who can't get a grasp over their case." + fish_id_redirect_path = /obj/item/fish/goldfish stable_population = 1 random_case_rarity = FISH_RARITY_NOPE fish_flags = parent_type::fish_flags & ~FISH_FLAG_SHOW_IN_CATALOG @@ -61,6 +62,7 @@ /obj/item/fish/goldfish/three_eyes/gill name = "McGill" desc = "A great rubber duck tool for Lawyers who can't get a grasp over their case. It looks kinda different today..." + fish_id_redirect_path = /obj/item/fish/goldfish/three_eyes compatible_types = list(/obj/item/fish/goldfish, /obj/item/fish/goldfish/three_eyes) beauty = FISH_BEAUTY_GREAT fish_flags = parent_type::fish_flags & ~FISH_FLAG_SHOW_IN_CATALOG @@ -80,7 +82,7 @@ average_size = 30 average_weight = 500 stable_population = 3 - fish_traits = list(/datum/fish_trait/aggressive) + fish_traits = list(/datum/fish_trait/territorial) required_temperature_min = MIN_AQUARIUM_TEMP+22 required_temperature_max = MIN_AQUARIUM_TEMP+30 @@ -106,12 +108,16 @@ icon_state = "plastetra" sprite_width = 4 sprite_height = 2 - average_size = 30 - average_weight = 500 + average_size = 20 + average_weight = 180 stable_population = 3 required_temperature_min = MIN_AQUARIUM_TEMP+20 required_temperature_max = MIN_AQUARIUM_TEMP+28 +/obj/item/fish/plasmatetra/Initialize(mapload, apply_qualities = TRUE) + . = ..() + add_traits(list(TRAIT_FISHING_BAIT, TRAIT_GOOD_QUALITY_BAIT), INNATE_TRAIT) + /obj/item/fish/catfish name = "catfish" fish_id = "catfish" @@ -157,12 +163,25 @@ //anxiety naturally limits the amount of zipzaps per tank, so they are stronger alone electrogenesis_power = 6.7 MEGA JOULES beauty = FISH_BEAUTY_GOOD + suicide_slap_text = "*ZAP!*" /obj/item/fish/zipzap/get_fish_taste() return list("raw fish" = 2, "anxiety" = 1) +/obj/item/fish/zipzap/suicide_act(mob/living/user) + if(!electrocute_mob(user, power_source = get_area(src), source = src, siemens_coeff = 1, dist_check = FALSE)) + user.visible_message(span_suicide("[user] tries to slap [user.p_them()]self with [src], but they're immune to electricity!")) + return SHAME + return ..() + +// real suicide handled by og fish proc +/obj/item/fish/zipzap/slapperoni(mob/living/user, iteration) + electrocute_mob(user, power_source = get_area(src), source = src, siemens_coeff = 1, dist_check = FALSE) // how do i make this use electrogenesis_power + return ..() + /obj/item/fish/tadpole name = "tadpole" + fish_id = "tadpole" desc = "The larval spawn of an amphibian. A very minuscle, round creature with a long tail it uses to swim around." icon_state = "tadpole" average_size = 3 @@ -201,8 +220,7 @@ var/hunger = get_hunger() if(hunger >= 0.7) //too hungry to grow return COMPONENT_DONT_GROW - var/obj/structure/aquarium/aquarium = loc - if(istype(aquarium) && !aquarium.reproduction_and_growth) //the aquarium has breeding disabled + if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled return COMPONENT_DONT_GROW /obj/item/fish/tadpole/proc/on_growth(datum/source, mob/living/basic/frog/result) @@ -212,6 +230,25 @@ /obj/item/fish/tadpole/get_export_price(price, elasticity_percent) return 2 //two credits. Tadpoles aren't really that valueable. +/obj/item/fish/tadpole/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole!")) + src.forceMove(user) + if(status == FISH_DEAD) + user.emote("gasp") + user.visible_message(span_suicide("[user] croaks!")) + return OXYLOSS + + // the frogg grows + addtimer(CALLBACK(src, PROC_REF(gestation), user), 5 SECONDS) + return MANUAL_SUICIDE + +/obj/item/fish/tadpole/proc/gestation(mob/living/user) + if(QDELETED(user) || QDELETED(src)) + return + new /mob/living/basic/frog(user) + user.gib() + qdel(src) + /obj/item/fish/perch name = "perch" fish_id = "perch" diff --git a/code/modules/fishing/fish/types/holographic.dm b/code/modules/fishing/fish/types/holographic.dm index 4dc304cb0ca04..96664f1496594 100644 --- a/code/modules/fishing/fish/types/holographic.dm +++ b/code/modules/fishing/fish/types/holographic.dm @@ -36,6 +36,15 @@ animate(src, alpha = 0, 3 SECONDS, easing = SINE_EASING) QDEL_IN(src, 3 SECONDS) +/obj/item/fish/holo/suicide_act(mob/living/user) + visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to derez [user.p_them()]selves!")) + var/area/station/holodeck/holo_area = get_area(src) + if(!istype(holo_area)) + user.dust(just_ash = TRUE, drop_items = FALSE) + return MANUAL_SUICIDE + holo_area.linked.add_to_spawned(user) // oh no + return MANUAL_SUICIDE_NONLETHAL + /obj/item/fish/holo/crab name = "holographic crab" fish_id = "holocrab" @@ -102,6 +111,20 @@ sprite_height = 3 beauty = FISH_BEAUTY_NULL +/obj/item/fish/holo/checkered/suicide_act(mob/living/carbon/user) + + if(!iscarbon(user)) + return ..() + + for(var/obj/item/bodypart/limb in user.bodyparts) + limb.add_bodypart_overlay(new /datum/bodypart_overlay/texture/checkered) + + var/obj/item/bodypart/head/head = user.get_bodypart(BODY_ZONE_HEAD) + if(!isnull(head)) + head.head_flags &= ~HEAD_EYESPRITES + + return ..() + /obj/item/fish/holo/halffish name = "holographic half-fish" fish_id = "halffish" diff --git a/code/modules/fishing/fish/types/mining.dm b/code/modules/fishing/fish/types/mining.dm index 53c1b89673ce7..bc515d6674581 100644 --- a/code/modules/fishing/fish/types/mining.dm +++ b/code/modules/fishing/fish/types/mining.dm @@ -78,15 +78,14 @@ if(hunger >= 0.4) //I'm hungry and angry anger += growth * 0.6 - if(!isaquarium(loc)) + if(!loc || !HAS_TRAIT(loc, TRAIT_IS_AQUARIUM)) return - var/obj/structure/aquarium/aquarium = loc - if(!aquarium.reproduction_and_growth) //the aquarium has breeding disabled + if(HAS_TRAIT(loc, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH)) //the aquarium has breeding disabled return COMPONENT_DONT_GROW - if(!locate(/obj/item/aquarium_prop) in aquarium) //the aquarium deco is quite barren + if(!locate(/obj/item/aquarium_prop) in loc) //the aquarium deco is quite barren anger += growth * 0.25 - var/fish_count = length(aquarium.get_fishes()) + var/fish_count = length(get_aquarium_fishes()) if(!ISINRANGE(fish_count, 3, AQUARIUM_MAX_BREEDING_POPULATION * 0.5)) //too lonely or overcrowded anger += growth * 0.3 if(fish_count > AQUARIUM_MAX_BREEDING_POPULATION * 0.5) //check if there's enough room to maturate. @@ -144,8 +143,28 @@ /obj/item/fish/boned/make_edible(weight_val) return //it's all bones and no meat. +/obj/item/fish/boned/get_health_warnings(mob/user, always_deep = FALSE) + return list(span_deadsay("It's bones.")) + +/obj/item/fish/boned/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit suicide!")) + forceMove(user) + addtimer(CALLBACK(src, PROC_REF(skeleton_appears), user), 2 SECONDS) + return MANUAL_SUICIDE_NONLETHAL // chance not to die + +/obj/item/fish/boned/proc/skeleton_appears(mob/living/user) + user.visible_message(span_warning("[user]'s skin melts off!"), span_boldwarning("Your skin melts off!")) + user.spawn_gibs() + user.drop_everything(del_on_drop = FALSE, force = FALSE, del_if_nodrop = FALSE) + user.set_species(/datum/species/skeleton) + user.say("AAAAAAAAAAAAHHHHHHHHHH!!!!!!!!!!!!!!", forced = "bone fish suicide") + if(prob(90)) + addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, death)), 3 SECONDS) + user.set_suicide(TRUE) + qdel(src) + /obj/item/fish/lavaloop - name = "lavaloop fish" + name = "lavaloop" fish_id = "lavaloop" desc = "Due to its curvature, it can be used as make-shift boomerang." icon_state = "lava_loop" @@ -157,13 +176,14 @@ required_fluid_type = AQUARIUM_FLUID_ANY_WATER //if we can survive hot lava and freezing plasrivers, we can survive anything fish_movement_type = /datum/fish_movement/zippy min_pressure = HAZARD_LOW_PRESSURE - required_temperature_min = MIN_AQUARIUM_TEMP+30 - required_temperature_max = MIN_AQUARIUM_TEMP+35 + required_temperature_min = MIN_AQUARIUM_TEMP+40 + required_temperature_max = MAX_AQUARIUM_TEMP+900 fish_traits = list( /datum/fish_trait/carnivore, /datum/fish_trait/heavy, ) compatible_types = list(/obj/item/fish/lavaloop/plasma_river) + evolution_types = list(/datum/fish_evolution/plasmaloop) hitsound = null throwforce = 5 beauty = FISH_BEAUTY_GOOD @@ -189,7 +209,7 @@ return list("chewy fish" = 2) /obj/item/fish/lavaloop/get_food_types() - return SEAFOOD|MEAT|GORE //Well-cooked in lava + return SEAFOOD|MEAT|GORE //Well-cooked in lava/plasma /obj/item/fish/lavaloop/proc/explode_on_user(mob/living/user) var/obj/item/bodypart/arm/active_arm = user.get_active_hand() @@ -205,8 +225,15 @@ return (target.mob_size >= MOB_SIZE_LARGE) /obj/item/fish/lavaloop/plasma_river + name = "plasmaloop" + desc = "A lavaloop that has evolved to survive in cold liquid plasma. Can be used as make-shift boomerang." fish_id = "plasma_lavaloop" + icon_state = "plasma_loop" + dedicated_in_aquarium_icon_state = /obj/item/fish/lavaloop::icon_state + "_small" + required_temperature_min = MIN_AQUARIUM_TEMP - 100 + required_temperature_max = MIN_AQUARIUM_TEMP+80 compatible_types = list(/obj/item/fish/lavaloop) + evolution_types = list(/datum/fish_evolution/lavaloop) maximum_bonus = 30 /obj/item/fish/lavaloop/plasma_river/explode_on_user(mob/living/user) diff --git a/code/modules/fishing/fish/types/ruins.dm b/code/modules/fishing/fish/types/ruins.dm index a9a7148986775..42a84be3248c1 100644 --- a/code/modules/fishing/fish/types/ruins.dm +++ b/code/modules/fishing/fish/types/ruins.dm @@ -24,7 +24,7 @@ average_size = 180 average_weight = 5000 death_text = "%SRC stops moving." - fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/revival, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive) + fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/amphibious, /datum/fish_trait/revival, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/territorial) beauty = FISH_BEAUTY_BAD /obj/item/fish/mastodon/Initialize(mapload, apply_qualities = TRUE) @@ -37,6 +37,28 @@ /obj/item/fish/mastodon/get_export_price(price, elasticity_percent) return ..() * 1.2 //This should push its soft-capped (it's pretty big) price a bit above the rest +/obj/item/fish/mastodon/get_health_warnings(mob/user, always_deep = FALSE) + return list(span_deadsay("It's bones.")) + +/obj/item/fish/mastodon/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole (somehow)! It looks like user.p_theyre()] trying to commit suicide!")) + forceMove(user) + user.update_transform(1.25) // become BIG from eating BIG fish + addtimer(CALLBACK(src, PROC_REF(skeleton_appears), user), 2 SECONDS) + return MANUAL_SUICIDE_NONLETHAL // chance not to die + +/obj/item/fish/mastodon/proc/skeleton_appears(mob/living/user) + user.visible_message(span_warning("[user]'s skin melts off!"), span_boldwarning("Your skin melts off!")) + user.spawn_gibs() + user.drop_everything(del_on_drop = FALSE, force = FALSE, del_if_nodrop = FALSE) + user.set_species(/datum/species/skeleton) + user.say("AAAAAAAAAAAAHHHHHHHHHH!!!!!!!!!!!!!!", forced = "mastodon fish suicide") + user.AddComponent(/datum/component/omen) // the curse of the fish + if(prob(75)) // rare so less likely (the curse keeps you alive) + addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, death)), 3 SECONDS) + user.set_suicide(TRUE) + qdel(src) + ///From the cursed spring /obj/item/fish/soul name = "soulfish" @@ -71,6 +93,41 @@ /obj/item/fish/soul/get_fish_taste_cooked() return list("cooked meat" = 2) +/obj/item/fish/soul/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit soulcide!")) + src.forceMove(user) + addtimer(CALLBACK(src, PROC_REF(good_ending), user), 2.5 SECONDS) + for(var/i in 1 to 7) + addtimer(CALLBACK(src, PROC_REF(soul_attack), user, i), 0.2 SECONDS * i) + return MANUAL_SUICIDE + +/obj/item/fish/soul/proc/good_ending(mob/living/user) + var/mob/living/basic/spaceman/soulman = new(get_turf(user)) + if(prob(80)) // the percentage is important. + soulman.ckey = user.ckey + to_chat(soulman, span_notice("You finally feel at peace.")) + user.gib() + qdel(src) + +/obj/item/fish/soul/proc/soul_attack(mob/user, iteration) + var/obj/item/storage/toolbox/mechanical/old/soulbox = pick(/obj/item/storage/toolbox/mechanical/old, /obj/item/storage/toolbox/mechanical/old/cleaner) + soulbox = new soulbox(get_turf(user)) + var/yeet_direction = pick(GLOB.alldirs) + var/yeet_distance = rand(1, 7) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + human_user.setDir(yeet_direction) + human_user.vomit(distance = yeet_distance) + soulbox.throw_at(get_edge_target_turf(get_turf(user), yeet_direction), yeet_distance, 2, user, spin = TRUE) + soulbox.AddElement(/datum/element/haunted, haunt_color = "#124CD5") + if(prob(86)) // 1 in 7 chance to stay + addtimer(CALLBACK(src, PROC_REF(soul_gone), soulbox), 1 SECONDS * iteration) + +/obj/item/fish/soul/proc/soul_gone(obj/soulbox) + soulbox.visible_message("[soulbox] disappears, as if it was never there to begin with...") + new /obj/effect/temp_visual/mook_dust(get_turf(soulbox)) + qdel(soulbox) + ///From the cursed spring /obj/item/fish/skin_crab name = "skin crab" @@ -98,3 +155,30 @@ /obj/item/fish/skin_crab/get_fish_taste_cooked() return list("cooked crab" = 2) + +/obj/item/fish/skin_crab/suicide_act(mob/living/carbon/human/user) + user.visible_message(span_suicide("[user] puts [user.p_their()] hand on [src] and focuses intently! It looks like [user.p_theyre()] trying to transfer [user.p_their()] skin to [src]!")) + if(!ishuman(user) || HAS_TRAIT(user, TRAIT_UNHUSKABLE)) + user.visible_message(span_suicide("[user] has no skin! How embarrassing!")) + return SHAME + + if(status == FISH_DEAD) + user.visible_message(span_suicide("[src] is dead! [user] just looks like a doofus!")) + return SHAME + + var/skin_tone + for(var/obj/item/bodypart/to_wound as anything in user.bodyparts) + if(to_wound == user.get_bodypart(BODY_ZONE_CHEST)) + skin_tone = to_wound.species_color || skintone2hex(to_wound.skin_tone) + user.cause_wound_of_type_and_severity(WOUND_SLASH, to_wound, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_CRITICAL) + user.cause_wound_of_type_and_severity(WOUND_PIERCE, to_wound, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_CRITICAL) + user.cause_wound_of_type_and_severity(WOUND_BLUNT, to_wound, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_CRITICAL) + user.become_husk(REF(src)) + to_wound.skin_tone = COLOR_RED // skin is gone. (if they somehow get revived, don't worry - death from loss of skin takes longer than dehydration, so it's still realistic) + + // skin crab grows powerful + color = skin_tone //skintone2hex(skin_tone) //wait til smartkar's recolorwork + visible_message(span_danger("[user] starts glowing eerily...")) + AddElement(/datum/element/haunted, haunt_color = skin_tone) + + return BRUTELOSS diff --git a/code/modules/fishing/fish/types/saltwater.dm b/code/modules/fishing/fish/types/saltwater.dm index a28ad497f5319..2b1cc4afdf29b 100644 --- a/code/modules/fishing/fish/types/saltwater.dm +++ b/code/modules/fishing/fish/types/saltwater.dm @@ -31,6 +31,14 @@ fishing_difficulty_modifier = 5 beauty = FISH_BEAUTY_GREAT +// become lubeman. but you suicide +/obj/item/fish/clownfish/lube/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] covers themselves in [src]'s residue, then swallows it whole! It looks like [user.p_theyre()] trying to commit lubide!")) + user.AddComponent(/datum/component/slippery, 8 SECONDS, SLIDE|GALOSHES_DONT_HELP) + user.AddElement(/datum/element/lube_walking) + qdel(src) + return OXYLOSS + /obj/item/fish/cardinal name = "cardinalfish" fish_id = "cardinal" @@ -95,6 +103,10 @@ fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/toxic) beauty = FISH_BEAUTY_GOOD +/obj/item/fish/pufferfish/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] bites into [src] and starts sucking on it! It looks like [user.p_theyre()] trying to commit suicide!")) + return TOXLOSS + /obj/item/fish/lanternfish name = "lanternfish" fish_id = "lanternfish" @@ -240,6 +252,31 @@ required_temperature_max = MIN_AQUARIUM_TEMP+26 fish_traits = list(/datum/fish_trait/heavy, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/ink, /datum/fish_trait/camouflage, /datum/fish_trait/wary) +/obj/item/fish/squid/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] points [src]'s ink glands at their face and presses INCREDIBLY hard! It looks like [user.p_theyre()] trying to commit squidcide!")) + + // No head? Bozo. + var/obj/item/bodypart/head = user.get_bodypart(BODY_ZONE_HEAD) + if(isnull(head)) + user.visible_message(span_suicide("[user] has no head! The ink goes flying by!")) + return SHAME + + // get inked. + user.visible_message(span_warning("[user] is inked by [src]!"), span_userdanger("You've been inked by [src]!")) + user.AddComponent(/datum/component/face_decal/splat, \ + color = COLOR_NEARLY_ALL_BLACK, \ + memory_type = /datum/memory/witnessed_inking, \ + mood_event_type = /datum/mood_event/inked, \ + ) + playsound(user, SFX_DESECRATION, 50, TRUE) + + if(!HAS_TRAIT(user, TRAIT_STRENGTH) && !HAS_TRAIT(user, TRAIT_HULK)) + return OXYLOSS + + head.dismember(silent = FALSE) + user.visible_message(span_suicide("[user]'s head goes FLYING OFF from the overpressurized ink jet!")) + return MANUAL_SUICIDE + /obj/item/fish/squid/get_fish_taste() return list("raw mollusk" = 2) diff --git a/code/modules/fishing/fish/types/station.dm b/code/modules/fishing/fish/types/station.dm index 8d958303bf319..ca7306038a60f 100644 --- a/code/modules/fishing/fish/types/station.dm +++ b/code/modules/fishing/fish/types/station.dm @@ -64,6 +64,7 @@ /obj/item/fish/sludgefish/purple name = "purple sludgefish" + fish_id = "purple_sludgefish" desc = "A misshapen, fragile, loosely fish-like living goop. This one has developed sexual reproduction mechanisms, and a purple tint to boot." icon_state = "sludgefish_purple" random_case_rarity = FISH_RARITY_NOPE @@ -150,6 +151,12 @@ add_traits(list(TRAIT_FISHING_BAIT, TRAIT_GREAT_QUALITY_BAIT), INNATE_TRAIT) ADD_TRAIT(src, TRAIT_FISH_SURVIVE_COOKING, INNATE_TRAIT) +/obj/item/fish/fryish/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit suicide!")) + user.say("Mmmm! Delicious!", forced = "fryfish suicide") + qdel(src) + return OXYLOSS + /obj/item/fish/fryish/update_size_and_weight(new_size = average_size, new_weight = average_weight, update_materials = TRUE) . = ..() if(!next_type) diff --git a/code/modules/fishing/fish/types/syndicate.dm b/code/modules/fishing/fish/types/syndicate.dm index 81366c2ba8f75..a1c32830f44ed 100644 --- a/code/modules/fishing/fish/types/syndicate.dm +++ b/code/modules/fishing/fish/types/syndicate.dm @@ -32,6 +32,18 @@ required_temperature_max = MIN_AQUARIUM_TEMP+28 beauty = FISH_BEAUTY_EXCELLENT +/obj/item/fish/donkfish/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] swallows [src] whole! It looks like [user.p_theyre()] trying to commit suicide!")) + if(!ishuman(user)) + return TOXLOSS + + var/mob/living/carbon/human/human_user = user + for(var/i in 1 to rand(5, 15)) + human_user.dir = pick(GLOB.alldirs) + human_user.vomit(vomit_flags = pick(VOMIT_CATEGORY_DEFAULT, VOMIT_CATEGORY_BLOOD), distance = rand(1, 7)) + qdel(src) + return TOXLOSS + /obj/item/fish/jumpercable name = "monocloning jumpercable" fish_id = "jumpercable" @@ -59,6 +71,13 @@ //without this, they'd sell for over 6000 each, minimum. That's a lot for a fish that requires no maintance nor partner to farm. return ..() * 0.4 +/obj/item/fish/jumpercable/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] hooks both ends of [src] to their chest! It looks like [user.p_theyre()] trying to commit suicide!")) + electrocute_mob(user, power_source = get_area(src), source = src, siemens_coeff = 1, dist_check = FALSE) + tesla_zap(source = user, zap_range = 4, power = electrogenesis_power, cutoff = 1e3, zap_flags = ZAP_LOW_POWER_GEN|ZAP_MOB_DAMAGE) + playsound(user, 'sound/items/weapons/zapbang.ogg', 75) + return OXYLOSS + /obj/item/fish/chainsawfish name = "chainsawfish" fish_id = "chainsawfish" @@ -97,7 +116,7 @@ FISH_BAIT_VALUE = GORE, ), ) - fish_traits = list(/datum/fish_trait/aggressive, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/stinger) + fish_traits = list(/datum/fish_trait/territorial, /datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/stinger) required_temperature_min = MIN_AQUARIUM_TEMP+18 required_temperature_max = MIN_AQUARIUM_TEMP+26 @@ -181,6 +200,20 @@ block_chance += bonus_malus * 2 toolspeed -= bonus_malus * 0.1 +// you suicide like a real chainsaw +/obj/item/fish/chainsawfish/suicide_act(mob/living/carbon/user) + if(status == FISH_DEAD) + user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!")) + playsound(src, 'sound/items/weapons/genhit1.ogg', 100, TRUE) + return BRUTELOSS + + user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + playsound(src, 'sound/items/weapons/chainsawhit.ogg', 100, TRUE) + var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD) + if(myhead) + myhead.dismember() + return BRUTELOSS + /obj/item/fish/pike/armored name = "armored pike" fish_id = "armored_pike" @@ -207,7 +240,7 @@ random_case_rarity = FISH_RARITY_GOOD_LUCK_FINDING_THIS beauty = FISH_BEAUTY_GREAT fishing_difficulty_modifier = 20 - fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/aggressive, /datum/fish_trait/picky_eater, /datum/fish_trait/stinger) + fish_traits = list(/datum/fish_trait/carnivore, /datum/fish_trait/predator, /datum/fish_trait/territorial, /datum/fish_trait/picky_eater, /datum/fish_trait/stinger) evolution_types = null compatible_types = list(/obj/item/fish/pike) favorite_bait = list( diff --git a/code/modules/fishing/fish/types/tiziran.dm b/code/modules/fishing/fish/types/tiziran.dm index 7cc3ea94e6862..fdfbd578083c0 100644 --- a/code/modules/fishing/fish/types/tiziran.dm +++ b/code/modules/fishing/fish/types/tiziran.dm @@ -37,7 +37,7 @@ /obj/item/fish/moonfish/proc/egg_checks(datum/source, seconds_per_tick, growth, result_path) if(result_path != /obj/item/food/moonfish_eggs) //Don't stop the growth of the dwarf subtype. return - if(!proper_environment() || is_starving()) + if(!proper_environment() || get_starvation_mult()) return COMPONENT_DONT_GROW var/count = 0 for(var/obj/item/food/moonfish_eggs/egg in loc) diff --git a/code/modules/fishing/fishing_equipment.dm b/code/modules/fishing/fishing_equipment.dm index 1b589e18be3da..37aea262426bb 100644 --- a/code/modules/fishing/fishing_equipment.dm +++ b/code/modules/fishing/fishing_equipment.dm @@ -12,8 +12,8 @@ icon = 'icons/obj/fishing.dmi' icon_state = "reel_blue" w_class = WEIGHT_CLASS_SMALL - ///A list of traits that this fishing line has, checked by fish traits and the minigame. - var/list/fishing_line_traits + ///A bitfield of traits that this fishing line has, checked by fish traits and the minigame. + var/fishing_line_traits /// Color of the fishing line var/line_color = COLOR_GRAY ///The description given to the autowiki @@ -146,11 +146,11 @@ icon_state = "hook" w_class = WEIGHT_CLASS_TINY - /// A list of traits that this fishing hook has, checked by fish traits and the minigame - var/list/fishing_hook_traits + /// A bitfield of traits that this fishing hook has, checked by fish traits and the minigame + var/fishing_hook_traits /// icon state added to main rod icon when this hook is equipped var/rod_overlay_icon_state = "hook_overlay" - /// What subtype of `/obj/item/chasm_detritus` do we fish out of chasms? Defaults to `/obj/item/chasm_detritus`. + /// What subtype of `/datum/chasm_detritus` do we fish out of chasms? Defaults to `/datum/chasm_detritus`. var/chasm_detritus_type = /datum/chasm_detritus ///The description given to the autowiki var/wiki_desc = "A generic fishing hook. You won't be able to fish without one." @@ -174,6 +174,9 @@ ///Check if tha target can be caught by the hook /obj/item/fishing_hook/proc/can_be_hooked(atom/target) + if(isliving(target)) + var/mob/living/mob = target + return (mob.mob_biotypes & MOB_AQUATIC) return isitem(target) ///Any special effect when hooking a target that's not managed by the fishing rod. @@ -212,8 +215,8 @@ SIGNAL_HANDLER REMOVE_TRAIT(rod, TRAIT_ROD_REMOVE_FISHING_DUD, REF(src)) -/obj/item/fishing_hook/magnet/get_hook_bonus_multiplicative(fish_type, datum/fish_source/source) - if(fish_type == FISHING_DUD || ispath(fish_type, /obj/item/fish)) +/obj/item/fishing_hook/magnet/get_hook_bonus_multiplicative(fish_type) + if(fish_type == FISHING_DUD || ispath(fish_type, /obj/item/fish) || isfish(fish_type)) return ..() // We multiply the odds by five for everything that's not a fish nor a dud @@ -272,9 +275,9 @@ return "The hook on your fishing rod wasn't meant for traditional fishing, rendering it useless at doing so!" -/obj/item/fishing_hook/rescue/get_hook_bonus_multiplicative(fish_type, datum/fish_source/source) +/obj/item/fishing_hook/rescue/get_hook_bonus_multiplicative(fish_type) // Sorry, you won't catch fish with this. - if(ispath(fish_type, /obj/item/fish)) + if(ispath(fish_type, /obj/item/fish) || isfish(fish_type)) return RESCUE_HOOK_FISH_MULTIPLIER return ..() @@ -430,12 +433,12 @@ ///From the fishing mystery box. It's basically a lazarus and a few bottles of strange reagents. /obj/item/storage/box/fish_revival_kit name = "fish revival kit" - desc = "Become a fish doctor today." + desc = "Become a fish doctor today. A label on the side indicates that fish require two to ten reagent units to be splashed onto them for revival, depending on size." illustration = "fish" /obj/item/storage/box/fish_revival_kit/PopulateContents() new /obj/item/lazarus_injector(src) - new /obj/item/reagent_containers/cup/bottle/strange_reagent(src) + new /obj/item/reagent_containers/cup/bottle/fishy_reagent(src) new /obj/item/reagent_containers/cup(src) //to splash the reagents on the fish. new /obj/item/storage/fish_case(src) new /obj/item/storage/fish_case(src) diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm index a3e9f255e1667..75cd0043d2274 100644 --- a/code/modules/fishing/fishing_minigame.dm +++ b/code/modules/fishing/fishing_minigame.dm @@ -49,11 +49,13 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) var/reward_path = FISHING_DUD /// Minigame difficulty var/difficulty = FISHING_DEFAULT_DIFFICULTY - // Current phase + /// Current phase var/phase = WAIT_PHASE - // Timer for the next phase + /// Timer for the next phase var/next_phase_timer - // The last time we clicked during the baiting phase + /// The lower and upper bounds of the waiting phase timer + var/list/wait_time_range = list(3 SECONDS, 25 SECONDS) + /// The last time we clicked during the baiting phase var/last_baiting_click /// Fishing mob var/mob/user @@ -126,6 +128,10 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) RegisterSignal(fish_source, COMSIG_FISHING_SOURCE_INTERRUPT_CHALLENGE, PROC_REF(interrupt_challenge)) fish_source.RegisterSignal(user, COMSIG_MOB_COMPLETE_FISHING, TYPE_PROC_REF(/datum/fish_source, on_challenge_completed)) background = comp.fish_source.background + if(comp.fish_source.wait_time_range) + wait_time_range = comp.fish_source.wait_time_range + if(float.spin_frequency) //Using a fishing lure narrows the range a bit, for better or worse. + wait_time_range = list(wait_time_range[1] + 8 SECONDS, wait_time_range[2] - 8 SECONDS) SEND_SIGNAL(user, COMSIG_MOB_BEGIN_FISHING, src) SEND_SIGNAL(rod, COMSIG_ROD_BEGIN_FISHING, src) GLOB.fishing_challenges_by_user[user] = src @@ -209,7 +215,7 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) /datum/fishing_challenge/proc/start(mob/living/user) /// Create fishing line visuals if(!used_rod.internal) - fishing_line = used_rod.create_fishing_line(float, user, target_py = 5) + fishing_line = used_rod.create_fishing_line(float, user, target_py = float.pixel_y + 4) if(isnull(fishing_line)) //couldn't create a fishing line, probably because we don't have a good line of sight. qdel(src) return @@ -351,11 +357,12 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) if(win) if(reward_path != FISHING_DUD) playsound(location, 'sound/effects/bigsplash.ogg', 100) - if(ispath(reward_path, /obj/item/fish)) + if(ispath(reward_path, /obj/item/fish) || isfish(reward_path)) var/obj/item/fish/fish_reward = reward_path - var/fish_id = initial(fish_reward.fish_id) + var/obj/item/fish/redirect_path = initial(fish_reward.fish_id_redirect_path) + var/fish_id = ispath(redirect_path, /obj/item/fish) ? initial(redirect_path.fish_id) : initial(fish_reward.fish_id) if(fish_id) - user.client?.give_award(/datum/award/score/progress/fish, user, initial(fish_reward.fish_id)) + user.client?.give_award(/datum/award/score/progress/fish, user, fish_id) SEND_SIGNAL(user, COMSIG_MOB_COMPLETE_FISHING, src, win) if(!QDELETED(src)) qdel(src) @@ -369,7 +376,7 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) if(penalty) wait_time = min(timeleft(next_phase_timer) + rand(3 SECONDS, 5 SECONDS), 30 SECONDS) else - wait_time = float.spin_frequency ? rand(11 SECONDS, 17 SECONDS) : rand(3 SECONDS, 25 SECONDS) + wait_time = rand(wait_time_range[1], wait_time_range[2]) if(special_effects & FISHING_MINIGAME_AUTOREEL && wait_time >= 15 SECONDS) wait_time = max(wait_time - 7.5 SECONDS, 15 SECONDS) deltimer(next_phase_timer) @@ -391,7 +398,13 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) playsound(location, 'sound/effects/fish_splash.ogg', 100) if(HAS_MIND_TRAIT(user, TRAIT_REVEAL_FISH)) - fish_icon = GLOB.specific_fish_icons[reward_path] || FISH_ICON_DEF + var/possible_icon + if(isatom(reward_path)) + var/atom/reward = reward_path + possible_icon = GLOB.specific_fish_icons[reward.type] + else + possible_icon = GLOB.specific_fish_icons[reward_path] + fish_icon = possible_icon || FISH_ICON_DEF switch(fish_icon) if(FISH_ICON_DEF) send_alert("fish!!!") @@ -423,6 +436,8 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) send_alert("seed!!!") if(FISH_ICON_BOTTLE) send_alert("bottle!!!") + if(FISH_ICON_ORGAN) + send_alert("organ!!!") else send_alert("!!!") animate(float, pixel_y = 3, time = 5, loop = -1, flags = ANIMATION_RELATIVE) @@ -447,11 +462,22 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) SIGNAL_HANDLER interrupt() +/datum/fishing_challenge/proc/on_reward_removed(datum/source) + SIGNAL_HANDLER + send_alert("reward gone!") + interrupt() + +/datum/fishing_challenge/proc/on_fish_death(obj/item/fish/source) + SIGNAL_HANDLER + if(source.status == FISH_DEAD) + win_anyway() + /datum/fishing_challenge/proc/win_anyway() - if(!completed) - //winning by timeout or idling around shouldn't give as much experience. - experience_multiplier *= 0.5 - complete(TRUE) + if(completed) + return + //winning by timeout / fish death shouldn't give as much experience. + experience_multiplier *= 0.5 + complete(TRUE) /datum/fishing_challenge/proc/hurt_fish(datum/source, obj/item/fish/reward) SIGNAL_HANDLER @@ -498,13 +524,15 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) if(difficulty > FISHING_DEFAULT_DIFFICULTY) completion -= MAX_FISH_COMPLETION_MALUS * (difficulty * 0.01) + var/is_fish_instance = isfish(reward_path) + /// Fish minigame properties - if(ispath(reward_path,/obj/item/fish)) + if(ispath(reward_path,/obj/item/fish) || is_fish_instance) var/obj/item/fish/fish = reward_path var/movement_path = initial(fish.fish_movement_type) mover = new movement_path(src) // Apply fish trait modifiers - var/list/fish_traits = SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS] + var/list/fish_traits = is_fish_instance ? fish.fish_traits : SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS] for(var/fish_trait in fish_traits) var/datum/fish_trait/trait = GLOB.fish_traits[fish_trait] trait.minigame_mod(used_rod, user, src) @@ -544,6 +572,11 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user) var/obj/item/fish/fish = reward_path var/wait_time = (initial(fish.health) / FISH_DAMAGE_PER_SECOND) SECONDS addtimer(CALLBACK(src, PROC_REF(win_anyway)), wait_time, TIMER_DELETE_ME) + else if(ismovable(reward_path)) + var/atom/movable/reward = reward_path + RegisterSignal(reward, COMSIG_MOVABLE_MOVED, PROC_REF(on_reward_removed)) + if(is_fish_instance) + RegisterSignal(reward, COMSIG_FISH_STATUS_CHANGED, PROC_REF(on_fish_death)) start_time = world.time ///Throws a stack with prefixed text. diff --git a/code/modules/fishing/fishing_portal_machine.dm b/code/modules/fishing/fishing_portal_machine.dm index 8b2f1a34e93f7..ad63703155633 100644 --- a/code/modules/fishing/fishing_portal_machine.dm +++ b/code/modules/fishing/fishing_portal_machine.dm @@ -19,6 +19,8 @@ var/long_range_link = FALSE /// contains ALL fishing destinations. var/all_destinations = FALSE + /// If the current active fishing spot is from multitool linkage, this value is the atom it would originally belong to. + var/atom/current_linked_atom /obj/machinery/fishing_portal_generator/Initialize(mapload) . = ..() @@ -202,7 +204,7 @@ if(machine_stat & NOPOWER) balloon_alert(user, "no power!") return ITEM_INTERACT_BLOCKING - if(!istype(selected_source, /datum/fish_source/portal)) //likely from a linked fishing spot + if(!all_destinations && !istype(selected_source, /datum/fish_source/portal)) //likely from a linked fishing spot var/abort = TRUE for(var/atom/spot as anything in linked_fishing_spots) if(linked_fishing_spots[spot] != selected_source) @@ -215,6 +217,7 @@ abort = FALSE if(!abort) RegisterSignal(spot, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(on_fishing_spot_z_level_changed)) + current_linked_atom = spot break if(abort && !all_destinations) balloon_alert(user, "cannot reach linked!") @@ -233,6 +236,7 @@ for(var/atom/spot as anything in linked_fishing_spots) if(linked_fishing_spots[spot] == active.fish_source) UnregisterSignal(spot, COMSIG_MOVABLE_Z_CHANGED) + current_linked_atom = null QDEL_NULL(active) REMOVE_TRAIT(src, TRAIT_CATCH_AND_RELEASE, INNATE_TRAIT) diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index 4bd045616b3e8..9fc26ee10ae15 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -140,7 +140,7 @@ var/list/block = list() var/get_percent = HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH) block += span_info("You think you can cast it up to [get_cast_range()] tiles away.") - block += get_stat_info(get_percent, difficulty_modifier, "Fishing will be", "easier", "harder", "with this fishing rod") + block += get_stat_info(get_percent, difficulty_modifier * 0.01, "Fishing will be", "easier", "harder", "with this fishing rod", offset = 0) block += get_stat_info(get_percent, experience_multiplier, "You will gain experience", "faster", "slower") block += get_stat_info(get_percent, completion_speed_mult, "You should complete the minigame", "faster", "slower") block += get_stat_info(get_percent, bait_speed_mult, "Reeling is", "faster", "slower") @@ -148,6 +148,7 @@ block += get_stat_info(get_percent, bounciness_mult, "This fishing rod is ", "bouncier", "less bouncy", "than a normal one", less_is_better = TRUE) block += get_stat_info(get_percent, gravity_mult, "The lure will sink", "faster", "slower", span_info = TRUE) + list_clear_nulls(block) . += examine_block(block.Join("\n")) if(get_percent && (material_flags & MATERIAL_EFFECTS) && length(custom_materials)) @@ -172,15 +173,16 @@ . += examine_block(block.Join("\n")) ///Used in examine_more to reduce all the copypasta when getting more information about the various stats of the fishing rod. -/obj/item/fishing_rod/proc/get_stat_info(get_percent, value, prefix, easier, harder, suffix = "with this fishing rod", span_info = FALSE, less_is_better = FALSE) +/obj/item/fishing_rod/proc/get_stat_info(get_percent, value, prefix, easier, harder, suffix = "with this fishing rod", span_info = FALSE, less_is_better = FALSE, offset = 1) if(value == 1) return - var/percent = get_percent ? "[abs(value)]% " : "" - var/harder_easier = value > 1 ? easier : harder + value -= offset + var/percent = get_percent ? "[abs(value * 100)]% " : "" + var/harder_easier = value > 0 ? easier : harder . = "[prefix] [percent][harder_easier] [suffix]." if(span_info) return span_info(.) - if(less_is_better ? value < 1 : value > 1) + if(less_is_better ? value < 0 : value > 0) return span_nicegreen(.) return span_danger(.) @@ -332,7 +334,7 @@ QDEL_NULL(fishing_line) var/beam_color = line?.line_color || default_line_color fishing_line = new(firer, target, icon_state = "fishing_line", beam_color = beam_color, emissive = FALSE, override_target_pixel_y = target_py) - fishing_line.lefthand = firer.get_held_index_of_item(src) % 2 == 1 + fishing_line.lefthand = IS_LEFT_INDEX(firer.get_held_index_of_item(src)) RegisterSignal(fishing_line, COMSIG_BEAM_BEFORE_DRAW, PROC_REF(check_los)) RegisterSignal(fishing_line, COMSIG_QDELETING, PROC_REF(clear_line)) INVOKE_ASYNC(fishing_line, TYPE_PROC_REF(/datum/beam/, Start)) @@ -425,13 +427,13 @@ casting = TRUE var/obj/projectile/fishing_cast/cast_projectile = new(get_turf(src)) cast_projectile.range = get_cast_range(user) - cast_projectile.decayedRange = get_cast_range(user) + cast_projectile.maximum_range = get_cast_range(user) cast_projectile.owner = src cast_projectile.original = target cast_projectile.fired_from = src cast_projectile.firer = user cast_projectile.impacted = list(WEAKREF(user) = TRUE) - cast_projectile.preparePixelProjectile(target, user) + cast_projectile.aim_projectile(target, user) cast_projectile.fire() COOLDOWN_START(src, casting_cd, 1 SECONDS) @@ -830,11 +832,12 @@ /obj/projectile/fishing_cast name = "fishing hook" icon = 'icons/obj/fishing.dmi' - icon_state = "hook_projectile" + icon_state = "hook" damage = 0 range = 5 suppressed = SUPPRESSED_VERY can_hit_turfs = TRUE + projectile_angle = 180 var/obj/item/fishing_rod/owner var/datum/beam/our_line @@ -842,7 +845,6 @@ /obj/projectile/fishing_cast/fire(angle, atom/direct_target) if(owner.hook) icon_state = owner.hook.icon_state - transform = transform.Scale(1, -1) . = ..() if(!QDELETED(src)) our_line = owner.create_fishing_line(src, firer) diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index 09ef60c1ff632..abf3a298462cb 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -1,4 +1,4 @@ -GLOBAL_LIST_INIT(preset_fish_sources, init_subtypes_w_path_keys(/datum/fish_source, list())) +GLOBAL_LIST_INIT_TYPED(preset_fish_sources, /datum/fish_source, init_subtypes_w_path_keys(/datum/fish_source, list())) /** * When adding new fishable rewards to a table/counts, you can specify an icon to show in place of the @@ -60,6 +60,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) )) return_list[FISHING_RANDOM_SEED] = FISH_ICON_SEED + return_list[FISHING_RANDOM_ORGAN] = FISH_ICON_ORGAN return return_list /** @@ -87,12 +88,14 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) /// Background image name from /datum/asset/simple/fishing_minigame var/background = "background_default" var/fish_source_flags = NONE - /// If FISH_SOURCE_FLAG_EXPLOSIVE_MALUS is set, this will be used to keep track of the turfs where an explosion happened for when we'll spawn the loot. - var/list/exploded_turfs + /// If FISH_SOURCE_FLAG_EXPLOSIVE_MALUS is set, this will track of how much we're "exhausting" the system by bombing it repeatedly. + var/explosive_fishing_score = 0 ///When linked to a fishing portal, this will be the icon_state of this option in the radial menu var/radial_state = "default" ///When selected by the fishing portal, this will be the icon_state of the overlay shown on the machine. var/overlay_state = "portal_aquarium" + ///If set, this overrides the upper and lower bounds of how long you should wait during the waiting phase of the minigame. + var/list/wait_time_range /// Mindless mobs that can fish will never pull up items on this list var/static/list/profound_fisher_blacklist = typecacheof(list( @@ -119,9 +122,12 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) for(var/path in fish_counts) if(!(path in fish_table)) stack_trace("path [path] found in the 'fish_counts' list but not in the 'fish_table'") + if(wait_time_range && length(wait_time_range) != 2) + stack_trace("wait_time_range for [type] is set but has length different than two") /datum/fish_source/Destroy() - exploded_turfs = null + if(explosive_fishing_score) + STOP_PROCESSING(SSprocessing, src) return ..() ///Called when src is set as the fish source of a fishing spot component @@ -174,16 +180,20 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) // Difficulty modifier added by the rod . += rod.difficulty_modifier - if(!ispath(result,/obj/item/fish)) + var/is_fish_instance = isfish(result) + if(!ispath(result,/obj/item/fish) && !is_fish_instance) // In the future non-fish rewards can have variable difficulty calculated here return var/obj/item/fish/caught_fish = result - var/list/fish_properties = SSfishing.fish_properties[caught_fish] + + //Just to clarify when we should use the path instead of the fish, which can be both a path and an instance. + var/result_path = is_fish_instance ? caught_fish.type : result + // Baseline fish difficulty . += initial(caught_fish.fishing_difficulty_modifier) - + var/list/fish_properties = SSfishing.fish_properties[result_path] if(rod.bait) var/obj/item/bait = rod.bait //Fav bait makes it easier @@ -198,7 +208,11 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) . += DISLIKED_BAIT_DIFFICULTY_MOD // Matching/not matching fish traits and equipment - var/list/fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] + var/list/fish_traits + if(is_fish_instance) + fish_traits = caught_fish.fish_traits + else + fish_traits = fish_properties[FISH_PROPERTIES_TRAITS] var/additive_mod = 0 var/multiplicative_mod = 1 @@ -211,6 +225,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) . += additive_mod . *= multiplicative_mod + ///Comsig proc from the fishing minigame for 'roll_reward' /datum/fish_source/proc/roll_reward_minigame(datum/source, obj/item/fishing_rod/rod, mob/fisherman, atom/location, list/rewards) SIGNAL_HANDLER @@ -242,15 +257,14 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) UnregisterSignal(user, COMSIG_MOB_COMPLETE_FISHING) if(!success) return - var/turf/fishing_spot = get_turf(challenge.float) - var/atom/movable/reward = dispense_reward(challenge.reward_path, user, fishing_spot) + var/atom/movable/reward = dispense_reward(challenge.reward_path, user, challenge.location) if(reward) user.add_mob_memory(/datum/memory/caught_fish, protagonist = user, deuteragonist = reward.name) SEND_SIGNAL(challenge.used_rod, COMSIG_FISHING_ROD_CAUGHT_FISH, reward, user) challenge.used_rod.on_reward_caught(reward, user) /// Gives out the reward if possible -/datum/fish_source/proc/dispense_reward(reward_path, mob/fisherman, turf/fishing_spot) +/datum/fish_source/proc/dispense_reward(reward_path, mob/fisherman, atom/fishing_spot) var/atom/movable/reward = simple_dispense_reward(reward_path, get_turf(fisherman), fishing_spot) if(!reward) //balloon alert instead fisherman.balloon_alert(fisherman, pick(duds)) @@ -260,14 +274,12 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) else if(istype(reward, /obj/effect/spawner)) // Do not attempt to forceMove() a spawner. It will break things, and the spawned item should already be at the mob's turf by now. fisherman.balloon_alert(fisherman, "caught something!") return - else // for fishing things like corpses, move them to the turf of the fisherman - INVOKE_ASYNC(reward, TYPE_PROC_REF(/atom/movable, forceMove), get_turf(fisherman)) fisherman.balloon_alert(fisherman, "caught [reward]!") return reward ///Simplified version of dispense_reward that doesn't need a fisherman. -/datum/fish_source/proc/simple_dispense_reward(reward_path, atom/spawn_location, turf/fishing_spot) +/datum/fish_source/proc/simple_dispense_reward(reward_path, atom/spawn_location, atom/fishing_spot) if(isnull(reward_path)) return null var/area/area = get_area(fishing_spot) @@ -298,9 +310,13 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) addtimer(CALLBACK(src, PROC_REF(regen_count), reward_path), regen_time) /// Spawns a reward from a atom path right where the fisherman is. Part of the dispense_reward() logic. -/datum/fish_source/proc/spawn_reward(reward_path, atom/spawn_location, turf/fishing_spot) +/datum/fish_source/proc/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot) if(reward_path == FISHING_DUD) return + if(ismovable(reward_path)) + var/atom/movable/reward = reward_path + reward.forceMove(spawn_location) + return reward if(ispath(reward_path, /datum/chasm_detritus)) return GLOB.chasm_detritus_types[reward_path].dispense_detritus(spawn_location, fishing_spot) if(!ispath(reward_path, /atom/movable)) @@ -312,7 +328,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) return reward /// Returns the fish table, with with the unavailable items from fish_counts removed. -/datum/fish_source/proc/get_fish_table(from_explosion = FALSE) +/datum/fish_source/proc/get_fish_table(atom/location, from_explosion = FALSE) var/list/table = fish_table.Copy() //message bottles cannot spawn from explosions. They're meant to be one-time messages (rarely) and photos from past rounds //and it would suck if the pool of bottle messages were constantly being emptied by explosive fishing. @@ -331,8 +347,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) ///Multiplier used to make fishes more common compared to everything else. var/result_multiplier = 1 - - var/list/final_table = get_fish_table() + var/list/final_table = get_fish_table(location) if(bait) for(var/trait in weight_result_multiplier) @@ -352,7 +367,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) final_table[result] *= rod.hook.get_hook_bonus_multiplicative(result) final_table[result] += rod.hook.get_hook_bonus_additive(result)//Decide on order here so it can be multiplicative - if(ispath(result, /obj/item/fish)) + if(ispath(result, /obj/item/fish) || isfish(result)) if(bait) final_table[result] = round(final_table[result] * result_multiplier, 1) var/mult = bait.check_bait(result) @@ -379,7 +394,7 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) var/highest_fish_weight var/list/collected_fish_weights = list() for(var/fishable in table) - if(ispath(fishable, /obj/item/fish)) + if(ispath(fishable, /obj/item/fish) || isfish(fishable)) var/fish_weight = table[fishable] collected_fish_weights[fishable] = fish_weight if(fish_weight > highest_fish_weight) @@ -392,30 +407,38 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) table[fish] += round(difference**exponent, 1) /datum/fish_source/proc/get_fish_trait_catch_mods(weight, obj/item/fish/fish, obj/item/fishing_rod/rod, mob/user, atom/location) - if(!ispath(fish, /obj/item/fish)) + var/is_fish_instance = isfish(fish) + if(!ispath(fish, /obj/item/fish) && !is_fish_instance) return weight var/multiplier = 1 - for(var/fish_trait in SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS]) + var/list/fish_traits + if(is_fish_instance) + fish_traits = fish.fish_traits + else + fish_traits = SSfishing.fish_properties[fish][FISH_PROPERTIES_TRAITS] + for(var/fish_trait in fish_traits) var/datum/fish_trait/trait = GLOB.fish_traits[fish_trait] - var/list/mod = trait.catch_weight_mod(rod, user, location, fish) + var/list/mod = trait.catch_weight_mod(rod, user, location, is_fish_instance ? fish.type : fish) weight += mod[ADDITIVE_FISHING_MOD] multiplier *= mod[MULTIPLICATIVE_FISHING_MOD] return round(weight * multiplier, 1) ///returns true if this fishing spot has fish that are shown in the catalog. -/datum/fish_source/proc/has_known_fishes() - for(var/reward in fish_table) - if(!ispath(reward, /obj/item/fish)) +/datum/fish_source/proc/has_known_fishes(atom/location) + var/show_anyway = fish_source_flags & FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG + for(var/reward in get_fish_table(location)) + if(!ispath(reward, /obj/item/fish) && !isfish(reward)) continue var/obj/item/fish/prototype = reward - if(initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG) + if(!show_anyway && initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG) return TRUE return FALSE ///Add a string with the names of catchable fishes to the examine text. /datum/fish_source/proc/get_catchable_fish_names(mob/user, atom/location, list/examine_text) var/list/known_fishes = list() + var/show_anyway = fish_source_flags & FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG var/obj/item/fishing_rod/rod = user.get_active_held_item() var/list/final_table @@ -428,17 +451,18 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) var/list/rodless_weights = list() var/total_rod_weight = 0 var/list/rod_weights = list() - for(var/reward in fish_table) - var/weight = fish_table[reward] + var/list/table = get_fish_table(location) + for(var/reward in table) + var/weight = table[reward] var/final_weight if(rod) total_weight += weight final_weight = final_table[reward] total_rod_weight += final_weight - if(!ispath(reward, /obj/item/fish)) + if(!ispath(reward, /obj/item/fish) && !isfish(reward)) continue var/obj/item/fish/prototype = reward - if(!(initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG)) + if(!show_anyway && !(initial(prototype.fish_flags) & FISH_FLAG_SHOW_IN_CATALOG)) continue if(rod) rodless_weights[reward] = weight @@ -467,32 +491,30 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) var/info = "You can catch the following fish here" if(rod) - info = span_tooltip("boldened are the fish you're more likely to catch with your current setup. The opposite is true for smaller names", info) + info = span_tooltip("In bold are fish you're more likely to catch with the current setup. The opposite is true for the smaller font", info) examine_text += span_info("[info]: [english_list(known_fishes)].") +///How much the explosive_fishing_score impacts explosive fishing. The higher the value, the stronger the malus for repeated calls +#define EXPLOSIVE_FISHING_MALUS_EXPONENT 0.55 +///How much the explosive_fishing_score is reduced each second. +#define EXPLOSIVE_FISHING_RECOVERY_RATE 0.18 + /datum/fish_source/proc/spawn_reward_from_explosion(atom/location, severity) - if(!(fish_source_flags & FISH_SOURCE_FLAG_EXPLOSIVE_MALUS)) - explosive_spawn(isturf(location) ? location : location.drop_location(), severity) - return - if(isnull(exploded_turfs)) - exploded_turfs = list() - addtimer(CALLBACK(src, PROC_REF(post_explosion_spawn)), 1) //run this the next tick. - var/turf/turf = get_turf(location) - var/peak_severity = max(exploded_turfs[turf], severity) - exploded_turfs[turf] = peak_severity - -/datum/fish_source/proc/post_explosion_spawn() - var/multiplier = 1/(length(exploded_turfs)**0.5) - for(var/turf/turf as anything in exploded_turfs) - explosive_spawn(turf, exploded_turfs[turf], multiplier) - exploded_turfs = null - -/datum/fish_source/proc/explosive_spawn(atom/location, severity, multiplier = 1) + SIGNAL_HANDLER + var/multiplier = 1 + if(fish_source_flags & FISH_SOURCE_FLAG_EXPLOSIVE_MALUS) + if(explosive_fishing_score <= 0) + explosive_fishing_score = 1 + START_PROCESSING(SSprocessing, src) + else + explosive_fishing_score++ + multiplier = explosive_fishing_score**-EXPLOSIVE_FISHING_MALUS_EXPONENT for(var/i in 1 to (severity + 2)) if(!prob((100 + 100 * severity)/i * multiplier)) continue - var/reward_loot = pick_weight(get_fish_table(from_explosion = TRUE)) - var/atom/movable/reward = simple_dispense_reward(reward_loot, location, location) + var/reward_loot = pick_weight(get_fish_table(location, from_explosion = TRUE)) + var/atom/spawn_location = isturf(location) ? location : location.drop_location() + var/atom/movable/reward = simple_dispense_reward(reward_loot, spawn_location, location) if(isnull(reward)) continue if(isfish(reward)) @@ -504,6 +526,15 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons()) if(severity >= EXPLODE_DEVASTATE) reward.ex_act(EXPLODE_LIGHT) +/datum/fish_source/process(seconds_per_tick) + explosive_fishing_score -= EXPLOSIVE_FISHING_RECOVERY_RATE * seconds_per_tick + if(explosive_fishing_score <= 0) + STOP_PROCESSING(SSprocessing, src) + explosive_fishing_score = 0 + +#undef EXPLOSIVE_FISHING_MALUS_EXPONENT +#undef EXPLOSIVE_FISHING_RECOVERY_RATE + ///Called when releasing a fish in a fishing spot with the TRAIT_CATCH_AND_RELEASE trait. /datum/fish_source/proc/readd_fish(obj/item/fish/fish, mob/living/releaser) var/is_morbid = HAS_MIND_TRAIT(releaser, TRAIT_MORBID) diff --git a/code/modules/fishing/sources/source_types.dm b/code/modules/fishing/sources/source_types.dm index eafdbe989991d..6f2a38d4d6146 100644 --- a/code/modules/fishing/sources/source_types.dm +++ b/code/modules/fishing/sources/source_types.dm @@ -27,8 +27,9 @@ fish_count_regen = list( /obj/item/fish/clownfish/lube = 3 MINUTES, /obj/item/fish/swordfish = 5 MINUTES, + /obj/structure/mystery_box/fishing = 32 MINUTES, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS /datum/fish_source/ocean/beach @@ -47,7 +48,7 @@ /obj/item/fish/chasm_crab/ice = 2, /obj/item/fish/boned = 1, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 /datum/fish_source/river catalog_description = "River water" @@ -57,10 +58,10 @@ FISHING_DUD = 4, /obj/item/fish/goldfish = 5, /obj/item/fish/guppy = 5, + /obj/item/fish/plasmatetra = 4, /obj/item/fish/perch = 4, /obj/item/fish/angelfish = 4, /obj/item/fish/catfish = 4, - /obj/item/fish/perch = 5, /obj/item/fish/slimefish = 2, /obj/item/fish/sockeye_salmon = 1, /obj/item/fish/arctic_char = 1, @@ -73,7 +74,7 @@ fish_count_regen = list( /obj/item/fish/pike = 4 MINUTES, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS /datum/fish_source/sand @@ -86,7 +87,7 @@ /obj/item/fish/bumpy = 10, /obj/item/coin/gold = 3, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS /datum/fish_source/cursed_spring @@ -101,7 +102,7 @@ fish_counts = list( /obj/item/fishing_rod/telescopic/master = 1, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 35 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS /datum/fish_source/portal @@ -112,6 +113,7 @@ /obj/item/fish/angelfish = 10, /obj/item/fish/perch = 5, /obj/item/fish/goldfish/three_eyes = 3, + /obj/item/fish/plasmatetra = 3, ) catalog_description = "Aquarium dimension (Fishing portal generator)" radial_state = "fish_tank" @@ -153,7 +155,7 @@ /obj/item/stack/sheet/bone = 5, ) catalog_description = "Chasm dimension (Fishing portal generator)" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 radial_name = "Chasm" overlay_state = "portal_chasm" radial_state = "ground_hole" @@ -181,7 +183,7 @@ /obj/item/fish/swordfish = 5 MINUTES, ) catalog_description = "Ocean dimension (Fishing portal generator)" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 radial_name = "Ocean" overlay_state = "portal_ocean" radial_state = "seaboat" @@ -204,7 +206,7 @@ /obj/item/stack/ore/bluespace_crystal = 10, ) catalog_description = "Hyperspace dimension (Fishing portal generator)" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 radial_name = "Hyperspace" overlay_state = "portal_hyperspace" radial_state = "space_rocket" @@ -230,7 +232,7 @@ ) catalog_description = "Syndicate dimension (Fishing portal generator)" radial_name = "Syndicate" - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 overlay_state = "portal_syndicate" radial_state = "syndi_snake" @@ -293,7 +295,7 @@ mover.long_jump_velocity_limit += rand(-100, 100) ///Cherry on top, fish caught from the randomizer portal also have (almost completely) random traits -/datum/fish_source/portal/random/spawn_reward(reward_path, atom/movable/spawn_location, turf/fishing_spot) +/datum/fish_source/portal/random/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot) if(!ispath(reward_path, /obj/item/fish)) return ..() @@ -323,7 +325,7 @@ /obj/item/fish/chasm_crab = 15, /datum/chasm_detritus = 30, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 /datum/fish_source/chasm/on_start_fishing(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) . = ..() @@ -358,8 +360,10 @@ fish_counts = list( /obj/structure/closet/crate/necropolis/tendril = 1 ) - - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10 + fish_count_regen = list( + /obj/structure/closet/crate/necropolis/tendril = 27 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS /datum/fish_source/lavaland/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) @@ -386,6 +390,10 @@ /obj/item/stack/sheet/mineral/adamantine = 3, /obj/item/stack/sheet/mineral/runite = 2, ) + fish_count_regen = list( + /obj/item/stack/sheet/mineral/adamantine = 8 MINUTES, + /obj/item/stack/sheet/mineral/runite = 10 MINUTES, + ) overlay_state = "portal_plasma" /datum/fish_source/moisture_trap @@ -397,7 +405,7 @@ /obj/item/fish/ratfish = 10, /obj/item/fish/slimefish = 4, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 /datum/fish_source/toilet catalog_description = "Station toilets" @@ -415,7 +423,7 @@ /obj/item/storage/wallet/money = 2, /obj/item/survivalcapsule/fishing = 1, ) - fishing_difficulty = FISHING_EASY_DIFFICULTY //For beginners + fishing_difficulty = FISHING_EASY_DIFFICULTY + 10 /datum/fish_source/holographic catalog_description = "Holographic water" @@ -428,7 +436,7 @@ /obj/item/fish/holo/checkered = 5, /obj/item/fish/holo/halffish = 5, ) - fishing_difficulty = FISHING_EASY_DIFFICULTY + fishing_difficulty = FISHING_EASY_DIFFICULTY + 10 fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD /datum/fish_source/holographic/on_fishing_spot_init(datum/component/fishing_spot/spot) @@ -485,7 +493,7 @@ fish_count_regen = list( /obj/item/fish/mastodon = 8 MINUTES, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 15 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 25 /datum/fish_source/hydro_tray catalog_description = "Hydroponics trays" @@ -508,7 +516,7 @@ /mob/living/basic/frog = 1, /mob/living/basic/axolotl = 1, ) - fishing_difficulty = FISHING_EASY_DIFFICULTY - 5 + fishing_difficulty = FISHING_EASY_DIFFICULTY + 5 /datum/fish_source/hydro_tray/generate_wiki_contents(datum/autowiki/fish_sources/wiki) var/list/data = list() @@ -573,7 +581,7 @@ return return ..() -/datum/fish_source/hydro_tray/spawn_reward(reward_path, mob/fisherman, turf/fishing_spot) +/datum/fish_source/hydro_tray/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot) if(reward_path != FISHING_RANDOM_SEED) var/mob/living/created_reward = ..() if(istype(created_reward)) @@ -594,7 +602,7 @@ seeds_to_draw_from -= seed_path var/picked_path = pick(seeds_to_draw_from) - return new picked_path(get_turf(fishing_spot)) + return new picked_path(spawn_location) /datum/fish_source/carp_rift catalog_description = "Space Dragon Rifts" @@ -614,7 +622,10 @@ fish_counts = list( /mob/living/basic/carp/mega = 2, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 18 + fish_count_regen = list( + /mob/living/basic/carp/mega = 9 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 28 /datum/fish_source/deepfryer catalog_description = "Deep Fryers" @@ -635,8 +646,98 @@ fish_count_regen = list( /obj/item/fish/fryish = 2 MINUTES, /obj/item/fish/fryish/fritterish = 6 MINUTES, + /obj/item/fish/fryish/nessie = 22 MINUTES, + ) + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 23 + +/datum/fish_source/surgery + catalog_description = "Surgery" + radial_state = "innards" + overlay_state = "portal_syndicate" //Didn't feel like spriting a new overlay. It's just all red anyway. + background = "background_lavaland" //Kinda red. + fish_table = list(FISHING_RANDOM_ORGAN = 10) + //This should get you below zero difficulty and skip the minigame phase, unless you're wearing something that counteracts this. + fishing_difficulty = -10 + //The range for waiting is also a bit narrower, so it cannot take as few as 3 seconds or as many as 25 to snatch an organ. + wait_time_range = list(6 SECONDS, 12 SECONDS) + +/datum/fish_source/surgery/spawn_reward(reward_path, atom/spawn_location, atom/fishing_spot) + if(istype(fishing_spot, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = fishing_spot + fishing_spot = portal.current_linked_atom + if(!iscarbon(fishing_spot)) + var/random_type = pick(subtypesof(/obj/item/organ) - GLOB.prototype_organs) + return new random_type(spawn_location) + + var/mob/living/carbon/carbon = fishing_spot + var/list/possible_organs = list() + for(var/datum/surgery/organ_manipulation/operation in carbon.surgeries) + var/datum/surgery_step/manipulate_organs/manip_step = GLOB.surgery_steps[operation.steps[operation.status]] + if(!istype(manip_step)) + continue + for(var/obj/item/organ/organ in operation.operated_bodypart) + if(organ.organ_flags & ORGAN_UNREMOVABLE || !manip_step.can_use_organ(organ)) + continue + possible_organs |= organ + + if(!length(possible_organs)) + return null + var/obj/item/organ/chosen = pick(possible_organs) + chosen.Remove(chosen.owner) + chosen.forceMove(spawn_location) + return chosen + +/datum/fish_source/surgery/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/list/data = list() + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Organs", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = 100, + FISH_SOURCE_AUTOWIKI_NOTES = "A random organ from an ongoing organ manipulation surgery.", + )) + + return data + +#define RANDOM_AQUARIUM_FISH "random_aquarium_fish" + +/datum/fish_source/aquarium + radial_state = "fish_tank" + fish_table = list( + FISHING_DUD = 10, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 13 + fish_source_flags = FISH_SOURCE_FLAG_NO_BLUESPACE_ROD|FISH_SOURCE_FLAG_IGNORE_HIDDEN_ON_CATALOG + fishing_difficulty = FISHING_EASY_DIFFICULTY + 5 + +#undef RANDOM_AQUARIUM_FISH + +/datum/fish_source/aquarium/get_fish_table(atom/location, from_explosion = FALSE) + if(istype(location, /obj/machinery/fishing_portal_generator)) + var/obj/machinery/fishing_portal_generator/portal = location + location = portal.current_linked_atom + var/list/table = list() + for(var/obj/item/fish/fish in location) + if(fish.status == FISH_DEAD) //dead fish cannot be caught + continue + table[fish] = 10 + if(!length(table)) + return fish_table + return table + +/datum/fish_source/aquarium/spawn_reward_from_explosion(atom/location, severity) + return //If the aquarium breaks, all fish are released anyway. + +/datum/fish_source/aquarium/generate_wiki_contents(datum/autowiki/fish_sources/wiki) + var/list/data = list() + + data += LIST_VALUE_WRAP_LISTS(list( + FISH_SOURCE_AUTOWIKI_NAME = "Fish", + FISH_SOURCE_AUTOWIKI_DUD = "", + FISH_SOURCE_AUTOWIKI_WEIGHT = 100, + FISH_SOURCE_AUTOWIKI_NOTES = "Any fish currently inside the aquarium, be they alive or dead.", + )) + + return data /datum/fish_source/hot_spring catalog_description = "Hot Springs" @@ -656,7 +757,7 @@ fish_count_regen = list( /obj/item/fish/sacabambaspis = 4 MINUTES, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 30 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS /datum/fish_source/tizira @@ -671,5 +772,5 @@ /obj/item/fish/moonfish/dwarf = 2, /obj/item/fish/moonfish = 2, ) - fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 10 + fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 20 fish_source_flags = FISH_SOURCE_FLAG_EXPLOSIVE_MALUS diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm index bb532b3162483..51280fd87d6d8 100644 --- a/code/modules/food_and_drinks/machinery/coffeemaker.dm +++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm @@ -52,6 +52,7 @@ /obj/machinery/coffeemaker/Destroy() QDEL_NULL(coffeepot) QDEL_NULL(cartridge) + remove_shared_particles(/particles/smoke) return ..() /obj/machinery/coffeemaker/Exited(atom/movable/gone, direction) @@ -127,7 +128,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH|FORBID_TELEKINESIS_REACH)) + if(!can_interact(user) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH|SILENT_ADJACENCY)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN if(brewing) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN @@ -284,7 +285,7 @@ /obj/machinery/coffeemaker/ui_interact(mob/user) // The microwave Menu //I am reasonably certain that this is not a microwave //I am positively certain that this is not a microwave . = ..() - if(brewing || !user.can_perform_action(src, ALLOW_SILICON_REACH)) + if(brewing || !user.can_perform_action(src, SILENT_ADJACENCY)) return var/list/options = list() @@ -324,7 +325,7 @@ choice = show_radial_menu(user, src, options, require_near = !HAS_SILICON_ACCESS(user)) // post choice verification - if(brewing || (isAI(user) && machine_stat & NOPOWER) || !user.can_perform_action(src, ALLOW_SILICON_REACH)) + if(brewing || (isAI(user) && machine_stat & NOPOWER) || !user.can_perform_action(src, SILENT_ADJACENCY)) return switch(choice) @@ -391,10 +392,12 @@ ///Updates the smoke state to something else, setting particles if relevant /obj/machinery/coffeemaker/proc/toggle_steam() - QDEL_NULL(particles) - if(brewing) - particles = new /particles/smoke/steam/mild() - particles.position = list(-6, 0, 0) + if(!brewing) + remove_shared_particles("smoke_coffeemaker") + return + + var/obj/effect/abstract/shared_particle_holder/smoke_particles = add_shared_particles(/particles/smoke/steam/mild, "smoke_coffeemaker") + smoke_particles.particles.position = list(-6, 0, 0) /obj/machinery/coffeemaker/proc/operate_for(time, silent = FALSE) brewing = TRUE @@ -705,10 +708,12 @@ update_appearance(UPDATE_OVERLAYS) /obj/machinery/coffeemaker/impressa/toggle_steam() - QDEL_NULL(particles) - if(brewing) - particles = new /particles/smoke/steam/mild() - particles.position = list(-2, 1, 0) + if(!brewing) + remove_shared_particles("smoke_impressa") + return + + var/obj/effect/abstract/shared_particle_holder/smoke_particles = add_shared_particles(/particles/smoke/steam/mild, "smoke_impressa") + smoke_particles.particles.position = list(-2, 1, 0) /obj/machinery/coffeemaker/impressa/brew() power_change() diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm index 313bc29d199dc..4dfab9fb9474e 100644 --- a/code/modules/food_and_drinks/machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm @@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( reagents.add_reagent(/datum/reagent/consumable/nutriment/fat/oil, 25) fry_loop = new(src, FALSE) RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_cleaned)) - AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/deepfryer) + AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/deepfryer]) AddElement(/datum/element/fish_safe_storage) //Prevents fryish and fritterish from dying inside the deepfryer. /obj/machinery/deepfryer/Destroy() diff --git a/code/modules/food_and_drinks/machinery/gibber.dm b/code/modules/food_and_drinks/machinery/gibber.dm index cd50f29ffe478..4703b9fae1d1b 100644 --- a/code/modules/food_and_drinks/machinery/gibber.dm +++ b/code/modules/food_and_drinks/machinery/gibber.dm @@ -182,7 +182,7 @@ var/typeofmeat = /obj/item/food/meat/slab/human var/typeofskin - var/obj/item/food/meat/slab/allmeat[meat_produced] + var/list/results = list() var/obj/item/stack/sheet/animalhide/skin var/list/datum/disease/diseases = mob_occupant.get_static_viruses() @@ -201,22 +201,29 @@ if(isalien(C)) typeofskin = /obj/item/stack/sheet/animalhide/xeno - var/occupant_volume - if(occupant?.reagents) - occupant_volume = occupant.reagents.total_volume - for (var/i=1 to meat_produced) + for (var/i in 1 to meat_produced) var/obj/item/food/meat/slab/newmeat = new typeofmeat newmeat.name = "[sourcename] [newmeat.name]" newmeat.set_custom_materials(list(GET_MATERIAL_REF(/datum/material/meat/mob_meat, occupant) = 4 * SHEET_MATERIAL_AMOUNT)) - if(istype(newmeat)) - newmeat.subjectname = sourcename - newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first - if(occupant_volume) - occupant.reagents.trans_to(newmeat, occupant_volume / meat_produced, remove_blacklisted = TRUE) - if(sourcejob) - newmeat.subjectjob = sourcejob + if(!istype(newmeat)) + continue + newmeat.subjectname = sourcename + if(sourcejob) + newmeat.subjectjob = sourcejob + + results += newmeat + + SEND_SIGNAL(occupant, COMSIG_LIVING_GIBBER_ACT, user, src, results) + + var/reagents_in_produced = 0 + for(var/obj/item/result as anything in results) + if(result.reagents) + reagents_in_produced++ + + for(var/obj/item/result as anything in results) + occupant.reagents.trans_to(result, occupant.reagents.total_volume / reagents_in_produced, remove_blacklisted = TRUE) + result.reagents?.add_reagent(/datum/reagent/consumable/nutriment/fat, sourcenutriment / reagents_in_produced) // Thehehe. Fat guys go first - allmeat[i] = newmeat if(typeofskin) skin = new typeofskin @@ -227,9 +234,9 @@ mob_occupant.ghostize() set_occupant(null) qdel(mob_occupant) - addtimer(CALLBACK(src, PROC_REF(make_meat), skin, allmeat, meat_produced, gibtype, diseases), gibtime) + addtimer(CALLBACK(src, PROC_REF(make_meat), skin, results, meat_produced, gibtype, diseases), gibtime) -/obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/obj/item/food/meat/slab/allmeat, meat_produced, gibtype, list/datum/disease/diseases) +/obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/results, meat_produced, gibtype, list/datum/disease/diseases) playsound(src.loc, 'sound/effects/splat.ogg', 50, TRUE) operating = FALSE if (!dirty && prob(50)) @@ -239,9 +246,9 @@ if(skin) skin.forceMove(loc) skin.throw_at(pick(nearby_turfs),meat_produced,3) - for (var/i=1 to meat_produced) - var/obj/item/meatslab = allmeat[i] + var/iteration = 1 + for (var/obj/item/meatslab in results) if(LAZYLEN(diseases)) var/list/datum/disease/diseases_to_add = list() for(var/datum/disease/disease as anything in diseases) @@ -254,11 +261,15 @@ meatslab.AddComponent(/datum/component/infective, diseases_to_add) meatslab.forceMove(loc) - meatslab.throw_at(pick(nearby_turfs),i,3) - for (var/turfs=1 to meat_produced) - var/turf/gibturf = pick(nearby_turfs) - if (!gibturf.density && (src in view(gibturf))) - new gibtype(gibturf, i, diseases) + meatslab.throw_at(pick(nearby_turfs), iteration, 3) + + iteration++ + + for (var/i in 1 to meat_produced**2) //2 slabs: 4 giblets, 3 slabs: 9, etc. + var/turf/gibturf = pick(nearby_turfs) + if (!gibturf.density && (src in view(gibturf))) + new gibtype(gibturf, round(1 + i / meat_produced), diseases) + pixel_x = base_pixel_x //return to its spot after shaking operating = FALSE diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index ae6e3945c94b4..53725dad38577 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -113,7 +113,7 @@ /obj/machinery/microwave/Destroy() QDEL_LIST(ingredients) QDEL_NULL(soundloop) - QDEL_NULL(particles) + remove_shared_particles(/particles/smoke) if(!isnull(cell)) QDEL_NULL(cell) return ..() @@ -707,17 +707,14 @@ if(HAS_TRAIT(smeller, TRAIT_ANOSMIA)) cant_smell += smeller visible_message(span_danger("You smell a burnt smell coming from [src]!"), ignored_mobs = cant_smell) - particles = new /particles/smoke() - addtimer(CALLBACK(src, PROC_REF(remove_smoke)), 10 SECONDS) + add_shared_particles(/particles/smoke) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, remove_shared_particles), /particles/smoke), 10 SECONDS) Shake(duration = 1 SECONDS) cycles-- use_energy(active_power_usage) addtimer(CALLBACK(src, PROC_REF(cook_loop), type, cycles, wait, cooker), wait) -/obj/machinery/microwave/proc/remove_smoke() - QDEL_NULL(particles) - /obj/machinery/microwave/power_change() . = ..() if(cell_powered) diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm index c997f34924145..e9af9338000da 100644 --- a/code/modules/food_and_drinks/machinery/oven.dm +++ b/code/modules/food_and_drinks/machinery/oven.dm @@ -31,6 +31,8 @@ var/datum/looping_sound/oven/oven_loop ///Current state of smoke coming from the oven var/smoke_state = OVEN_SMOKE_STATE_NONE + ///Currently used particle type, if any + var/particle_type /obj/machinery/oven/Initialize(mapload) . = ..() @@ -40,7 +42,8 @@ /obj/machinery/oven/Destroy() QDEL_NULL(oven_loop) - QDEL_NULL(particles) + if (particle_type) + remove_shared_particles(particle_type) return ..() /// Used to determine if the oven appears active and cooking, or offline. @@ -210,16 +213,22 @@ /obj/machinery/oven/proc/set_smoke_state(new_state) if(new_state == smoke_state) return + smoke_state = new_state + if (particle_type) + remove_shared_particles(particle_type) + particle_type = null - QDEL_NULL(particles) switch(smoke_state) if(OVEN_SMOKE_STATE_BAD) - particles = new /particles/smoke() + particle_type = /particles/smoke if(OVEN_SMOKE_STATE_NEUTRAL) - particles = new /particles/smoke/steam() + particle_type = /particles/smoke/steam if(OVEN_SMOKE_STATE_GOOD) - particles = new /particles/smoke/steam/mild() + particle_type = /particles/smoke/steam/mild + + if (particle_type) + add_shared_particles(particle_type) /obj/machinery/oven/crowbar_act(mob/living/user, obj/item/tool) return default_deconstruction_crowbar(tool, ignore_panel = TRUE) diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index 0481d1c491092..afd566b7e479d 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -526,7 +526,7 @@ /obj/machinery/smartfridge/drying/proc/toggle_drying(forceoff, mob/user) if(drying || forceoff) drying = FALSE - current_user = FALSE + current_user = null update_use_power(IDLE_POWER_USE) else drying = TRUE diff --git a/code/modules/food_and_drinks/machinery/stove_component.dm b/code/modules/food_and_drinks/machinery/stove_component.dm index 76f52345c8c35..8db59dc2739d8 100644 --- a/code/modules/food_and_drinks/machinery/stove_component.dm +++ b/code/modules/food_and_drinks/machinery/stove_component.dm @@ -11,8 +11,6 @@ VAR_FINAL/on = FALSE /// A reference to the current soup pot overtop VAR_FINAL/obj/item/container - /// A particle holder for the smoke that comes out of the soup while a container is cooking. - VAR_FINAL/obj/effect/abstract/particle_holder/soup_smoke /// Typepath of particles to use for the particle holder. VAR_FINAL/particle_type = /particles/smoke/steam/mild /// Ref to our looping sound played when cooking @@ -60,11 +58,12 @@ real_parent.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1 /datum/component/stove/UnregisterFromParent() + var/obj/machinery/real_parent = parent if(!QDELING(parent)) - var/obj/machinery/real_parent = parent container.forceMove(real_parent.drop_location()) - QDEL_NULL(soup_smoke) + if (particle_type) + real_parent.remove_shared_particles("[particle_type]_stove_[container_x]") UnregisterSignal(parent, list( COMSIG_ATOM_ATTACK_HAND_SECONDARY, @@ -248,6 +247,7 @@ SIGNAL_HANDLER var/existing_temp = container?.reagents.chem_temp || 0 + var/old_type = particle_type if(existing_temp >= SOUP_BURN_TEMP) particle_type = /particles/smoke/steam/bad else if(existing_temp >= WATER_BOILING_POINT) @@ -255,20 +255,23 @@ else particle_type = null - update_smoke() + update_smoke(old_type) + +/datum/component/stove/proc/update_smoke(old_type = null) + var/obj/obj_parent = parent + + if (old_type) + obj_parent.remove_shared_particles("[old_type]_stove_[container_x]") + + if(!on || !container?.reagents.total_volume) + soup_sound?.stop() + if (!isnull(particle_type)) + obj_parent.remove_shared_particles("[particle_type]_stove_[container_x]") + return -/datum/component/stove/proc/update_smoke() - if(on && container?.reagents.total_volume > 0) - soup_sound.start() - // Don't override existing particles, wasteful - if(isnull(soup_smoke) || soup_smoke.particles.type != particle_type) - QDEL_NULL(soup_smoke) - if(isnull(particle_type)) - return - // this gets badly murdered by sidemap - soup_smoke = new(parent, particle_type) - soup_smoke.set_particle_position(container_x, round(ICON_SIZE_Y * 0.66), 0) + soup_sound.start() + if(isnull(particle_type)) return + var/obj/effect/abstract/shared_particle_holder/soup_smoke = obj_parent.add_shared_particles(particle_type, "[particle_type]_stove_[container_x]") + soup_smoke.particles.position = list(container_x, round(ICON_SIZE_Y * 0.66), 0) - QDEL_NULL(soup_smoke) - soup_sound?.stop() diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index e4ef45bda7fde..e8456d880ed87 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -5,7 +5,7 @@ /datum/crafting_recipe/food/on_craft_completion(mob/user, atom/result) SHOULD_CALL_PARENT(TRUE) . = ..() - if(istype(result) && !isnull(user.mind)) + if(istype(result) && istype(user) && !isnull(user.mind)) ADD_TRAIT(result, TRAIT_FOOD_CHEF_MADE, REF(user.mind)) /datum/crafting_recipe/food/New() @@ -40,7 +40,7 @@ var/resulting_reagent_purity /datum/chemical_reaction/food/pre_reaction_other_checks(datum/reagents/holder) - resulting_reagent_purity = holder.get_average_purity(/datum/reagent/consumable) + resulting_reagent_purity = holder.get_average_purity() return TRUE /datum/chemical_reaction/food/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) diff --git a/code/modules/food_and_drinks/restaurant/_venue.dm b/code/modules/food_and_drinks/restaurant/_venue.dm index b37128a008765..7425b7b355573 100644 --- a/code/modules/food_and_drinks/restaurant/_venue.dm +++ b/code/modules/food_and_drinks/restaurant/_venue.dm @@ -271,10 +271,10 @@ /obj/structure/holosign/robot_seat/attack_holosign(mob/living/user, list/modifiers) return -/obj/structure/holosign/robot_seat/attacked_by(obj/item/I, mob/living/user) - . = ..() - if(I.type == projector?.type && !linked_venue.linked_seats[src]) +/obj/structure/holosign/robot_seat/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(tool.type == projector?.type && !linked_venue.linked_seats[src]) qdel(src) + return ITEM_INTERACT_SUCCESS /obj/structure/holosign/robot_seat/Destroy() linked_venue.linked_seats -= src diff --git a/code/modules/forensics/_forensics.dm b/code/modules/forensics/_forensics.dm index 8058a32e7fab4..450521e6c62de 100644 --- a/code/modules/forensics/_forensics.dm +++ b/code/modules/forensics/_forensics.dm @@ -112,7 +112,7 @@ if(!iseyemob(suspect)) return if(isaicamera(suspect)) - var/mob/eye/ai_eye/ai_camera = suspect + var/mob/eye/camera/ai/ai_camera = suspect if(!ai_camera.ai) return suspect = ai_camera.ai @@ -193,7 +193,7 @@ if(!iseyemob(suspect)) return if(isaicamera(suspect)) - var/mob/eye/ai_eye/ai_camera = suspect + var/mob/eye/camera/ai/ai_camera = suspect if(!ai_camera.ai) return suspect = ai_camera.ai diff --git a/code/modules/hallucination/delusions.dm b/code/modules/hallucination/delusions.dm index 0760d05ff46c6..da12f117803d1 100644 --- a/code/modules/hallucination/delusions.dm +++ b/code/modules/hallucination/delusions.dm @@ -230,6 +230,22 @@ return ..() +/datum/hallucination/delusion/preset/seccies + dynamic_delusion = TRUE + random_hallucination_weight = 0 + delusion_name = "Security" + affects_others = TRUE + affects_us = FALSE + +/datum/hallucination/delusion/preset/seccies/make_delusion_image(mob/over_who) + delusion_appearance = get_dynamic_human_appearance( + outfit_path = /datum/outfit/job/security, + bloody_slots = prob(5) ? ALL : NONE, + r_hand = prob(15) ? /obj/item/melee/baton/security/loaded : null, + l_hand = prob(15) ? /obj/item/melee/baton/security/loaded : null, + ) + return ..() + /// Hallucination used by the nightmare vision goggles to turn everyone except you into mares /datum/hallucination/delusion/preset/mare delusion_icon_file = 'icons/obj/clothing/masks.dmi' diff --git a/code/modules/hallucination/station_message.dm b/code/modules/hallucination/station_message.dm index 9441cdeb42a5a..55b44d18463ed 100644 --- a/code/modules/hallucination/station_message.dm +++ b/code/modules/hallucination/station_message.dm @@ -112,7 +112,7 @@ /datum/hallucination/station_message/supermatter_delam/start() SEND_SOUND(hallucinator, 'sound/effects/magic/charge.ogg') - to_chat(hallucinator, span_boldannounce("You feel reality distort for a moment...")) + to_chat(hallucinator, span_bolddanger("You feel reality distort for a moment...")) return ..() /datum/hallucination/station_message/clock_cult_ark diff --git a/code/modules/hallucination/stray_bullet.dm b/code/modules/hallucination/stray_bullet.dm index 13ace2933350a..b670cd869e9b2 100644 --- a/code/modules/hallucination/stray_bullet.dm +++ b/code/modules/hallucination/stray_bullet.dm @@ -16,7 +16,7 @@ var/obj/projectile/hallucination/fake_projectile = new fake_type(start, src) - fake_projectile.preparePixelProjectile(hallucinator, start) + fake_projectile.aim_projectile(hallucinator, start) fake_projectile.fire() QDEL_IN(src, 10 SECONDS) // Should clean up the projectile if it somehow gets stuck. @@ -32,7 +32,6 @@ ricochets_max = 0 ricochet_chance = 0 damage = 0 - projectile_type = /obj/projectile/hallucination log_override = TRUE do_not_log = TRUE /// Our parent hallucination that's created us @@ -101,7 +100,6 @@ spawn_hit(target, TRUE) qdel(src) - return TRUE /// Called when a mob is hit by the fake projectile /obj/projectile/hallucination/proc/on_mob_hit(mob/living/hit_mob) @@ -214,7 +212,7 @@ ricochets_max = 50 ricochet_chance = 80 - reflectable = REFLECT_NORMAL // No idea if this works + reflectable = TRUE /obj/projectile/hallucination/laser/apply_effect_to_hallucinator(mob/living/afflicted) afflicted.adjustStaminaLoss(20) @@ -260,7 +258,7 @@ ricochets_max = 50 ricochet_chance = 80 - reflectable = REFLECT_NORMAL // No idea if this works + reflectable = TRUE /obj/projectile/hallucination/disabler/apply_effect_to_hallucinator(mob/living/afflicted) afflicted.adjustStaminaLoss(30) diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 1107c8c25793a..6d9c380112b7c 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -341,6 +341,10 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf var/obj/item/clothing/under/holo_clothing = holo_atom holo_clothing.dump_attachments() + if(istype(holo_atom, /obj/item/organ)) + var/obj/item/organ/holo_organ = holo_atom + if(holo_organ.owner) // a mob has the holo organ inside them... oh dear + to_chat(holo_organ.owner, span_warning("\The [holo_organ] inside of you fades away!")) if(!silent) visible_message(span_notice("[holo_atom] fades away!")) diff --git a/code/modules/hydroponics/beekeeping/bee_smoker.dm b/code/modules/hydroponics/beekeeping/bee_smoker.dm index 3daa75f89e63a..d04c72adfd669 100644 --- a/code/modules/hydroponics/beekeeping/bee_smoker.dm +++ b/code/modules/hydroponics/beekeeping/bee_smoker.dm @@ -25,6 +25,10 @@ . = ..() beesmoke_loop = new(src) +/obj/item/bee_smoker/Destroy(force) + remove_shared_particles(/particles/smoke/bee_smoke) + return ..() + /obj/item/bee_smoker/attack_self(mob/user) . = ..() if(.) @@ -100,13 +104,13 @@ if(!activated) beesmoke_loop.stop() - QDEL_NULL(particles) + remove_shared_particles(/particles/smoke/bee_smoke) STOP_PROCESSING(SSobj, src) return beesmoke_loop.start() START_PROCESSING(SSobj, src) - particles = new /particles/smoke/bee_smoke + add_shared_particles(/particles/smoke/bee_smoke) /particles/smoke/bee_smoke lifespan = 0.4 SECONDS diff --git a/code/modules/hydroponics/grown/gatfruit.dm b/code/modules/hydroponics/grown/gatfruit.dm index c6de17d6eb684..8772b06c57195 100644 --- a/code/modules/hydroponics/grown/gatfruit.dm +++ b/code/modules/hydroponics/grown/gatfruit.dm @@ -2,7 +2,7 @@ // Gatfruit /obj/item/seeds/gatfruit name = "gatfruit seed pack" - desc = "These seeds grow into .357 revolvers." + desc = "These seeds grow into pea-shooting revolvers." icon_state = "seed-gatfruit" species = "gatfruit" plantname = "Gatfruit Tree" @@ -17,15 +17,31 @@ growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. growing_icon = 'icons/obj/service/hydroponics/growing_fruits.dmi' - reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05) + reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05, /datum/reagent/toxin/gatfruit = 0.3) /obj/item/food/grown/shell/gatfruit seed = /obj/item/seeds/gatfruit name = "gatfruit" - desc = "It smells like burning." + desc = "It smells like burning gunpowder." icon_state = "gatfruit" - trash_type = /obj/item/gun/ballistic/revolver + trash_type = /obj/item/gun/ballistic/revolver/peashooter bite_consumption_mod = 2 foodtypes = FRUIT tastes = list("gunpowder" = 1) wine_power = 90 //It burns going down, too. + +/obj/item/food/grown/shell/gatfruit/Initialize(mapload, obj/item/seeds/new_seed) + . = ..() + reagents.flags &= ~INJECTABLE //id rather not have this be filled with initropidril without effort + +/obj/item/food/grown/shell/gatfruit/generate_trash(atom/location) + //if you set this to anything but the revolver i will find you... and... downvote your pr... + var/obj/item/gun/ballistic/revolver/peashooter/gun = new trash_type(location || drop_location()) + var/potency_percentage = CLAMP01(seed.potency / 100) + var/amount_to_trans = reagents.total_volume / gun.magazine.max_ammo + for(var/obj/item/ammo_casing/pea/casing as anything in gun.magazine.ammo_list()) + casing.damage = floor(max(5, LERP(5, casing.max_damage, potency_percentage))) + if(reagents.total_volume) + reagents.trans_to(casing, amount_to_trans) + return gun + diff --git a/code/modules/hydroponics/grown/weeds/nettle.dm b/code/modules/hydroponics/grown/weeds/nettle.dm index dec1e8b119e2b..2420ba8942cd6 100644 --- a/code/modules/hydroponics/grown/weeds/nettle.dm +++ b/code/modules/hydroponics/grown/weeds/nettle.dm @@ -58,7 +58,7 @@ /obj/item/food/grown/nettle/death seed = /obj/item/seeds/nettle/death name = "\improper deathnettle" - desc = "The glowing nettle incites rage in you just from looking at it!" + desc = "The glowing nettle incites rage in you just from looking at it!" icon_state = "deathnettle" inhand_icon_state = "deathnettle" bite_consumption_mod = 4 // I guess if you really wanted to diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 53ffae4aca022..c8a3e10b8e931 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -202,6 +202,7 @@ /obj/machinery/hydroponics/Destroy() if(myseed) QDEL_NULL(myseed) + remove_shared_particles(/particles/pollen) return ..() /obj/machinery/hydroponics/Exited(atom/movable/gone) @@ -292,7 +293,7 @@ mutate() return BULLET_ACT_HIT if(istype(proj, /obj/projectile/energy/flora/yield)) - return myseed.bullet_act(proj) + return myseed.projectile_hit(proj) if(istype(proj, /obj/projectile/energy/flora/evolution)) if(myseed) if(LAZYLEN(myseed.mutatelist)) @@ -536,7 +537,7 @@ age = 0 update_appearance() if(isnull(myseed)) - particles = null + remove_shared_particles(/particles/pollen) /* * Setter proc to set a tray to a new self_sustaining state and update all values associated with it. @@ -798,12 +799,11 @@ T.myseed.set_instability(round((T.myseed.instability+(1/10)*(myseed.instability-T.myseed.instability)))) T.myseed.set_yield(round((T.myseed.yield+(1/2)*(myseed.yield-T.myseed.yield)))) any_adjacent = TRUE - if(isnull(particles)) - particles = new /particles/pollen() + add_shared_particles(/particles/pollen) if(myseed.instability >= 20 && prob(70) && length(T.myseed.reagents_add)) myseed.perform_reagent_pollination(T.myseed) if(!any_adjacent) - particles = null + remove_shared_particles(/particles/pollen) /** * Bee pollinate proc. diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 4589a3c4312b5..22434788e999f 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -50,7 +50,7 @@ var/list/genes = list() /// A list of reagents to add to product. var/list/reagents_add - // Format: "reagent_id" = potency multiplier + // Format: /datum/reagent/type = potency multiplier // Stronger reagents must always come first to avoid being displaced by weaker ones. // Total amount of any reagent in plant is calculated by formula: max(round(potency * multiplier), 1) ///If the chance below passes, then this many weeds sprout during growth @@ -280,7 +280,7 @@ //Handles the juicing trait, swaps nutriment and vitamins for that species various juices if they exist. Mutually exclusive with distilling. if(get_gene(/datum/plant_gene/trait/juicing) && grown_edible.juice_typepath) - grown_edible.juice() + grown_edible.juice(juicer = FALSE) //we pass FALSE & not null because Byond default args will subtitute it with the default value else if(get_gene(/datum/plant_gene/trait/brewing)) grown_edible.ferment() diff --git a/code/modules/hydroponics/unique_plant_genes.dm b/code/modules/hydroponics/unique_plant_genes.dm index eef79ded735c5..567a8c09e61ad 100644 --- a/code/modules/hydroponics/unique_plant_genes.dm +++ b/code/modules/hydroponics/unique_plant_genes.dm @@ -200,8 +200,7 @@ to_chat(user, span_danger("[our_plant]'s thorns prick your hand. Ouch.")) our_plant.investigate_log("rose-pricked [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) - var/obj/item/bodypart/affecting = user.get_active_hand() - affecting?.receive_damage(2) + user.apply_damage(2, BRUTE, user.get_active_hand()) /// Novaflower's hand burn on backfire /datum/plant_gene/trait/backfire/novaflower_heat @@ -212,8 +211,7 @@ /datum/plant_gene/trait/backfire/novaflower_heat/backfire_effect(obj/item/our_plant, mob/living/carbon/user) to_chat(user, span_danger("[our_plant] singes your bare hand!")) our_plant.investigate_log("self-burned [key_name(user)] for [our_plant.force] at [AREACOORD(user)]", INVESTIGATE_BOTANY) - var/obj/item/bodypart/affecting = user.get_active_hand() - return affecting?.receive_damage(0, our_plant.force, wound_bonus = CANT_WOUND) + user.apply_damage(our_plant.force, our_plant.damtype, user.get_active_hand(), wound_bonus = CANT_WOUND) /// Normal Nettle hannd burn on backfire /datum/plant_gene/trait/backfire/nettle_burn @@ -223,8 +221,7 @@ /datum/plant_gene/trait/backfire/nettle_burn/backfire_effect(obj/item/our_plant, mob/living/carbon/user) to_chat(user, span_danger("[our_plant] burns your bare hand!")) our_plant.investigate_log("self-burned [key_name(user)] for [our_plant.force] at [AREACOORD(user)]", INVESTIGATE_BOTANY) - var/obj/item/bodypart/affecting = user.get_active_hand() - return affecting?.receive_damage(0, our_plant.force, wound_bonus = CANT_WOUND) + user.apply_damage(our_plant.force, our_plant.damtype, user.get_active_hand(), wound_bonus = CANT_WOUND) /// Deathnettle hand burn + stun on backfire /datum/plant_gene/trait/backfire/nettle_burn/death diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index b31574bec33e3..e9b2e832f92b5 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -9,11 +9,6 @@ return TRUE if(result_bitflags & COMPONENT_OBJ_DISALLOW) // override all other checks return FALSE - if(!isnull(accessor) && HAS_TRAIT(accessor, TRAIT_ALWAYS_NO_ACCESS)) - return FALSE - //check if it doesn't require any access at all - if(check_access(null)) - return TRUE if(isnull(accessor)) //likely a TK user. return FALSE if(isAdminGhostAI(accessor)) @@ -25,6 +20,9 @@ return TRUE if(attempted_access & ACCESS_DISALLOWED) return FALSE + //check if it doesn't require any access at all + if(check_access(null)) + return TRUE if(HAS_SILICON_ACCESS(accessor)) if(ispAI(accessor)) return FALSE diff --git a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm index d2f6f61251dd2..ce4a30efa9299 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_vorpal_scythe.dm @@ -9,24 +9,18 @@ If the scythe isn't empowered when you sheath it, you take a heap of damage and name = "sinister shard" desc = "This shard seems to be directly linked to some sinister entity. It might be your god! It also gives you a really horrible rash when you hold onto it for too long." items_to_create = list(/obj/item/vorpalscythe) - -/obj/item/organ/cyberimp/arm/shard/scythe/mob_insert(mob/living/carbon/receiver, special, movement_flags) - . = ..() - if(receiver.mind) - ADD_TRAIT(receiver.mind, TRAIT_MORBID, ORGAN_TRAIT) + organ_traits = list(TRAIT_MORBID) /obj/item/organ/cyberimp/arm/shard/scythe/Retract() var/obj/item/vorpalscythe/scythe = active_item if(!scythe) return FALSE - - var/obj/item/bodypart/part = hand - if(isnull(part) || scythe.empowerment >= SCYTHE_SATED) + if(scythe.empowerment >= SCYTHE_SATED) return ..() to_chat(owner, span_userdanger("[scythe] tears into you for your unworthy display of arrogance!")) playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE) - part.receive_damage(brute = 25, wound_bonus = 10, sharpness = SHARP_EDGED) + owner.apply_damage(25, BRUTE, hand, wound_bonus = 10, sharpness = SHARP_EDGED) return ..() /obj/item/vorpalscythe diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 1d770bd2e9455..13a3496c609d3 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -37,10 +37,8 @@ jobtype = /datum/job/janitor id_trim = /datum/id_trim/job/janitor - uniform = /obj/item/clothing/under/rank/civilian/janitor/doppler - suit = /obj/item/clothing/suit/apron/janitor_cloak + uniform = /obj/item/clothing/under/rank/civilian/janitor belt = /obj/item/modular_computer/pda/janitor - gloves = /obj/item/clothing/gloves/botanic_leather/janitor ears = /obj/item/radio/headset/headset_srv skillchips = list(/obj/item/skillchip/job/janitor) backpack_contents = list(/obj/item/access_key) diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 9b2dc91137cd5..a84d4e0e73765 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -83,7 +83,7 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) var/ears = null var/accessory = null - var/list/dep_trim = null + var/datum/id_trim/dep_trim = null var/destination = null switch(department) diff --git a/code/modules/language/_language.dm b/code/modules/language/_language.dm index 595b591a0dd90..1177af8346770 100644 --- a/code/modules/language/_language.dm +++ b/code/modules/language/_language.dm @@ -120,7 +120,7 @@ // Add it to cache, cutting old entries if the list is too long scramble_cache[input] = scrambled_text if(scramble_cache.len > SCRAMBLE_CACHE_LEN) - scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1) + scramble_cache.Cut(1, 2) /datum/language/proc/scramble(input) diff --git a/code/modules/language/_language_manuals.dm b/code/modules/language/_language_manuals.dm index 7a4298a06b150..507d663ef8696 100644 --- a/code/modules/language/_language_manuals.dm +++ b/code/modules/language/_language_manuals.dm @@ -16,7 +16,7 @@ to_chat(user, span_boldwarning("You start skimming through [src], but you already know [initial(language.name)].")) return - to_chat(user, span_boldannounce("You start skimming through [src], and [flavour_text].")) + to_chat(user, span_bolddanger("You start skimming through [src], and [flavour_text].")) user.grant_language(language) user.remove_blocked_language(language, source=LANGUAGE_ALL) diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm index 99c28b76ff244..4c31092199dbe 100644 --- a/code/modules/library/bibles.dm +++ b/code/modules/library/bibles.dm @@ -367,8 +367,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list( uses -= 1 to_chat(user, span_userdanger("You try to open the book AND IT BITES YOU!")) playsound(src.loc, 'sound/effects/snap.ogg', 50, TRUE) - var/active_hand_zone = (!(user.active_hand_index % RIGHT_HANDS) ? BODY_ZONE_R_ARM : BODY_ZONE_L_ARM) - user.apply_damage(5, BRUTE, active_hand_zone, attacking_item = src) + user.apply_damage(5, BRUTE, user.get_active_hand(), attacking_item = src) to_chat(user, span_notice("Your name appears on the inside cover, in blood.")) owner_name = user.real_name diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index 5ca3f784ecbec..e4fce399a760d 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -97,25 +97,28 @@ * Arguments: * * silent - Boolean. Whether or not an activation message should be shown to the user. * * force - Boolean. Whether or not to just force de-activation if it would be prevented for any reason. + * * brain_owner - the owner var of the brain is set to null on organ/on_mob_remove(), so we need this if owner is null. */ -/obj/item/skillchip/proc/try_deactivate_skillchip(silent = FALSE, force = FALSE) +/obj/item/skillchip/proc/try_deactivate_skillchip(silent = FALSE, force = FALSE, mob/living/brain_owner) if(!active) return "Skillchip is not active." // Should not happen. Holding brain is destroyed and the chip hasn't had its state set appropriately. if(!holding_brain) - stack_trace("Skillchip's owner is null or qdeleted brain.") + stack_trace("Skillchip doesn't have a holding brain.") return "Skillchip cannot detect viable brain." + if(!brain_owner) + brain_owner = holding_brain.owner // Also should not happen. We're somehow deactivating skillchips in a bodyless brain. - if(QDELETED(holding_brain.owner)) + if(QDELETED(brain_owner)) active = FALSE stack_trace("Skillchip's brain has no owner, owner is null or owner qdeleted.") return "Skillchip cannot detect viable body." // We have a holding brain, the holding brain has an owner. If we're forcing this, do it hard and fast. if(force) - on_deactivate(holding_brain.owner, silent) + on_deactivate(brain_owner, silent) return // Is the chip still experiencing a cooldown period? @@ -123,7 +126,7 @@ return "Skillchip is still recharging for [COOLDOWN_TIMELEFT(src, chip_cooldown) * 0.1]s" // We're good to go. Deactive this chip. - on_deactivate(holding_brain.owner, silent) + on_deactivate(brain_owner, silent) /** * Called when a skillchip is inserted in a user's brain. @@ -132,10 +135,12 @@ * * owner_brain - The brain that this skillchip was implanted in to. */ /obj/item/skillchip/proc/on_implant(obj/item/organ/brain/owner_brain) + SHOULD_CALL_PARENT(TRUE) if(holding_brain) CRASH("Skillchip is trying to be implanted into [owner_brain], but it's already implanted in [holding_brain]") holding_brain = owner_brain + SEND_SIGNAL(src, COMSIG_SKILLCHIP_IMPLANTED, holding_brain) /** * Called when a skillchip is activated. @@ -172,7 +177,7 @@ try_deactivate_skillchip(silent, TRUE) COOLDOWN_RESET(src, chip_cooldown) - + SEND_SIGNAL(src, COMSIG_SKILLCHIP_REMOVED, holding_brain) holding_brain = null /** diff --git a/code/modules/loadout/categories/heads.dm b/code/modules/loadout/categories/heads.dm index ad23f0b2dfb7b..69ef68cfff193 100644 --- a/code/modules/loadout/categories/heads.dm +++ b/code/modules/loadout/categories/heads.dm @@ -66,7 +66,7 @@ /datum/loadout_item/head/white_cap name = "Cap (White)" - item_path = /obj/item/clothing/head/soft + item_path = /obj/item/clothing/head/soft/mime /datum/loadout_item/head/yellow_cap name = "Cap (Yellow)" @@ -147,7 +147,7 @@ /datum/loadout_item/head/geranium name = "Geranium" item_path = /obj/item/food/grown/poppy/geranium - + /datum/loadout_item/head/harebell name = "Harebell" item_path = /obj/item/food/grown/harebell diff --git a/code/modules/lost_crew/damages/projectile.dm b/code/modules/lost_crew/damages/projectile.dm index 121304ac9b5c7..64541cf1eaf61 100644 --- a/code/modules/lost_crew/damages/projectile.dm +++ b/code/modules/lost_crew/damages/projectile.dm @@ -13,7 +13,7 @@ var/hits = ((max_hits - min_hits) * severity + min_hits) for(var/i in 1 to hits) - body.bullet_act(projectile, def_zone = pick(GLOB.all_body_zones), piercing_hit = TRUE) + body.projectile_hit(projectile, def_zone = pick(GLOB.all_body_zones), piercing_hit = TRUE) /datum/corpse_damage/cause_of_death/projectile/laser projectile = /obj/projectile/beam/laser diff --git a/code/modules/lost_crew/recovered_crew.dm b/code/modules/lost_crew/recovered_crew.dm index 65c6a3715fb67..2d5181a0d4e41 100644 --- a/code/modules/lost_crew/recovered_crew.dm +++ b/code/modules/lost_crew/recovered_crew.dm @@ -7,3 +7,4 @@ show_to_ghosts = FALSE silent = TRUE block_midrounds = FALSE + show_in_roundend = FALSE diff --git a/code/modules/mafia/abilities/investigative/reveal.dm b/code/modules/mafia/abilities/investigative/reveal.dm index 5e38d3c9fafa2..241610171569a 100644 --- a/code/modules/mafia/abilities/investigative/reveal.dm +++ b/code/modules/mafia/abilities/investigative/reveal.dm @@ -4,11 +4,11 @@ * During the night, revealing someone will announce their role when day comes. * This is one time use, we'll delete ourselves once done. */ -/datum/mafia_ability/reaveal_role +/datum/mafia_ability/reveal_role name = "Reveal" ability_action = "psychologically evaluate" -/datum/mafia_ability/reaveal_role/perform_action_target(datum/mafia_controller/game, datum/mafia_role/day_target) +/datum/mafia_ability/reveal_role/perform_action_target(datum/mafia_controller/game, datum/mafia_role/day_target) . = ..() if(!.) return FALSE @@ -17,7 +17,7 @@ target_role.reveal_role(game, verbose = TRUE) return TRUE -/datum/mafia_ability/vest/clean_action_refs(datum/mafia_controller/game) +/datum/mafia_ability/reveal_role/clean_action_refs(datum/mafia_controller/game) if(using_ability) host_role.role_unique_actions -= src qdel(src) diff --git a/code/modules/mafia/roles/town/town_investigative.dm b/code/modules/mafia/roles/town/town_investigative.dm index a09cff3acd28b..76b81eab3bd1b 100644 --- a/code/modules/mafia/roles/town/town_investigative.dm +++ b/code/modules/mafia/roles/town/town_investigative.dm @@ -20,7 +20,7 @@ hud_icon = "hudpsychologist" revealed_icon = "psychologist" - role_unique_actions = list(/datum/mafia_ability/reaveal_role) + role_unique_actions = list(/datum/mafia_ability/reveal_role) /datum/mafia_role/chaplain name = "Chaplain" diff --git a/code/modules/manufactorio/_manufacturing.dm b/code/modules/manufactorio/_manufacturing.dm index 02cc47999d50c..4b64d541fd2e7 100644 --- a/code/modules/manufactorio/_manufacturing.dm +++ b/code/modules/manufactorio/_manufacturing.dm @@ -1,10 +1,6 @@ -#define MANUFACTURING_FAIL_FULL -1 #define MANUFACTURING_FAIL 0 #define MANUFACTURING_SUCCESS 1 -#define POCKET_INPUT "Input" -#define POCKET_OUTPUT "Output" - #define MANUFACTURING_TURF_LAG_LIMIT 10 // max items on a turf before we consider it full /obj/machinery/power/manufacturing @@ -108,8 +104,8 @@ return manufactury.receive_resource(sending, src, isturf(what_or_dir) ? get_dir(src, what_or_dir) : what_or_dir) if(next_turf.is_blocked_turf(exclude_mobs = TRUE, source_atom = sending) && !ischasm(next_turf)) return MANUFACTURING_FAIL - if(length(next_turf.contents) >= MANUFACTURING_TURF_LAG_LIMIT) - return MANUFACTURING_FAIL_FULL + if(length(get_overfloor_objects(next_turf)) >= MANUFACTURING_TURF_LAG_LIMIT) + return MANUFACTURING_FAIL if(isnull(sending)) return MANUFACTURING_SUCCESS // for the sake of being used as a check if(isnull(sending.loc) || !sending.Move(next_turf, get_dir(src, next_turf))) @@ -132,3 +128,11 @@ return return stack.merge(merging_into) +/obj/machinery/power/manufacturing/proc/get_overfloor_objects(turf/target) + . = list() + if(isnull(target)) + target = get_turf(src) + for(var/atom/movable/thing as anything in target.contents) + if(thing == src || isliving(thing) || iseffect(thing) || thing.invisibility >= INVISIBILITY_ABSTRACT || HAS_TRAIT(thing, TRAIT_UNDERFLOOR)) + continue + . += thing diff --git a/code/modules/manufactorio/machines/crafter.dm b/code/modules/manufactorio/machines/crafter.dm index 4b3f2dba1c4b9..6b1c9160d7679 100644 --- a/code/modules/manufactorio/machines/crafter.dm +++ b/code/modules/manufactorio/machines/crafter.dm @@ -6,8 +6,8 @@ circuit = /obj/item/circuitboard/machine/manucrafter /// power used per process() spent crafting var/power_cost = 5 KILO WATTS - /// our output, if the way out was blocked is held here - var/atom/movable/withheld + /// list of weakrefs to crafted items still on the machine that we failed to send forward + var/list/datum/weakref/withheld = list() /// current recipe var/datum/crafting_recipe/recipe /// crafting component @@ -22,6 +22,7 @@ craftsman = AddComponent(/datum/component/personal_crafting/machine) if(ispath(recipe)) recipe = locate(recipe) in (cooking ? GLOB.cooking_recipes : GLOB.crafting_recipes) + START_PROCESSING(SSmanufacturing, src) /obj/machinery/power/manufacturing/crafter/examine(mob/user) . = ..() @@ -44,19 +45,16 @@ /obj/machinery/power/manufacturing/crafter/receive_resource(obj/receiving, atom/from, receive_dir) var/turf/machine_turf = get_turf(src) if(length(machine_turf.contents) >= MANUFACTURING_TURF_LAG_LIMIT) - return MANUFACTURING_FAIL_FULL - receiving.Move(machine_turf, receive_dir) - START_PROCESSING(SSmanufacturing, src) + return MANUFACTURING_FAIL + receiving.forceMove(machine_turf) return MANUFACTURING_SUCCESS /obj/machinery/power/manufacturing/crafter/multitool_act(mob/living/user, obj/item/tool) . = NONE var/list/unavailable = list() for(var/datum/crafting_recipe/potential_recipe as anything in cooking ? GLOB.cooking_recipes : GLOB.crafting_recipes) - if(craftsman.is_recipe_available(potential_recipe, user)) - continue - var/obj/result = initial(potential_recipe.result) - if(istype(result) && initial(result.anchored)) + var/obj/as_obj = potential_recipe.result + if(!(ispath(as_obj, /obj) && !ispath(as_obj, /obj/effect) && initial(as_obj.anchored)) && craftsman.is_recipe_available(potential_recipe, user)) continue unavailable += potential_recipe var/result = tgui_input_list(usr, "Recipe", "Select Recipe", (cooking ? GLOB.cooking_recipes : GLOB.crafting_recipes) - unavailable) @@ -66,24 +64,14 @@ balloon_alert(user, "set") return ITEM_INTERACT_SUCCESS -/obj/machinery/power/manufacturing/crafter/Exited(atom/movable/gone, direction) - . = ..() - if(gone == withheld) - withheld = null - -/obj/machinery/power/manufacturing/crafter/atom_destruction(damage_flag) - . = ..() - withheld?.Move(drop_location(src)) - /obj/machinery/power/manufacturing/crafter/Destroy() . = ..() recipe = null craftsman = null - QDEL_NULL(withheld) + withheld.Cut() /obj/machinery/power/manufacturing/crafter/process(seconds_per_tick) - if(!isnull(withheld) && !send_resource(withheld, dir)) - return + send_withheld() // try send any pending stuff if(!isnull(craft_timer)) if(surplus() >= power_cost) add_load() @@ -97,19 +85,37 @@ flick_overlay_view(mutable_appearance(icon, "crafter_printing"), recipe.time) craft_timer = addtimer(CALLBACK(src, PROC_REF(craft), recipe), recipe.time, TIMER_STOPPABLE) +/obj/machinery/power/manufacturing/crafter/proc/send_withheld() + if(!length(withheld)) + return FALSE + for(var/datum/weakref/weakref as anything in withheld) + var/atom/movable/resolved = weakref?.resolve() + if(isnull(resolved)) + withheld -= weakref + continue + if(resolved.loc != loc || send_resource(resolved, dir)) + withheld -= weakref + return length(withheld) + /obj/machinery/power/manufacturing/crafter/proc/craft(datum/crafting_recipe/recipe) if(QDELETED(src)) return craft_timer = null - var/atom/movable/result = craftsman.construct_item(src, recipe) - if(istype(result)) - if(isitem(result)) - result.pixel_x += rand(-4, 4) - result.pixel_y += rand(-4, 4) - result.Move(src) - send_resource(result, dir) - else - say(result) + var/list/prediff = get_overfloor_objects() + var/result = craftsman.construct_item(src, recipe) + if(istext(result)) + say("Crafting failed,[result]") + return + var/list/diff = get_overfloor_objects() - prediff + for(var/atom/movable/diff_result as anything in diff) + if(iseffect(diff_result) || ismob(diff_result)) // PLEASE dont stuff cats (or other mobs) into the cat grinder 9000 + continue + if(isitem(diff_result)) + diff_result.pixel_x += rand(-4, 4) + diff_result.pixel_y += rand(-4, 4) + withheld += WEAKREF(diff_result) + recipe.on_craft_completion(src, diff_result) + send_withheld() /obj/machinery/power/manufacturing/crafter/cooker name = "manufacturing cooking machine" // maybe this shouldnt be available dont wanna make chef useless, though otherwise it would need a sprite diff --git a/code/modules/manufactorio/machines/crusher.dm b/code/modules/manufactorio/machines/crusher.dm index b8cb50bb0bb79..ee5a61a784f14 100644 --- a/code/modules/manufactorio/machines/crusher.dm +++ b/code/modules/manufactorio/machines/crusher.dm @@ -29,7 +29,7 @@ if(istype(receiving, /obj/item/stack/ore) || receiving.resistance_flags & INDESTRUCTIBLE || !isitem(receiving) || surplus() < crush_cost || receive_dir != REVERSE_DIR(dir)) return MANUFACTURING_FAIL if(length(contents - circuit) >= capacity && may_merge_in_contents_and_do_so(receiving)) - return MANUFACTURING_FAIL_FULL + return MANUFACTURING_FAIL receiving.Move(src, get_dir(receiving, src)) START_PROCESSING(SSmanufacturing, src) return MANUFACTURING_SUCCESS diff --git a/code/modules/manufactorio/machines/lathe.dm b/code/modules/manufactorio/machines/lathe.dm index 431d7af1c11db..351e5c25030a9 100644 --- a/code/modules/manufactorio/machines/lathe.dm +++ b/code/modules/manufactorio/machines/lathe.dm @@ -125,7 +125,7 @@ return var/craft_time = (design.construction_time * design.lathe_time_factor) ** 0.8 - flick_overlay_view(mutable_appearance(icon, "crafter_printing"), craft_time) + flick_overlay_view(mutable_appearance(icon, "lathe_printing"), craft_time) print_sound.start() add_load(power_cost) busy = addtimer(CALLBACK(src, PROC_REF(do_make_item), design, materials_needed), craft_time, TIMER_UNIQUE | TIMER_STOPPABLE | TIMER_DELETE_ME) diff --git a/code/modules/manufactorio/machines/router.dm b/code/modules/manufactorio/machines/router.dm index 8e1c20214339e..fa6950ea0c714 100644 --- a/code/modules/manufactorio/machines/router.dm +++ b/code/modules/manufactorio/machines/router.dm @@ -52,7 +52,7 @@ dir = receive_dir update_appearance(UPDATE_OVERLAYS) // im sorry return MANUFACTURING_SUCCESS - return MANUFACTURING_FAIL_FULL + return MANUFACTURING_FAIL /obj/machinery/power/manufacturing/router/proc/handle_stack(obj/item/stack/stack, direction) if(stack.amount <= 1) // last implementation was just not good so lets cheap out diff --git a/code/modules/manufactorio/machines/smelter.dm b/code/modules/manufactorio/machines/smelter.dm index 597c9a7b43a50..84fe54d6e4ff4 100644 --- a/code/modules/manufactorio/machines/smelter.dm +++ b/code/modules/manufactorio/machines/smelter.dm @@ -18,7 +18,7 @@ return MANUFACTURING_FAIL var/list/stacks = contents - circuit if(length(stacks) >= 5 && !may_merge_in_contents_and_do_so(receiving)) - return MANUFACTURING_FAIL_FULL + return MANUFACTURING_FAIL receiving.Move(src, get_dir(receiving, src)) START_PROCESSING(SSmanufacturing, src) return MANUFACTURING_SUCCESS diff --git a/code/modules/manufactorio/machines/sorter.dm b/code/modules/manufactorio/machines/sorter.dm index 247a96ea606f6..344c90e8ebd70 100644 --- a/code/modules/manufactorio/machines/sorter.dm +++ b/code/modules/manufactorio/machines/sorter.dm @@ -42,7 +42,7 @@ /obj/machinery/power/manufacturing/sorter/receive_resource(atom/movable/receiving, atom/from, receive_dir) if(length(loc.contents) >= MANUFACTURING_TURF_LAG_LIMIT) - return MANUFACTURING_FAIL_FULL + return MANUFACTURING_FAIL receiving.Move(loc) return MANUFACTURING_SUCCESS @@ -125,21 +125,32 @@ return ismob(moving) ? moving.Move(get_step(src,dir), dir) : send_resource(moving, dir) /obj/machinery/power/manufacturing/sorter/process() - if(delay_timerid || !length(loc?.contents - 1)) + if(!anchored || delay_timerid || !length(loc?.contents - 1)) return launch_everything() +/// Is target something we should even attempt to start launching? +/obj/machinery/power/manufacturing/sorter/proc/can_be_launched(atom/movable/target) + . = TRUE + if(!istype(target) || target == src || target.anchored) //target is not movable, us or anchored + return FALSE + var/mob/living/probably_living = target + if(isdead(target) || (istype(probably_living) && probably_living.incorporeal_move)) //target is incorporeal + return FALSE + /obj/machinery/power/manufacturing/sorter/proc/on_entered(datum/source, atom/movable/mover) SIGNAL_HANDLER - if(mover == src || !istype(mover) || mover.anchored || delay_timerid) + if(!anchored || !can_be_launched(mover) || delay_timerid) return delay_timerid = addtimer(CALLBACK(src, PROC_REF(launch_everything)), 0.2 SECONDS) /obj/machinery/power/manufacturing/sorter/proc/launch_everything() delay_timerid = null + if(!anchored) + return var/turf/where_we_at = get_turf(src) for(var/atom/movable/mover as anything in where_we_at.contents) - if(mover.anchored) + if(!can_be_launched(mover)) continue for(var/datum/sortrouter_filter/sorting as anything in sort_filters) if(sorting.meets_conditions(mover) == sorting.inverted) diff --git a/code/modules/manufactorio/machines/storagebox.dm b/code/modules/manufactorio/machines/storagebox.dm index b8a6f5cccac39..408493d4a890e 100644 --- a/code/modules/manufactorio/machines/storagebox.dm +++ b/code/modules/manufactorio/machines/storagebox.dm @@ -15,7 +15,7 @@ if(iscloset(receiving) && length(receiving.contents)) return MANUFACTURING_FAIL if(length(contents - circuit) >= max_stuff && !may_merge_in_contents_and_do_so(receiving)) - return MANUFACTURING_FAIL_FULL + return MANUFACTURING_FAIL receiving.Move(src,receive_dir) return MANUFACTURING_SUCCESS diff --git a/code/modules/manufactorio/machines/unloader.dm b/code/modules/manufactorio/machines/unloader.dm index 982c33582684e..5220214168137 100644 --- a/code/modules/manufactorio/machines/unloader.dm +++ b/code/modules/manufactorio/machines/unloader.dm @@ -32,7 +32,7 @@ return MANUFACTURING_FAIL var/list/real_contents = contents - circuit if(length(real_contents)) - return MANUFACTURING_FAIL_FULL + return MANUFACTURING_FAIL var/obj/structure/closet/as_closet = receiving var/obj/structure/ore_box/as_orebox = receiving diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm index 6d3ef03c3f028..d25581bd3f3a1 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm @@ -254,8 +254,7 @@ icon_state = "ice_2" damage = 10 damage_type = BRUTE // Mining mobs don't take a lot of burn damage so we'll pretend - speed = 1 - pixel_speed_multiplier = 0.5 + speed = 0.5 /obj/projectile/baby_watcher_blast/Initialize(mapload) . = ..() diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm index 7ef451ddc303a..ce57035a7661c 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/ash_walker_den.dm @@ -59,13 +59,13 @@ if(offeredmob.mind?.has_antag_datum(/datum/antagonist/ashwalker) && (offeredmob.ckey || offeredmob.get_ghost(FALSE, TRUE))) //special interactions for dead lava lizards with ghosts attached visible_message(span_warning("Serrated tendrils carefully pull [offeredmob] to [src], absorbing the body and creating it anew.")) - var/datum/mind/deadmind + var/mob/deadmob if(offeredmob.ckey) - deadmind = offeredmob + deadmob = offeredmob else - deadmind = offeredmob.get_ghost(FALSE, TRUE) - to_chat(deadmind, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly.
Your memories will remain intact in your new body, as your soul is being salvaged") - SEND_SOUND(deadmind, sound('sound/effects/magic/enter_blood.ogg',volume=100)) + deadmob = offeredmob.get_ghost(FALSE, TRUE) + to_chat(deadmob, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly.
Your memories will remain intact in your new body, as your soul is being salvaged") + SEND_SOUND(deadmob, sound('sound/effects/magic/enter_blood.ogg',volume=100)) addtimer(CALLBACK(src, PROC_REF(remake_walker), offeredmob), 20 SECONDS) offeredmob.forceMove(src) return diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm index c8b504b72e572..58d5754ccccf3 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/museum.dm @@ -77,16 +77,16 @@ name = /obj/machinery/atmospherics/components/unary/vent_scrubber::name desc = /obj/machinery/atmospherics/components/unary/vent_scrubber::desc icon = /obj/machinery/atmospherics/components/unary/vent_scrubber::icon - layer = /obj/machinery/atmospherics/components/unary/vent_scrubber::layer - plane = /obj/machinery/atmospherics/components/unary/vent_scrubber::plane + layer = ABOVE_OPEN_TURF_LAYER + plane = FLOOR_PLANE icon_state = "scrub_on" /obj/structure/fluff/fake_vent name = /obj/machinery/atmospherics/components/unary/vent_pump::name desc = /obj/machinery/atmospherics/components/unary/vent_pump::desc icon = /obj/machinery/atmospherics/components/unary/vent_pump::icon - layer = /obj/machinery/atmospherics/components/unary/vent_pump::layer - plane = /obj/machinery/atmospherics/components/unary/vent_pump::plane + layer = ABOVE_OPEN_TURF_LAYER + plane = FLOOR_PLANE icon_state = "vent_out" /turf/open/mirage diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm index 6baaf8e566070..733cd8330bc1f 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm @@ -16,6 +16,7 @@ light_range = 8 light_color = LIGHT_COLOR_LAVA can_atmos_pass = ATMOS_PASS_DENSITY + move_resist = INFINITY var/open = FALSE var/changing_openness = FALSE var/locked = FALSE @@ -94,7 +95,7 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/structure/necropolis_gate/attack_hand(mob/user, list/modifiers) if(locked) - to_chat(user, span_boldannounce("It's [open ? "stuck open":"locked"].")) + to_chat(user, span_bolddanger("It's [open ? "stuck open":"locked"].")) return toggle_the_gate(user) return ..() @@ -163,7 +164,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) var/safety = tgui_alert(user, "You think this might be a bad idea...", "Knock on the door?", list("Proceed", "Abort")) if(safety == "Abort" || !in_range(src, user) || !src || open || changing_openness || user.incapacitated) return - user.visible_message(span_warning("[user] knocks on [src]..."), span_boldannounce("You tentatively knock on [src]...")) + user.visible_message(span_warning("[user] knocks on [src]..."), span_bolddanger("You tentatively knock on [src]...")) playsound(user.loc, 'sound/effects/shieldbash.ogg', 100, TRUE) sleep(5 SECONDS) return ..() diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm index 6e67c0831d398..f925fa651a838 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/sin_ruins.dm @@ -49,4 +49,4 @@ user.updateappearance(mutcolor_update=1) user.domutcheck() user.visible_message(span_warning("[user]'s appearance shifts into [H]'s!"), \ - span_boldannounce("[H.p_They()] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.")) + span_bolddanger("[H.p_They()] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.")) diff --git a/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm b/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm index f290c06d78f10..ce57d47c6e9b7 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/anomalyresearch.dm @@ -68,7 +68,7 @@ icon_state = "anomaly_research" requires_power = FALSE area_flags = HIDDEN_AREA | UNIQUE_AREA - has_gravity = TRUE + default_gravity = ZERO_GRAVITY /obj/item/reagent_containers/cup/bottle/wittel name = "wittel bottle" diff --git a/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm b/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm index 895200d487a1b..9ddf111958cdf 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm @@ -38,7 +38,7 @@ /area/ruin/space/nt_commsbuoy name = "\improper Nanotrasen Comms Buoy" sound_environment = SOUND_AREA_SMALL_ENCLOSED - has_gravity = FALSE + default_gravity = ZERO_GRAVITY ambientsounds = list( 'sound/ambience/engineering/ambisin2.ogg', 'sound/ambience/misc/signal.ogg', diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm b/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm index 39458ac942964..30cb60cc243ee 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hauntedtradingpost.dm @@ -88,12 +88,11 @@ /obj/structure/aquarium/donkfish/Initialize(mapload) . = ..() + ADD_TRAIT(src, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH, AQUARIUM_TRAIT) new /obj/item/aquarium_prop/rocks(src) new /obj/item/aquarium_prop/seaweed(src) new /obj/item/fish/donkfish(src) new /obj/item/fish/donkfish(src) - create_reagents(20, SEALED_CONTAINER) - reagents.add_reagent(/datum/reagent/consumable/nutriment, 20) //gimmick ketchup bottle for healing minor injuries /obj/item/reagent_containers/condiment/donksauce @@ -245,7 +244,7 @@ //is this being used as part of the haunted trading post ruin? if true, will self destruct when boss dies var/donk_ai_slave = FALSE // machine that the trap inhabits - var/obj/structure/host_machine + var/obj/machinery/host_machine // turf that the trap is on var/turf/my_turf //how long until trap zaps everything, after it detects something diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index 157cfbb9e16b6..807bd5e816632 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -392,7 +392,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) icon = 'icons/area/areas_ruins.dmi' icon_state = "hilbertshotel" requires_power = FALSE - has_gravity = TRUE + default_gravity = STANDARD_GRAVITY area_flags = NOTELEPORT | HIDDEN_AREA static_lighting = TRUE ambientsounds = list('sound/ambience/ruin/servicebell.ogg') @@ -483,7 +483,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) icon_state = "hilbertshotel" requires_power = FALSE area_flags = HIDDEN_AREA | NOTELEPORT | UNIQUE_AREA - has_gravity = TRUE + default_gravity = STANDARD_GRAVITY /obj/item/abstracthotelstorage anchored = TRUE @@ -525,25 +525,25 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) worn_icon_state = "analyzer" /obj/item/analyzer/hilbertsanalyzer/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) - if(istype(interacting_with, /obj/item/hilbertshotel)) - if(!Adjacent(interacting_with)) - to_chat(user, span_warning("It's to far away to scan!")) - return ITEM_INTERACT_BLOCKING - var/obj/item/hilbertshotel/sphere = interacting_with - if(sphere.activeRooms.len) - to_chat(user, "Currently Occupied Rooms:") - for(var/roomnumber in sphere.activeRooms) - to_chat(user, roomnumber) - else - to_chat(user, "No currenty occupied rooms.") - if(sphere.storedRooms.len) - to_chat(user, "Vacated Rooms:") - for(var/roomnumber in sphere.storedRooms) - to_chat(user, roomnumber) - else - to_chat(user, "No vacated rooms.") - return ITEM_INTERACT_SUCCESS - return ..() + if(!istype(interacting_with, /obj/item/hilbertshotel)) + return ..() + if(!user.CanReach(interacting_with)) + to_chat(user, span_warning("It's to far away to scan!")) + return ITEM_INTERACT_BLOCKING + var/obj/item/hilbertshotel/sphere = interacting_with + if(sphere.activeRooms.len) + to_chat(user, "Currently Occupied Rooms:") + for(var/roomnumber in sphere.activeRooms) + to_chat(user, roomnumber) + else + to_chat(user, "No currenty occupied rooms.") + if(sphere.storedRooms.len) + to_chat(user, "Vacated Rooms:") + for(var/roomnumber in sphere.storedRooms) + to_chat(user, roomnumber) + else + to_chat(user, "No vacated rooms.") + return ITEM_INTERACT_SUCCESS /obj/effect/landmark/transport/transport_id/hilbert specific_transport_id = HILBERT_LINE_1 diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm b/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm index 2b2216641488d..440f7ad05786e 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/meatderelict.dm @@ -125,6 +125,7 @@ /obj/lightning_thrower/Destroy() . = ..() + clear_signals() signal_turfs = null STOP_PROCESSING(SSprocessing, src) @@ -132,6 +133,8 @@ var/list/dirs = throw_diagonals ? GLOB.diagonals : GLOB.cardinals throw_diagonals = !throw_diagonals playsound(src, 'sound/effects/magic/lightningbolt.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE) + if(length(signal_turfs)) + clear_signals() for(var/direction in dirs) var/victim_turf = get_step(src, direction) if(isclosedturf(victim_turf)) @@ -143,8 +146,7 @@ shock_victim(null, victim) addtimer(CALLBACK(src, PROC_REF(clear_signals)), shock_duration) -/obj/lightning_thrower/proc/clear_signals(datum/source) - SIGNAL_HANDLER +/obj/lightning_thrower/proc/clear_signals() for(var/turf in signal_turfs) UnregisterSignal(turf, COMSIG_ATOM_ENTERED) signal_turfs -= turf diff --git a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm index d40d9178f3a85..88b9e9f9503f4 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/meateor.dm @@ -36,7 +36,6 @@ /datum/reagent/medicine/c2/penthrite = 5, /datum/reagent/consumable/vinegar = 5, ) - drink_type = NONE age_restricted = FALSE /// Abstract holder object for shared behaviour diff --git a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm index 994162345dae2..7c003b0dc7a43 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/oldstation/oldstation_mod.dm @@ -86,7 +86,7 @@ ..() return TRUE -/obj/machinery/mod_installer/close_machine(mob/living/carbon/user, density_to_set = TRUE) +/obj/machinery/mod_installer/close_machine(atom/movable/target, density_to_set = TRUE) if(!state_open) return FALSE ..() @@ -108,7 +108,7 @@ /obj/machinery/mod_installer/interact(mob/user) if(state_open) - close_machine(null, user) + close_machine() return else if(busy) balloon_alert(user, "it's locked!") diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index bca2ace626062..10d506f8c48e5 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -839,7 +839,7 @@ GLOBAL_LIST_EMPTY(map_model_default) if(member_string[length(member_string)] == "}") variables_start = findtext(member_string, "{") - var/path_text = trimtext(copytext(member_string, 1, variables_start)) + var/path_text = trim(copytext(member_string, 1, variables_start)) var/atom_def = text2path(path_text) //path definition, e.g /obj/foo/bar if(!ispath(atom_def, /atom)) // Skip the item if the path does not exist. Fix your crap, mappers! @@ -1011,7 +1011,7 @@ GLOBAL_LIST_EMPTY(map_model_default) // check if this is a simple variable (as in list(var1, var2)) or an associative one (as in list(var1="foo",var2=7)) var/equal_position = findtext(text,"=",old_position, position) - var/trim_left = trimtext(copytext(text,old_position,(equal_position ? equal_position : position))) + var/trim_left = trim(copytext(text,old_position,(equal_position ? equal_position : position))) var/left_constant = parse_constant(trim_left) if(position) old_position = position + length(text[position]) @@ -1021,7 +1021,7 @@ GLOBAL_LIST_EMPTY(map_model_default) if(equal_position && !isnum(left_constant)) // Associative var, so do the association. // Note that numbers cannot be keys - the RHS is dropped if so. - var/trim_right = trimtext(copytext(text, equal_position + length(text[equal_position]), position)) + var/trim_right = trim(copytext(text, equal_position + length(text[equal_position]), position)) var/right_constant = parse_constant(trim_right) .[left_constant] = right_constant else // simple var diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index d6ac3ac4f9424..c157636b1219a 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -72,8 +72,9 @@ * @param clear_below Whether to clear the area below the ruin. Used for multiz ruins. * @param mineral_budget The budget to spend on ruins that spawn ore vents. Map templates with vents have that defined by mineral_cost. * @param mineral_budget_update What type of ore distribution should spawn from ruins picked by this cave generator? This list is copied from ores_spawned.dm into SSore_generation.ore_vent_minerals. + * @param ruin_type The type of ruins that are spawning (ZTRAIT_SPACE_RUINS, ZTRAIT_ICE_RUINS, ZTRAIT_LAVA_RUINS, etc.) */ -/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15, mineral_budget_update) +/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = list(/area/space), list/potentialRuins, clear_below = FALSE, mineral_budget = 15, mineral_budget_update, ruins_type = ZTRAIT_STATION) if(!z_levels || !z_levels.len) WARNING("No Z levels provided - Not generating ruins") return @@ -86,7 +87,7 @@ return var/list/ruins = potentialRuins.Copy() - + var/placed_ruins = 0 // our count of how many ruins have been placed var/list/forced_ruins = list() //These go first on the z level associated (same random one by default) or if the assoc value is a turf to the specified turf. var/list/ruins_available = list() //we can try these in the current pass @@ -115,7 +116,7 @@ if(R.unpickable) continue ruins_available[R] = R.placement_weight - while((budget > 0 || mineral_budget > 0) && (ruins_available.len || forced_ruins.len)) + while(((budget > 0 || mineral_budget > 0) && ruins_available.len) || forced_ruins.len) var/datum/map_template/ruin/current_pick var/forced = FALSE var/forced_z //If set we won't pick z level and use this one instead. @@ -171,8 +172,9 @@ for(var/datum/map_template/ruin/R in ruins_available) if(R.id == current_pick.id) ruins_available -= R - log_world("Failed to place [current_pick.name] ruin.") + log_mapping("Failed to place [current_pick.name] ruin!") else + placed_ruins++ budget -= current_pick.cost mineral_budget -= current_pick.mineral_cost if(!current_pick.allow_duplicates) @@ -203,9 +205,12 @@ if(PLACE_ISOLATED) forced_ruins[linked] = SSmapping.get_isolated_ruin_z() + + log_mapping("Successfully placed [current_pick.name] ruin.") + //Update the available list for(var/datum/map_template/ruin/R in ruins_available) if(R.cost > budget || R.mineral_cost > mineral_budget) ruins_available -= R - log_world("Ruin loader finished with [budget] left to spend.") + log_world("[ruins_type] loader finished placing [placed_ruins]/[ruins.len] ruins with [budget] left to spend.") diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index ba135081532da..8d3fcc67f53b8 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -45,6 +45,9 @@ /obj/effect/meteor/Destroy() GLOB.meteor_list -= src + var/datum/move_loop/moveloop = GLOB.move_manager.processing_on(src, SSmovement) + if (!isnull(moveloop)) + UnregisterSignal(moveloop, COMSIG_MOVELOOP_STOP) return ..() /obj/effect/meteor/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) @@ -76,8 +79,12 @@ if(!isatom(chasing)) return var/datum/move_loop/new_loop = GLOB.move_manager.move_towards(src, chasing, delay, home, lifetime) - if(!new_loop) - return + if(new_loop) + RegisterSignal(new_loop, COMSIG_MOVELOOP_STOP, PROC_REF(on_loop_stopped)) + +/obj/effect/meteor/proc/on_loop_stopped(datum/source) + SIGNAL_HANDLER + qdel(src) ///Deals with what happens when we stop moving, IE we die /obj/effect/meteor/proc/moved_off_z() diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm index e345f870f7874..9f2dba12ab291 100644 --- a/code/modules/mining/boulder_processing/boulder.dm +++ b/code/modules/mining/boulder_processing/boulder.dm @@ -158,8 +158,10 @@ /** * This function is called while breaking boulders manually, and drops ore based on the boulder's mineral content. * Quantity of ore spawned here is 1 less than if the boulder was processed by a machine, but clamped at 10 maximum, 1 minimum. + * + * target_destination: Optional - Sets the location directly instead of dropping it */ -/obj/item/boulder/proc/convert_to_ore() +/obj/item/boulder/proc/convert_to_ore(atom/target_destination) for(var/datum/material/picked in custom_materials) var/obj/item/stack/ore/cracked_ore // Take the associated value and convert it into ore stacks... var/quantity = clamp(round((custom_materials[picked] - SHEET_MATERIAL_AMOUNT)/SHEET_MATERIAL_AMOUNT), 1, 10) //but less resources than if they processed it by hand. @@ -168,7 +170,10 @@ if(isnull(cracked_ore_type)) stack_trace("boulder found containing material type [picked.type] with no set ore_type") continue - cracked_ore = new cracked_ore_type (drop_location(), quantity) + var/atom/ore_destination = drop_location() + if(target_destination) + ore_destination = target_destination + cracked_ore = new cracked_ore_type (ore_destination, quantity) SSblackbox.record_feedback("tally", "ore_mined", quantity, cracked_ore.type) ///Moves boulder contents to the drop location, and then deletes the boulder. diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 216275a239076..a6b2f075b8f1e 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/clothing/suits/utility.dmi' worn_icon = 'icons/mob/clothing/suits/utility.dmi' inhand_icon_state = null + supports_variations_flags = CLOTHING_DIGITIGRADE_MASK body_parts_covered = CHEST|GROIN|LEGS|ARMS cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -15,6 +16,9 @@ armor_type = /datum/armor/hooded_explorer resistance_flags = FIRE_PROOF +/obj/item/clothing/suit/hooded/explorer/get_general_color(icon/base_icon) + return "#796755" + /datum/armor/hooded_explorer melee = 30 bullet = 10 diff --git a/code/modules/mining/equipment/grapple_gun.dm b/code/modules/mining/equipment/grapple_gun.dm index 0247d0164b025..99144d84867ce 100644 --- a/code/modules/mining/equipment/grapple_gun.dm +++ b/code/modules/mining/equipment/grapple_gun.dm @@ -10,7 +10,7 @@ inhand_icon_state = "gun" item_flags = NOBLUDGEON ///overlay when the hook is retracted - var/static/mutable_appearance/hook_overlay = new(icon = 'icons/obj/mining.dmi', icon_state = "grapple_gun_hooked") + var/static/mutable_appearance/hook_overlay = mutable_appearance(icon = 'icons/obj/mining.dmi', icon_state = "grapple_gun_hooked") ///is the hook retracted var/hooked = TRUE ///addtimer id for launching the user @@ -179,7 +179,7 @@ icon_state = "grapple_hook" damage = 0 range = 9 - speed = 0.1 + speed = 10 can_hit_turfs = TRUE hitsound = 'sound/items/weapons/zipline_hit.ogg' diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 1a83ad0f30330..c5bdfa9daa239 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -157,7 +157,7 @@ destabilizer.icon_state = "[projectile_icon]" for(var/obj/item/crusher_trophy/attached_trophy as anything in trophies) attached_trophy.on_projectile_fire(destabilizer, user) - destabilizer.preparePixelProjectile(target, user, modifiers) + destabilizer.aim_projectile(target, user, modifiers) destabilizer.firer = user playsound(user, 'sound/items/weapons/plasma_cutter.ogg', 100, TRUE) destabilizer.fire() @@ -423,7 +423,7 @@ marker.name = "deadly [marker.name]" marker.icon_state = "chronobolt" marker.damage = bonus_value - marker.speed = 2 + marker.speed = 0.5 deadly_shot = FALSE /obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user) diff --git a/code/modules/mining/equipment/monster_organs/monster_organ.dm b/code/modules/mining/equipment/monster_organs/monster_organ.dm index b6bd54a361eb5..ccd3a08c19cc2 100644 --- a/code/modules/mining/equipment/monster_organs/monster_organ.dm +++ b/code/modules/mining/equipment/monster_organs/monster_organ.dm @@ -83,7 +83,7 @@ deltimer(decay_timer) return ..() -/obj/item/organ/monster_core/mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags) +/obj/item/organ/monster_core/on_mob_insert(mob/living/carbon/target_carbon, special = FALSE, movement_flags) . = ..() if (inert) @@ -96,7 +96,7 @@ target_carbon.visible_message(span_notice("[src] stabilizes as it's inserted.")) return TRUE -/obj/item/organ/monster_core/mob_remove(mob/living/carbon/target_carbon, special, movement_flags) +/obj/item/organ/monster_core/on_mob_remove(mob/living/carbon/target_carbon, special, movement_flags) if (!inert && !special) owner.visible_message(span_notice("[src] rapidly decays as it's removed.")) go_inert() diff --git a/code/modules/mining/equipment/monster_organs/regenerative_core.dm b/code/modules/mining/equipment/monster_organs/regenerative_core.dm index e601ac89f8c59..bcb7bc0455f27 100644 --- a/code/modules/mining/equipment/monster_organs/regenerative_core.dm +++ b/code/modules/mining/equipment/monster_organs/regenerative_core.dm @@ -31,7 +31,7 @@ trigger_organ_action(TRIGGER_FORCE_AVAILABLE) /obj/item/organ/monster_core/regenerative_core/on_triggered_internal() - owner.revive(HEAL_ALL) + owner.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS) qdel(src) /// Log applications and apply moodlet. diff --git a/code/modules/mining/equipment/monster_organs/rush_gland.dm b/code/modules/mining/equipment/monster_organs/rush_gland.dm index cf901269e904c..8012286975adb 100644 --- a/code/modules/mining/equipment/monster_organs/rush_gland.dm +++ b/code/modules/mining/equipment/monster_organs/rush_gland.dm @@ -25,7 +25,7 @@ . = ..() RegisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED, PROC_REF(trigger_organ_action_on_sig)) -/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/monster_core/rush_gland/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_GOLIATH_TENTACLED_GRABBED) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index ce0c2d923a457..a770d7f4bbf0d 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -4,7 +4,7 @@ icon_state = "away" static_lighting = TRUE requires_power = FALSE - has_gravity = STANDARD_GRAVITY + default_gravity = STANDARD_GRAVITY area_flags = BLOBS_ALLOWED | UNIQUE_AREA flags_1 = CAN_BE_DIRTY_1 diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index 6ffcfa7bc6752..fa9b63a4658a7 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -103,7 +103,7 @@ light_on = FALSE wibbles = FALSE -/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M) +/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M, force = FALSE) . = ..() if(.) // KERPLUNK diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index ee700e3d9774b..75d532249f492 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -12,16 +12,30 @@ var/obj/machinery/mineral/stacking_machine/laborstacker/stacking_machine /// Needed to send messages to sec radio var/obj/item/radio/security_radio + /// Whether the claim console initiated the launch. + var/initiated_launch = FALSE + /// Cooldown for console says. + COOLDOWN_DECLARE(say_cooldown) /obj/machinery/mineral/labor_claim_console/Initialize(mapload) . = ..() security_radio = new /obj/item/radio(src) security_radio.set_listening(FALSE) locate_stacking_machine() + if(!SSshuttle.initialized) + RegisterSignal(SSshuttle, COMSIG_SUBSYSTEM_POST_INITIALIZE, PROC_REF(register_shuttle_signal)) + else + register_shuttle_signal() //If we can't find a stacking machine end it all ok? if(!stacking_machine) return INITIALIZE_HINT_QDEL +/obj/machinery/mineral/labor_claim_console/proc/register_shuttle_signal() + SIGNAL_HANDLER + var/obj/docking_port/mobile/laborshuttle = SSshuttle.getShuttle("laborcamp") + RegisterSignal(laborshuttle, COMSIG_SHUTTLE_SHOULD_MOVE, PROC_REF(on_laborshuttle_can_move)) + UnregisterSignal(SSshuttle, COMSIG_SUBSYSTEM_POST_INITIALIZE) + /obj/machinery/mineral/labor_claim_console/Destroy() QDEL_NULL(security_radio) if(stacking_machine) @@ -86,23 +100,34 @@ var/obj/item/card/id/advanced/prisoner/worn_prisoner_id = worn_id worn_prisoner_id.points += stacking_machine.points stacking_machine.points = 0 - to_chat(user_mob, span_notice("Points transferred.")) + say("Points transferred.") return TRUE else - to_chat(user_mob, span_alert("No valid id for point transfer detected.")) + if(COOLDOWN_FINISHED(src, say_cooldown)) + say("No valid id for point transfer detected.") + COOLDOWN_START(src, say_cooldown, 2 SECONDS) if("move_shuttle") - if(!alone_in_area(get_area(src), user_mob)) - to_chat(user_mob, span_alert("Prisoners are only allowed to be released while alone.")) + var/list/labor_shuttle_mobs = find_labor_shuttle_mobs() + if(length(labor_shuttle_mobs) > 1 || labor_shuttle_mobs[1] != user_mob) + if(COOLDOWN_FINISHED(src, say_cooldown)) + say("Prisoners may only be released one at a time.") + COOLDOWN_START(src, say_cooldown, 2 SECONDS) return switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE)) if(1) - to_chat(user_mob, span_alert("Shuttle not found.")) + if(COOLDOWN_FINISHED(src, say_cooldown)) + say("Shuttle not found.") + COOLDOWN_START(src, say_cooldown, 2 SECONDS) if(2) - to_chat(user_mob, span_alert("Shuttle already at station.")) + if(COOLDOWN_FINISHED(src, say_cooldown)) + say("Shuttle already at station.") + COOLDOWN_START(src, say_cooldown, 2 SECONDS) if(3) - to_chat(user_mob, span_alert("No permission to dock could be granted.")) + if(COOLDOWN_FINISHED(src, say_cooldown)) + say("No permission to dock could be granted.") + COOLDOWN_START(src, say_cooldown, 2 SECONDS) else if(!(obj_flags & EMAGGED)) security_radio.set_frequency(FREQ_SECURITY) @@ -111,9 +136,29 @@ security_radio.talk_into(src, "[user_mob.name] returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY) user_mob.log_message("has completed their labor points goal and is now sending the gulag shuttle back to the station.", LOG_GAME) - to_chat(user_mob, span_notice("Shuttle received message and will be sent shortly.")) + say("Labor sentence finished, shuttle returning.") + initiated_launch = TRUE return TRUE +/obj/machinery/mineral/labor_claim_console/proc/find_labor_shuttle_mobs() + var/list/prisoners = mobs_in_area_type(list(get_area(src))) + + // security personnel and nonhumans do not count towards this + for(var/mob/living/mob as anything in prisoners) + var/obj/item/card/id/card = mob.get_idcard(FALSE) + if(!ishuman(mob) || (ACCESS_BRIG in card?.GetAccess())) + prisoners -= mob + + return prisoners + +/obj/machinery/mineral/labor_claim_console/proc/on_laborshuttle_can_move(obj/docking_port/mobile/source) + SIGNAL_HANDLER + + if(initiated_launch && length(find_labor_shuttle_mobs()) > 1) + initiated_launch = FALSE + say("Takeoff aborted. Prisoners may only be released one at a time.") + return BLOCK_SHUTTLE_MOVE + /obj/machinery/mineral/labor_claim_console/proc/locate_stacking_machine() stacking_machine = locate(/obj/machinery/mineral/stacking_machine) in dview(2, get_turf(src)) if(stacking_machine) @@ -150,10 +195,10 @@ points += SHEET_POINT_VALUE * input.amount return ..() -/obj/machinery/mineral/stacking_machine/laborstacker/attackby(obj/item/weapon, mob/user, params) +/obj/machinery/mineral/stacking_machine/laborstacker/base_item_interaction(mob/living/user, obj/item/weapon, list/modifiers) if(istype(weapon, /obj/item/stack/sheet)) process_sheet(weapon) - return + return ITEM_INTERACT_SUCCESS return ..() /**********************Point Lookup Console**************************/ diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index d355014c6ad70..3b33119aa24e7 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -553,7 +553,7 @@ return COOLDOWN_START(src, attack_cooldown, 3 SECONDS) var/obj/projectile/projectile = new /obj/projectile/soulscythe(get_turf(src)) - projectile.preparePixelProjectile(attacked_atom, src) + projectile.aim_projectile(attacked_atom, src) projectile.firer = src projectile.fire(null, attacked_atom) visible_message(span_danger("[src] fires at [attacked_atom]!"), span_notice("You fire at [attacked_atom]!")) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 58b7b437d7c54..bb6215705160d 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -145,8 +145,8 @@ /obj/structure/closet/crate/necropolis/colossus name = "colossus chest" -/obj/structure/closet/crate/necropolis/colossus/bullet_act(obj/projectile/P) - if(istype(P, /obj/projectile/colossus)) +/obj/structure/closet/crate/necropolis/colossus/bullet_act(obj/projectile/proj) + if(istype(proj, /obj/projectile/colossus)) return BULLET_ACT_FORCE_PIERCE return ..() diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm index fe338b35ccb93..bb36b6d91027c 100644 --- a/code/modules/mining/lavaland/tendril_loot.dm +++ b/code/modules/mining/lavaland/tendril_loot.dm @@ -760,8 +760,10 @@ berserk_value *= PROJECTILE_HIT_MULTIPLIER berserk_charge = clamp(round(berserk_charge + berserk_value), 0, MAX_BERSERK_CHARGE) if(berserk_charge >= MAX_BERSERK_CHARGE) + var/datum/action/item_action/berserk_mode/ragemode = locate() in actions to_chat(owner, span_notice("Berserk mode is fully charged.")) balloon_alert(owner, "berserk charged") + ragemode?.build_all_button_icons(UPDATE_BUTTON_STATUS) /obj/item/clothing/head/hooded/berserker/IsReflect() if(berserk_active) @@ -769,6 +771,7 @@ /// Starts berserk, reducing incoming brute by 50%, doubled attacking speed, NOGUNS trait, adding a color and giving them the berserk movespeed modifier /obj/item/clothing/head/hooded/berserker/proc/berserk_mode(mob/living/carbon/human/user) + var/datum/action/item_action/berserk_mode/ragemode = locate() in actions to_chat(user, span_warning("You enter berserk mode.")) playsound(user, 'sound/effects/magic/staff_healing.ogg', 50) user.add_movespeed_modifier(/datum/movespeed_modifier/berserk) @@ -779,6 +782,7 @@ ADD_TRAIT(src, TRAIT_NODROP, BERSERK_TRAIT) berserk_active = TRUE START_PROCESSING(SSobj, src) + ragemode?.build_all_button_icons(UPDATE_BUTTON_STATUS) /// Ends berserk, reverting the changes from the proc [berserk_mode] /obj/item/clothing/head/hooded/berserker/proc/end_berserk(mob/living/carbon/human/user) @@ -787,6 +791,8 @@ berserk_active = FALSE if(QDELETED(user)) return + var/datum/action/item_action/berserk_mode/ragemode = locate() in actions + ragemode?.build_all_button_icons(UPDATE_BUTTON_STATUS) to_chat(user, span_warning("You exit berserk mode.")) playsound(user, 'sound/effects/magic/summonitems_generic.ogg', 50) user.remove_movespeed_modifier(/datum/movespeed_modifier/berserk) @@ -811,7 +817,11 @@ /obj/item/drake_remains/Initialize(mapload) . = ..() - particles = new /particles/bonfire() + add_shared_particles(/particles/bonfire) + +/obj/item/drake_remains/Destroy(force) + remove_shared_particles(/particles/bonfire) + return ..() /obj/item/clothing/glasses/godeye name = "eye of god" @@ -962,9 +972,7 @@ if(!katana.drew_blood) to_chat(owner, span_userdanger("[katana] lashes out at you in hunger!")) playsound(owner, 'sound/effects/magic/demon_attack1.ogg', 50, TRUE) - var/obj/item/bodypart/part = owner.get_holding_bodypart_of_item(katana) - if(part) - part.receive_damage(brute = 25, wound_bonus = 10, sharpness = SHARP_EDGED) + owner.apply_damage(25, BRUTE, hand, wound_bonus = 10, sharpness = SHARP_EDGED) katana.drew_blood = FALSE katana.wash(CLEAN_TYPE_BLOOD) return ..() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 312acb6672014..24e0f53a87ab7 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -229,21 +229,27 @@ for(var/datum/material/material as anything in mat_container.materials) var/amount = mat_container.materials[material] var/sheet_amount = amount / SHEET_MATERIAL_AMOUNT + var/obj/sheet_type = material.sheet_type data["materials"] += list(list( "name" = material.name, "id" = REF(material), "amount" = sheet_amount, "category" = "material", "value" = ore_values[material.type], + "icon" = sheet_type::icon, + "icon_state" = sheet_type::icon_state, )) for(var/research in stored_research.researched_designs) var/datum/design/alloy = SSresearch.techweb_design_by_id(research) + var/obj/alloy_type = alloy.build_path data["materials"] += list(list( "name" = alloy.name, "id" = alloy.id, "category" = "alloy", "amount" = can_smelt_alloy(alloy), + "icon" = alloy_type::icon, + "icon_state" = alloy_type::icon_state, )) data["disconnected"] = null @@ -274,29 +280,6 @@ ) return data -/obj/machinery/mineral/ore_redemption/ui_static_data(mob/user) - var/list/data = list() - - var/datum/component/material_container/mat_container = materials.mat_container - if (mat_container) - for(var/datum/material/material as anything in mat_container.materials) - var/obj/material_display = initial(material.sheet_type) - data["material_icons"] += list(list( - "id" = REF(material), - "product_icon" = icon2base64(getFlatIcon(image(icon = initial(material_display.icon), icon_state = initial(material_display.icon_state)), no_anim=TRUE)), - )) - - for(var/research in stored_research.researched_designs) - var/datum/design/alloy = SSresearch.techweb_design_by_id(research) - var/obj/alloy_display = initial(alloy.build_path) - data["material_icons"] += list(list( - "id" = alloy.id, - "product_icon" = icon2base64(getFlatIcon(image(icon = initial(alloy_display.icon), icon_state = initial(alloy_display.icon_state)), no_anim=TRUE)), - )) - - return data - - /obj/machinery/mineral/ore_redemption/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() if(.) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index d74e46b026414..e08fed91b0951 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -135,10 +135,6 @@ roundstart_template = /datum/map_template/shuttle/mining/kilo height = 10 -/obj/docking_port/stationary/mining_home/northstar - roundstart_template = /datum/map_template/shuttle/mining/northstar - height = 6 - /obj/docking_port/stationary/mining_home/nebula roundstart_template = /datum/map_template/shuttle/mining/nebula height = 10 @@ -151,9 +147,6 @@ /obj/docking_port/stationary/mining_home/common/kilo roundstart_template = /datum/map_template/shuttle/mining_common/kilo -/obj/docking_port/stationary/mining_home/common/northstar - roundstart_template = /datum/map_template/shuttle/mining_common/northstar - /obj/structure/closet/crate/miningcar name = "mine cart" desc = "A cart for use on rails. Or off rails, if you're so inclined." diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 0b051248a3966..55a1b9557c26d 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -341,8 +341,8 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ else return ..() -/obj/item/gibtonite/bullet_act(obj/projectile/P) - GibtoniteReaction(P.firer, "A projectile has primed for detonation a") +/obj/item/gibtonite/bullet_act(obj/projectile/proj) + GibtoniteReaction(proj.firer, "A projectile has primed for detonation a") return ..() /obj/item/gibtonite/ex_act() diff --git a/code/modules/mining/satchel_ore_box.dm b/code/modules/mining/satchel_ore_box.dm index 94be35108d0b0..2745bdb5d09d7 100644 --- a/code/modules/mining/satchel_ore_box.dm +++ b/code/modules/mining/satchel_ore_box.dm @@ -66,6 +66,13 @@ else return ..() +/obj/structure/ore_box/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) + . = ..() + if(istype(arrived, /obj/item/boulder) && ismecha(loc)) //Boulders being put into a mech's orebox get processed + var/obj/item/boulder/to_process = arrived + to_process.convert_to_ore(src) + qdel(to_process) + /obj/structure/ore_box/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) diff --git a/code/modules/mining/shelters.dm b/code/modules/mining/shelters.dm index 539854a394756..5a08b29202208 100644 --- a/code/modules/mining/shelters.dm +++ b/code/modules/mining/shelters.dm @@ -17,7 +17,7 @@ /datum/map_template/shelter/New() . = ..() blacklisted_turfs = typecacheof(/turf/closed) - banned_areas = typecacheof(/area/shuttle) + banned_areas = typecacheof(list(/area/shuttle, /area/station/holodeck)) /datum/map_template/shelter/proc/check_deploy(turf/deploy_location, obj/item/survivalcapsule/capsule, ignore_flags = NONE) var/affected = get_affected_turfs(deploy_location, centered=TRUE) diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index d2823eae2b580..5e77627e00d55 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -104,7 +104,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) if(isliving(mob_poi)) serialized += get_living_data(mob_poi) - var/list/antag_data = get_antag_data(mob_poi.mind) + var/list/antag_data = get_antag_data(mob_poi.mind, user?.client?.holder) if(length(antag_data)) serialized += antag_data antagonists += list(serialized) @@ -151,11 +151,11 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) /// Helper function to get threat type, group, overrides for job and icon -/datum/orbit_menu/proc/get_antag_data(datum/mind/poi_mind) as /list +/datum/orbit_menu/proc/get_antag_data(datum/mind/poi_mind, is_admin) as /list var/list/serialized = list() for(var/datum/antagonist/antag as anything in poi_mind.antag_datums) - if(!antag.show_to_ghosts) + if(!antag.show_to_ghosts && !is_admin) continue serialized["antag"] = antag.name diff --git a/code/modules/mob/eye/camera/camera.dm b/code/modules/mob/eye/camera/camera.dm new file mode 100644 index 0000000000000..9f3ddc7b2eed4 --- /dev/null +++ b/code/modules/mob/eye/camera/camera.dm @@ -0,0 +1,80 @@ +/** + * Eye mob used to look around a [camera network][/datum/cameranet]. \ + * As it moves, it makes requests to the network to update what the user can and cannot see. + */ +/mob/eye/camera + name = "Inactive Camera Eye" + icon = 'icons/mob/eyemob.dmi' + icon_state = "generic_camera" + + invisibility = INVISIBILITY_OBSERVER + interaction_range = INFINITY + /// If TRUE, the eye will cover turfs hidden to the cameranet with static. + var/use_visibility = TRUE + /// List of [camera chunks][/datum/camerachunk] visible to this camera. + /// Please don't interface with this directly. Use the [cameranet][/datum/cameranet]. + var/final/list/datum/camerachunk/visibleCameraChunks = list() + /// NxN Range of a single camera chunk. + var/static_visibility_range = 16 + +/mob/eye/camera/Initialize(mapload) + . = ..() + GLOB.camera_eyes += src + +/mob/eye/camera/Destroy() + for(var/datum/camerachunk/chunk in visibleCameraChunks) + chunk.remove(src) + GLOB.camera_eyes -= src + return ..() + +/** + * Getter proc for getting the current user's client. + * + * The base version of this proc returns null. + * Subtypes are expected to overload this proc and make it return something meaningful. + */ +/mob/eye/camera/proc/GetViewerClient() + RETURN_TYPE(/client) + SHOULD_BE_PURE(TRUE) + + return null + +/** + * Use this when setting the camera eye's location directly. \ + * It will also attempt to update visible chunks. + */ +/mob/eye/camera/proc/setLoc(destination, force_update = FALSE) + SHOULD_NOT_SLEEP(TRUE) + SHOULD_CALL_PARENT(TRUE) + + destination = get_turf(destination) + if(!force_update && (destination == get_turf(src))) + return + + if(destination) + abstract_move(destination) + else + moveToNullspace() + + if(use_visibility) + update_visibility() + update_parallax_contents() + +/// Sends a visibility query to the cameranet. +/// Can be used as a signal handler. +/mob/eye/camera/proc/update_visibility() + SIGNAL_HANDLER + PROTECTED_PROC(TRUE) + SHOULD_CALL_PARENT(TRUE) + + if(use_visibility) + GLOB.cameranet.visibility(src) + +/mob/eye/camera/zMove(dir, turf/target, z_move_flags = NONE, recursions_left = 1, list/falling_movs) + . = ..() + if(.) + setLoc(loc, force_update = TRUE) + +/mob/eye/camera/Move() + SHOULD_NOT_OVERRIDE(TRUE) + return diff --git a/code/modules/mob/eye/camera/remote.dm b/code/modules/mob/eye/camera/remote.dm new file mode 100644 index 0000000000000..97fe41886ce93 --- /dev/null +++ b/code/modules/mob/eye/camera/remote.dm @@ -0,0 +1,130 @@ +/** + * A camera controlled by a machine-operating user, like advanced cameras. + * Handles assigning/unassigning it's users, as well as applying sight effects. + */ +/mob/eye/camera/remote + /// Weakref to the current user of this eye. Must be a [living mob][/mob/living]. + var/datum/weakref/user_ref + /// Weakref to the creator of this eye. Must be a [machine][/obj/machinery]. + var/datum/weakref/origin_ref + + /// TRUE if this camera should show itself to the user. + var/visible_to_user = FALSE + /// If visible_to_user is TRUE, it will show this in the center of the screen. + VAR_PROTECTED/image/user_image + + /* The below code could be shared by AI eyes... */ + + /// If TRUE, the eye will have acceleration when moving. + var/acceleration = TRUE + /// Used internally for calculating wait time. (world.timeofday + wait_time) + VAR_FINAL/last_moved = 0 + /// The amount of time that must pass before var/sprint is reset. + VAR_PROTECTED/wait_time = 5 DECISECONDS + /// The speed of the camera. Scales from initial(sprint) to var/max_sprint + VAR_PROTECTED/sprint = 10 + /// Amount of speed that is added to var/sprint. + VAR_PROTECTED/momentum = 0.5 + /// The maximum sprint that this eye can reach. + VAR_PROTECTED/max_sprint = 50 + + +/mob/eye/camera/remote/Initialize(mapload, obj/machinery/creator) + if(!creator) + return INITIALIZE_HINT_QDEL + + . = ..() + + origin_ref = WEAKREF(creator) + if(visible_to_user) + set_user_icon(icon, icon_state) + +/mob/eye/camera/remote/Destroy() + var/mob/living/user = user_ref?.resolve() + var/obj/machinery/origin = origin_ref?.resolve() + if(origin && user) + origin.remove_eye_control(user,src) + + assign_user(null) + origin_ref = null + return ..() + +/mob/eye/camera/remote/proc/assign_user(mob/living/new_user) + var/mob/living/old_user = user_ref?.resolve() + if(old_user) + old_user.remote_control = null + old_user.reset_perspective(null) + name = initial(src.name) + + var/client/old_user_client = GetViewerClient() + if(user_image && old_user_client) + old_user_client.images -= user_image + + user_ref = WEAKREF(new_user) //The user_ref can still be null! + + if(new_user) + new_user.remote_control = src + new_user.reset_perspective(src) + name = "Camera Eye ([new_user.name])" + + var/client/new_user_client = GetViewerClient() + if(user_image && new_user_client) + new_user_client.images += user_image + +/** + * Sets the camera's user image to this icon and state. + * If chosen_icon is null, the user image will be removed. + */ +/mob/eye/camera/remote/proc/set_user_icon(icon/chosen_icon, icon_state) + SHOULD_CALL_PARENT(TRUE) + + var/client/user_client = GetViewerClient() + + if(!isnull(chosen_icon)) + set_user_icon(null) //remove whatever the last icon was + if(!isicon(chosen_icon) || !(!isnull(icon_state) && istext(icon_state))) + CRASH("Tried to set [src]'s user_image with bad parameters") + + user_image = image(chosen_icon, src, icon_state, FLY_LAYER) + if(user_client) + user_client.images += user_image + else + if(user_client) + user_client.images -= user_image + QDEL_NULL(user_image) + +/mob/eye/camera/remote/update_remote_sight(mob/living/user) + user.set_invis_see(SEE_INVISIBLE_LIVING) //can't see ghosts through cameras + user.set_sight(SEE_TURFS) + return TRUE + +/mob/eye/camera/remote/GetViewerClient() + var/mob/living/user = user_ref?.resolve() + + if(user) + return user.client + return null + +/mob/eye/camera/remote/setLoc(turf/destination, force_update = FALSE) + . = ..() + + var/client/user_client = GetViewerClient() + if(user_image && user_client) + SET_PLANE(user_image, ABOVE_GAME_PLANE, destination) //incase we move a z-level + +/mob/eye/camera/remote/relaymove(mob/living/user, direction) + var/initial = initial(src.sprint) + + if(last_moved < world.timeofday) // It's been too long since we last moved, reset sprint + sprint = initial + + for(var/i = 0; i < max(sprint, initial); i += 20) + var/turf/step = get_turf(get_step(src, direction)) + if(step) + setLoc(step) + + last_moved = world.timeofday + wait_time + if(acceleration) + sprint = min(sprint + momentum, max_sprint) + else + sprint = initial diff --git a/code/modules/mob/eye/eye.dm b/code/modules/mob/eye/eye.dm index ca58e2969c588..54cb5e2b40a4f 100644 --- a/code/modules/mob/eye/eye.dm +++ b/code/modules/mob/eye/eye.dm @@ -1,4 +1,4 @@ -// Eye mob, used by cameras and overminds such as blobs. +/// Eye mob, used by cameras and overminds such as blobs. /mob/eye name = "eye mob" density = FALSE @@ -8,9 +8,9 @@ invisibility = INVISIBILITY_ABSTRACT // No one can see us sight = SEE_SELF status_flags = NONE - /// Toggles if the camera can move on shuttles + /// Toggles if the eye can move on shuttles var/move_on_shuttle = FALSE - /// Toggles if the camera can use emotes + /// Toggles if the eye can use emotes var/has_emotes = FALSE /mob/eye/Initialize(mapload) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index ee173795c1321..14e38e65144b3 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -16,7 +16,7 @@ //So we're treating each "pair" of limbs as a team, so "both" refers to them /mob/proc/get_inactive_hand_index() var/other_hand = 0 - if(!(active_hand_index % 2)) + if(IS_RIGHT_INDEX(active_hand_index)) other_hand = active_hand_index-1 //finding the matching "left" limb else other_hand = active_hand_index+1 //finding the matching "right" limb @@ -33,7 +33,7 @@ //Odd = left. Even = right /mob/proc/held_index_to_dir(i) - if(!(i % 2)) + if(IS_RIGHT_INDEX(i)) return "r" return "l" @@ -132,7 +132,7 @@ if(i > 2) hand += "upper " var/num = 0 - if(!(i % 2)) + if(IS_RIGHT_INDEX(i)) num = i-2 hand += "right hand" else diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm index be7ce8bc5ddc5..c120eab84250d 100644 --- a/code/modules/mob/living/basic/bots/_bots.dm +++ b/code/modules/mob/living/basic/bots/_bots.dm @@ -16,10 +16,6 @@ GLOBAL_LIST_INIT(command_strings, list( basic_mob_flags = DEL_ON_DEATH density = FALSE - icon = 'icons/mob/silicon/aibots.dmi' - icon_state = "medibot0" - base_icon_state = "medibot" - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, STAMINA = 0, OXY = 0) habitable_atmos = null hud_possible = list(DIAG_STAT_HUD, DIAG_BOT_HUD, DIAG_HUD, DIAG_BATT_HUD, DIAG_PATH_HUD = HUD_LIST_LIST) @@ -103,6 +99,8 @@ GLOBAL_LIST_INIT(command_strings, list( TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, ) + ///name of the UI we will attempt to open + var/bot_ui = "SimpleBot" /// If true we will offer this COOLDOWN_DECLARE(offer_ghosts_cooldown) @@ -321,6 +319,7 @@ GLOBAL_LIST_INIT(command_strings, list( to_chat(src, span_boldnotice(get_emagged_message())) if(user) log_combat(user, src, "emagged") + emag_effects(user) return TRUE /mob/living/basic/bot/examine(mob/user) @@ -371,7 +370,7 @@ GLOBAL_LIST_INIT(command_strings, list( /mob/living/basic/bot/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "SimpleBot", name) + ui = new(user, src, bot_ui, name) ui.open() /mob/living/basic/bot/click_alt(mob/user) @@ -625,6 +624,7 @@ GLOBAL_LIST_INIT(command_strings, list( return if(!(bot_access_flags & BOT_COVER_EMAGGED)) bot_access_flags |= (BOT_COVER_LOCKED|BOT_COVER_EMAGGED|BOT_COVER_HACKED) + emag_effects(the_user) to_chat(the_user, span_warning("You overload [src]'s [hackables].")) message_admins("Safety lock of [ADMIN_LOOKUPFLW(src)] was disabled by [ADMIN_LOOKUPFLW(the_user)] in [ADMIN_VERBOSEJMP(the_user)]") the_user.log_message("disabled safety lock of [the_user]", LOG_GAME) @@ -633,7 +633,7 @@ GLOBAL_LIST_INIT(command_strings, list( to_chat(src, span_boldnotice(get_emagged_message())) return if(!(bot_access_flags & BOT_COVER_HACKED)) - to_chat(the_user, span_boldannounce("You fail to repair [src]'s [hackables].")) + to_chat(the_user, span_bolddanger("You fail to repair [src]'s [hackables].")) return bot_access_flags &= ~(BOT_COVER_EMAGGED|BOT_COVER_HACKED) to_chat(the_user, span_notice("You reset the [src]'s [hackables].")) @@ -816,6 +816,9 @@ GLOBAL_LIST_INIT(command_strings, list( if(attack_flags & ATTACKER_DAMAGING_ATTACK) do_sparks(number = 5, cardinal_only = TRUE, source = src) +/mob/living/basic/bot/proc/emag_effects(user) + return + /mob/living/basic/bot/spawn_gibs(drop_bitflags = NONE) new /obj/effect/gibspawner/robot(drop_location(), src) diff --git a/code/modules/mob/living/basic/bots/bot_ai.dm b/code/modules/mob/living/basic/bots/bot_ai.dm index d777614d7433e..f04aed05eaa29 100644 --- a/code/modules/mob/living/basic/bots/bot_ai.dm +++ b/code/modules/mob/living/basic/bots/bot_ai.dm @@ -1,3 +1,5 @@ +#define BOT_NO_BEACON_PATH_PENALTY 30 SECONDS + /datum/ai_controller/basic_controller/bot blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, @@ -9,24 +11,24 @@ ) ai_movement = /datum/ai_movement/jps/bot - idle_behavior = /datum/idle_behavior/idle_random_walk/less_walking planning_subtrees = list( /datum/ai_planning_subtree/respond_to_summon, /datum/ai_planning_subtree/salute_authority, /datum/ai_planning_subtree/find_patrol_beacon, - /datum/ai_planning_subtree/manage_unreachable_list, ) max_target_distance = AI_BOT_PATH_LENGTH + can_idle = FALSE + ///minimum distance we need to be from our target in path calculations + var/minimum_distance = 0 ///keys to be reset when the bot is reseted var/list/reset_keys = list( BB_BEACON_TARGET, BB_PREVIOUS_BEACON_TARGET, BB_BOT_SUMMON_TARGET, ) - can_idle = FALSE /datum/targeting_strategy/basic/bot/can_attack(mob/living/living_mob, atom/the_target, vision_range) - var/datum/ai_controller/my_controller = living_mob.ai_controller + var/datum/ai_controller/basic_controller/bot/my_controller = living_mob.ai_controller if(isnull(my_controller)) return FALSE if(!ishuman(the_target) || LAZYACCESS(my_controller.blackboard[BB_TEMPORARY_IGNORE_LIST], the_target)) @@ -36,9 +38,9 @@ return FALSE if(get_turf(living_mob) == get_turf(living_target)) return ..() - var/list/path = get_path_to(living_mob, living_target, max_distance = 10, access = my_controller.get_access()) + var/list/path = get_path_to(living_mob, living_target, mintargetdist = my_controller.minimum_distance, max_distance = 10, access = my_controller.get_access()) if(!length(path) || QDELETED(living_mob)) - my_controller?.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, living_target, TRUE) + my_controller?.add_to_blacklist(living_target) return FALSE return ..() @@ -55,6 +57,16 @@ if(current_movement_target == blackboard[BB_BEACON_TARGET]) source.update_bot_mode(new_mode = BOT_PATROL) +/datum/ai_controller/basic_controller/bot/proc/add_to_blacklist(atom/target, duration) + var/final_duration = duration || blackboard[BB_UNREACHABLE_LIST_COOLDOWN] + set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + addtimer(CALLBACK(src, PROC_REF(remove_from_blacklist), target), final_duration) + +/datum/ai_controller/basic_controller/bot/proc/remove_from_blacklist(atom/target) + if(QDELETED(target)) + return + remove_from_blackboard_lazylist_key(BB_TEMPORARY_IGNORE_LIST, target) + /datum/ai_controller/basic_controller/bot/proc/clear_summon() SIGNAL_HANDLER @@ -88,12 +100,14 @@ clear_blackboard_key(key) ///set the target if we can reach them -/datum/ai_controller/basic_controller/bot/proc/set_if_can_reach(key, target, distance = 10, bypass_add_to_blacklist = FALSE) +/datum/ai_controller/basic_controller/bot/proc/set_if_can_reach(key, target, duration, distance = 10, bypass_add_to_blacklist = FALSE) if(can_reach_target(target, distance)) set_blackboard_key(key, target) return TRUE - if(!bypass_add_to_blacklist) - set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + if(bypass_add_to_blacklist) + return FALSE + var/final_duration = duration || blackboard[BB_UNREACHABLE_LIST_COOLDOWN] + add_to_blacklist(target, final_duration) return FALSE /datum/ai_controller/basic_controller/bot/proc/can_reach_target(target, distance = 10) @@ -101,30 +115,8 @@ return TRUE if(get_turf(pawn) == get_turf(target)) return TRUE - var/list/path = get_path_to(pawn, target, max_distance = distance, access = get_access()) - if(!length(path)) - return FALSE - return TRUE - -/// subtree to manage our list of unreachables, we reset it every 15 seconds -/datum/ai_planning_subtree/manage_unreachable_list - -/datum/ai_planning_subtree/manage_unreachable_list/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) - if(isnull(controller.blackboard[BB_UNREACHABLE_LIST_COOLDOWN]) || controller.blackboard[BB_CLEAR_LIST_READY] > world.time) - return - controller.queue_behavior(/datum/ai_behavior/manage_unreachable_list, BB_TEMPORARY_IGNORE_LIST) - -/datum/ai_behavior/manage_unreachable_list - behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION - -/datum/ai_behavior/manage_unreachable_list/perform(seconds_per_tick, datum/ai_controller/controller, list_key) - if(!isnull(controller.blackboard[list_key])) - controller.clear_blackboard_key(list_key) - return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED - -/datum/ai_behavior/manage_unreachable_list/finish_action(datum/ai_controller/controller, succeeded) - . = ..() - controller.set_blackboard_key(BB_CLEAR_LIST_READY, controller.blackboard[BB_UNREACHABLE_LIST_COOLDOWN] + world.time) + var/list/path = get_path_to(pawn, target, simulated_only = !HAS_TRAIT(pawn, TRAIT_SPACEWALK), mintargetdist = minimum_distance, max_distance = distance, access = get_access()) + return (!!length(path)) /datum/ai_planning_subtree/find_patrol_beacon ///travel towards beacon behavior @@ -132,6 +124,10 @@ /datum/ai_planning_subtree/find_patrol_beacon/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) var/mob/living/basic/bot/bot_pawn = controller.pawn + + if(controller.blackboard[BB_BOT_BEACON_COOLDOWN] > world.time) + return + if(!(bot_pawn.bot_mode_flags & BOT_MODE_AUTOPATROL) || bot_pawn.mode == BOT_SUMMON) return @@ -166,7 +162,10 @@ controller.set_blackboard_key(BB_BEACON_TARGET, final_target) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED -/datum/ai_behavior/find_next_beacon_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key) +/datum/ai_behavior/find_next_beacon_target + action_cooldown = 5 SECONDS + +/datum/ai_behavior/find_next_beacon_target/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key) var/mob/living/basic/bot/bot_pawn = controller.pawn var/atom/final_target var/obj/machinery/navbeacon/prev_beacon = controller.blackboard[BB_PREVIOUS_BEACON_TARGET] @@ -179,19 +178,37 @@ break if(isnull(final_target)) - controller.clear_blackboard_key(BB_PREVIOUS_BEACON_TARGET) + controller.clear_blackboard_key(BB_PREVIOUS_BEACON_TARGET) //failed to find the next beacon, search for a first beacon again return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED - controller.set_blackboard_key(BB_BEACON_TARGET, final_target) - return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + controller.set_blackboard_key(BB_PREVIOUS_BEACON_TARGET, final_target) + controller.clear_blackboard_key(BB_BEACON_TARGET) + + if(LAZYACCESS(controller.blackboard[BB_TEMPORARY_IGNORE_LIST], final_target) || get_dist(bot_pawn, final_target) > controller.max_target_distance) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + + if(controller.set_if_can_reach(key = BB_BEACON_TARGET, target = final_target, duration = 3 MINUTES, distance = controller.max_target_distance)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + + controller.set_blackboard_key(BB_BOT_BEACON_COOLDOWN, world.time + BOT_NO_BEACON_PATH_PENALTY) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED /datum/ai_behavior/travel_towards/beacon clear_target = TRUE new_movement_type = /datum/ai_movement/jps/bot/travel_to_beacon -/datum/ai_behavior/travel_towards/beacon/finish_action(datum/ai_controller/controller, succeeded, target_key) +/datum/ai_behavior/travel_towards/beacon/setup(datum/ai_controller/controller, target_key) + var/atom/target_beacon = controller.blackboard[target_key] + if(LAZYACCESS(controller.blackboard[BB_TEMPORARY_IGNORE_LIST], target_beacon)) + return FALSE + return ..() + +/datum/ai_behavior/travel_towards/beacon/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key) var/atom/target = controller.blackboard[target_key] + if(!succeeded) + controller.set_blackboard_key(BB_BOT_BEACON_COOLDOWN, world.time + BOT_NO_BEACON_PATH_PENALTY) + controller.add_to_blacklist(target, 3 MINUTES) controller.set_blackboard_key(BB_PREVIOUS_BEACON_TARGET, target) return ..() @@ -265,14 +282,15 @@ action_cooldown = 2 SECONDS behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION -/datum/ai_behavior/bot_search/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, looking_for, radius = 5, pathing_distance = 10, bypass_add_blacklist = FALSE) +/datum/ai_behavior/bot_search/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, looking_for, radius = 5, pathing_distance = 10, bypass_add_blacklist = FALSE, turf_search = FALSE) if(!istype(controller)) stack_trace("attempted to give [controller.pawn] the bot search behavior!") return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED var/mob/living/living_pawn = controller.pawn var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST] - for(var/atom/potential_target as anything in oview(radius, controller.pawn)) + var/list/objects_to_search = turf_search ? RANGE_TURFS(radius, controller.pawn) : oview(radius, controller.pawn) //use range turfs instead of oview when we can for performance + for(var/atom/potential_target as anything in objects_to_search) if(QDELETED(living_pawn)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED if(!is_type_in_typecache(potential_target, looking_for)) @@ -281,7 +299,9 @@ continue if(!valid_target(controller, potential_target)) continue - if(controller.set_if_can_reach(target_key, potential_target, distance = pathing_distance, bypass_add_to_blacklist = bypass_add_blacklist)) + if(!can_see(controller.pawn, potential_target, radius)) + continue + if(controller.set_if_can_reach(key = target_key, target = potential_target, distance = pathing_distance, bypass_add_to_blacklist = bypass_add_blacklist)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED @@ -301,3 +321,40 @@ announcement.announce(pick(list_to_pick_from)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + +///behavior to interact with atoms +/datum/ai_behavior/bot_interact + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH + ///should we remove the target afterwards? + var/clear_target = TRUE + +/datum/ai_behavior/bot_interact/setup(datum/ai_controller/controller, target_key) + . = ..() + var/turf/target = controller.blackboard[target_key] + if(isnull(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/bot_interact/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + var/mob/living/basic/living_pawn = controller.pawn + var/atom/target = controller.blackboard[target_key] + + if(QDELETED(target)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + + living_pawn.UnarmedAttack(target, proximity_flag = TRUE) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + +/datum/ai_behavior/bot_interact/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(clear_target) + controller.clear_blackboard_key(target_key) + if(!succeeded && !isnull(target)) + controller.add_to_blacklist(target) + +/datum/ai_behavior/bot_interact/keep_target + clear_target = FALSE + + +#undef BOT_NO_BEACON_PATH_PENALTY diff --git a/code/modules/mob/living/basic/bots/bot_hud.dm b/code/modules/mob/living/basic/bots/bot_hud.dm index 6cb3f6bcd01b0..0edcaad6a7e2a 100644 --- a/code/modules/mob/living/basic/bots/bot_hud.dm +++ b/code/modules/mob/living/basic/bots/bot_hud.dm @@ -1,13 +1,11 @@ /mob/living/basic/bot/proc/diag_hud_set_bothealth() var/image/holder = hud_list[DIAG_HUD] - var/icon/icon_image = icon(icon, icon_state, dir) - holder.pixel_y = icon_image.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]" /mob/living/basic/bot/proc/diag_hud_set_botstat() //On (With wireless on or off), Off, EMP'ed var/image/holder = hud_list[DIAG_STAT_HUD] - var/icon/our_icon = icon(icon, icon_state, dir) - holder.pixel_y = our_icon.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(bot_mode_flags & BOT_MODE_ON) holder.icon_state = "hudstat" return @@ -18,8 +16,7 @@ /mob/living/basic/bot/proc/diag_hud_set_botmode() //Shows a bot's current operation var/image/holder = hud_list[DIAG_BOT_HUD] - var/icon/icon_image = icon(icon, icon_state, dir) - holder.pixel_y = icon_image.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(client) //If the bot is player controlled, it will not be following mode logic! holder.icon_state = "hudsentient" return @@ -27,7 +24,7 @@ switch(mode) if(BOT_SUMMON, BOT_RESPONDING) //Responding to PDA or AI summons holder.icon_state = "hudcalled" - if(BOT_CLEANING, BOT_REPAIRING, BOT_HEALING) //Cleanbot cleaning, Floorbot fixing, or Medibot Healing + if(BOT_CLEANING, BOT_HEALING) //Cleanbot cleaning, Floorbot fixing, or Medibot Healing holder.icon_state = "hudworking" if(BOT_PATROL, BOT_START_PATROL) //Patrol mode holder.icon_state = "hudpatrol" diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm index 1e2bfdb732b16..68cd6a231e326 100644 --- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm +++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm @@ -199,15 +199,11 @@ if(var_name == NAMEOF(src, base_icon)) update_appearance(UPDATE_ICON) -/mob/living/basic/bot/cleanbot/emag_act(mob/user, obj/item/card/emag/emag_card) - . = ..() - if(!(bot_access_flags & BOT_COVER_EMAGGED)) - return +/mob/living/basic/bot/cleanbot/emag_effects(mob/user) if(weapon) weapon.force = initial(weapon.force) balloon_alert(user, "safeties disabled") audible_message(span_danger("[src] buzzes oddly!")) - return TRUE /mob/living/basic/bot/cleanbot/explode() var/atom/drop_loc = drop_location() diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm index 1fbaa6db2a976..1b6d840062208 100644 --- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm +++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot_ai.dm @@ -15,7 +15,6 @@ ) planning_subtrees = list( /datum/ai_planning_subtree/respond_to_summon, - /datum/ai_planning_subtree/manage_unreachable_list, /datum/ai_planning_subtree/pet_planning/cleanbot, /datum/ai_planning_subtree/cleaning_subtree, /datum/ai_planning_subtree/befriend_janitors, @@ -70,7 +69,7 @@ /datum/ai_behavior/find_and_set/in_list/clean_targets action_cooldown = 3 SECONDS -/datum/ai_behavior/find_and_set/in_list/clean_targets/search_tactic(datum/ai_controller/controller, locate_paths, search_range) +/datum/ai_behavior/find_and_set/in_list/clean_targets/search_tactic(datum/ai_controller/basic_controller/bot/controller, locate_paths, search_range) var/list/found = typecache_filter_list(oview(search_range, controller.pawn), locate_paths) var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST] for(var/atom/found_item in found) @@ -82,7 +81,7 @@ return found_item var/list/path = get_path_to(controller.pawn, found_item, max_distance = BOT_CLEAN_PATH_LIMIT, access = controller.get_access()) if(!length(path)) - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, found_item, TRUE) + controller.add_to_blacklist(found_item) continue return found_item @@ -132,13 +131,13 @@ living_pawn.UnarmedAttack(target, proximity_flag = TRUE) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED -/datum/ai_behavior/execute_clean/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key) +/datum/ai_behavior/execute_clean/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key) . = ..() controller.set_blackboard_key(BB_POST_CLEAN_COOLDOWN, POST_CLEAN_COOLDOWN + world.time) var/atom/target = controller.blackboard[target_key] if(!succeeded && !isnull(target)) controller.clear_blackboard_key(target_key) - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + controller.add_to_blacklist(target) return if(QDELETED(target) || is_type_in_typecache(target, controller.blackboard[BB_HUNTABLE_TRASH])) return diff --git a/code/modules/mob/living/basic/bots/dedbot.dm b/code/modules/mob/living/basic/bots/dedbot.dm index 1b077af343f0c..0560f02a56292 100644 --- a/code/modules/mob/living/basic/bots/dedbot.dm +++ b/code/modules/mob/living/basic/bots/dedbot.dm @@ -63,7 +63,6 @@ /datum/ai_planning_subtree/targeted_mob_ability/exenterate, /datum/ai_planning_subtree/respond_to_summon, /datum/ai_planning_subtree/find_patrol_beacon, - /datum/ai_planning_subtree/manage_unreachable_list, ) max_target_distance = AI_BOT_PATH_LENGTH ///keys to be reset when the bot is reseted diff --git a/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm b/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm index 31127ecdfb4e7..fa66c6d794da8 100644 --- a/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm +++ b/code/modules/mob/living/basic/bots/firebot/firebot_ai.dm @@ -3,11 +3,10 @@ /datum/ai_controller/basic_controller/bot/firebot blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_turfs, - BB_UNREACHABLE_LIST_COOLDOWN = 45 SECONDS, + BB_UNREACHABLE_LIST_COOLDOWN = 3 MINUTES, ) planning_subtrees = list( /datum/ai_planning_subtree/respond_to_summon, - /datum/ai_planning_subtree/manage_unreachable_list, /datum/ai_planning_subtree/extinguishing_people, /datum/ai_planning_subtree/extinguishing_turfs, /datum/ai_planning_subtree/salute_authority, @@ -99,7 +98,7 @@ continue if(LAZYACCESS(ignore_list, possible_turf)) continue - if(controller.set_if_can_reach(target_key, possible_turf, bypass_add_to_blacklist = bypass_add_blacklist)) + if(controller.set_if_can_reach(key = target_key, target = possible_turf, bypass_add_to_blacklist = bypass_add_blacklist)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED @@ -113,7 +112,7 @@ //if we couldnt path, or we successfully burnt someone, ignore them for a bit! if(!succeeded || (isliving(target) && (living_bot.bot_access_flags & BOT_COVER_EMAGGED))) - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + controller.add_to_blacklist(target) return ..() diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm index f8d4f55150d1d..7801d64a92abd 100644 --- a/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm +++ b/code/modules/mob/living/basic/bots/honkbots/honkbot_ai.dm @@ -7,7 +7,6 @@ planning_subtrees = list( /datum/ai_planning_subtree/respond_to_summon, /datum/ai_planning_subtree/use_mob_ability/random_honk, - /datum/ai_planning_subtree/manage_unreachable_list, /datum/ai_planning_subtree/find_wanted_targets, /datum/ai_planning_subtree/troll_target, /datum/ai_planning_subtree/slip_victims, @@ -41,7 +40,7 @@ return var/atom/slip_target = blackboard[BB_SLIP_TARGET] - set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, slip_target, TRUE) + add_to_blacklist(slip_target) clear_blackboard_key(BB_SLIP_TARGET) /datum/ai_planning_subtree/find_wanted_targets @@ -139,12 +138,12 @@ living_pawn.emote("beep") return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED -/datum/ai_behavior/play_with_clown/finish_action(datum/ai_controller/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key) +/datum/ai_behavior/play_with_clown/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, targeting_strategy_key, hiding_location_key) . = ..() var/mob/living/living_target = controller.blackboard[target_key] if(QDELETED(living_target)) return - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, living_target, TRUE) + controller.add_to_blacklist(living_target) controller.clear_blackboard_key(target_key) /datum/ai_planning_subtree/slip_victims/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) @@ -204,14 +203,14 @@ our_pawn.stop_pulling() return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED -/datum/ai_behavior/drag_to_slip/finish_action(datum/ai_controller/controller, success, slip_target, slippery_target) +/datum/ai_behavior/drag_to_slip/finish_action(datum/ai_controller/basic_controller/bot/controller, success, slip_target, slippery_target) . = ..() if(success) var/mob/living/living_pawn = controller.pawn living_pawn.emote("flip") var/atom/slipped_victim = controller.blackboard[slip_target] if(!isnull(slipped_victim)) - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, slipped_victim, TRUE) + controller.add_to_blacklist(slipped_victim) controller.clear_blackboard_key(slip_target) controller.clear_blackboard_key(slippery_target) diff --git a/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm b/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm index f678843c7ccb9..60f3c80c3ea85 100644 --- a/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm +++ b/code/modules/mob/living/basic/bots/hygienebot/hygienebot_ai.dm @@ -10,7 +10,6 @@ BB_WASH_FRUSTRATION = 0, ) planning_subtrees = list( - /datum/ai_planning_subtree/manage_unreachable_list, /datum/ai_planning_subtree/respond_to_summon, /datum/ai_planning_subtree/handle_trash_talk, /datum/ai_planning_subtree/wash_people, @@ -66,7 +65,7 @@ /datum/ai_behavior/find_valid_wash_targets action_cooldown = 5 SECONDS -/datum/ai_behavior/find_valid_wash_targets/perform(seconds_per_tick, datum/ai_controller/controller, target_key, our_access_flags) +/datum/ai_behavior/find_valid_wash_targets/perform(seconds_per_tick, datum/ai_controller/basic_controller/bot/controller, target_key, our_access_flags) . = ..() var/list/ignore_list = controller.blackboard[BB_TEMPORARY_IGNORE_LIST] var/atom/found_target @@ -82,7 +81,7 @@ continue if(our_access_flags & BOT_COVER_EMAGGED) - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, wash_potential, TRUE) + controller.add_to_blacklist(wash_potential) found_target = wash_potential break diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm index 2466ab931cd19..b4afba169b833 100644 --- a/code/modules/mob/living/basic/bots/medbot/medbot.dm +++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm @@ -145,7 +145,6 @@ remove_hat_signals = remove_hat,\ traits_prevent_checks = prevent_checks,\ ) - RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attack)) if(!HAS_TRAIT(SSstation, STATION_TRAIT_MEDBOT_MANIA) || !mapload || !is_station_level(z)) @@ -245,10 +244,7 @@ update_appearance() -/mob/living/basic/bot/medbot/emag_act(mob/user, obj/item/card/emag/emag_card) - . = ..() - if(!(bot_access_flags & BOT_COVER_EMAGGED)) - return +/mob/living/basic/bot/medbot/emag_effects(mob/user) medical_mode_flags &= ~MEDBOT_DECLARE_CRIT balloon_alert(user, "reagent synthesis circuits shorted") audible_message(span_danger("[src] buzzes oddly!")) diff --git a/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm b/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm index e62172fced1d4..720a0b76cc126 100644 --- a/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm +++ b/code/modules/mob/living/basic/bots/medbot/medbot_ai.dm @@ -1,7 +1,6 @@ #define BOT_PATIENT_PATH_LIMIT 20 /datum/ai_controller/basic_controller/bot/medbot planning_subtrees = list( - /datum/ai_planning_subtree/manage_unreachable_list, /datum/ai_planning_subtree/respond_to_summon, /datum/ai_planning_subtree/handle_medbot_speech, /datum/ai_planning_subtree/find_and_hunt_target/patients_in_crit, @@ -63,15 +62,15 @@ if(LAZYACCESS(ignore_keys, treatable_target) || treatable_target.stat == DEAD) continue if((access_flags & BOT_COVER_EMAGGED) && treatable_target.stat == CONSCIOUS) - controller.set_if_can_reach(BB_PATIENT_TARGET, treatable_target, distance =BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1)) + controller.set_if_can_reach(key = BB_PATIENT_TARGET, target = treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1)) break if((heal_type == HEAL_ALL_DAMAGE)) if(treatable_target.get_total_damage() > threshold) - controller.set_if_can_reach(BB_PATIENT_TARGET, treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1)) + controller.set_if_can_reach(key = BB_PATIENT_TARGET, target = treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1)) break continue if(treatable_target.get_current_damage_of_type(damagetype = heal_type) > threshold) - controller.set_if_can_reach(BB_PATIENT_TARGET, treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1)) + controller.set_if_can_reach(key = BB_PATIENT_TARGET, target = treatable_target, distance = BOT_PATIENT_PATH_LIMIT, bypass_add_to_blacklist = (search_range == 1)) break if(controller.blackboard_key_exists(BB_PATIENT_TARGET)) @@ -111,13 +110,13 @@ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED // only clear the target if they get healed -/datum/ai_behavior/tend_to_patient/finish_action(datum/ai_controller/controller, succeeded, target_key, threshold, damage_type_healer, access_flags, is_stationary) +/datum/ai_behavior/tend_to_patient/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, target_key, threshold, damage_type_healer, access_flags, is_stationary) . = ..() var/atom/target = controller.blackboard[target_key] if(!succeeded) if(!isnull(target) && !is_stationary) - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + controller.add_to_blacklist(target) controller.clear_blackboard_key(target_key) return diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm new file mode 100644 index 0000000000000..17b257d8c987b --- /dev/null +++ b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm @@ -0,0 +1,404 @@ + +/mob/living/basic/bot/repairbot + name = "\improper Repairbot" + desc = "I can fix it!" + icon = 'icons/mob/silicon/aibots.dmi' + icon_state = "repairbot_base" + base_icon_state = "repairbot_base" + pass_flags = parent_type::pass_flags | PASSTABLE + layer = BELOW_MOB_LAYER + anchored = FALSE + health = 100 + can_be_held = TRUE + maxHealth = 100 + path_image_color = "#80dae7" + bot_ui = "RepairBot" + req_one_access = list(ACCESS_ROBOTICS, ACCESS_ENGINEERING) + radio_key = /obj/item/encryptionkey/headset_service + radio_channel = RADIO_CHANNEL_ENGINEERING + bot_type = REPAIR_BOT + additional_access = /datum/id_trim/job/station_engineer + ai_controller = /datum/ai_controller/basic_controller/bot/repairbot + mob_size = MOB_SIZE_SMALL + possessed_message = "You are a repairbot, cursed to prolong the swiss-cheesening of this death metal trap!" + ///our iron stack + var/obj/item/stack/sheet/iron/our_iron + ///our glass stack + var/obj/item/stack/sheet/glass/our_glass + ///our floor stack + var/obj/item/stack/tile/our_tiles + ///our welder + var/obj/item/weldingtool/repairbot/our_welder + ///our crowbar + var/obj/item/crowbar/our_crowbar + ///our screwdriver + var/obj/item/screwdriver/our_screwdriver + ///our iron rods + var/obj/item/stack/rods/our_rods + ///our rcd object we use to deconstruct when emagged + var/obj/item/construction/rcd/repairbot/deconstruction_device + ///possible interactions + var/static/list/possible_stack_interactions = list( + /obj/item/stack/sheet/iron = typecacheof(list(/obj/structure/girder)), + /obj/item/stack/tile = typecacheof(list(/turf/open/space, /turf/open/floor/plating)), + /obj/item/stack/sheet/glass = typecacheof(list(/obj/structure/grille)), + ) + var/static/list/possible_tool_interactions = list( + /obj/item/weldingtool/repairbot = typecacheof(list(/obj/structure/window)), + /obj/item/crowbar = typecacheof(list(/obj/machinery/door, /turf/open/floor)), + ) + ///our neutral voicelines + var/static/list/neutral_voicelines = list( + REPAIRBOT_VOICED_BRICK = 'sound/voice/repairbot/brick.ogg', + REPAIRBOT_VOICED_ENTROPY = 'sound/voice/repairbot/entropy.ogg', + REPAIRBOT_VOICED_FIX_IT = 'sound/voice/repairbot/fixit.ogg', + REPAIRBOT_VOICED_FIX_TOUCH = 'sound/voice/repairbot/fixtouch.ogg', + REPAIRBOT_VOICED_HOLE = 'sound/voice/repairbot/patchingholes.ogg', + REPAIRBOT_VOICED_PAY = 'sound/voice/repairbot/pay.ogg', + ) + ///our emagged voicelines + var/static/list/emagged_voicelines = list( + REPAIRBOT_VOICED_ENTROPY = 'sound/voice/repairbot/entropy.ogg', + REPAIRBOT_VOICED_STRINGS = 'sound/voice/repairbot/strings.ogg', + REPAIRBOT_VOICED_PASSION = 'sound/voice/repairbot/passionproject.ogg', + ) + ///types we can retrieve from our ui + var/static/list/retrievable_types = list( + /obj/item/stack/sheet/iron, + /obj/item/stack/sheet/glass, + /obj/item/stack/tile, + ) + + ///our flags + var/repairbot_flags = REPAIRBOT_FIX_BREACHES | REPAIRBOT_FIX_GIRDERS | REPAIRBOT_REPLACE_WINDOWS | REPAIRBOT_REPLACE_TILES | REPAIRBOT_BUILD_GIRDERS + ///our color + var/toolbox_color = "#445eb3" + ///toolbox type we drop on death + var/toolbox = /obj/item/storage/toolbox/mechanical + +/mob/living/basic/bot/repairbot/Initialize(mapload) + . = ..() + ai_controller.set_blackboard_key(BB_REPAIRBOT_EMAGGED_SPEECH, emagged_voicelines) + ai_controller.set_blackboard_key(BB_REPAIRBOT_NORMAL_SPEECH, neutral_voicelines) + var/static/list/abilities = list( + /datum/action/cooldown/mob_cooldown/bot/build_girder = BB_GIRDER_BUILD_ABILITY, + /datum/action/repairbot_resources = null, + ) + grant_actions_by_list(abilities) + add_traits(list(TRAIT_SPACEWALK, TRAIT_NEGATES_GRAVITY, TRAIT_MOB_MERGE_STACKS, TRAIT_FIREDOOR_OPENER), INNATE_TRAIT) + our_welder = new(src) + our_welder.switched_on(src) + our_crowbar = new(src) + our_screwdriver = new(src) + our_rods = new(src, our_rods::max_amount) + set_color(toolbox_color) + START_PROCESSING(SSobj, src) + +/mob/living/basic/bot/repairbot/proc/set_color(new_color) + add_atom_colour(new_color, FIXED_COLOUR_PRIORITY) + toolbox_color = new_color + +/mob/living/basic/bot/repairbot/attackby(obj/item/potential_stack, mob/living/carbon/human/user, list/modifiers) + if(!istype(potential_stack, /obj/item/stack)) + return ..() + attempt_merge(potential_stack, user) + +/mob/living/basic/bot/repairbot/proc/attempt_merge(obj/item/stack/potential_stack, mob/living/user) + var/static/list/our_contents = list(/obj/item/stack/sheet/iron, /obj/item/stack/sheet/glass, /obj/item/stack/tile, /obj/item/stack/rods) + for(var/obj/item/stack/content as anything in our_contents) + if(!istype(potential_stack, content)) + continue + var/obj/item/stack/our_sheet = locate(content) in src + if(isnull(our_sheet)) + potential_stack.forceMove(src) + return + if(our_sheet.amount >= our_sheet.max_amount) + user?.balloon_alert(user, "full!") + return + if(!our_sheet.can_merge(potential_stack)) + user?.balloon_alert(user, "not suitable!") + return + var/atom/movable/to_move = potential_stack.split_stack(user, min(our_sheet.max_amount - our_sheet.amount, potential_stack.amount)) + to_move.forceMove(src) + balloon_alert(src, "inserted") + return + +/mob/living/basic/bot/repairbot/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) + . = ..() + if(istype(arrived, /obj/item/stack/sheet/iron) && isnull(our_iron)) //show iron tiles and glass in our hands + our_iron = arrived + update_appearance() + if(istype(arrived, /obj/item/stack/sheet/glass) && isnull(our_glass)) + our_glass = arrived + update_appearance() + if(istype(arrived, /obj/item/stack/tile) && isnull(our_tiles)) + our_tiles = arrived + if(istype(arrived, /obj/item/stack/rods) && isnull(our_rods)) + our_rods = arrived + +/mob/living/basic/bot/repairbot/UnarmedAttack(atom/target, proximity_flag, list/modifiers) + . = ..() + + if(!. || !proximity_flag) + return + + if(bot_access_flags & BOT_COVER_EMAGGED) + emagged_interactions(target, modifiers) + return + + if(istype(target, /obj/item/stack)) + attempt_merge(target, src) + return + + //priority interactions + if(istype(target, /turf/open/space)) + var/turf/open/space/space_target = target + if(!space_target.has_valid_support() && !(locate(/obj/structure/lattice) in space_target)) + attempt_use_stack(our_rods ? our_rods : our_rods::name, space_target) + + if(istype(target, /obj/structure/grille)) + var/obj/structure/grille/grille_target = target + if(grille_target.broken) + attempt_use_stack(our_rods ? our_rods : our_rods::name, grille_target) + + if(istype(target, /turf/open)) + var/turf/open/open_target = target + if(open_target.broken || open_target.burnt) + our_welder?.melee_attack_chain(src, open_target) + + if(istype(target, /obj/structure/window)) + var/obj/structure/window/target_window = target + if(!target_window.anchored) + our_screwdriver?.melee_attack_chain(src, target_window) + + //stack interactions + for(var/obj/item/stack/stack_type as anything in possible_stack_interactions) + if(!is_type_in_typecache(target, possible_stack_interactions[stack_type])) + continue + var/obj/item/target_stack = locate(stack_type) in src + attempt_use_stack(target_stack ? target_stack : stack_type::name, target) + return + + //tool interactions + var/list/our_tools = list(our_welder, our_crowbar) + for(var/obj/item/tool in our_tools) + if(is_type_in_typecache(target, possible_tool_interactions[tool.type]) && !combat_mode) + tool.melee_attack_chain(src, target) + return + +/mob/living/basic/bot/repairbot/proc/emagged_interactions(atom/target, modifiers) + if(!istype(target, /mob/living/silicon/robot)) + deconstruction_device?.interact_with_atom_secondary(target, src, modifiers) + return + if(HAS_TRAIT(target, TRAIT_MOB_TIPPED)) + return + var/old_combat_mode = combat_mode + set_combat_mode(TRUE) + target.attack_hand_secondary(src, modifiers) //tip the guy! + set_combat_mode(old_combat_mode) + +/mob/living/basic/bot/repairbot/start_pulling(atom/movable/movable_pulled, state, force, supress_message) + . = ..() + if(pulling) + setGrabState(GRAB_AGGRESSIVE) //automatically aggro grab everything! + +/mob/living/basic/bot/repairbot/proc/attempt_use_stack(obj/item/stack_to_use, atom/target) + if(!isdatum(stack_to_use)) + to_chat(src, span_warning("You do not have anymore [stack_to_use]!")) + return + stack_to_use.melee_attack_chain(src, target) + +/mob/living/basic/bot/repairbot/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 25) + if(affect_silicon) + return ..() + +/mob/living/basic/bot/repairbot/Destroy() + . = ..() + QDEL_NULL(our_iron) + QDEL_NULL(our_glass) + QDEL_NULL(our_tiles) + QDEL_NULL(our_welder) + QDEL_NULL(our_screwdriver) + QDEL_NULL(our_crowbar) + QDEL_NULL(our_rods) + QDEL_NULL(deconstruction_device) + +/mob/living/basic/bot/repairbot/Exited(atom/movable/gone, direction) + if(gone == our_crowbar) + our_crowbar = null + if(gone == our_screwdriver) + our_screwdriver = null + if(gone == our_welder) + our_welder = null + if(gone == our_tiles) + our_tiles = null + if(gone == our_iron) + our_iron = null + if(gone == our_glass) + our_glass = null + if(gone == our_rods) + our_rods = null + update_appearance() + return ..() + +/mob/living/basic/bot/repairbot/process(seconds_per_tick) //generate 1 iron rod every 2 seconds + if(isnull(our_rods) || our_rods.amount < our_rods.max_amount) + var/obj/item/stack/rods/new_rods = new() + new_rods.forceMove(src) + +/mob/living/basic/bot/repairbot/turn_on() + . = ..() + if(!.) + return + START_PROCESSING(SSobj, src) + +/mob/living/basic/bot/repairbot/turn_off() + . = ..() + STOP_PROCESSING(SSobj, src) + +/mob/living/basic/bot/repairbot/update_overlays() + . = ..() + . += mutable_appearance(icon, "repairbot[bot_mode_flags & BOT_MODE_ON]", appearance_flags = RESET_COLOR) + if(our_glass) + var/mutable_appearance/glass = mutable_appearance(icon, "repairbot_glass_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR) + glass.pixel_x = -6 + glass.pixel_y = -5 + . += glass + if(our_iron) + var/mutable_appearance/iron = mutable_appearance(icon, "repairbot_iron_overlay", BELOW_MOB_LAYER - 0.02, appearance_flags = RESET_COLOR) + iron.pixel_y = -5 + iron.pixel_x = 7 + . += iron + +/mob/living/basic/bot/repairbot/update_icon_state() + . = ..() + icon_state = base_icon_state + +/mob/living/basic/bot/repairbot/generate_speak_list() + return neutral_voicelines + emagged_voicelines + +/mob/living/basic/bot/repairbot/Bump(atom/movable/bumped_object) + . = ..() + if(istype(bumped_object, /obj/machinery/door/firedoor) && bumped_object.density) + our_crowbar.melee_attack_chain(src, bumped_object) + +/mob/living/basic/bot/repairbot/ui_data(mob/user) + var/list/data = ..() + data["repairbot_materials"] = list() + if((bot_access_flags & BOT_COVER_LOCKED) && !issilicon(user) && !isAdminGhostAI(user)) + return data + data["custom_controls"]["fix_breaches"] = repairbot_flags & REPAIRBOT_FIX_BREACHES + data["custom_controls"]["replace_windows"] = repairbot_flags & REPAIRBOT_REPLACE_WINDOWS + data["custom_controls"]["replace_tiles"] = repairbot_flags & REPAIRBOT_REPLACE_TILES + data["custom_controls"]["fix_girders"] = repairbot_flags & REPAIRBOT_FIX_GIRDERS + data["custom_controls"]["build_girders"] = repairbot_flags & REPAIRBOT_BUILD_GIRDERS + + for(var/data_path in retrievable_types) + var/atom/to_retrieve = locate(data_path) in src + if(isnull(to_retrieve)) + continue + + data["repairbot_materials"] += list(list( + "material_ref" = REF(to_retrieve), + "material_icon" = to_retrieve::icon, + "material_icon_state" = to_retrieve::icon_state, + )) + + return data + +/mob/living/basic/bot/repairbot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(. || !isliving(ui.user) || (bot_access_flags & BOT_COVER_LOCKED) && !(HAS_SILICON_ACCESS(ui.user))) + return + switch(action) + if("fix_breaches") + repairbot_flags ^= REPAIRBOT_FIX_BREACHES + if("replace_windows") + repairbot_flags ^= REPAIRBOT_REPLACE_WINDOWS + if("replace_tiles") + repairbot_flags ^= REPAIRBOT_REPLACE_TILES + if("fix_girders") + repairbot_flags ^= REPAIRBOT_FIX_GIRDERS + if("build_girders") + repairbot_flags ^= REPAIRBOT_BUILD_GIRDERS + if("remove_item") + var/item_params = params["item_reference"] + if(isnull(item_params)) + return TRUE + var/obj/item/retrieved = locate(item_params) in contents + if(isnull(retrieved) || !is_type_in_list(retrieved, retrievable_types)) + return TRUE + var/mob/living/user = ui.user + user.put_in_hands(retrieved) + return TRUE + + +/mob/living/basic/bot/repairbot/emag_effects(mob/user) + if(isnull(deconstruction_device)) + deconstruction_device = new(src) + +/mob/living/basic/bot/repairbot/explode() + drop_part(toolbox, drop_location()) + return ..() + +/obj/item/weldingtool/repairbot + max_fuel = INFINITY + starting_fuel = TRUE + change_icons = FALSE + +/obj/item/construction/rcd/repairbot + matter = INFINITY + has_ammobar = FALSE + +/mob/living/basic/bot/repairbot/mob_pickup(mob/living/user) + var/obj/item/carried_repairbot/carried = new(get_turf(src)) + carried.set_bot(src) + carried.add_atom_colour(toolbox_color, FIXED_COLOUR_PRIORITY) + user.visible_message(span_warning("[user] scoops up [src]!")) + user.put_in_hands(carried) + +/obj/item/carried_repairbot + desc = "A most robust bot!" + attack_verb_continuous = list("robusts") + attack_verb_simple = list("robust") + hitsound = 'sound/items/weapons/smash.ogg' + drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg' + pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg' + ///the bot we own + var/atom/movable/our_bot + +/obj/item/carried_repairbot/proc/set_bot(mob/living/basic/bot/repairbot/repairbot) + var/obj/item/bot_toolbox = repairbot.toolbox + icon = bot_toolbox::icon + icon_state = bot_toolbox::icon_state + lefthand_file = bot_toolbox::lefthand_file + righthand_file = bot_toolbox::righthand_file + inhand_icon_state = bot_toolbox::inhand_icon_state + force = bot_toolbox::force + repairbot.forceMove(src) + +/obj/item/carried_repairbot/dropped() + . = ..() + if(isturf(loc)) + release_bot() + +/obj/item/carried_repairbot/proc/release_bot(bypass_delete = FALSE) + if(!isnull(our_bot)) + our_bot.forceMove(drop_location()) + our_bot.balloon_alert_to_viewers("plops down") + if(!bypass_delete) + qdel(src) + +/obj/item/carried_repairbot/Destroy() + . = ..() + release_bot(bypass_delete = TRUE) + +/obj/item/carried_repairbot/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) + . = ..() + if(isliving(arrived)) + our_bot = arrived + +/obj/item/carried_repairbot/Exited(atom/movable/gone, direction) + if(gone == our_bot) + our_bot = null + return ..() diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot_abilities.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot_abilities.dm new file mode 100644 index 0000000000000..4de81f0015bfc --- /dev/null +++ b/code/modules/mob/living/basic/bots/repairbot/repairbot_abilities.dm @@ -0,0 +1,109 @@ +#define BUILDING_WALL_ABILITY "building wall ability" + +/datum/action/cooldown/mob_cooldown/bot/build_girder + name = "Build Girder" + desc = "Use iron rods to build a girder!" + button_icon = 'icons/obj/structures.dmi' + button_icon_state = "girder" + cooldown_time = 5 SECONDS + click_to_activate = TRUE + +/datum/action/cooldown/mob_cooldown/bot/build_girder/IsAvailable(feedback) + . = ..() + if(!.) + return FALSE + var/obj/item/stack/rods/our_rods = locate() in owner + if(isnull(our_rods) || our_rods.amount < 2) + return FALSE + return TRUE + +/datum/action/cooldown/mob_cooldown/bot/build_girder/Activate(atom/target) + if(DOING_INTERACTION(owner, BUILDING_WALL_ABILITY)) + return TRUE + if(!isopenturf(target) || isgroundlessturf(target)) + owner.balloon_alert(owner, "cant build here!") + return TRUE + var/obj/item/stack/rods/our_rods = locate() in owner + var/turf/turf_target = target + if(turf_target.is_blocked_turf()) + owner.balloon_alert(owner, "blocked!") + return TRUE + var/obj/effect/constructing_effect/effect = new(turf_target, 3 SECONDS) + + if(!do_after(owner, 3 SECONDS, target = turf_target, interaction_key = BUILDING_WALL_ABILITY) || isnull(turf_target) || turf_target.is_blocked_turf()) + qdel(effect) + return TRUE + + playsound(turf_target, 'sound/machines/click.ogg', 50, TRUE) + new /obj/structure/girder(turf_target) + var/atom/stack_to_delete = our_rods.split_stack(owner, 2) + qdel(stack_to_delete) + StartCooldown() + qdel(effect) + return TRUE + +/datum/action/repairbot_resources + name = "Resources" + desc = "Manage your resources." + button_icon = 'icons/obj/stack_objects.dmi' + button_icon_state = "sheet-metal_3" + background_icon_state = "bg_tech_blue" + overlay_icon_state = "bg_tech_blue_border" + ///things we arent allowed to eject + var/static/list/eject_blacklist = typecacheof(list( + /obj/item/stack/rods, + )) + +/datum/action/repairbot_resources/Trigger(trigger_flags) + . = ..() + if(!.) + return + ui_interact(owner) + +/datum/action/repairbot_resources/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "RepairbotResources") + ui.open() + +/datum/action/repairbot_resources/ui_state(mob/user) + return GLOB.always_state + +/datum/action/repairbot_resources/ui_data(mob/user) + var/list/data = list() + data["stacks"] = list() + for(var/obj/item/stack/managed_stack in user.contents) + data["stacks"] += list(list( + "stack_reference" = REF(managed_stack), + "stack_name" = managed_stack.name, + "stack_amount" = managed_stack.amount, + "stack_maximum_amount" = managed_stack.max_amount, + "stack_icon" = managed_stack.icon, + "stack_icon_state" = managed_stack.icon_state, + )) + + return data + +/datum/action/repairbot_resources/ui_static_data(mob/user) + var/list/data = list() + data["repairbot_icon"] = 'icons/ui/repairbotmanagement/repairbot_smile.dmi' + data["repairbot_icon_state"] = "repairbot_smile" + return data + + +/datum/action/repairbot_resources/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + switch(action) + if("eject") + var/atom/movable/my_sheet = locate(params["item_reference"]) in owner.contents + if(isnull(my_sheet)) + return + if(is_type_in_typecache(my_sheet, eject_blacklist)) + to_chat(owner, span_warning("You're unable to eject [my_sheet]!")) + return + + my_sheet.forceMove(owner.drop_location()) + +#undef BUILDING_WALL_ABILITY diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot_ai.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot_ai.dm new file mode 100644 index 0000000000000..a952130bb4fbf --- /dev/null +++ b/code/modules/mob/living/basic/bots/repairbot/repairbot_ai.dm @@ -0,0 +1,330 @@ +#define REPAIRBOT_SPEECH_TIMER 30 SECONDS + +/datum/ai_controller/basic_controller/bot/repairbot + planning_subtrees = list( + /datum/ai_planning_subtree/repairbot_speech, + /datum/ai_planning_subtree/mug_robot, + /datum/ai_planning_subtree/refill_materials, + /datum/ai_planning_subtree/repairbot_deconstruction, + /datum/ai_planning_subtree/respond_to_summon, + /datum/ai_planning_subtree/replace_floors/breaches, + /datum/ai_planning_subtree/wall_girder, + /datum/ai_planning_subtree/build_girder, + /datum/ai_planning_subtree/replace_window, + /datum/ai_planning_subtree/replace_floors, + /datum/ai_planning_subtree/fix_window, + /datum/ai_planning_subtree/salute_authority, + /datum/ai_planning_subtree/find_patrol_beacon, + ) + reset_keys = list( + BB_TILELESS_FLOOR, + BB_GIRDER_TARGET, + BB_GIRDER_TO_WALL_TARGET, + BB_BEACON_TARGET, + BB_PREVIOUS_BEACON_TARGET, + BB_WELDER_TARGET, + BB_WINDOW_FRAMETARGET, + ) + ai_traits = PAUSE_DURING_DO_AFTER + minimum_distance = 1 + +///subtree to refill our stacks +/datum/ai_planning_subtree/refill_materials + +/datum/ai_planning_subtree/refill_materials/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + var/static/list/refillable_items = typecacheof(list( + /obj/item/stack/sheet/iron, + /obj/item/stack/sheet/glass, + /obj/item/stack/tile, + )) + if(!controller.blackboard_key_exists(BB_REFILLABLE_TARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_search/refillable_target, BB_REFILLABLE_TARGET, refillable_items) + return + controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_REFILLABLE_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + +/datum/ai_behavior/bot_search/refillable_target + action_cooldown = 10 SECONDS + +/datum/ai_behavior/bot_search/refillable_target/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target) + var/static/list/desired_types = list( + /obj/item/stack/sheet/iron, + /obj/item/stack/sheet/glass, + /obj/item/stack/tile, + ) + for(var/object_type in desired_types) + if(!istype(my_target, object_type)) + continue + var/obj/item/stack/sheet_type = locate(object_type) in controller.pawn + if(isnull(sheet_type)) + return TRUE //we dont have any of it! + if(sheet_type.amount < sheet_type.max_amount && sheet_type.can_merge(my_target)) + return TRUE + return FALSE + +/datum/ai_planning_subtree/mug_robot + +/datum/ai_planning_subtree/mug_robot/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + var/mob/living/basic/bot/living_bot = controller.pawn + if(!(living_bot.bot_access_flags & BOT_COVER_EMAGGED)) + return + var/static/list/robot_targets = typecacheof( + /mob/living/silicon/robot, + ) + if(!controller.blackboard_key_exists(BB_ROBOT_TARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_search/valid_robot, BB_ROBOT_TARGET, robot_targets) + return + if(!living_bot.pulling) + controller.queue_behavior(/datum/ai_behavior/drag_target, BB_ROBOT_TARGET) + else + controller.queue_behavior(/datum/ai_behavior/bot_interact/tip_robot, BB_ROBOT_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + +/datum/ai_behavior/bot_search/valid_robot + action_cooldown = 10 SECONDS + +/datum/ai_behavior/bot_search/valid_robot/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target) + return (!HAS_TRAIT(my_target, TRAIT_MOB_TIPPED)) && can_see(controller.pawn, my_target) + +/datum/ai_behavior/bot_interact/tip_robot + +/datum/ai_behavior/bot_interact/tip_robot/finish_action(datum/ai_controller/controller, succeeded, target_key) + . = ..() + if(succeeded) + var/mob/living/living_pawn = controller.pawn + living_pawn.stop_pulling() + +///subtree to deconstruct things when we're emagged +/datum/ai_planning_subtree/repairbot_deconstruction + +/datum/ai_planning_subtree/repairbot_deconstruction/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + var/mob/living/basic/bot/living_bot = controller.pawn + if(!(living_bot.bot_access_flags & BOT_COVER_EMAGGED)) + return + var/static/list/things_to_deconstruct = typecacheof(list( + /obj/structure/window, + /turf/open/floor, + /turf/closed/wall, + )) + if(!controller.blackboard_key_exists(BB_DECONSTRUCT_TARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_search/deconstructable, BB_DECONSTRUCT_TARGET, things_to_deconstruct) + return SUBTREE_RETURN_FINISH_PLANNING + controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_DECONSTRUCT_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + +/datum/ai_behavior/bot_search/deconstructable + action_cooldown = 5 SECONDS + +/datum/ai_behavior/bot_search/deconstructable/valid_target(datum/ai_controller/basic_controller/bot/controller, atom/my_target) + return (!(my_target.resistance_flags & INDESTRUCTIBLE) && !isgroundlessturf(my_target)) + +///subtree to control bot speech +/datum/ai_planning_subtree/repairbot_speech + +/datum/ai_planning_subtree/repairbot_speech/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + if(controller.blackboard[BB_REPAIRBOT_SPEECH_COOLDOWN] > world.time) + return + var/static/list/keys_to_look = list( + BB_WELDER_TARGET, + BB_WINDOW_FRAMETARGET, + BB_TILELESS_FLOOR, + BB_BREACHED_FLOOR, + BB_GIRDER_TO_WALL_TARGET, + BB_GIRDER_TARGET, + BB_DECONSTRUCT_TARGET, + ) + for(var/key in keys_to_look) + if(controller.blackboard_key_exists(key)) + controller.queue_behavior(/datum/ai_behavior/repairbot_speech, key) + return + +/datum/ai_behavior/repairbot_speech + behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/repairbot_speech/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + var/datum/action/cooldown/bot_announcement/announcement = controller.blackboard[BB_ANNOUNCE_ABILITY] + var/list/speech_to_pick_from = (target_key == BB_DECONSTRUCT_TARGET) ? controller.blackboard[BB_REPAIRBOT_EMAGGED_SPEECH] : controller.blackboard[BB_REPAIRBOT_NORMAL_SPEECH] + if(!length(speech_to_pick_from)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + announcement.announce(pick(speech_to_pick_from)) + controller.set_blackboard_key(BB_REPAIRBOT_SPEECH_COOLDOWN, world.time + REPAIRBOT_SPEECH_TIMER) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED + +///subtree to replace iron platings +/datum/ai_planning_subtree/replace_floors + ///flag we check before executing + var/required_flag = REPAIRBOT_REPLACE_TILES + ///key of our floor target + var/floor_key = BB_TILELESS_FLOOR + ///type of tile we need to replace floors + var/needed_tile_type = /obj/item/stack/tile + ///type of floors we can replace + var/list/type_of_turf = list(/turf/open/floor/plating) + ///our searching behavior + var/search_behavior = /datum/ai_behavior/bot_search/valid_plateless_turf + +/datum/ai_planning_subtree/replace_floors/New() + . = ..() + type_of_turf = typecacheof(type_of_turf) + +/datum/ai_planning_subtree/replace_floors/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + var/mob/living/basic/bot/repairbot/bot_pawn = controller.pawn + if(!(bot_pawn.repairbot_flags & required_flag)) + return + if(!locate(needed_tile_type) in bot_pawn) + return + if(controller.blackboard_key_exists(floor_key)) + controller.queue_behavior(/datum/ai_behavior/bot_interact, floor_key) + return SUBTREE_RETURN_FINISH_PLANNING + + controller.queue_behavior(search_behavior, floor_key, type_of_turf, 5, 10, FALSE, TRUE) + +/datum/ai_behavior/bot_search/valid_plateless_turf + action_cooldown = 5 SECONDS + +/datum/ai_behavior/bot_search/valid_plateless_turf/valid_target(datum/ai_controller/basic_controller/bot/controller, turf/open/my_target) + var/static/list/blacklist_objects = typecacheof(list( + /obj/structure/window, + /obj/structure/grille, + )) + + for(var/atom/possible_blacklisted in my_target.contents) + if(is_type_in_typecache(possible_blacklisted, blacklist_objects)) + return FALSE + + if(istype(my_target, /turf/open/floor/plating) && !can_see(controller.pawn, my_target, 5)) + return FALSE + + var/static/list/blacklist_areas = typecacheof(list( + /area/space, + /area/station/maintenance, + )) + var/turf_area = get_area(my_target) + return !(is_type_in_typecache(turf_area, blacklist_areas)) + +///subtree to fix hull breaches +/datum/ai_planning_subtree/replace_floors/breaches + floor_key = BB_BREACHED_FLOOR + needed_tile_type = /obj/item/stack/tile/iron + type_of_turf = list(/turf/open/space) + required_flag = REPAIRBOT_FIX_BREACHES + search_behavior = /datum/ai_behavior/bot_search/valid_plateless_turf/breached + +///exists as to not conflict with the base turf searching behavior cause of how the queue system works... +/datum/ai_behavior/bot_search/valid_plateless_turf/breached + +///subtree to build girders +/datum/ai_planning_subtree/build_girder + +/datum/ai_planning_subtree/build_girder/SelectBehaviors(datum/ai_controller/basic_controller/bot/controller, seconds_per_tick) + var/mob/living/basic/bot/repairbot/bot_pawn = controller.pawn + if(!(bot_pawn.repairbot_flags & REPAIRBOT_BUILD_GIRDERS)) + return + var/obj/item/stack/rods/my_rods = locate() in bot_pawn + if(isnull(my_rods) || my_rods.amount < 2) + return + var/datum/action/cooldown/ability = controller.blackboard[BB_GIRDER_BUILD_ABILITY] + if(!ability?.IsAvailable()) + return + if(controller.blackboard_key_exists(BB_GIRDER_TARGET)) + controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability/build_girder, BB_GIRDER_BUILD_ABILITY, BB_GIRDER_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + + var/static/list/searchable_turfs = typecacheof(list(/turf/open)) + controller.queue_behavior(/datum/ai_behavior/bot_search/valid_wall_target, BB_GIRDER_TARGET, searchable_turfs, 5, 10, FALSE, TRUE) + +/datum/ai_behavior/bot_search/valid_wall_target + action_cooldown = 5 SECONDS + +/datum/ai_behavior/bot_search/valid_wall_target/valid_target(datum/ai_controller/basic_controller/bot/controller, turf/my_target) + if(istype(get_area(my_target), /area/space) || isgroundlessturf(my_target) || my_target.is_blocked_turf()) + return FALSE + var/static/list/blacklist_objects = list( + /obj/machinery/door, + /obj/structure/grille, + ) + + for(var/atom/contents in my_target) + if(is_type_in_typecache(contents, blacklist_objects)) + return FALSE + + var/turf/adjacent_turfs = get_adjacent_open_turfs(my_target) + for(var/turf/possible_spaced_turf as anything in adjacent_turfs) + if(isspaceturf(possible_spaced_turf) && istype(get_area(possible_spaced_turf), /area/space)) + return TRUE + return FALSE + +/datum/ai_behavior/targeted_mob_ability/build_girder + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/targeted_mob_ability/build_girder/setup(datum/ai_controller/controller, ability_key, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/targeted_mob_ability/build_girder/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key) + . = ..() + controller.clear_blackboard_key(target_key) + +///subtree to place glass on windows +/datum/ai_planning_subtree/replace_window + +/datum/ai_planning_subtree/replace_window/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + var/mob/living/basic/bot/repairbot/living_pawn = controller.pawn + if(!(living_pawn.repairbot_flags & REPAIRBOT_REPLACE_WINDOWS)) + return + if(!locate(/obj/item/stack/sheet/glass) in living_pawn) + return + if(controller.blackboard_key_exists(BB_WINDOW_FRAMETARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_WINDOW_FRAMETARGET) + return SUBTREE_RETURN_FINISH_PLANNING + var/static/list/searchable_grilles = typecacheof(list(/obj/structure/grille)) + controller.queue_behavior(/datum/ai_behavior/bot_search/valid_grille_target, BB_WINDOW_FRAMETARGET, searchable_grilles) + +/datum/ai_behavior/bot_search/valid_grille_target/valid_target(datum/ai_controller/basic_controller/bot/controller, obj/structure/my_target) + if(locate(/obj/structure/window) in get_turf(my_target)) + return FALSE + return (!istype(get_area(my_target), /area/space)) + + +///subtree to place iron on girders +/datum/ai_planning_subtree/wall_girder + +/datum/ai_planning_subtree/wall_girder/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + var/mob/living/basic/bot/repairbot/living_pawn = controller.pawn + if(!(living_pawn.repairbot_flags & REPAIRBOT_FIX_GIRDERS)) + return + var/obj/item/stack/sheet/iron/my_iron = locate() in living_pawn + if(isnull(my_iron) || my_iron.amount < 2) + return + if(controller.blackboard_key_exists(BB_GIRDER_TO_WALL_TARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_GIRDER_TO_WALL_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + var/static/list/searchable_girder = typecacheof(list(/obj/structure/girder)) + controller.queue_behavior(/datum/ai_behavior/bot_search/valid_girder, BB_GIRDER_TO_WALL_TARGET, searchable_girder) + +/datum/ai_behavior/bot_search/valid_girder + action_cooldown = 5 SECONDS + +/datum/ai_behavior/bot_search/valid_girder/valid_target(datum/ai_controller/basic_controller/bot/controller, obj/my_target) + return isfloorturf(my_target.loc) + +///subtree to repair machines with welders +/datum/ai_planning_subtree/fix_window + +/datum/ai_planning_subtree/fix_window/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if(controller.blackboard_key_exists(BB_WELDER_TARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_interact, BB_WELDER_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + var/static/list/searchable_objects = typecacheof(list(/obj/structure/window)) + controller.queue_behavior(/datum/ai_behavior/bot_search/valid_window_fix, BB_WELDER_TARGET, searchable_objects) + +/datum/ai_behavior/bot_search/valid_window_fix + action_cooldown = 5 SECONDS + +/datum/ai_behavior/bot_search/valid_window_fix/valid_target(datum/ai_controller/basic_controller/bot/controller, obj/my_target) + return (my_target.get_integrity() < my_target.max_integrity || !my_target.anchored) + +#undef REPAIRBOT_SPEECH_TIMER diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm index 945b09274d783..1b458811acc22 100644 --- a/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm +++ b/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm @@ -7,7 +7,6 @@ ) planning_subtrees = list( /datum/ai_planning_subtree/respond_to_summon, - /datum/ai_planning_subtree/manage_unreachable_list, /datum/ai_planning_subtree/find_party_friends, /datum/ai_planning_subtree/find_patrol_beacon, ) @@ -69,9 +68,9 @@ return FALSE set_movement_target(controller, target) -/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key) +/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party/finish_action(datum/ai_controller/basic_controller/bot/controller, succeeded, ability_key, target_key) var/atom/target = controller.blackboard[target_key] - controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + controller.add_to_blacklist(target) if(succeeded) var/mob/living/living_pawn = controller.pawn living_pawn.manual_emote("celebrates with [target]!") diff --git a/code/modules/mob/living/basic/clown/clown.dm b/code/modules/mob/living/basic/clown/clown.dm index ebc15182c2f23..a8fb645af73b7 100644 --- a/code/modules/mob/living/basic/clown/clown.dm +++ b/code/modules/mob/living/basic/clown/clown.dm @@ -403,7 +403,11 @@ GRANT_ACTION(/datum/action/cooldown/regurgitate) AddElement(/datum/element/swabable, CELL_LINE_TABLE_GLUTTON, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/cheesiehonkers, /obj/item/food/cornchips), tame_chance = 30, bonus_tame_chance = 0) + var/static/list/food_types = list( + /obj/item/food/cheesiehonkers, + /obj/item/food/cornchips, + ) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 30, bonus_tame_chance = 0) AddElement(/datum/element/damage_threshold, 10) //lots of fat to cushion blows. /mob/living/basic/clown/mutant/glutton/attacked_by(obj/item/item, mob/living/user) diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm index 95a5956825421..971c341a73abf 100644 --- a/code/modules/mob/living/basic/cult/constructs/harvester.dm +++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm @@ -53,7 +53,8 @@ carbon_target.Paralyze(6 SECONDS) visible_message(span_danger("[src] knocks [carbon_target] down!")) - to_chat(src, span_cult_large("\"Bring [carbon_target.p_them()] to me.\"")) + if(theme == THEME_CULT) + to_chat(src, span_cult_large("\"Bring [carbon_target.p_them()] to me.\"")) /datum/action/innate/seek_master name = "Seek your Master" @@ -142,8 +143,8 @@ can_repair = FALSE slowed_by_drag = FALSE faction = list(FACTION_HERETIC) - maxHealth = 35 - health = 35 + maxHealth = 45 + health = 45 melee_damage_lower = 20 melee_damage_upper = 25 // Dim green diff --git a/code/modules/mob/living/basic/drone/_drone.dm b/code/modules/mob/living/basic/drone/_drone.dm index fe5dbb4d2d5a3..a0be86ecc6a9a 100644 --- a/code/modules/mob/living/basic/drone/_drone.dm +++ b/code/modules/mob/living/basic/drone/_drone.dm @@ -220,14 +220,12 @@ /mob/living/basic/drone/med_hud_set_health() var/image/holder = hud_list[DIAG_HUD] - var/icon/hud_icon = icon(icon, icon_state, dir) - holder.pixel_y = hud_icon.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]" /mob/living/basic/drone/med_hud_set_status() var/image/holder = hud_list[DIAG_STAT_HUD] - var/icon/hud_icon = icon(icon, icon_state, dir) - holder.pixel_y = hud_icon.Height() - ICON_SIZE_Y + holder.pixel_y = get_cached_height() - ICON_SIZE_Y if(stat == DEAD) holder.icon_state = "huddead2" else if(incapacitated) @@ -348,6 +346,9 @@ to_chat(src, span_warning("Using [machine] could break your laws.")) return COMPONENT_CANT_INTERACT_WIRES +/mob/living/basic/drone/proc/init_shy_in_room_component(list/drone_bad_areas) + if(CONFIG_GET(flag/drone_area_interaction_restrict)) + LoadComponent(/datum/component/shy_in_room, drone_bad_areas, "Touching anything in %ROOM could break your laws.") /mob/living/basic/drone/proc/set_shy(new_shy) shy = new_shy @@ -366,8 +367,8 @@ REMOVE_TRAIT(src, TRAIT_CAN_STRIP, DRONE_SHY_TRAIT) // To shy to touch someone elses hat ADD_TRAIT(src, TRAIT_PACIFISM, DRONE_SHY_TRAIT) LoadComponent(/datum/component/shy, mob_whitelist=not_shy_of, shy_range=3, message="Your laws prevent this action near %TARGET.", keyless_shy=FALSE, clientless_shy=TRUE, dead_shy=FALSE, dead_shy_immediate=TRUE, machine_whitelist=shy_machine_whitelist) - LoadComponent(/datum/component/shy_in_room, drone_bad_areas, "Touching anything in %ROOM could break your laws.") - LoadComponent(/datum/component/technoshy, 1 MINUTES, "%TARGET was touched by a being recently, using it could break your laws.") + init_shy_in_room_component(drone_bad_areas) + LoadComponent(/datum/component/technoshy, 20 SECONDS, "%TARGET was touched by a being recently, using it could break your laws.") LoadComponent(/datum/component/itempicky, drone_good_items, "Using %TARGET could break your laws.") RegisterSignal(src, COMSIG_TRY_USE_MACHINE, PROC_REF(blacklist_on_try_use_machine)) RegisterSignal(src, COMSIG_TRY_WIRES_INTERACT, PROC_REF(blacklist_on_try_wires_interact)) diff --git a/code/modules/mob/living/basic/drone/interaction.dm b/code/modules/mob/living/basic/drone/interaction.dm index 58b7cd88ef287..2e22bb997523a 100644 --- a/code/modules/mob/living/basic/drone/interaction.dm +++ b/code/modules/mob/living/basic/drone/interaction.dm @@ -148,7 +148,7 @@ Stun(40) visible_message(span_warning("[src]'s display glows a vicious red!"), \ span_userdanger("ERROR: LAW OVERRIDE DETECTED")) - to_chat(src, span_boldannounce("From now on, these are your laws:")) + to_chat(src, span_bolddanger("From now on, these are your laws:")) laws = \ "1. You must always involve yourself in the matters of other beings, even if such matters conflict with Law Two or Law Three.\n"+\ "2. You may harm any being, regardless of intent or circumstance.\n"+\ diff --git a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm index 77fa9ce8ca088..1081c9b7b63b8 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_behavior.dm @@ -8,6 +8,7 @@ callback.Invoke() /datum/ai_behavior/find_hunt_target/pollinate + action_cooldown = 10 SECONDS /datum/ai_behavior/find_hunt_target/pollinate/valid_dinner(mob/living/source, obj/machinery/hydroponics/dinner, radius) if(!dinner.can_bee_pollinate()) @@ -16,6 +17,7 @@ /datum/ai_behavior/enter_exit_hive behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH + action_cooldown = 10 SECONDS /datum/ai_behavior/enter_exit_hive/setup(datum/ai_controller/controller, target_key, attack_key) . = ..() diff --git a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm index 3d56dd990dcbd..76abb281b99b7 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/bee_ai_subtree.dm @@ -71,7 +71,7 @@ return var/mob/living/bee_pawn = controller.pawn - var/action_prob = (bee_pawn in current_home.contents) ? exit_chance : flyback_chance + var/action_prob = (bee_pawn.loc == current_home) ? exit_chance : flyback_chance if(!SPT_PROB(action_prob, seconds_per_tick)) return @@ -91,3 +91,9 @@ hunt_targets = list(/obj/machinery/hydroponics) hunt_range = 10 hunt_chance = 85 + +/datum/ai_planning_subtree/find_and_hunt_target/pollinate/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + var/atom/atom_pawn = controller.pawn + if(!isturf(atom_pawn.loc)) + return + return ..() diff --git a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm index c26530b5f32aa..a07a70d0172d4 100644 --- a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm +++ b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm @@ -76,7 +76,6 @@ if(!food_types) food_types = src.food_types.Copy() AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15) - AddElement(/datum/element/basic_eating, food_types = food_types) /mob/living/basic/cow/tamed(mob/living/tamer, atom/food) visible_message("[src] [tame_message] as it seems to bond with [tamer].", "You [self_tame_message], recognizing [tamer] as your new pal.") diff --git a/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm b/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm index 47f11a02839e4..d11968128aa67 100644 --- a/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm +++ b/code/modules/mob/living/basic/farm_animals/cow/cow_moonicorn.dm @@ -32,7 +32,6 @@ var/static/list/food_types if(!food_types) food_types = src.food_types.Copy() - AddElement(/datum/element/basic_eating, food_types = food_types) AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15) /mob/living/basic/cow/moonicorn/tamed(mob/living/tamer, atom/food) diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm index 363243a283388..7e572c2d92f63 100644 --- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm +++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla.dm @@ -177,6 +177,19 @@ paralyze_chance = 0 initial_size = 0.9 +/mob/living/basic/gorilla/hostile + name = "Feral Gorilla" + maxHealth = 180 + health = 180 + desc = "A gorilla created via \"advanced genetic science\". While not quite as strong as their wildborne brethren, this simian still packs a punch." + melee_damage_lower = 15 + melee_damage_upper = 18 + obj_damage = 25 + speed = 0.1 + paralyze_chance = 0 + initial_size = 0.9 + faction = list(FACTION_HOSTILE) + /mob/living/basic/gorilla/genetics/Initialize(mapload) . = ..() qdel(GetComponent(/datum/component/amputating_limbs)) diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm index 412104617a5b6..270b9b4e859bd 100644 --- a/code/modules/mob/living/basic/farm_animals/pig.dm +++ b/code/modules/mob/living/basic/farm_animals/pig.dm @@ -48,7 +48,8 @@ ///wrapper for the tameable component addition so you can have non tamable cow subtypes /mob/living/basic/pig/proc/make_tameable() - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/carrot), tame_chance = 25, bonus_tame_chance = 15) + var/list/food_types = string_list(list(/obj/item/food/grown/carrot)) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15) /mob/living/basic/pig/tamed(mob/living/tamer, atom/food) AddElement(/datum/element/ridable, /datum/component/riding/creature/pig) diff --git a/code/modules/mob/living/basic/farm_animals/pony.dm b/code/modules/mob/living/basic/farm_animals/pony.dm index b73dac3945161..d2f897fc823ff 100644 --- a/code/modules/mob/living/basic/farm_animals/pony.dm +++ b/code/modules/mob/living/basic/farm_animals/pony.dm @@ -53,7 +53,10 @@ AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) AddElementTrait(TRAIT_WADDLING, INNATE_TRAIT, /datum/element/waddling) - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 25, bonus_tame_chance = 15, unique = unique_tamer) + var/static/list/food_types = list( + /obj/item/food/grown/apple, + ) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 15, unique = unique_tamer) /mob/living/basic/pony/tamed(mob/living/tamer, atom/food) playsound(src, 'sound/mobs/non-humanoids/pony/snort.ogg', 50) @@ -161,4 +164,5 @@ ponycolors = list("#5d566f", pick_weight(mane_colors)) name = pick("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") // Only one person can tame these fellas, and they only need one apple - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/apple), tame_chance = 100, bonus_tame_chance = 15, unique = unique_tamer) + var/static/list/food_types = list(/obj/item/food/grown/apple) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100, bonus_tame_chance = 15, unique = unique_tamer) diff --git a/code/modules/mob/living/basic/heretic/fire_shark.dm b/code/modules/mob/living/basic/heretic/fire_shark.dm index 1ac4ccb7b237a..0dfb9a3a1578c 100644 --- a/code/modules/mob/living/basic/heretic/fire_shark.dm +++ b/code/modules/mob/living/basic/heretic/fire_shark.dm @@ -5,7 +5,7 @@ icon_state = "fire_shark" icon_living = "fire_shark" pass_flags = PASSTABLE | PASSMOB - mob_biotypes = MOB_ORGANIC | MOB_BEAST + mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_AQUATIC speed = -0.5 health = 16 maxHealth = 16 diff --git a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm index 350106d707fdb..f85b50c5eb123 100644 --- a/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm +++ b/code/modules/mob/living/basic/icemoon/ice_demon/ice_demon_abilities.dm @@ -4,8 +4,7 @@ damage = 5 damage_type = BURN armor_flag = ENERGY - speed = 1 - pixel_speed_multiplier = 0.25 + speed = 0.25 temperature = -75 /datum/action/cooldown/mob_cooldown/ice_demon_teleport diff --git a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm index d4a05bf227ede..617295ef6ba56 100644 --- a/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm +++ b/code/modules/mob/living/basic/icemoon/ice_whelp/ice_whelp_abilities.dm @@ -23,7 +23,7 @@ name = "Fire all directions" desc = "Unleash lines of cold fire in all directions" button_icon = 'icons/effects/fire.dmi' - button_icon_state = "1" + button_icon_state = "light" cooldown_time = 4 SECONDS click_to_activate = FALSE fire_range = 6 diff --git a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm index 3708d754ab4b0..b82092147f67d 100644 --- a/code/modules/mob/living/basic/icemoon/wolf/wolf.dm +++ b/code/modules/mob/living/basic/icemoon/wolf/wolf.dm @@ -66,7 +66,8 @@ make_tameable() /mob/living/basic/mining/wolf/proc/make_tameable() - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat/slab), tame_chance = 15, bonus_tame_chance = 5) + var/static/list/food_types = list(/obj/item/food/meat/slab) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 15, bonus_tame_chance = 5) /mob/living/basic/mining/wolf/tamed(mob/living/tamer, atom/food) new /obj/effect/temp_visual/heart(src.loc) diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm b/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm index 440cfc2861b69..ee93a9c12366f 100644 --- a/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm +++ b/code/modules/mob/living/basic/jungle/seedling/seedling_ai.dm @@ -37,6 +37,7 @@ hunt_range = 7 /datum/ai_behavior/find_and_set/treatable_hydro + action_cooldown = 5 SECONDS /datum/ai_behavior/find_and_set/treatable_hydro/search_tactic(datum/ai_controller/controller, locate_path, search_range) var/list/possible_trays = list() @@ -97,6 +98,9 @@ return FALSE set_movement_target(controller, target) +/datum/ai_behavior/find_and_set/beamable_hydroplants + action_cooldown = 15 SECONDS + /datum/ai_behavior/find_and_set/beamable_hydroplants/search_tactic(datum/ai_controller/controller, locate_path, search_range) var/list/possible_trays = list() @@ -136,7 +140,8 @@ return can_see(source, water_source, radius) /datum/ai_behavior/hunt_target/interact_with_target/water_source - behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH + always_reset_target = TRUE hunt_cooldown = 5 SECONDS /datum/ai_controller/basic_controller/seedling/meanie diff --git a/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm b/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm index 303776384d1f6..a5b47c7d22f09 100644 --- a/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm +++ b/code/modules/mob/living/basic/jungle/seedling/seedling_projectiles.dm @@ -6,7 +6,7 @@ light_range = 2 armor_flag = ENERGY light_color = LIGHT_COLOR_DIM_YELLOW - speed = 1.6 + speed = 0.66 hitsound = 'sound/items/weapons/sear.ogg' hitsound_wall = 'sound/items/weapons/effects/searwall.ogg' nondirectional_sprite = TRUE @@ -17,7 +17,7 @@ var/mob/living/living_target = target if(FACTION_JUNGLE in living_target.faction) - return + return BULLET_ACT_BLOCK return ..() diff --git a/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm b/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm index c0b49fbdc6199..71e938c5164e6 100644 --- a/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm +++ b/code/modules/mob/living/basic/lavaland/basilisk/basilisk_overheat.dm @@ -2,6 +2,7 @@ /datum/status_effect/basilisk_overheat id = "basilisk_overheat" duration = 3 MINUTES + alert_type = null /// Things which will chill us out if we get hit by them var/static/list/chilling_reagents = list( /datum/reagent/medicine/cryoxadone, diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm index 8e43e43e72c31..bd480cc6972ea 100644 --- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm +++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm @@ -72,7 +72,7 @@ icon_state = "neurotoxin" hitsound = 'sound/items/weapons/sear.ogg' damage = 20 - speed = 2 + speed = 0.5 range = 20 jitter = 3 SECONDS stutter = 3 SECONDS diff --git a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm index 26c0d79540a73..5a1166962be55 100644 --- a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm +++ b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm @@ -67,6 +67,7 @@ ADD_TRAIT(src, TRAIT_BOULDER_BREAKER, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_INSTANTLY_PROCESSES_BOULDERS, INNATE_TRAIT) RegisterSignal(src, COMSIG_ATOM_PRE_BULLET_ACT, PROC_REF(block_bullets)) + RegisterSignal(src, COMSIG_MOB_ATE, PROC_REF(on_eat)) /mob/living/basic/mining/goldgrub/proc/block_bullets(datum/source, obj/projectile/hitting_projectile) SIGNAL_HANDLER @@ -105,7 +106,8 @@ return ..() /mob/living/basic/mining/goldgrub/proc/make_tameable() - AddComponent(/datum/component/tameable, food_types = list(/obj/item/stack/ore), tame_chance = 25, bonus_tame_chance = 5) + var/list/food_types = string_list(list(/obj/item/stack/ore)) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 25, bonus_tame_chance = 5) /mob/living/basic/mining/goldgrub/tamed(mob/living/tamer, atom/food) new /obj/effect/temp_visual/heart(src.loc) @@ -127,13 +129,18 @@ . = ..() if(!istype(arrived, /obj/item/stack/ore)) return - playsound(src,'sound/items/eatfood.ogg', rand(10,50), TRUE) if(!can_lay_eggs) return if(!istype(arrived, /obj/item/stack/ore/bluespace_crystal) || prob(60)) return new /obj/item/food/egg/green/grub_egg(get_turf(src)) +/mob/living/basic/mining/goldgrub/proc/on_eat(atom/source, atom/movable/food, mob/feeder) + SIGNAL_HANDLER + + food.forceMove(src) + return COMSIG_MOB_TERMINATE_EAT + /mob/living/basic/mining/goldgrub/baby icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' name = "goldgrub baby" diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm index 76feb1f4bd4a7..f8a7ee46bc33b 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm @@ -68,7 +68,8 @@ AddComponent(/datum/component/basic_mob_attack_telegraph) AddComponentFrom(INNATE_TRAIT, /datum/component/shovel_hands) if (tameable) - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/ash_flora), tame_chance = 10, bonus_tame_chance = 5) + var/static/list/food_types = list(/obj/item/food/grown/ash_flora) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 10, bonus_tame_chance = 5) tentacles = new (src) tentacles.Grant(src) diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm index d8288360bd1a2..0b8babf82ec30 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm @@ -12,6 +12,7 @@ maxHealth = 150 health = 150 obj_damage = 15 + mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC melee_damage_lower = 15 melee_damage_upper = 19 attack_verb_continuous = "snips" @@ -183,7 +184,7 @@ optional_checks = CALLBACK(src, PROC_REF(ready_to_grow)),\ optional_grow_behavior = CALLBACK(src, PROC_REF(grow_up))\ ) - AddComponent(/datum/component/tameable, target_foods, tame_chance = 35, bonus_tame_chance = 20) + AddComponent(/datum/component/tameable, tame_chance = 35, bonus_tame_chance = 20) AddComponent(/datum/component/swarming, 16, 11) ADD_TRAIT(src, TRAIT_MOB_HIDE_HAPPINESS, INNATE_TRAIT) //Do not let strangers know it gets happy when poked if stray. diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm index 37291cc88f737..bd5563f0ac29d 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm @@ -12,7 +12,6 @@ GLOBAL_LIST_INIT(raptor_inherit_traits, list( BB_RAPTOR_MOTHERLY = "Motherly", BB_RAPTOR_PLAYFUL = "Playful", BB_RAPTOR_COWARD = "Coward", - BB_RAPTOR_TROUBLE_MAKER = "Trouble Maker", )) GLOBAL_LIST_EMPTY(raptor_population) @@ -70,6 +69,7 @@ GLOBAL_LIST_EMPTY(raptor_population) change_offsets = FALSE icon = 'icons/mob/simple/lavaland/raptor_icebox.dmi' + AddElement(/datum/element/wears_collar) add_traits(list(TRAIT_LAVA_IMMUNE, TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), INNATE_TRAIT) if(!mapload) @@ -97,7 +97,7 @@ GLOBAL_LIST_EMPTY(raptor_population) ai_controller.set_blackboard_key(BB_BASIC_MOB_SPEAK_LINES, display_emote) inherited_stats = new inherit_properties() - var/static/list/my_food = list(/obj/item/stack/ore) + var/list/my_food = string_list(list(/obj/item/stack/ore)) AddElement(/datum/element/basic_eating, food_types = my_food) AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured, stop_fleeing_at = 0.5, start_fleeing_below = 0.2) @@ -159,7 +159,7 @@ GLOBAL_LIST_EMPTY(raptor_population) balloon_alert(src, "no food!") else melee_attack(ore_food) - return TRUE + return FALSE /mob/living/basic/raptor/melee_attack(mob/living/target, list/modifiers, ignore_cooldown) if(!combat_mode && istype(target, /mob/living/basic/raptor/baby_raptor)) diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm index 7e3022f95716d..a412fceeb1276 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_behavior.dm @@ -2,24 +2,11 @@ always_reset_target = TRUE /datum/ai_behavior/find_hunt_target/injured_raptor + action_cooldown = 7.5 SECONDS /datum/ai_behavior/find_hunt_target/injured_raptor/valid_dinner(mob/living/source, mob/living/target, radius) return (source != target && target.health < target.maxHealth) -/datum/ai_behavior/find_hunt_target/raptor_victim - -/datum/ai_behavior/find_hunt_target/raptor_victim/valid_dinner(mob/living/source, mob/living/target, radius) - if(target.ai_controller?.blackboard[BB_RAPTOR_TROUBLE_MAKER]) - return FALSE - return target.stat != DEAD && can_see(source, target, radius) - -/datum/ai_behavior/hunt_target/interact_with_target/reset_target/bully_raptors - -/datum/ai_behavior/hunt_target/interact_with_target/bully_raptors/finish_action(datum/ai_controller/controller, succeeded, hunting_target_key, hunting_cooldown_key) - if(succeeded) - controller.set_blackboard_key(BB_RAPTOR_TROUBLE_COOLDOWN, world.time + 2 MINUTES) - return ..() - /datum/ai_behavior/find_hunt_target/raptor_baby/valid_dinner(mob/living/source, mob/living/target, radius) return can_see(source, target, radius) && target.stat != DEAD @@ -30,6 +17,7 @@ return ..() /datum/ai_behavior/find_hunt_target/raptor_trough + action_cooldown = 7.5 SECONDS /datum/ai_behavior/find_hunt_target/raptor_trough/valid_dinner(mob/living/source, atom/movable/trough, radius) return !!(locate(/obj/item/stack/ore) in trough.contents) diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm index d9bada12ee8db..4241eb4295e73 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_controller.dm @@ -27,7 +27,6 @@ /datum/ai_planning_subtree/find_and_hunt_target/raptor_trough, /datum/ai_planning_subtree/find_and_hunt_target/care_for_young, /datum/ai_planning_subtree/make_babies, - /datum/ai_planning_subtree/find_and_hunt_target/raptor_start_trouble, /datum/ai_planning_subtree/express_happiness, /datum/ai_planning_subtree/find_and_hunt_target/play_with_owner/raptor, ) diff --git a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm index 2b88cc3282bd0..06697d60b942f 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/raptor_ai_subtrees.dm @@ -11,21 +11,6 @@ return return ..() -/datum/ai_planning_subtree/find_and_hunt_target/raptor_start_trouble - target_key = BB_RAPTOR_VICTIM - hunting_behavior = /datum/ai_behavior/hunt_target/interact_with_target/reset_target/bully_raptors - finding_behavior = /datum/ai_behavior/find_hunt_target/raptor_victim - hunt_targets = list(/mob/living/basic/raptor) - hunt_chance = 30 - hunt_range = 9 - -/datum/ai_planning_subtree/find_and_hunt_target/raptor_start_trouble/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) - if(controller.blackboard[BB_BASIC_MOB_HEALER] || !controller.blackboard[BB_RAPTOR_TROUBLE_MAKER]) - return - if(world.time < controller.blackboard[BB_RAPTOR_TROUBLE_COOLDOWN]) - return - return ..() - /datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee/raptor target_key = BB_BASIC_MOB_FLEE_TARGET diff --git a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm index c7648aa38b259..5c4183b48ee6c 100644 --- a/code/modules/mob/living/basic/lavaland/watcher/watcher.dm +++ b/code/modules/mob/living/basic/lavaland/watcher/watcher.dm @@ -13,6 +13,9 @@ speed = 3 maxHealth = 160 health = 160 + melee_damage_lower = 15 + melee_damage_upper = 15 + attack_sound = 'sound/items/weapons/bladeslice.ogg' attack_verb_continuous = "buffets" attack_verb_simple = "buffet" crusher_loot = /obj/item/crusher_trophy/watcher_wing diff --git a/code/modules/mob/living/basic/pets/cat/kitten_ai.dm b/code/modules/mob/living/basic/pets/cat/kitten_ai.dm index 4136aa0aa0151..cdb7ac542e1a7 100644 --- a/code/modules/mob/living/basic/pets/cat/kitten_ai.dm +++ b/code/modules/mob/living/basic/pets/cat/kitten_ai.dm @@ -61,8 +61,7 @@ for(var/mob/living/carbon/human/human_target in oview(search_range, controller.pawn)) if(human_target.stat != CONSCIOUS || isnull(human_target.mind)) continue - if(!length(typecache_filter_list(human_target.held_items, locate_items))) - continue - return human_target - + for (var/obj/item/held_item in human_target.held_items) + if (is_type_in_typecache(held_item, locate_items)) + return human_target return null diff --git a/code/modules/mob/living/basic/pets/dog/_dog.dm b/code/modules/mob/living/basic/pets/dog/_dog.dm index b5259d275b530..fd8920d2ca0e3 100644 --- a/code/modules/mob/living/basic/pets/dog/_dog.dm +++ b/code/modules/mob/living/basic/pets/dog/_dog.dm @@ -68,7 +68,11 @@ AddElement(/datum/element/pet_bonus, "woof") AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/unfriend_attacker, untamed_reaction = "%SOURCE% fixes %TARGET% with a look of betrayal.") - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat/slab/human/mutant/skeleton, /obj/item/stack/sheet/bone), tame_chance = 30, bonus_tame_chance = 15, unique = FALSE) + var/static/list/food_types = list( + /obj/item/food/meat/slab/human/mutant/skeleton, + /obj/item/stack/sheet/bone, + ) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 30, bonus_tame_chance = 15, unique = FALSE) AddComponent(/datum/component/obeys_commands, pet_commands) var/dog_area = get_area(src) for(var/obj/structure/bed/dogbed/dog_bed in dog_area) diff --git a/code/modules/mob/living/basic/pets/parrot/poly.dm b/code/modules/mob/living/basic/pets/parrot/poly.dm index f825788decd98..fb79c0d73b9b8 100644 --- a/code/modules/mob/living/basic/pets/parrot/poly.dm +++ b/code/modules/mob/living/basic/pets/parrot/poly.dm @@ -16,7 +16,7 @@ name = "Poly" desc = "Poly the Parrot. An expert on quantum cracker theory." gold_core_spawnable = NO_SPAWN - speech_probability_rate = 13 + speech_probability_rate = 0.33 // DOPPLER EDIT CHANGE - DEFAULT: 13 /// Callback to save our memory at the end of the round. var/datum/callback/roundend_callback = null diff --git a/code/modules/mob/living/basic/pets/penguin/penguin.dm b/code/modules/mob/living/basic/pets/penguin/penguin.dm index 0df0dfedcb29c..376234f3a3e52 100644 --- a/code/modules/mob/living/basic/pets/penguin/penguin.dm +++ b/code/modules/mob/living/basic/pets/penguin/penguin.dm @@ -11,6 +11,7 @@ response_harm_simple = "kick" faction = list(FACTION_NEUTRAL) + mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC ai_controller = /datum/ai_controller/basic_controller/penguin ///it can lay an egg? var/can_lay_eggs = TRUE diff --git a/code/modules/mob/living/basic/slime/ai/behaviours.dm b/code/modules/mob/living/basic/slime/ai/behaviours.dm index fe8102eee112f..934404d88dd53 100644 --- a/code/modules/mob/living/basic/slime/ai/behaviours.dm +++ b/code/modules/mob/living/basic/slime/ai/behaviours.dm @@ -25,6 +25,7 @@ return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED /datum/ai_behavior/find_hunt_target/find_slime_food + action_cooldown = 7.5 SECONDS // Check if the slime can drain the target /datum/ai_behavior/find_hunt_target/find_slime_food/valid_dinner(mob/living/basic/slime/hunter, mob/living/dinner, radius, datum/ai_controller/controller, seconds_per_tick) diff --git a/code/modules/mob/living/basic/slime/ai/controller.dm b/code/modules/mob/living/basic/slime/ai/controller.dm index 41466b2973498..1d5f00e6c4381 100644 --- a/code/modules/mob/living/basic/slime/ai/controller.dm +++ b/code/modules/mob/living/basic/slime/ai/controller.dm @@ -4,7 +4,6 @@ BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_SLIME_RABID = FALSE, BB_SLIME_HUNGER_DISABLED = FALSE, - BB_CURRENT_HUNTING_TARGET = null, // people whose energy we want to drain ) ai_movement = /datum/ai_movement/basic_avoidance @@ -13,13 +12,12 @@ /datum/ai_planning_subtree/change_slime_face, /datum/ai_planning_subtree/use_mob_ability/evolve, /datum/ai_planning_subtree/use_mob_ability/reproduce, - /datum/ai_planning_subtree/target_retaliate, /datum/ai_planning_subtree/pet_planning, + /datum/ai_planning_subtree/target_retaliate, /datum/ai_planning_subtree/find_and_hunt_target/find_slime_food, /datum/ai_planning_subtree/basic_melee_attack_subtree/slime, /datum/ai_planning_subtree/random_speech/slime, ) - can_idle = FALSE /datum/ai_controller/basic_controller/slime/CancelActions() ..() diff --git a/code/modules/mob/living/basic/slime/feeding.dm b/code/modules/mob/living/basic/slime/feeding.dm index 064ec441cb60b..867d62672405b 100644 --- a/code/modules/mob/living/basic/slime/feeding.dm +++ b/code/modules/mob/living/basic/slime/feeding.dm @@ -23,6 +23,11 @@ if(check_adjacent && (!Adjacent(meal) || !isturf(loc))) return FALSE + if(!(mobility_flags & MOBILITY_MOVE)) + if(!silent) + balloon_alert(src, "can't move!") + return FALSE + if(meal.stat == DEAD) if(!silent) balloon_alert(src, "no life energy!") diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm index b16a00a6906b1..6f843857578a6 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm @@ -19,7 +19,7 @@ icon_dead = "base_dead" icon_gib = "carp_gib" gold_core_spawnable = HOSTILE_SPAWN - mob_biotypes = MOB_ORGANIC | MOB_BEAST + mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_AQUATIC health = 25 maxHealth = 25 pressure_resistance = 200 @@ -111,7 +111,8 @@ tamed(tamer, feedback = FALSE) befriend(tamer) else - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/meat), tame_chance = 10, bonus_tame_chance = 5) + var/static/list/food_types = list(/obj/item/food/meat) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 10, bonus_tame_chance = 5) teleport = new(src) teleport.Grant(src) diff --git a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm index fdc92d06f661f..2af3a42c26dd9 100644 --- a/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm +++ b/code/modules/mob/living/basic/space_fauna/demon/demon_items.dm @@ -39,7 +39,7 @@ var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = new(heart_owner) crawl.Grant(heart_owner) -/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE) +/obj/item/organ/heart/demon/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE, movement_flags) . = ..() var/datum/action/cooldown/spell/jaunt/bloodcrawl/crawl = locate() in heart_owner.actions qdel(crawl) diff --git a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm index 9c56ec044c75f..66e73b2bbfac8 100644 --- a/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm +++ b/code/modules/mob/living/basic/space_fauna/eyeball/_eyeball.dm @@ -58,7 +58,8 @@ grant_actions_by_list(innate_actions) AddElement(/datum/element/simple_flying) - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/grown/carrot), tame_chance = 100) + var/list/food_types = string_list(list(/obj/item/food/grown/carrot)) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100) ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) on_hit_overlay = mutable_appearance(icon, "[icon_state]_crying") diff --git a/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm b/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm index cf76f347be3f3..f2e33eaacd928 100644 --- a/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm +++ b/code/modules/mob/living/basic/space_fauna/paper_wizard/paper_wizard.dm @@ -160,7 +160,7 @@ /obj/effect/temp_visual/paperwiz_dying/Initialize(mapload) . = ..() - visible_message(span_boldannounce("The wizard cries out in pain as a gate appears behind him, sucking him in!")) + visible_message(span_bolddanger("The wizard cries out in pain as a gate appears behind him, sucking him in!")) playsound(get_turf(src), 'sound/effects/magic/mandswap.ogg', 50, vary = TRUE, pressure_affected = TRUE) playsound(get_turf(src), 'sound/effects/hallucinations/wail.ogg', 50, vary = TRUE, pressure_affected = TRUE) RegisterSignal(src, COMSIG_PREQDELETED, PROC_REF(on_delete)) @@ -175,4 +175,3 @@ new /obj/effect/temp_visual/paper_scatter(current_turf) new /obj/item/clothing/suit/wizrobe/paper(current_turf) new /obj/item/clothing/head/collectable/paper(current_turf) - diff --git a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm index eae137787ed0d..07ad70a29e3bc 100644 --- a/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm +++ b/code/modules/mob/living/basic/space_fauna/regal_rat/regal_rat.dm @@ -179,10 +179,12 @@ if(SEND_SIGNAL(target, COMSIG_RAT_INTERACT, src) & COMPONENT_RAT_INTERACTED) return FALSE - if(isnull(mind) || !combat_mode) + if(isnull(mind) || combat_mode) return TRUE - poison_target(target) + if(poison_target(target)) + return FALSE + return TRUE /// Checks if we are allowed to attack this mob. Will return TRUE if we are potentially allowed to attack, but if we end up in a case where we should NOT attack, return FALSE. @@ -204,10 +206,17 @@ return TRUE -/// Attempts to add rat spit to a target, effectively poisoning it to whoever eats it. Yuckers. +/** + * Attempts to add rat spit to a target, effectively poisoning it to whoever eats it. Yuckers. + * Returns TRUE if the target is valid for adding rat spit + * Returns FALSE if the target is invalid for adding rat spit + * Arguments + * + * * atom/lean_target - the target we try to add the spit to + */ /mob/living/basic/regal_rat/proc/poison_target(atom/target) if(isnull(target.reagents) || !target.is_injectable(src, allowmobs = TRUE)) - return + return FALSE visible_message( span_warning("[src] starts licking [target] passionately!"), @@ -216,10 +225,11 @@ ) if (!do_after(src, 2 SECONDS, target, interaction_key = REGALRAT_INTERACTION)) - return + return TRUE // don't return false here because they tried to lick and the do_after was interrupted, otherwise cancelling the do_after will make them hit the target. target.reagents.add_reagent(/datum/reagent/rat_spit, rand(1,3), no_react = TRUE) balloon_alert(src, "licked") + return TRUE /** * Conditionally "eat" cheese object and heal, if injured. diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm index fa21d157e9061..b2d8a6bac2210 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_abilities.dm @@ -143,7 +143,6 @@ desc = "Twists and corrupts the nearby area as well as dispelling holy auras on floors." button_icon_state = "defile" cooldown_time = 15 SECONDS - aoe_radius = 4 unlock_amount = 10 cast_amount = 30 @@ -169,6 +168,14 @@ if(victim.type == /turf/closed/wall/r_wall && prob(10) && !HAS_TRAIT(victim, TRAIT_RUSTY)) new /obj/effect/temp_visual/revenant(victim) victim.AddElement(/datum/element/rust) + for(var/obj/machinery/shower/cursed_shower in victim) + new /obj/effect/temp_visual/revenant(victim) + cursed_shower.has_water_reclaimer = FALSE + cursed_shower.reagents.remove_all(1, relative=TRUE) + cursed_shower.reagents.add_reagent(/datum/reagent/blood, initial(cursed_shower.reagent_capacity)) + if(prob(50)) + cursed_shower.intended_on = TRUE + cursed_shower.update_actually_on(TRUE) for(var/obj/effect/decal/cleanable/food/salt/salt in victim) new /obj/effect/temp_visual/revenant(victim) qdel(salt) diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm index b7bc6e34dcf7e..6b5f63bf00f0e 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_effects.dm @@ -1,5 +1,7 @@ /// Parent type for all unique revenant status effects /datum/status_effect/revenant + id = STATUS_EFFECT_ID_ABSTRACT + alert_type = null /datum/status_effect/revenant/on_creation(mob/living/new_owner, duration) if(isnum(duration)) diff --git a/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm b/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm index c162ecf2c213e..9ce61bf478f0c 100644 --- a/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm +++ b/code/modules/mob/living/basic/space_fauna/revenant/revenant_harvest.dm @@ -88,7 +88,7 @@ if(target.stat == CONSCIOUS) to_chat(src, span_revenwarning("[target_Theyre] now powerful enough to fight off your draining!")) - to_chat(target, span_boldannounce("You feel something tugging across your body before subsiding.")) //hey, wait a minute... + to_chat(target, span_bolddanger("You feel something tugging across your body before subsiding.")) //hey, wait a minute... return FALSE to_chat(src, span_revenminor("You begin siphoning essence from [target]'s soul.")) @@ -111,7 +111,7 @@ return FALSE var/datum/beam/draining_beam = Beam(target, icon_state = "drain_life") - if(!do_after(src, 4.6 SECONDS, target, timed_action_flags = (IGNORE_HELD_ITEM | IGNORE_INCAPACITATED))) //As one cannot prove the existance of ghosts, ghosts cannot prove the existance of the target they were draining. + if(!do_after(src, 4.6 SECONDS, target, timed_action_flags = (IGNORE_HELD_ITEM | IGNORE_INCAPACITATED))) //As one cannot prove the existence of ghosts, ghosts cannot prove the existence of the target they were draining. to_chat(src, span_revenwarning("[target ? "[target]'s soul has" : "[target_They_have]"] been drawn out of your grasp. The link has been broken.")) if(target) target.visible_message( diff --git a/code/modules/mob/living/basic/vermin/axolotl.dm b/code/modules/mob/living/basic/vermin/axolotl.dm index 3b1f630df40f1..2ee244a7f62e4 100644 --- a/code/modules/mob/living/basic/vermin/axolotl.dm +++ b/code/modules/mob/living/basic/vermin/axolotl.dm @@ -12,7 +12,7 @@ density = FALSE pass_flags = PASSTABLE | PASSGRILLE | PASSMOB mob_size = MOB_SIZE_TINY - mob_biotypes = MOB_ORGANIC | MOB_BEAST + mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC gold_core_spawnable = FRIENDLY_SPAWN response_help_continuous = "pets" diff --git a/code/modules/mob/living/basic/vermin/frog.dm b/code/modules/mob/living/basic/vermin/frog.dm index d2a634b7e9edd..169fa4e833563 100644 --- a/code/modules/mob/living/basic/vermin/frog.dm +++ b/code/modules/mob/living/basic/vermin/frog.dm @@ -4,7 +4,7 @@ icon_state = "frog" icon_living = "frog" icon_dead = "frog_dead" - mob_biotypes = MOB_ORGANIC|MOB_BEAST + mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC verb_say = "ribbits" verb_ask = "ribbits inquisitively" verb_exclaim = "croaks" diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm index a0c1faf971d06..0ded016d1a02e 100644 --- a/code/modules/mob/living/basic/vermin/mouse.dm +++ b/code/modules/mob/living/basic/vermin/mouse.dm @@ -83,7 +83,8 @@ if (tame) faction |= FACTION_NEUTRAL else - AddComponent(/datum/component/tameable, food_types = list(/obj/item/food/cheese), tame_chance = 100) + var/static/list/food_types = list(/obj/item/food/cheese) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 100) /mob/living/basic/mouse/Destroy() SSmobs.cheeserats -= src diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 592d187ebbf0b..35ede57d31d43 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -290,6 +290,7 @@ if(3) brainmob.emp_damage = min(brainmob.emp_damage + rand(0,10), 30) brainmob.emote("alarm") + SEND_SIGNAL(brainmob, COMSIG_LIVING_MINOR_SHOCK) // DOPPLER EDIT ADDITION /obj/item/mmi/atom_deconstruct(disassembled = TRUE) if(brain) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 39ec361ac9db5..c590dd8bf3e64 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -50,19 +50,8 @@ // Brain size logic transform = transform.Scale(brain_size) -/obj/item/organ/brain/examine() +/obj/item/organ/brain/on_mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags) . = ..() - if (smooth_brain) - . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...") - if(brain_size < 1) - . += span_notice("It is a bit on the smaller side...") - if(brain_size > 1) - . += span_notice("It is bigger than average...") - -/obj/item/organ/brain/mob_insert(mob/living/carbon/brain_owner, special = FALSE, movement_flags) - . = ..() - if(!.) - return name = initial(name) @@ -115,7 +104,8 @@ if(!special && !(brain_owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) brain_owner.update_body_parts() -/obj/item/organ/brain/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/brain/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) + . = ..() // Delete skillchips first as parent proc sets owner to null, and skillchips need to know the brain's owner. if(!QDELETED(organ_owner) && length(skillchips)) if(!special) @@ -123,16 +113,14 @@ for(var/chip in skillchips) var/obj/item/skillchip/skillchip = chip // Run the try_ proc with force = TRUE. - skillchip.try_deactivate_skillchip(silent = special, force = TRUE) - - . = ..() + skillchip.try_deactivate_skillchip(silent = special, force = TRUE, brain_owner = organ_owner) for(var/X in traumas) var/datum/brain_trauma/BT = X BT.on_lose(TRUE) BT.owner = null - if((!gc_destroyed || (owner && !owner.gc_destroyed)) && !(movement_flags & NO_ID_TRANSFER)) + if((!QDELETED(src) || !QDELETED(owner)) && !(movement_flags & NO_ID_TRANSFER)) transfer_identity(organ_owner) if(!special) if(!(organ_owner.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) @@ -140,7 +128,7 @@ organ_owner.clear_mood_event("brain_damage") /obj/item/organ/brain/update_icon_state() - icon_state = "[initial(icon_state)][smooth_brain ? "-smooth_brain" : ""]" + icon_state = "[initial(icon_state)][smooth_brain ? "-smooth" : ""]" return ..() /obj/item/organ/brain/proc/transfer_identity(mob/living/L) @@ -241,6 +229,8 @@ if(length(skillchips)) . += span_info("It has a skillchip embedded in it.") . += brain_damage_examine() + if (smooth_brain) + . += span_notice("All the pesky wrinkles are gone. Now it just needs a good drying...") if(brain_size < 1) . += span_notice("It is a bit on the smaller side...") if(brain_size > 1) @@ -456,12 +446,20 @@ can_smoothen_out = FALSE organ_traits = list(TRAIT_ADVANCEDTOOLUSER, TRAIT_LITERATE, TRAIT_CAN_STRIP) -/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special) +// This fixes an edge case from species/regenerate_organs that would transfer the brain trauma before organ/on_mob_remove can remove it +// Prevents wizards from using the magic mirror to gain bluespace_prophet trauma and then switching to another race +/obj/item/organ/brain/lustrous/before_organ_replacement(obj/item/organ/replacement) + if(owner) + owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE) + owner.RemoveElement(/datum/element/tenacious) + . = ..() + +/obj/item/organ/brain/lustrous/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() organ_owner.cure_trauma_type(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE) organ_owner.RemoveElement(/datum/element/tenacious) -/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/brain/lustrous/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() organ_owner.gain_trauma(/datum/brain_trauma/special/bluespace_prophet, TRAUMA_RESILIENCE_ABSOLUTE) organ_owner.AddElement(/datum/element/tenacious) @@ -469,9 +467,9 @@ /obj/item/organ/brain/felinid //A bit smaller than average brain_size = 0.8 -/obj/item/organ/brain/lizard //A bit smaller than average +/obj/item/organ/brain/lizard name = "lizard brain" - desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect it's owner to be pretty cold blooded." + desc = "This juicy piece of meat has a oversized brain stem and cerebellum, with not much of a limbic system to speak of at all. You would expect its owner to be pretty cold blooded." // organ_traits = list(TRAIT_TACKLING_TAILED_DEFENDER) // DOPPLER EDIT REMOVAL /obj/item/organ/brain/abductor @@ -625,7 +623,7 @@ /obj/item/organ/brain/proc/get_attacking_limb(mob/living/carbon/human/target) var/obj/item/bodypart/arm/active_hand = owner.get_active_hand() if(target.body_position == LYING_DOWN && owner.usable_legs) - var/obj/item/bodypart/found_bodypart = owner.get_bodypart((active_hand.held_index % 2) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG) + var/obj/item/bodypart/found_bodypart = owner.get_bodypart(IS_LEFT_INDEX(active_hand.held_index) ? BODY_ZONE_L_LEG : BODY_ZONE_R_LEG) return found_bodypart || active_hand return active_hand diff --git a/code/modules/mob/living/carbon/alien/adult/adult.dm b/code/modules/mob/living/carbon/alien/adult/adult.dm index d2c41e61a12fb..45e9dea454dce 100644 --- a/code/modules/mob/living/carbon/alien/adult/adult.dm +++ b/code/modules/mob/living/carbon/alien/adult/adult.dm @@ -56,14 +56,16 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list( ..() //For alien evolution/promotion/queen finder procs. Checks for an active alien of that type -/proc/get_alien_type(alienpath) - for(var/mob/living/carbon/alien/adult/A in GLOB.alive_mob_list) - if(!istype(A, alienpath)) +/proc/get_alien_type(alien_path, mob/ignored) + for(var/mob/living/carbon/alien/alien in GLOB.carbon_list) + if(alien == ignored) continue - if(!A.key || A.stat == DEAD) //Only living aliens with a ckey are valid. + if(!istype(alien, alien_path)) continue - return A - return FALSE + if(!alien.key || alien.stat == DEAD) //Only living aliens with a ckey are valid. + continue + return alien + return null /mob/living/carbon/alien/adult/check_breath(datum/gas_mixture/breath) if(breath?.total_moles() > 0 && !HAS_TRAIT(src, TRAIT_SNEAK)) diff --git a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm index bfdcd1a5fd2ea..b9cdd8581e4cd 100644 --- a/code/modules/mob/living/carbon/alien/adult/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/adult/alien_powers.dm @@ -295,7 +295,7 @@ Doesn't work on other aliens/AI.*/ span_alertalien("You spit neurotoxin."), ) var/obj/projectile/neurotoxin/neurotoxin = new /obj/projectile/neurotoxin(caller.loc) - neurotoxin.preparePixelProjectile(target, caller, modifiers) + neurotoxin.aim_projectile(target, caller, modifiers) neurotoxin.firer = caller neurotoxin.fire() caller.newtonian_move(get_angle(target, caller)) diff --git a/code/modules/mob/living/carbon/alien/adult/queen.dm b/code/modules/mob/living/carbon/alien/adult/queen.dm index 8cbd55719774c..cfe6f45320a73 100644 --- a/code/modules/mob/living/carbon/alien/adult/queen.dm +++ b/code/modules/mob/living/carbon/alien/adult/queen.dm @@ -44,18 +44,6 @@ alien_speed = 2 /mob/living/carbon/alien/adult/royal/queen/Initialize(mapload) - //there should only be one queen - for(var/mob/living/carbon/alien/adult/royal/queen/Q in GLOB.carbon_list) - if(Q == src) - continue - if(Q.stat == DEAD) - continue - if(Q.client) - name = "alien princess ([rand(1, 999)])" //if this is too cutesy feel free to change it/remove it. - break - - real_name = src.name - var/static/list/innate_actions = list( /datum/action/cooldown/alien/promote, /datum/action/cooldown/spell/aoe/repulse/xeno, @@ -72,6 +60,11 @@ organs += new /obj/item/organ/alien/eggsac return ..() +/mob/living/carbon/alien/adult/royal/queen/set_name() + if(get_alien_type(/mob/living/carbon/alien/adult/royal/queen, ignored = src)) + name = "alien princess" + return ..() + //Queen verbs /datum/action/cooldown/alien/make_structure/lay_egg name = "Lay Egg" diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 120633acdfe4a..124711098674d 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -22,7 +22,7 @@ gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs unique_name = TRUE - var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?") + var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|princess|queen)( \\(\\d+\\))?") var/static/list/xeno_allowed_items = typecacheof(list( /obj/item/clothing/mask/facehugger, /obj/item/toy/basketball, // playing ball against a xeno is rigged since they cannot be disarmed, their game is out of this world diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 4aeed5c2b9def..2c91579e9767a 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -18,12 +18,12 @@ In all, this is a lot like the monkey code. /N if(user == src && check_self_for_injuries()) return set_resting(FALSE) - AdjustStun(-60) - AdjustKnockdown(-60) - AdjustImmobilized(-60) - AdjustParalyzed(-60) - AdjustUnconscious(-60) - AdjustSleeping(-100) + AdjustStun(-6 SECONDS) + AdjustKnockdown(-6 SECONDS) + AdjustImmobilized(-6 SECONDS) + AdjustParalyzed(-6 SECONDS) + AdjustUnconscious(-6 SECONDS) + AdjustSleeping(-10 SECONDS) visible_message(span_notice("[user.name] nuzzles [src] trying to wake [p_them()] up!")) else if(health > 0) user.do_attack_animation(src, ATTACK_EFFECT_BITE) diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 85092244510a7..8671a66c98aec 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -7,5 +7,10 @@ /mob/living/carbon/alien/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a") -/mob/living/carbon/alien/spawn_dust() - new /obj/effect/decal/remains/xeno(loc) +/mob/living/carbon/alien/spawn_dust(just_ash) + if(just_ash) + return ..() + + var/obj/effect/decal/remains/xeno/bones = new(loc) + bones.pixel_z = -6 + bones.pixel_w = rand(-1, 1) diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm index 717e18c9b3166..774a69ee50425 100644 --- a/code/modules/mob/living/carbon/alien/emote.dm +++ b/code/modules/mob/living/carbon/alien/emote.dm @@ -6,17 +6,6 @@ key_third_person = "gnarls" message = "gnarls and shows its teeth..." -/datum/emote/living/alien/hiss - key = "hiss" - key_third_person = "hisses" - message_alien = "hisses." - message_larva = "hisses softly." - emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE - -/datum/emote/living/alien/hiss/get_sound(mob/living/user) - if(isalienadult(user)) - return SFX_HISS - /datum/emote/living/alien/roar key = "roar" key_third_person = "roars" diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index f33ee4efdf17d..3c4500518de89 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -15,5 +15,10 @@ /mob/living/carbon/alien/larva/gib_animation() new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l") -/mob/living/carbon/alien/larva/spawn_dust() - new /obj/effect/decal/remains/xeno(loc) +/mob/living/carbon/alien/larva/spawn_dust(just_ash) + if(just_ash) + return ..() + + var/obj/effect/decal/remains/xeno/bones = new(loc) + bones.pixel_z = -6 + bones.pixel_w = rand(-1, 1) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 7db1bb103cc94..1c6c35b506bcd 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -103,7 +103,7 @@ . = ..() organ_owner.faction |= ROLE_ALIEN -/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE) +/obj/item/organ/alien/hivenode/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE, movement_flags) if(organ_owner) organ_owner.faction -= ROLE_ALIEN return ..() @@ -221,11 +221,11 @@ stomach_contents -= source UnregisterSignal(source, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_DEATH, COMSIG_QDELETING)) -/obj/item/organ/stomach/alien/mob_insert(mob/living/carbon/stomach_owner, special, movement_flags) +/obj/item/organ/stomach/alien/on_mob_insert(mob/living/carbon/stomach_owner, special, movement_flags) RegisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE, PROC_REF(something_moved)) return ..() -/obj/item/organ/stomach/alien/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) +/obj/item/organ/stomach/alien/on_mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) UnregisterSignal(stomach_owner, COMSIG_ATOM_RELAYMOVE) return ..() @@ -278,7 +278,7 @@ if(owner) var/obj/item/bodypart/part = owner.get_bodypart(BODY_ZONE_CHEST) // Brute damage to the mob is less then to the organ, so there's a higher chance of the explosion happening before xeno death - part.receive_damage(impact / 2) + owner.apply_damage(impact / 2, BRUTE, part) // We choose the option that's best for the check var/part_dam_ratio = part.brute_dam / max(part.max_damage, 1) if(damage_ratio < part_dam_ratio) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index b70139cee0531..be65a9a1d3dd3 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -78,7 +78,7 @@ for(var/datum/surgery/operations as anything in owner.surgeries) if(operations.location != BODY_ZONE_CHEST) continue - if(!istype(operations.get_surgery_step(), /datum/surgery_step/manipulate_organs/internal)) + if(!ispath(operations.steps[operations.status], /datum/surgery_step/manipulate_organs/internal)) continue attempt_grow(gib_on_success = FALSE) return diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 532fa10727ecd..85b0adb00014e 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -75,11 +75,11 @@ return switch(stat) if(DEAD,UNCONSCIOUS) - . += span_boldannounce("[src] is not moving.") + . += span_bolddanger("[src] is not moving.") if(CONSCIOUS) - . += span_boldannounce("[src] seems to be active!") + . += span_bolddanger("[src] seems to be active!") if (sterile) - . += span_boldannounce("It looks like the proboscis has been removed.") + . += span_bolddanger("It looks like the proboscis has been removed.") /obj/item/clothing/mask/facehugger/should_atmos_process(datum/gas_mixture/air, exposed_temperature) return (exposed_temperature > 300) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 83861fe86f202..ecbc642e580be 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -77,7 +77,7 @@ if(!hurt) return - if(victim.check_block(src, 0, "[name]", LEAP_ATTACK)) + if(. == SUCCESSFUL_BLOCK || victim.check_block(src, 0, "[name]", LEAP_ATTACK)) blocked = TRUE take_bodypart_damage(10 + 5 * extra_speed, check_armor = TRUE, wound_bonus = extra_speed * 5) @@ -244,10 +244,6 @@ paper_note.show_through_camera(usr) -/mob/living/carbon/on_fall() - . = ..() - loc?.handle_fall(src)//it's loc so it doesn't call the mob's handle_fall which does nothing - /mob/living/carbon/resist_buckle() if(!HAS_TRAIT(src, TRAIT_RESTRAINED)) buckled.user_unbuckle_mob(src, src) @@ -572,7 +568,11 @@ set_health(round(maxHealth - getOxyLoss() - getToxLoss() - total_burn - total_brute, DAMAGE_PRECISION)) update_stat() update_stamina() - if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD*2) && stat == DEAD ) + + /// The amount of burn damage needed to be done for this mob to be husked + var/husk_threshold = get_bodypart(BODY_ZONE_CHEST).max_damage * -1 + + if(((maxHealth - total_burn) < husk_threshold) && stat == DEAD ) become_husk(BURN) med_hud_set_health() if(stat == SOFT_CRIT) @@ -745,7 +745,7 @@ //Fire and Brute damage overlay (BSSR) var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp - if(hurtdamage) + if(hurtdamage && !HAS_TRAIT(src, TRAIT_NO_DAMAGE_OVERLAY)) var/severity = 0 switch(hurtdamage) if(5 to 15) @@ -1498,3 +1498,9 @@ return head.adjustBleedStacks(5) visible_message(span_notice("[src] gets a nosebleed."), span_warning("You get a nosebleed.")) + +/mob/living/carbon/check_hit_limb_zone_name(hit_zone) + if(get_bodypart(hit_zone)) + return hit_zone + // When a limb is missing the damage is actually passed to the chest + return BODY_ZONE_CHEST diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index bb9db5dcff9a5..c89fa8aa04f84 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -62,12 +62,12 @@ return null -/mob/living/carbon/check_projectile_dismemberment(obj/projectile/P, def_zone) +/mob/living/carbon/check_projectile_dismemberment(obj/projectile/proj, def_zone) var/obj/item/bodypart/affecting = get_bodypart(def_zone) - if(affecting && affecting.can_dismember() && !(affecting.bodypart_flags & BODYPART_UNREMOVABLE) && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) - affecting.dismember(P.damtype) - if(P.catastropic_dismemberment) - apply_damage(P.damage, P.damtype, BODY_ZONE_CHEST, wound_bonus = P.wound_bonus) //stops a projectile blowing off a limb effectively doing no damage. Mostly relevant for sniper rifles. + if(affecting && affecting.can_dismember() && !(affecting.bodypart_flags & BODYPART_UNREMOVABLE) && affecting.get_damage() >= (affecting.max_damage - proj.dismemberment)) + affecting.dismember(proj.damtype) + if(proj.catastropic_dismemberment) + apply_damage(proj.damage, proj.damtype, BODY_ZONE_CHEST, wound_bonus = proj.wound_bonus) //stops a projectile blowing off a limb effectively doing no damage. Mostly relevant for sniper rifles. /mob/living/carbon/try_catch_item(obj/item/item, skip_throw_mode_check = FALSE, try_offhand = FALSE) . = ..() diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index c13ac14b100c1..56c687df7bb1b 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -11,6 +11,7 @@ usable_hands = 0 //Populated on init through list/bodyparts mobility_flags = MOBILITY_FLAGS_CARBON_DEFAULT blocks_emissive = EMISSIVE_BLOCK_NONE + mouse_drop_zone = TRUE // STOP_OVERLAY_UPDATE_BODY_PARTS is removed after we call update_body_parts() during init. living_flags = ALWAYS_DEATHGASP|STOP_OVERLAY_UPDATE_BODY_PARTS ///List of [/obj/item/organ]s in the mob. They don't go in the contents for some reason I don't want to know. diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index abf88d91733de..ed380a66d4192 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -272,7 +272,7 @@ break var/icon_file = I.lefthand_file - if(get_held_index_of_item(I) % 2 == 0) + if(IS_RIGHT_INDEX(get_held_index_of_item(I))) icon_file = I.righthand_file hands += I.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index a7d5b3b4e3850..5e132f7947674 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -83,6 +83,33 @@ if(user.put_in_hands(N)) to_chat(user, span_notice("You make a circle with your hand.")) +/datum/emote/living/carbon/meow + key = "meow" + key_third_person = "meows" + vary = TRUE + sound = SFX_CAT_MEOW + message = "meows!" + message_mime = "meows silently." + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + +/datum/emote/living/carbon/meow/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional, params) + if(!iscarbon(user) || (!istype(user.get_organ_slot(ORGAN_SLOT_TONGUE), /obj/item/organ/tongue/cat))) + return FALSE + return ..() + +/datum/emote/living/carbon/purr + key = "purr" + key_third_person = "purrs" + vary = TRUE + sound = SFX_CAT_PURR + message = "purrs." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/carbon/purr/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional, params) + if(!iscarbon(user) || (!istype(user.get_organ_slot(ORGAN_SLOT_TONGUE), /obj/item/organ/tongue/cat)) || HAS_MIND_TRAIT(user, TRAIT_MIMING)) + return FALSE + return ..() + /datum/emote/living/carbon/moan key = "moan" key_third_person = "moans" @@ -210,3 +237,18 @@ key = "wink" key_third_person = "winks" message = "winks." + +/datum/emote/living/carbon/hiss + key = "hiss" + key_third_person = "hisses" + message = "hisses!" + emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE + vary = TRUE + +/datum/emote/living/carbon/hiss/get_sound(mob/living/carbon/user) + . = ..() + if(!istype(user)) + return + if(isalien(user)) + return SFX_HISS + return user.dna.species.get_hiss_sound() diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 1852d669dfdc7..534d0a216768e 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -228,6 +228,7 @@ . += "[t_He] [t_is] flushed and wheezing." if (bodytemperature < dna.species.bodytemp_cold_damage_limit) . += "[t_He] [t_is] shivering." + /* DOPPLER EDIT REMOVAL - Fundamentally Evil if(HAS_TRAIT(src, TRAIT_EVIL)) . += "[t_His] eyes radiate with a unfeeling, cold detachment. There is nothing but darkness within [t_his] soul." if(living_user.mind?.holy_role >= HOLY_ROLE_PRIEST) @@ -235,6 +236,19 @@ else living_user.add_mood_event("encountered_evil", /datum/mood_event/encountered_evil) living_user.set_jitter_if_lower(15 SECONDS) + */ + // DOPPLER EDIT ADDITION - Unholy Aura & Bad Vibes + if(HAS_TRAIT(src, TRAIT_EVIL) && living_user.mind?.holy_role >= HOLY_ROLE_PRIEST) + . += span_warning("[t_He] [t_is] cloaked in a miasma of unholy energy!") + + if(HAS_TRAIT(src, TRAIT_BAD_VIBES)) + . += span_warning("[t_He] give[p_s()] off an unsettling aura.") + living_user.add_mood_event("bad_vibes", /datum/mood_event/bad_vibes) + + if(HAS_TRAIT(user, TRAIT_EVIL) && (mind?.holy_role || HAS_TRAIT(src, TRAIT_SPIRITUAL))) + . += span_warning("[t_He] shimmer[p_s()] with radiant protection.") + living_user.add_mood_event("holy_figure", /datum/mood_event/holy_figure) + // DOPPLER EDIT ADDITION END if(HAS_TRAIT(user, TRAIT_SPIRITUAL) && mind?.holy_role) . += "[t_He] [t_has] a holy aura about [t_him]." @@ -287,7 +301,7 @@ . += span_notice("[t_He] appear[p_s()] to have been dissected. Useless for examination... for now.") if(HAS_TRAIT(src, TRAIT_SURGICALLY_ANALYZED)) . += span_notice("A skilled hand has mapped this one's internal intricacies. It will be far easier to perform future experimentations upon [user.p_them()]. Exquisite.") - if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FITNESS)) + if(isliving(user) && HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FITNESS)) . += compare_fitness(user) var/hud_info = get_hud_examine_info(user) @@ -592,4 +606,10 @@ if(undershirt.has_sensor == BROKEN_SENSORS) . += list(span_notice("The [undershirt]'s medical sensors are sparking.")) + // DOPPLER EDIT ADDITION BEGIN - working scar examine..? + for(var/datum/scar/scar in all_scars) + if(scar.is_visible(user)) + . += scar.get_examine_description(user) + // DOPPLER EDIT ADDITION END + #undef ADD_NEWLINE_IF_NECESSARY diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 3204c59891a76..c5cf56bf95bc0 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -241,7 +241,7 @@ GLOBAL_LIST_EMPTY(features_by_species) * Arguments: * * old_species - The species that the carbon used to be before copying */ -/datum/species/proc/copy_properties_from(datum/species/old_species) +/datum/species/proc/copy_properties_from(datum/species/old_species, pref_load, regenerate_icons) return /** @@ -364,8 +364,9 @@ GLOBAL_LIST_EMPTY(features_by_species) * * C - Carbon, this is whoever became the new species. * * old_species - The species that the carbon used to be before becoming this race, used for regenerating organs. * * pref_load - Preferences to be loaded from character setup, loads in preferred mutant things like bodyparts, digilegs, skin color, etc. + * * regenerate_icons - Whether or not to update the bodies icons */ -/datum/species/proc/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) +/datum/species/proc/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons = TRUE) SHOULD_CALL_PARENT(TRUE) human_who_gained_species.living_flags |= STOP_OVERLAY_UPDATE_BODY_PARTS //Don't call update_body_parts() for every single bodypart overlay added. @@ -413,7 +414,8 @@ GLOBAL_LIST_EMPTY(features_by_species) human_who_gained_species.grant_language(language, SPOKEN_LANGUAGE, LANGUAGE_SPECIES) for(var/language in gaining_holder.blocked_languages) human_who_gained_species.add_blocked_language(language, LANGUAGE_SPECIES) - human_who_gained_species.regenerate_icons() + if(regenerate_icons) + human_who_gained_species.regenerate_icons() SEND_SIGNAL(human_who_gained_species, COMSIG_SPECIES_GAIN, src, old_species) @@ -1483,6 +1485,10 @@ GLOBAL_LIST_EMPTY(features_by_species) /datum/species/proc/get_snore_sound(mob/living/carbon/human/human) return +/// Returns the species' hiss sound +/datum/species/proc/get_hiss_sound(mob/living/carbon/human/human) + return + /datum/species/proc/get_mut_organs(include_brain = TRUE) var/list/mut_organs = list() mut_organs += mutant_organs diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index b3b88d8721905..130e3c1ca8bb3 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -18,11 +18,17 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) else new /obj/effect/gibspawner/human/bodypartless(drop_location(), src, get_static_viruses()) -/mob/living/carbon/human/spawn_dust(just_ash = FALSE) +/mob/living/carbon/human/spawn_dust(just_ash) if(just_ash) - new /obj/effect/decal/cleanable/ash(loc) - else - new /obj/effect/decal/remains/human(loc) + return ..() + + var/bone_type = /obj/effect/decal/remains/human + if(isplasmaman(src)) + bone_type = /obj/effect/decal/remains/plasma + + var/obj/effect/decal/remains/human/bones = new bone_type(loc) + bones.pixel_z = -6 + bones.pixel_w = rand(-1, 1) /mob/living/carbon/human/death(gibbed) if(stat == DEAD) diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 9970d973a7dba..4a977a1ac727d 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -118,7 +118,12 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) target.dna.features["tail_cat"] = get_consistent_feature_entry(SSaccessories.tails_list_felinid) // it's a lie target.dna.features["tail_lizard"] = get_consistent_feature_entry(SSaccessories.tails_list_lizard) target.dna.features["tail_monkey"] = get_consistent_feature_entry(SSaccessories.tails_list_monkey) + target.dna.features["tail_other"] = "No Tail" // DOPPLER EDIT ADDITION - CI Fails W/Out this + target.dna.features["wings"] = "No Wings" // DOPPLER EDIT ADDITON - CI Fails W/Out this + target.dna.features["breasts"] = "Bare" // DOPPLER EDIT ADDITION - LOOK OUT GORDON, HOTTED BOOBS AHEAD, TITS BIG ONES! + target.dna.features["fluff"] = "No Fluff" // DOPPLER EDIT ADDITON - CI Fails W/Out this target.dna.features["pod_hair"] = get_consistent_feature_entry(SSaccessories.pod_hair_list) + target.dna.features["caps"] = get_consistent_feature_entry(SSaccessories.caps_list) target.dna.initialize_dna(create_mutation_blocks = FALSE, randomize_features = FALSE) // UF and UI are nondeterministic, even though the features are the same some blocks will randomize slightly // In practice this doesn't matter, but this is for the sake of 100%(ish) consistency diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5b0e64547a016..1becef215b01b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -58,7 +58,7 @@ ADD_TRAIT(src, TRAIT_AGEUSIA, NO_TONGUE_TRAIT) /mob/living/carbon/human/proc/setup_human_dna() - randomize_human_normie(src, randomize_mutations = TRUE) + randomize_human_normie(src, randomize_mutations = TRUE, update_body = FALSE) /mob/living/carbon/human/Destroy() QDEL_NULL(physiology) @@ -391,10 +391,7 @@ /mob/living/carbon/human/try_inject(mob/user, target_zone, injection_flags) . = ..() if(!. && (injection_flags & INJECT_TRY_SHOW_ERROR_MESSAGE) && user) - if(!target_zone) - target_zone = get_bodypart(check_zone(user.zone_selected)) - var/obj/item/bodypart/the_part = isbodypart(target_zone) ? target_zone : get_bodypart(check_zone(target_zone)) //keep these synced - to_chat(user, span_alert("There is no exposed flesh or thin material on [p_their()] [the_part.name].")) + balloon_alert(user, "no exposed skin on [target_zone || check_zone(user.zone_selected)]!") /mob/living/carbon/human/get_butt_sprite() var/obj/item/bodypart/chest/chest = get_bodypart(BODY_ZONE_CHEST) @@ -1192,7 +1189,7 @@ race = /datum/species/snail /mob/living/carbon/human/species/vampire - race = /datum/species/vampire + race = /datum/species/human/vampire /mob/living/carbon/human/species/zombie race = /datum/species/zombie diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 13700dd5aad29..73f63b8bfe110 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -45,11 +45,10 @@ return covering_part /mob/living/carbon/human/bullet_act(obj/projectile/bullet, def_zone, piercing_hit = FALSE) - if(bullet.firer == src && bullet.original == src) //can't block or reflect when shooting yourself return ..() - if(bullet.reflectable & REFLECT_NORMAL) + if(bullet.reflectable) if(check_reflect(def_zone)) // Checks if you've passed a reflection% check visible_message( span_danger("The [bullet.name] gets reflected by [src]!"), @@ -61,11 +60,8 @@ playsound(src, held_item.block_sound, BLOCK_SOUND_VOLUME, TRUE) // Find a turf near or on the original location to bounce to if(!isturf(loc)) //Open canopy mech (ripley) check. if we're inside something and still got hit - bullet.force_hit = TRUE //The thing we're in passed the bullet to us. Pass it back, and tell it to take the damage. - loc.bullet_act(bullet, def_zone, piercing_hit) - return BULLET_ACT_HIT + return loc.projectile_hit(bullet, def_zone, piercing_hit) bullet.reflect(src) - return BULLET_ACT_FORCE_PIERCE // complete projectile permutation if(check_block(bullet, bullet.damage, "the [bullet.name]", PROJECTILE_ATTACK, bullet.armour_penetration, bullet.damage_type)) @@ -89,8 +85,8 @@ /mob/living/carbon/human/check_block(atom/hit_by, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0, damage_type = BRUTE) . = ..() - if(.) - return TRUE + if(. == SUCCESSFUL_BLOCK) + return SUCCESSFUL_BLOCK var/block_chance_modifier = round(damage / -3) for(var/obj/item/worn_thing in get_equipped_items(INCLUDE_HELD)) @@ -104,9 +100,9 @@ var/final_block_chance = worn_thing.block_chance - (clamp((armour_penetration - worn_thing.armour_penetration) / 2, 0, 100)) + block_chance_modifier if(worn_thing.hit_reaction(src, hit_by, attack_text, final_block_chance, damage, attack_type, damage_type)) - return TRUE + return SUCCESSFUL_BLOCK - return FALSE + return FAILED_BLOCK /mob/living/carbon/human/grippedby(mob/living/carbon/user, instant = FALSE) if(w_uniform) @@ -195,7 +191,7 @@ var/damage = HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER) ? monkey_mouth.unarmed_damage_high : rand(monkey_mouth.unarmed_damage_low, monkey_mouth.unarmed_damage_high) if(!damage) return FALSE - if(check_block(user, damage, "the [user.name]")) + if(check_block(user, damage, "the [user.name]", attack_type = UNARMED_ATTACK)) return FALSE apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, MELEE)) return TRUE @@ -252,9 +248,6 @@ return TRUE apply_damage(damage, BRUTE, affecting, armor_block) - - - /mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L, list/modifiers) . = ..() if(!.) @@ -262,7 +255,7 @@ var/damage = rand(L.melee_damage_lower, L.melee_damage_upper) if(!damage) return - if(check_block(L, damage, "the [L.name]")) + if(check_block(L, damage, "the [L.name]", attack_type = UNARMED_ATTACK)) return FALSE if(stat != DEAD) L.amount_grown = min(L.amount_grown + damage, L.max_grown) @@ -378,9 +371,12 @@ else if(wear_suit.siemens_coefficient <= 0) siemens_coeff -= 0.95 siemens_coeff = max(siemens_coeff, 0) - else if(!(flags & SHOCK_NOGLOVES)) //This gets the siemens_coeff for all non tesla shocks - if(gloves) - siemens_coeff *= gloves.siemens_coefficient + if(flags & SHOCK_NOGLOVES) //This gets the siemens_coeff for all non tesla shocks + if(wear_suit) + siemens_coeff *= wear_suit.siemens_coefficient + else if(gloves) + siemens_coeff *= gloves.siemens_coefficient + siemens_coeff *= physiology.siemens_coeff siemens_coeff *= dna.species.siemens_coeff . = ..() @@ -513,17 +509,16 @@ //DAMAGE// for(var/obj/item/bodypart/affecting in damaged) - affecting.receive_damage(acidity, 2*acidity) - - if(affecting.name == BODY_ZONE_HEAD) - if(prob(min(acidpwr*acid_volume/10, 90))) //Applies disfigurement - affecting.receive_damage(acidity, 2*acidity) - emote("scream") - set_facial_hairstyle("Shaved", update = FALSE) - set_hairstyle("Bald") //This calls update_body_parts() - ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC) + var/damage_mod = 1 + if(affecting.body_zone == BODY_ZONE_HEAD && prob(min(acidpwr * acid_volume * 0.1, 90))) //Applies disfigurement + damage_mod = 2 + emote("scream") + set_facial_hairstyle("Shaved", update = FALSE) + set_hairstyle("Bald") //This calls update_body_parts() + ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC) - update_damage_overlays() + apply_damage(acidity * damage_mod, BRUTE, affecting) + apply_damage(acidity * damage_mod * 2, BURN, affecting) //MELTING INVENTORY ITEMS// //these items are all outside of armour visually, so melt regardless. @@ -579,7 +574,7 @@ body_part.check_for_injuries(src, combined_msg) for(var/t in missing) - combined_msg += span_boldannounce("Your [parse_zone(t)] is missing!") + combined_msg += span_bolddanger("Your [parse_zone(t)] is missing!") if(is_bleeding()) var/list/obj/item/bodypart/bleeding_limbs = list() diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 278c72ed535cf..5406fae39e8d5 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -130,7 +130,7 @@ /mob/living/carbon/human/proc/check_chunky_fingers() if(HAS_TRAIT_NOT_FROM(src, TRAIT_CHUNKYFINGERS, RIGHT_ARM_TRAIT) && HAS_TRAIT_NOT_FROM(src, TRAIT_CHUNKYFINGERS, LEFT_ARM_TRAIT)) return TRUE - return (active_hand_index % 2) ? HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, LEFT_ARM_TRAIT) : HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, RIGHT_ARM_TRAIT) + return IS_LEFT_INDEX(active_hand_index) ? HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, LEFT_ARM_TRAIT) : HAS_TRAIT_FROM(src, TRAIT_CHUNKYFINGERS, RIGHT_ARM_TRAIT) /mob/living/carbon/human/get_policy_keywords() . = ..() diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index a13c2aa11be5b..a4aa5e977f1fe 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -631,8 +631,8 @@ There are several things that need to be remembered: t_state = worn_item.icon_state var/mutable_appearance/hand_overlay - var/icon_file = held_index % 2 == 0 ? worn_item.righthand_file : worn_item.lefthand_file - hand_overlay = worn_item.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE, humie = src) /// DOPPLER SHIFT EDIT + var/icon_file = IS_RIGHT_INDEX(held_index) ? worn_item.righthand_file : worn_item.lefthand_file + hand_overlay = worn_item.build_worn_icon(default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE) var/obj/item/bodypart/arm/held_in_hand = hand_bodyparts[held_index] held_in_hand?.held_hand_offset?.apply_offset(hand_overlay) @@ -654,20 +654,70 @@ There are several things that need to be remembered: return icon(female_clothing_icon) -// These coordonates point to roughly somewhere in the middle of the left leg -// Used in approximating what color the pants of clothing should be +/// Modifies a sprite to conform to digitigrade body shapes +/proc/wear_digi_version(icon/base_icon, obj/item/item, key, greyscale_colors) + ASSERT(istype(item), "wear_digi_version: no item passed") + ASSERT(istext(key), "wear_digi_version: no key passed") + if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1) + greyscale_colors = item.get_general_color(base_icon) + + var/index = "[key]-[item.type]-[greyscale_colors]" + var/static/list/digitigrade_clothing_cache = list() + var/icon/resulting_icon = digitigrade_clothing_cache[index] + if(!resulting_icon) + resulting_icon = item.generate_digitigrade_icons(base_icon, greyscale_colors) + if(!resulting_icon) + stack_trace("[item.type] is set to generate a masked digitigrade icon, but generate_digitigrade_icons was not implemented (or error'd).") + return base_icon + digitigrade_clothing_cache[index] = fcopy_rsc(resulting_icon) + + return icon(resulting_icon) + +/// Modifies a sprite to replace the legs with a new version +/proc/replace_icon_legs(icon/base_icon, icon/new_legs) + var/static/icon/leg_mask + if(!leg_mask) + leg_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', "digi_leg_mask") + + // cuts the legs off + base_icon.Blend(leg_mask, ICON_SUBTRACT) + // staples the new legs on + base_icon.Blend(new_legs, ICON_OVERLAY) + return base_icon + +/** + * Generates a digitigrade version of this item's worn icon + * + * Arguments: + * * base_icon: The icon to generate the digitigrade icon from + * * greyscale_colors: The greyscale colors to use for the digitigrade icon + * + * Returns an icon that is the digitigrade version of the item's worn icon + * Returns null if the item has no support for digitigrade variations via this method + */ +/obj/item/proc/generate_digitigrade_icons(icon/base_icon, greyscale_colors) + return null + +/** + * Get what color the item is on "average" + * Can be used to approximate what color this item is/should be + * + * Arguments: + * * base_icon: The icon to get the color from + */ +/obj/item/proc/get_general_color(icon/base_icon) + if(greyscale_colors && length(SSgreyscale.ParseColorString(greyscale_colors)) == 1) + return greyscale_colors + return color + +// These coordinates point to the middle of the left leg #define LEG_SAMPLE_X_LOWER 13 #define LEG_SAMPLE_X_UPPER 14 - #define LEG_SAMPLE_Y_LOWER 8 #define LEG_SAMPLE_Y_UPPER 9 -/// Modifies a sprite to conform to digitigrade body shapes -/proc/wear_digi_version(icon/base_icon, key, greyscale_config = /datum/greyscale_config/jumpsuit/worn_digi, greyscale_colors) - ASSERT(key, "wear_digi_version: no key passed") - ASSERT(ispath(greyscale_config, /datum/greyscale_config), "wear_digi_version: greyscale_config is not a valid path (got: [greyscale_config])") - // items with greyscale colors containing multiple colors are invalid - if(isnull(greyscale_colors) || length(SSgreyscale.ParseColorString(greyscale_colors)) > 1) +/obj/item/clothing/get_general_color(icon/base_icon) + if(slot_flags & (ITEM_SLOT_ICLOTHING|ITEM_SLOT_OCLOTHING)) var/pant_color // approximates the color of the pants by sampling a few pixels in the middle of the left leg for(var/x in LEG_SAMPLE_X_LOWER to LEG_SAMPLE_X_UPPER) @@ -675,37 +725,26 @@ There are several things that need to be remembered: var/xy_color = base_icon.GetPixel(x, y) pant_color = pant_color ? BlendRGB(pant_color, xy_color, 0.5) : xy_color - greyscale_colors = pant_color || "#1d1d1d" // black pants always look good - - var/index = "[key]-[greyscale_config]-[greyscale_colors]" - var/static/list/digitigrade_clothing_icons = list() - var/icon/digitigrade_clothing_icon = digitigrade_clothing_icons[index] - if(!digitigrade_clothing_icon) - var/static/icon/torso_mask - if(!torso_mask) - torso_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', "digi_torso_mask") - var/static/icon/leg_mask - if(!leg_mask) - leg_mask = icon('icons/mob/clothing/under/masking_helpers.dmi', "digi_leg_mask") - - base_icon.Blend(leg_mask, ICON_SUBTRACT) // cuts the legs off - - var/icon/leg_icon = SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors) - leg_icon.Blend(torso_mask, ICON_SUBTRACT) // cuts the torso off - - base_icon.Blend(leg_icon, ICON_OVERLAY) // puts the new legs on - - digitigrade_clothing_icon = fcopy_rsc(base_icon) - digitigrade_clothing_icons[index] = digitigrade_clothing_icon + return pant_color || "#1d1d1d" // black pants always look good - return icon(digitigrade_clothing_icon) + return ..() #undef LEG_SAMPLE_X_LOWER #undef LEG_SAMPLE_X_UPPER - #undef LEG_SAMPLE_Y_LOWER #undef LEG_SAMPLE_Y_UPPER +// Points to the tip of the left foot +#define SHOE_SAMPLE_X 11 +#define SHOE_SAMPLE_Y 2 + +/obj/item/clothing/shoes/get_general_color(icon/base_icon) + // just grabs the color of the middle of the left foot + return base_icon.GetPixel(SHOE_SAMPLE_X, SHOE_SAMPLE_Y) || "#1d1d1d" + +#undef SHOE_SAMPLE_X +#undef SHOE_SAMPLE_Y + /mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers) var/list/out = new for(var/i in 1 to TOTAL_LAYERS) @@ -865,9 +904,9 @@ generate/load female uniform sprites matching all previously decided variables if(!isinhands && is_digi && (supports_variations_flags & CLOTHING_DIGITIGRADE_MASK)) building_icon = wear_digi_version( base_icon = building_icon || icon(file2use, t_state), + item = src, key = "[t_state]-[file2use]-[female_uniform]", - greyscale_config = digitigrade_greyscale_config_worn || greyscale_config_worn, - greyscale_colors = digitigrade_greyscale_colors || greyscale_colors || color, + greyscale_colors = greyscale_colors, ) /// DOPPLER SHIFT ADDITION BEGIN - we migrate this down here & use building_icon to allow for auto-generated digi sprites to still support ladies if(female_uniform) @@ -898,7 +937,7 @@ generate/load female uniform sprites matching all previously decided variables standing.pixel_y += offsets[2] standing.alpha = alpha - standing.color = color + standing = color_atom_overlay(standing) return standing diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 02f627459cb93..219060012fc39 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -424,7 +424,7 @@ hand_bodyparts.len = amt for(var/i in old_limbs+1 to amt) var/path = /obj/item/bodypart/arm/left - if(!(i % 2)) + if(IS_RIGHT_INDEX(i)) path = /obj/item/bodypart/arm/right var/obj/item/bodypart/BP = new path () 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 db332b0efde8c..77ba4b89d6d5b 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -32,7 +32,7 @@ return "Abductors do not need to breathe, eat, do not have blood, a heart, stomach, or lungs and cannot be infected by human viruses. \ Their hardy physique prevents their skin from being wounded or dismembered, but their chunky tridactyl hands make it hard to operate human equipment." -/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species) +/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons) . = ..() var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR] abductor_hud.show_to(C) 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 1dcc922b13f48..50ffe1925b3b8 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -38,7 +38,7 @@ return TRUE return ..() -/datum/species/dullahan/on_species_gain(mob/living/carbon/human/human, datum/species/old_species) +/datum/species/dullahan/on_species_gain(mob/living/carbon/human/human, datum/species/old_species, pref_load, regenerate_icons) . = ..() human.lose_hearing_sensitivity(TRAIT_GENERIC) RegisterSignal(human, COMSIG_CARBON_ATTACH_LIMB, PROC_REF(on_gained_part)) diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 1f1d7d3af478d..2a1b7785ba84a 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -47,7 +47,7 @@ QDEL_NULL(ethereal_light) return ..() -/datum/species/ethereal/on_species_gain(mob/living/carbon/human/new_ethereal, datum/species/old_species, pref_load) +/datum/species/ethereal/on_species_gain(mob/living/carbon/human/new_ethereal, datum/species/old_species, pref_load, regenerate_icons) . = ..() if(!ishuman(new_ethereal)) return @@ -181,6 +181,9 @@ 'sound/mobs/humanoids/ethereal/ethereal_scream_3.ogg', ) +/datum/species/ethereal/get_hiss_sound(mob/living/carbon/human/ethereal) + return 'sound/mobs/humanoids/ethereal/ethereal_hiss.ogg' + /datum/species/ethereal/get_physical_attributes() return "Ethereals process electricity as their power supply, not food, and are somewhat resistant to it.\ They do so via their crystal core, their equivalent of a human heart, which will also encase them in a reviving crystal if they die.\ @@ -272,7 +275,7 @@ 'sound/mobs/humanoids/ethereal/lustrous_scream_3.ogg', ) -/datum/species/ethereal/lustrous/on_species_gain(mob/living/carbon/new_lustrous, datum/species/old_species, pref_load) +/datum/species/ethereal/lustrous/on_species_gain(mob/living/carbon/new_lustrous, datum/species/old_species, pref_load, regenerate_icons) ..() default_color = new_lustrous.dna.features["ethcolor"] new_lustrous.dna.features["ethcolor"] = GLOB.color_list_lustrous[pick(GLOB.color_list_lustrous)] //Picks one of 5 lustrous-specific colors. diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 0f151f5f8f5fd..79705ece3c9b6 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -33,7 +33,7 @@ var/datum/reagent/toxin/carpotoxin/fish = chem fish.toxpwr = 0 -/datum/species/human/felinid/on_species_gain(mob/living/carbon/carbon_being, datum/species/old_species, pref_load) +/datum/species/human/felinid/on_species_gain(mob/living/carbon/carbon_being, datum/species/old_species, pref_load, regenerate_icons) if(ishuman(carbon_being)) var/mob/living/carbon/human/target_human = carbon_being if(!pref_load) //Hah! They got forcefully purrbation'd. Force default felinid parts on them if they have no mutant parts in those areas! @@ -114,6 +114,8 @@ return SFX_SNORE_FEMALE return SFX_SNORE_MALE +/datum/species/human/felinid/get_hiss_sound(mob/living/carbon/human/felinid) + return 'sound/mobs/humanoids/felinid/felinid_hiss.ogg' /proc/mass_purrbation() for(var/mob in GLOB.human_list) 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 11548c7b12952..f3361ee7a724d 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -26,7 +26,7 @@ BODY_ZONE_CHEST = /obj/item/bodypart/chest/fly, ) -/datum/species/fly/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) +/datum/species/fly/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) . = ..() RegisterSignal(human_who_gained_species, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness)) 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 68dab15d1b7c9..3baf2e59d44eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -93,6 +93,9 @@ return SFX_SNORE_FEMALE return SFX_SNORE_MALE +/datum/species/human/get_hiss_sound(mob/living/carbon/human/human) + return 'sound/mobs/humanoids/human/hiss/human_hiss.ogg' + /datum/species/human/get_species_description() return "Humans are the dominant species in the known galaxy. \ Their kind extend from old Earth to the edges of known space." 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 d866e9c8105dd..d52103f91c835 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -43,7 +43,7 @@ ) var/datum/action/innate/regenerate_limbs/regenerate_limbs -/datum/species/jelly/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load) +/datum/species/jelly/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load, regenerate_icons) . = ..() if(ishuman(new_jellyperson)) regenerate_limbs = new @@ -209,7 +209,7 @@ UnregisterSignal(C, COMSIG_LIVING_DEATH) ..() -/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) +/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons) ..() if(ishuman(C)) slime_split = new @@ -511,7 +511,7 @@ QDEL_LIST(luminescent_actions) return ..() -/datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species) +/datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/new_jellyperson, datum/species/old_species, pref_load, regenerate_icons) . = ..() glow = new_jellyperson.mob_light(light_type = /obj/effect/dummy/lighting_obj/moblight/species) update_glow(new_jellyperson) @@ -677,7 +677,7 @@ return "Stargazers can link others' minds with their own, creating a private communication channel. \ Most things that are toxic heal them, but most things that prevent toxicity damage them!" -/datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/grant_to, datum/species/old_species) +/datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/grant_to, datum/species/old_species, pref_load, regenerate_icons) . = ..() project_action = new(src) project_action.Grant(grant_to) 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 9379fdd6167c3..a5af8a9fe33e7 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -114,6 +114,9 @@ return SFX_SNORE_FEMALE return SFX_SNORE_MALE +/datum/species/lizard/get_hiss_sound(mob/living/carbon/human/lizard) + return 'sound/mobs/humanoids/lizard/lizard_hiss.ogg' + /datum/species/lizard/get_physical_attributes() return "Lizardpeople can withstand slightly higher temperatures than most species, but they are very vulnerable to the cold \ and can't regulate their body-temperature internally, making the vacuum of space extremely deadly to them." @@ -218,7 +221,7 @@ Lizard subspecies: SILVER SCALED Mostly identical, they are holy, don't breathe, don't get viruses, their hide cannot be pierced, love the taste of wine, \ and their tongue allows them to turn into a statue, for some reason." -/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load) +/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/human/new_silverscale, datum/species/old_species, pref_load, regenerate_icons) old_mutcolor = new_silverscale.dna.features["mcolor"] new_silverscale.dna.features["mcolor"] = "#eeeeee" new_silverscale.add_eye_color("#0000a0", EYE_COLOR_SPECIES_PRIORITY) diff --git a/code/modules/mob/living/carbon/human/species_types/monkeys.dm b/code/modules/mob/living/carbon/human/species_types/monkeys.dm index 057dffbf22245..3d7e717f67328 100644 --- a/code/modules/mob/living/carbon/human/species_types/monkeys.dm +++ b/code/modules/mob/living/carbon/human/species_types/monkeys.dm @@ -40,7 +40,7 @@ payday_modifier = 1.5 ai_controlled_species = TRUE -/datum/species/monkey/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) +/datum/species/monkey/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) . = ..() passtable_on(human_who_gained_species, SPECIES_TRAIT) human_who_gained_species.dna.add_mutation(/datum/mutation/human/race, MUT_NORMAL) @@ -63,6 +63,10 @@ /datum/species/monkey/get_scream_sound(mob/living/carbon/human/monkey) return get_sfx(SFX_SCREECH) +/datum/species/monkey/get_hiss_sound(mob/living/carbon/human/monkey) + return 'sound/mobs/humanoids/human/hiss/human_hiss.ogg' + // we're both great apes, or something.. + /datum/species/monkey/get_physical_attributes() return "Monkeys are slippery, can crawl into vents, and are more dextrous than humans.. but only when stealing things. \ Natural monkeys cannot operate machinery or most tools with their paws, but unusually clever monkeys or those that were once something else can." 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 e95990148fc9f..680927e89b4a6 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -24,7 +24,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/moth, ) -/datum/species/moth/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load) +/datum/species/moth/on_species_gain(mob/living/carbon/human/human_who_gained_species, datum/species/old_species, pref_load, regenerate_icons) . = ..() RegisterSignal(human_who_gained_species, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness)) diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index 4e53fe462087a..42e73a6b641c6 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -38,7 +38,7 @@ /datum/species/mush/check_roundstart_eligible() return FALSE //hard locked out of roundstart on the order of design lead kor, this can be removed in the future when planetstation is here OR SOMETHING but right now we have a problem with races. -/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species) +/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load, regenerate_icons) . = ..() if(ishuman(C)) mush = new() diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 89f477777b035..1faf2bbe4961b 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -85,7 +85,7 @@ affected.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM * seconds_per_tick) return COMSIG_MOB_STOP_REAGENT_CHECK -/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load) +/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load, regenerate_icons) . = ..() var/obj/item/storage/backpack/bag = new_snailperson.get_item_by_slot(ITEM_SLOT_BACK) if(!istype(bag, /obj/item/storage/backpack/snail)) 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 d0b052a888865..81d0f88b9b3fa 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -4,7 +4,7 @@ ///maximum a vampire will drain, they will drain less if they hit their cap #define VAMP_DRAIN_AMOUNT 50 -/datum/species/vampire +/datum/species/human/vampire name = "Vampire" id = SPECIES_VAMPIRE examine_limb_id = SPECIES_HUMAN @@ -18,33 +18,30 @@ ) inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID changesource_flags = MIRROR_BADMIN | MIRROR_PRIDE | WABBAJACK | ERT_SPAWN - exotic_bloodtype = "U" + exotic_bloodtype = "V" blood_deficiency_drain_rate = BLOOD_DEFICIENCY_MODIFIER // vampires already passively lose blood, so this just makes them lose it slightly more quickly when they have blood deficiency. mutantheart = /obj/item/organ/heart/vampire mutanttongue = /obj/item/organ/tongue/vampire - mutantstomach = null - mutantlungs = null - skinned_type = /obj/item/stack/sheet/animalhide/human ///some starter text sent to the vampire initially, because vampires have shit to do to stay alive var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability." -/datum/species/vampire/check_roundstart_eligible() +/datum/species/human/vampire/check_roundstart_eligible() if(check_holidays(HALLOWEEN)) return TRUE return ..() -/datum/species/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species) +/datum/species/human/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species, pref_load, regenerate_icons) . = ..() to_chat(new_vampire, "[info_text]") new_vampire.skin_tone = "albino" new_vampire.update_body(0) RegisterSignal(new_vampire, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_weakness)) -/datum/species/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) +/datum/species/human/vampire/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) . = ..() UnregisterSignal(C, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS) -/datum/species/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired) +/datum/species/human/vampire/spec_life(mob/living/carbon/human/vampire, seconds_per_tick, times_fired) . = ..() if(istype(vampire.loc, /obj/structure/closet/crate/coffin)) var/need_mob_update = FALSE @@ -66,27 +63,27 @@ vampire.adjust_fire_stacks(3 * seconds_per_tick) vampire.ignite_mob() -/datum/species/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) +/datum/species/human/vampire/proc/damage_weakness(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER if(istype(attacking_item, /obj/item/nullrod/whip)) damage_mods += 2 -/datum/species/vampire/get_physical_attributes() +/datum/species/human/vampire/get_physical_attributes() return "Vampires are afflicted with the Thirst, needing to sate it by draining the blood out of another living creature. However, they do not need to breathe or eat normally. \ They will instantly turn into dust if they run out of blood or enter a holy area. However, coffins stabilize and heal them, and they can transform into bats!" -/datum/species/vampire/get_species_description() +/datum/species/human/vampire/get_species_description() return "A classy Vampire! They descend upon Space Station Thirteen Every year to spook the crew! \"Bleeg!!\"" -/datum/species/vampire/get_species_lore() +/datum/species/human/vampire/get_species_lore() return list( "Vampires are unholy beings blessed and cursed with The Thirst. \ The Thirst requires them to feast on blood to stay alive, and in return it gives them many bonuses. \ Because of this, Vampires have split into two clans, one that embraces their powers as a blessing and one that rejects it.", ) -/datum/species/vampire/create_pref_unique_perks() +/datum/species/human/vampire/create_pref_unique_perks() var/list/to_add = list() to_add += list( @@ -115,7 +112,7 @@ return to_add // Vampire blood is special, so it needs to be handled with its own entry. -/datum/species/vampire/create_pref_blood_perks() +/datum/species/human/vampire/create_pref_blood_perks() var/list/to_add = list() to_add += list(list( @@ -132,7 +129,7 @@ return to_add // There isn't a "Minor Undead" biotype, so we have to explain it in an override (see: dullahans) -/datum/species/vampire/create_pref_biotypes_perks() +/datum/species/human/vampire/create_pref_biotypes_perks() var/list/to_add = list() to_add += list(list( 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 77d2765ba98b3..1486b54a0c249 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -132,7 +132,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/zombie/infectious, ) -/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/human/new_zombie, datum/species/old_species) +/datum/species/zombie/infectious/on_species_gain(mob/living/carbon/human/new_zombie, datum/species/old_species, pref_load, regenerate_icons) . = ..() new_zombie.set_combat_mode(TRUE) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 93d6f9ce2e19f..e80ba0c95be0d 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -124,9 +124,9 @@ //Tries to play the carbon a breathing sound when using internals, also invokes check_breath /mob/living/carbon/proc/try_breathing_sound(breath) var/should_be_on = canon_client?.prefs?.read_preference(/datum/preference/toggle/sound_breathing) - if(should_be_on && !breathing_loop.timer_id) + if(should_be_on && !breathing_loop.timer_id && canon_client?.mob.can_hear()) breathing_loop.start() - else if(!should_be_on && breathing_loop.timer_id) + else if((!should_be_on && breathing_loop.timer_id) || !canon_client?.mob.can_hear()) breathing_loop.stop() /mob/living/carbon/proc/has_smoke_protection() diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 8688e256022ba..6616736a61064 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -98,7 +98,7 @@ ghostize() QDEL_IN(src, DUST_ANIMATION_TIME) // since this is sometimes called in the middle of movement, allow half a second for movement to finish, ghosting to happen and animation to play. Looks much nicer and doesn't cause multiple runtimes. -/// Animates turning into dust +/// Animates turning into dust. /// Does not delete src afterwards, BUT it will become invisible (and grey), so ensure you handle that yourself /atom/movable/proc/dust_animation(atom/anim_loc = src.loc) if(isnull(anim_loc)) // the effect breaks if we have a null loc @@ -130,8 +130,19 @@ #undef DUST_ANIMATION_TIME +/** + * Spawns dust / ash or remains where the mob was + * + * just_ash: If TRUE, just ash will spawn where the mob was, as opposed to remains + */ /mob/living/proc/spawn_dust(just_ash = FALSE) - new /obj/effect/decal/cleanable/ash(loc) + var/ash_type = /obj/effect/decal/cleanable/ash + if(mob_size >= MOB_SIZE_LARGE) + ash_type = /obj/effect/decal/cleanable/ash/large + + var/obj/effect/decal/cleanable/ash/ash = new ash_type(loc) + ash.pixel_z = -5 + ash.pixel_w = rand(-1, 1) /* * Called when the mob dies. Can also be called manually to kill a mob. diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 395b1d71792ad..a74d3727bacb5 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -140,22 +140,27 @@ /datum/emote/living/flap/run_emote(mob/user, params, type_override, intentional) . = ..() - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - var/open = FALSE - var/obj/item/organ/wings/functional/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) - - // open/close functional wings - if(istype(wings)) - if(wings.wings_open) - open = TRUE - wings.close_wings() - else - wings.open_wings() - addtimer(CALLBACK(wings, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time) + if(!ishuman(user)) + return + var/mob/living/carbon/human/human_user = user + var/obj/item/organ/wings/wings = human_user.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) + + // play a flapping noise if the wing has this implemented + if(!istype(wings)) + return + wings.make_flap_sound(human_user) - // play a flapping noise if the wing has this implemented - wings.make_flap_sound(human_user) + // open/close functional wings + var/obj/item/organ/wings/functional/wings_functional = wings + if(!istype(wings_functional)) + return + var/open = FALSE + if(wings_functional.wings_open) + open = TRUE + wings_functional.close_wings() + else + wings_functional.open_wings() + addtimer(CALLBACK(wings_functional, open ? TYPE_PROC_REF(/obj/item/organ/wings/functional, open_wings) : TYPE_PROC_REF(/obj/item/organ/wings/functional, close_wings)), wing_time) /datum/emote/living/flap/aflap key = "aflap" @@ -298,19 +303,43 @@ key_third_person = "points" message = "points." message_param = "points at %t." - hands_use_check = TRUE + cooldown = 1 SECONDS + // don't put hands use check here, everything is handled in run_emote /datum/emote/living/point/run_emote(mob/user, params, type_override, intentional) message_param = initial(message_param) // reset - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.usable_hands == 0) - if(H.usable_legs != 0) - message_param = "tries to point at %t with a leg, [span_userdanger("falling down")] in the process!" - H.Paralyze(20) + if(iscarbon(user)) + var/mob/living/carbon/our_carbon = user + if(our_carbon.usable_hands <= 0 || user.incapacitated & INCAPABLE_RESTRAINTS || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + if(our_carbon.usable_legs > 0) + var/one_leg = FALSE + var/has_shoes = our_carbon.get_item_by_slot(ITEM_SLOT_FEET) + if(our_carbon.usable_legs == 1) + one_leg = TRUE + var/success_prob = 65 + if(HAS_TRAIT(our_carbon, TRAIT_FREERUNNING)) + success_prob += 35 + if(one_leg) + success_prob -= 40 + if(prob(success_prob)) + message_param = "[one_leg ? "jumps into the air and " : ""]points at %t with their [has_shoes ? "leg" : "toes"]!" + else + message_param = "[one_leg ? "jumps into the air and " : ""]tries to point at %t with their [has_shoes ? "leg" : "toes"], falling down in the process!" + our_carbon.Paralyze(2 SECONDS) + TIMER_COOLDOWN_START(user, "point_verb_emote_cooldown", 1 SECONDS) else - message_param = "[span_userdanger("bumps [user.p_their()] head on the ground")] trying to motion towards %t." - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5) + if(our_carbon.get_organ_slot(ORGAN_SLOT_EYES)) + message_param = "gives a meaningful glance at %t!" + TIMER_COOLDOWN_START(src, "point_verb_emote_cooldown", 1.5 SECONDS) + else + if(our_carbon.get_organ_slot(ORGAN_SLOT_TONGUE)) + message_param = "motions their tongue towards %t!" + TIMER_COOLDOWN_START(src, "point_verb_emote_cooldown", 2 SECONDS) + else + message_param = "[span_userdanger("bumps [user.p_their()] head on the ground")] trying to motion towards %t." + our_carbon.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5) + playsound(user, 'sound/effects/glass/glassbash.ogg', 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + TIMER_COOLDOWN_START(src, "point_verb_emote_cooldown", 2.5 SECONDS) return ..() /datum/emote/living/sneeze @@ -642,21 +671,6 @@ to_chat(user, span_boldwarning("You cannot send IC messages (muted).")) return FALSE - var/our_message = params ? params : get_custom_emote_from_user() - - if(!emote_is_valid(user, our_message)) - return FALSE - - if(!params) - var/user_emote_type = get_custom_emote_type_from_user() - - if(!user_emote_type) - return FALSE - - emote_type = user_emote_type - - message = our_message - /datum/emote/living/custom/proc/emote_is_valid(mob/user, input) // We're assuming clientless mobs custom emoting is something codebase-driven and not player-driven. // If players ever get the ability to force clientless mobs to emote, we'd need to reconsider this. @@ -714,9 +728,22 @@ return FALSE /datum/emote/living/custom/run_emote(mob/user, params, type_override = null, intentional = FALSE) - if(params && type_override) - emote_type = type_override + var/our_message = params ? params : get_custom_emote_from_user() + + if(!emote_is_valid(user, our_message)) + return FALSE + + if(!params) + var/user_emote_type = get_custom_emote_type_from_user() + + if(!user_emote_type) + return FALSE + + emote_type = user_emote_type + + message = our_message . = ..() + ///Reset the message and emote type after it's run. message = null emote_type = EMOTE_VISIBLE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c0d2e1d4785c0..094c28d84a507 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -388,7 +388,7 @@ if(pulling) // Are we trying to pull something we are already pulling? Then just stop here, no need to continue. if(AM == pulling) - return + return FALSE stop_pulling() changeNext_move(CLICK_CD_GRABBING) @@ -456,6 +456,7 @@ update_pull_movespeed() set_pull_offsets(M, state) + return TRUE /mob/living/proc/set_pull_offsets(mob/living/M, grab_state = GRAB_PASSIVE) if(M.buckled) @@ -517,7 +518,7 @@ //same as above /mob/living/pointed(atom/A as mob|obj|turf in view(client.view, src)) - if(incapacitated) + if(INCAPACITATED_IGNORING(src, INCAPABLE_RESTRAINTS)) return FALSE return ..() @@ -533,7 +534,7 @@ if (!CAN_SUCCUMB(src)) if(HAS_TRAIT(src, TRAIT_SUCCUMB_OVERRIDE)) if(whispered) - to_chat(src, span_notice("Your immortal body is keeping you alive. If you want to accept death, you must do so [span_bold("quietly")]."), type=MESSAGE_TYPE_INFO) + to_chat(src, span_notice("Your immortal body is keeping you alive! Unless you just press the UI button."), type=MESSAGE_TYPE_INFO) return else to_chat(src, span_warning("You are unable to succumb to death! This life continues."), type=MESSAGE_TYPE_INFO) @@ -741,9 +742,7 @@ /// Returns what the body_position_pixel_y_offset should be if the current size were `value` /mob/living/proc/get_pixel_y_offset_standing(value) - var/icon/living_icon = icon(icon) - var/height = living_icon.Height() - return (value-1) * height * 0.5 + return (value-1) * get_cached_height() * 0.5 /mob/living/proc/update_density() if(HAS_TRAIT(src, TRAIT_UNDENSE)) @@ -833,7 +832,7 @@ if(!livingdoll.filtered) livingdoll.filtered = TRUE var/icon/mob_mask = icon(icon, icon_state) - if(mob_mask.Height() > ICON_SIZE_Y || mob_mask.Width() > ICON_SIZE_X) + if(get_cached_height() > ICON_SIZE_Y || get_cached_width() > ICON_SIZE_X) var/health_doll_icon_state = health_doll_icon ? health_doll_icon : "megasprite" mob_mask = icon('icons/hud/screen_gen.dmi', health_doll_icon_state) //swap to something generic if they have no special doll livingdoll.add_filter("mob_shape_mask", 1, alpha_mask_filter(icon = mob_mask)) @@ -1200,16 +1199,42 @@ /mob/living/resist_grab(moving_resist) . = TRUE - //If we're in an aggressive grab or higher, we're lying down, we're vulnerable to grabs, or we're staggered and we have some amount of stamina loss, we must resist - if(pulledby.grab_state || body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_GRABWEAKNESS) || get_timed_status_effect_duration(/datum/status_effect/staggered) && (getFireLoss()*0.5 + getBruteLoss()*0.5) >= 40) - var/altered_grab_state = pulledby.grab_state - if((body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_GRABWEAKNESS) || get_timed_status_effect_duration(/datum/status_effect/staggered)) && pulledby.grab_state < GRAB_KILL) //If prone, resisting out of a grab is equivalent to 1 grab state higher. won't make the grab state exceed the normal max, however - altered_grab_state++ - if(HAS_TRAIT(src, TRAIT_GRABRESISTANCE)) - altered_grab_state-- + + //Our effective grab state. GRAB_PASSIVE is equal to 0, so if we have no other altering factors to our grab state, we can break free immediately on resist. + var/effective_grab_state = pulledby.grab_state + //The amount of damage inflicted on a failed resist attempt. + var/damage_on_resist_fail = rand(7, 13) + + if(body_position == LYING_DOWN) //If prone, treat the grab state as one higher + effective_grab_state++ + + if(HAS_TRAIT(src, TRAIT_GRABWEAKNESS)) //If we have grab weakness from some source, treat the grab state as one higher + effective_grab_state++ + + if(get_timed_status_effect_duration(/datum/status_effect/staggered) && (getFireLoss() + getBruteLoss()) >= 40) //If we are staggered, and we have at least 40 damage, treat the grab state as one higher. + effective_grab_state++ + + if(HAS_TRAIT(src, TRAIT_GRABRESISTANCE)) //If we have grab resistance from some source, treat the grab state as one lower. + effective_grab_state-- + + //If our puller is a human, and they have an active hand they're grabbing with (please don't ask how people grab without hands), then apply their unarmed values to the grab values + if(pulledby && ishuman(pulledby)) + var/mob/living/carbon/human/human_puller = pulledby + var/obj/item/bodypart/grabbing_bodypart = human_puller.get_active_hand() + if(grabbing_bodypart) + damage_on_resist_fail += rand(grabbing_bodypart.unarmed_damage_low, grabbing_bodypart.unarmed_damage_high) + + //If our puller is a drunken brawler, they add more damage based on their own damage taken so long as they're drunk and treat the grab state as one higher + var/puller_drunkenness = human_puller.get_drunk_amount() + if(puller_drunkenness && HAS_TRAIT(human_puller, TRAIT_DRUNKEN_BRAWLER)) + damage_on_resist_fail += clamp((human_puller.getFireLoss() + human_puller.getBruteLoss()) / 10, 3, 20) + effective_grab_state ++ + + //We only resist our grab state if we are currently in a grab equal to or greater than GRAB_AGGRESSIVE (1). Otherwise, break out immediately! + if(effective_grab_state >= GRAB_AGGRESSIVE) // see defines/combat.dm, this should be baseline 60% // Resist chance divided by the value imparted by your grab state. It isn't until you reach neckgrab that you gain a penalty to escaping a grab. - var/resist_chance = altered_grab_state ? (BASE_GRAB_RESIST_CHANCE / altered_grab_state) : 100 + var/resist_chance = clamp(BASE_GRAB_RESIST_CHANCE / effective_grab_state, 0, 100) if(prob(resist_chance)) visible_message(span_danger("[src] breaks free of [pulledby]'s grip!"), \ span_danger("You break free of [pulledby]'s grip!"), null, null, pulledby) @@ -1218,7 +1243,7 @@ pulledby.stop_pulling() return FALSE else - adjustStaminaLoss(rand(15,20))//failure to escape still imparts a pretty serious penalty + adjustStaminaLoss(damage_on_resist_fail) //Do some stamina damage if we fail to resist visible_message(span_danger("[src] struggles as they fail to break free of [pulledby]'s grip!"), \ span_warning("You struggle as you fail to break free of [pulledby]'s grip!"), null, null, pulledby) to_chat(pulledby, span_danger("[src] struggles as they fail to break free of your grip!")) @@ -1896,6 +1921,9 @@ GLOBAL_LIST_EMPTY(fire_appearances) /// Called when mob changes from a standing position into a prone while lacking the ability to stand up at the moment. /mob/living/proc/on_fall() + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(src, COMSIG_LIVING_THUD) + loc?.handle_fall(src)//it's loc so it doesn't call the mob's handle_fall which does nothing return /mob/living/forceMove(atom/destination) @@ -1905,6 +1933,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) buckled.unbuckle_mob(src, force = TRUE) if(has_buckled_mobs()) unbuckle_all_mobs(force = TRUE) + refresh_gravity() . = ..() if(. && client) reset_perspective() @@ -2977,3 +3006,8 @@ GLOBAL_LIST_EMPTY(fire_appearances) REMOVE_TRAIT(src, TRAIT_BLOCKING_PROJECTILES, BLOCKING_TRAIT) cut_overlay(selected_overlay) update_transform(0.8) + +/// Returns the string form of the def_zone we have hit. +/mob/living/proc/check_hit_limb_zone_name(hit_zone) + if(has_limbs) + return hit_zone diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 43f361ca443d5..ab91cbc771e66 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -91,12 +91,11 @@ /mob/living/proc/is_ears_covered() return null -/mob/living/bullet_act(obj/projectile/proj, def_zone, piercing_hit = FALSE) +/mob/living/bullet_act(obj/projectile/proj, def_zone, piercing_hit = FALSE, blocked = 0) . = ..() if (. != BULLET_ACT_HIT) return . - var/blocked = check_projectile_armor(def_zone, proj, is_silent = TRUE) if(blocked >= 100) if(proj.is_hostile_projectile()) apply_projectile_effects(proj, def_zone, blocked) @@ -174,18 +173,21 @@ /mob/living/check_projectile_armor(def_zone, obj/projectile/impacting_projectile, is_silent) return run_armor_check(def_zone, impacting_projectile.armor_flag, "","",impacting_projectile.armour_penetration, "", is_silent, impacting_projectile.weak_against_armour) -/mob/living/proc/check_projectile_dismemberment(obj/projectile/P, def_zone) - return 0 +/mob/living/proc/check_projectile_dismemberment(obj/projectile/proj, def_zone) + return /obj/item/proc/get_volume_by_throwforce_and_or_w_class() if(throwforce && w_class) return clamp((throwforce + w_class) * 5, 30, 100)// Add the item's throwforce to its weight class and multiply by 5, then clamp the value between 30 and 100 - else if(w_class) + if(w_class) return clamp(w_class * 8, 20, 100) // Multiply the item's weight class by 8, then clamp the value between 20 and 100 - else - return 0 + return 0 /mob/living/proc/set_combat_mode(new_mode, silent = TRUE) + + if(HAS_TRAIT(src, TRAIT_COMBAT_MODE_LOCK)) + return + if(combat_mode == new_mode) return . = combat_mode @@ -203,10 +205,11 @@ /mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(!isitem(AM)) // Filled with made up numbers for non-items. - if(check_block(AM, 30, "\the [AM.name]", THROWN_PROJECTILE_ATTACK, 0, BRUTE)) + if(check_block(AM, 30, "\the [AM.name]", THROWN_PROJECTILE_ATTACK, 0, BRUTE) & SUCCESSFUL_BLOCK) hitpush = FALSE skipcatch = TRUE blocked = TRUE + return SUCCESSFUL_BLOCK else playsound(loc, 'sound/items/weapons/genhit.ogg', 50, TRUE, -1) //Item sounds are handled in the item itself if(!isvendor(AM) && !iscarbon(AM)) //Vendors have special interactions, while carbon mobs already generate visible messages! @@ -231,7 +234,7 @@ hitpush = FALSE if(blocked) - return TRUE + return SUCCESSFUL_BLOCK var/mob/thrown_by = thrown_item.thrownby?.resolve() if(thrown_by) @@ -288,7 +291,7 @@ return FALSE if(SEND_SIGNAL(src, COMSIG_LIVING_GRAB, target) & (COMPONENT_CANCEL_ATTACK_CHAIN|COMPONENT_SKIP_ATTACK)) return FALSE - if(target.check_block(src, 0, "[src]'s grab")) + if(target.check_block(src, 0, "[src]'s grab", UNARMED_ATTACK)) return FALSE target.grabbedby(src) return TRUE @@ -395,7 +398,7 @@ return FALSE var/damage = rand(user.melee_damage_lower, user.melee_damage_upper) - if(check_block(user, damage, "[user]'s [user.attack_verb_simple]", MELEE_ATTACK/*or UNARMED_ATTACK?*/, user.armour_penetration, user.melee_damage_type)) + if(check_block(user, damage, "[user]'s [user.attack_verb_simple]", UNARMED_ATTACK, user.armour_penetration, user.melee_damage_type)) return FALSE if(user.attack_sound) @@ -510,7 +513,7 @@ /mob/living/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers) SEND_SIGNAL(src, COMSIG_MOB_ATTACK_ALIEN, user, modifiers) if(LAZYACCESS(modifiers, RIGHT_CLICK)) - if(check_block(user, 0, "[user]'s tackle", MELEE_ATTACK, 0, BRUTE)) + if(check_block(user, 0, "[user]'s tackle", UNARMED_ATTACK, 0, BRUTE)) return FALSE user.do_attack_animation(src, ATTACK_EFFECT_DISARM) return TRUE @@ -519,7 +522,7 @@ if(HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, span_warning("You don't want to hurt anyone!")) return FALSE - if(check_block(user, user.melee_damage_upper, "[user]'s slash", MELEE_ATTACK, 0, BRUTE)) + if(check_block(user, user.melee_damage_upper, "[user]'s slash", UNARMED_ATTACK, 0, BRUTE)) return FALSE user.do_attack_animation(src) return TRUE @@ -680,9 +683,9 @@ var/touch_protection = (methods & VAPOR) ? getarmor(null, BIO) * 0.01 : 0 SEND_SIGNAL(source, COMSIG_REAGENTS_EXPOSE_MOB, src, reagents, methods, volume_modifier, show_message, touch_protection) - for(var/reagent in reagents) - var/datum/reagent/R = reagent - . |= R.expose_mob(src, methods, reagents[R], show_message, touch_protection) + for(var/datum/reagent/reagent as anything in reagents) + var/reac_volume = reagents[reagent] + . |= reagent.expose_mob(src, methods, reac_volume, show_message, touch_protection) /// Simplified ricochet angle calculation for mobs (also the base version doesn't work on mobs) /mob/living/handle_ricochet(obj/projectile/ricocheting_projectile) @@ -803,6 +806,6 @@ /mob/living/proc/check_block(atom/hit_by, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0, damage_type = BRUTE) if(SEND_SIGNAL(src, COMSIG_LIVING_CHECK_BLOCK, hit_by, damage, attack_text, attack_type, armour_penetration, damage_type) & SUCCESSFUL_BLOCK) - return TRUE + return SUCCESSFUL_BLOCK - return FALSE + return FAILED_BLOCK diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 4522b6ca69a52..561df7849deee 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -23,7 +23,7 @@ var/area/old_area = old_turf.loc var/area/new_area = new_turf.loc // If the area gravity has changed, then it's possible that our state has changed, so update - if(old_area.has_gravity != new_area.has_gravity) + if(old_area.default_gravity != new_area.default_gravity) refresh_gravity() /mob/living/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index b8e755faade6a..e2a898b352642 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -62,7 +62,7 @@ var/nuking = FALSE var/obj/machinery/doomsday_device/doomsday_device - var/mob/eye/ai_eye/eyeobj + var/mob/eye/camera/ai/eyeobj var/sprint = 10 var/last_moved = 0 var/acceleration = TRUE @@ -350,6 +350,7 @@ "What is the nature of your emergency? ([CALL_SHUTTLE_REASON_LENGTH] characters required.)", "Confirm Shuttle Call", max_length = MAX_MESSAGE_LEN, + encode = FALSE, ) if(incapacitated) @@ -1139,8 +1140,8 @@ target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct . = ..() -/mob/living/silicon/ai/proc/camera_visibility(mob/eye/ai_eye/moved_eye) - GLOB.cameranet.visibility(moved_eye, client, all_eyes, TRUE) +/mob/living/silicon/ai/proc/camera_visibility(mob/eye/camera/ai/moved_eye) + GLOB.cameranet.visibility(moved_eye) /mob/living/silicon/ai/forceMove(atom/destination) . = ..() diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index b8bd1f443eafe..1f8c452f492fc 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -12,7 +12,6 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) var/list/obj/machinery/camera/cameras = list() /// The chunks of the map, mapping the areas that the cameras can see. var/list/chunks = list() - var/ready = 0 /// List of images cloned by all chunk static images put onto turfs cameras cant see /// Indexed by the plane offset to use @@ -56,16 +55,12 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) if(!.) chunks[key] = . = new /datum/camerachunk(x, y, lowest.z) -/// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or its location is set. -/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes, use_static = TRUE) +/// Updates what the camera eye can see. It is recommended you use this when a camera eye moves or its location is set. +/datum/cameranet/proc/visibility(list/moved_eyes) if(!islist(moved_eyes)) moved_eyes = moved_eyes ? list(moved_eyes) : list() - if(islist(other_eyes)) - other_eyes = (other_eyes - moved_eyes) - else - other_eyes = list() - for(var/mob/eye/ai_eye/eye as anything in moved_eyes) + for(var/mob/eye/camera/eye as anything in moved_eyes) var/list/visibleChunks = list() //Get the eye's turf in case its located in an object like a mecha var/turf/eye_turf = get_turf(eye) @@ -129,6 +124,8 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) * to change the time between static updates. */ /datum/cameranet/proc/majorChunkChange(atom/c, choice, update_delay_buffer) + PROTECTED_PROC(TRUE) + if(QDELETED(c) && choice == 1) CRASH("Tried to add a qdeleting camera to the net") diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 7b2c57abc3cc9..73908f162b8b5 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -1,9 +1,9 @@ #define UPDATE_BUFFER_TIME (2.5 SECONDS) -// CAMERA CHUNK -// -// A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed. -// Allows the AI Eye to stream these chunks and know what it can and cannot see. +/** + * A 16x16 grid of the map with a list of turfs that can be seen, are visible and are dimmed. \ + * Allows Camera Eyes to stream these chunks and know what it can and cannot see. + */ /datum/camerachunk ///turfs our cameras cant see but are inside our grid. associative list of the form: list(obscured turf = static image on that turf) @@ -16,7 +16,7 @@ ///list of all turfs, associative with that turf's static image ///turf -> /image var/list/turfs = list() - ///eye mobs that can see turfs in our grid + ///Camera mobs that can see turfs in our grid var/list/seenby = list() ///images currently in use on obscured turfs. var/list/active_static_images = list() @@ -27,24 +27,24 @@ var/lower_z var/upper_z -/// Add an AI eye to the chunk, then update if changed. -/datum/camerachunk/proc/add(mob/eye/ai_eye/eye) +/// Add a camera eye to the chunk, then update if changed. +/datum/camerachunk/proc/add(mob/eye/camera/eye) eye.visibleCameraChunks += src seenby += eye if(changed) update() var/client/client = eye.GetViewerClient() - if(client && eye.use_static) + if(client && eye.use_visibility) client.images += active_static_images -/// Remove an AI eye from the chunk -/datum/camerachunk/proc/remove(mob/eye/ai_eye/eye, remove_static_with_last_chunk = TRUE) +/// Remove a camera eye from the chunk +/datum/camerachunk/proc/remove(mob/eye/camera/ai/eye) eye.visibleCameraChunks -= src seenby -= eye var/client/client = eye.GetViewerClient() - if(client && eye.use_static) + if(client && eye.use_visibility) client.images -= active_static_images /// Called when a chunk has changed. I.E: A wall was deleted. @@ -56,6 +56,7 @@ /** * Updates the chunk, makes sure that it doesn't update too much. If the chunk isn't being watched it will * instead be flagged to update the next time an AI Eye moves near it. + * * update_delay_buffer is used for cameras that are moving around, which are cyborg inbuilt cameras and * mecha onboard cameras. This buffer should be usually lower than UPDATE_BUFFER_TIME because * otherwise a moving camera can run out of its own view before updating static. @@ -89,8 +90,8 @@ ///turfs that we could see last update but cant see now var/list/newly_obscured_turfs = visibleTurfs - updated_visible_turfs - for(var/mob/eye/ai_eye/client_eye as anything in seenby) - var/client/client = client_eye.ai?.client || client_eye.client + for(var/mob/eye/camera/client_eye as anything in seenby) + var/client/client = client_eye.GetViewerClient() if(!client) continue @@ -119,8 +120,8 @@ changed = FALSE - for(var/mob/eye/ai_eye/client_eye as anything in seenby) - var/client/client = client_eye.ai?.client || client_eye.client + for(var/mob/eye/camera/client_eye as anything in seenby) + var/client/client = client_eye.GetViewerClient() if(!client) continue diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index c93054d6d269f..25ccafe26c0f1 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -1,43 +1,50 @@ -// AI EYE -// -// An invisible (no icon) mob that the AI controls to look around the station with. -// It streams chunks as it moves around, which will show it what the AI can and cannot see. -/mob/eye/ai_eye +/mob/eye/camera/ai name = "Inactive AI Eye" - icon_state = "ai_camera" - icon = 'icons/mob/eyemob.dmi' - invisibility = INVISIBILITY_MAXIMUM + hud_possible = list(ANTAG_HUD, AI_DETECT_HUD = HUD_LIST_LIST) - var/list/visibleCameraChunks = list() + /// The AI who owns this eye. var/mob/living/silicon/ai/ai = null + /// Whether this eye will transmit speech near it to the AI. var/relay_speech = FALSE - var/use_static = TRUE - var/static_visibility_range = 16 + /// Whether this eye can be found with AI detectors. var/ai_detector_visible = TRUE + /// The color of the area if the eye is detectable. var/ai_detector_color = COLOR_RED - interaction_range = INFINITY -/mob/eye/ai_eye/Initialize(mapload) +/mob/eye/camera/ai/Initialize(mapload) . = ..() - GLOB.aiEyes += src update_ai_detect_hud() - setLoc(loc, TRUE) -/mob/eye/ai_eye/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) - . = ..() - if(same_z_layer) - return - update_ai_detect_hud() +/mob/eye/camera/ai/Destroy() + if(ai) + ai.all_eyes -= src + ai = null + if(ai_detector_visible) + var/datum/atom_hud/ai_detector/hud = GLOB.huds[DATA_HUD_AI_DETECT] + hud.remove_atom_from_hud(src) + var/list/L = hud_list[AI_DETECT_HUD] + QDEL_LIST(L) + return ..() -/mob/eye/ai_eye/examine(mob/user) //Displays a silicon's laws to ghosts - . = ..() - if(istype(ai) && ai.laws && isobserver(user)) - . += "[ai] has the following laws:" - for(var/law in ai.laws.get_law_list(include_zeroth = TRUE)) - . += law +/** + * Returns a list of turfs visible to the client's viewsize. \ + * Note that this will return an empty list if the camera's loc is not a turf. + */ +/mob/eye/camera/ai/proc/get_visible_turfs() + RETURN_TYPE(/list/turf) + SHOULD_BE_PURE(TRUE) + SHOULD_CALL_PARENT(TRUE) -/mob/eye/ai_eye/proc/update_ai_detect_hud() + if(!isturf(loc)) + return list() + var/client/C = GetViewerClient() + var/view = C ? getviewsize(C.view) : getviewsize(world.view) + var/turf/lowerleft = locate(max(1, x - (view[1] - 1)/2), max(1, y - (view[2] - 1)/2), z) + var/turf/upperright = locate(min(world.maxx, lowerleft.x + (view[1] - 1)), min(world.maxy, lowerleft.y + (view[2] - 1)), lowerleft.z) + return block(lowerleft, upperright) + +/mob/eye/camera/ai/proc/update_ai_detect_hud() var/datum/atom_hud/ai_detector/hud = GLOB.huds[DATA_HUD_AI_DETECT] var/list/old_images = hud_list[AI_DETECT_HUD] if(!ai_detector_visible) @@ -75,42 +82,17 @@ active_hud_list[AI_DETECT_HUD] = new_images hud.add_atom_to_hud(src) -/mob/eye/ai_eye/proc/get_visible_turfs() - if(!isturf(loc)) - return list() - var/client/C = GetViewerClient() - var/view = C ? getviewsize(C.view) : getviewsize(world.view) - var/turf/lowerleft = locate(max(1, x - (view[1] - 1)/2), max(1, y - (view[2] - 1)/2), z) - var/turf/upperright = locate(min(world.maxx, lowerleft.x + (view[1] - 1)), min(world.maxy, lowerleft.y + (view[2] - 1)), lowerleft.z) - return block(lowerleft, upperright) - -/// Used in cases when the eye is located in a movable object (i.e. mecha) -/mob/eye/ai_eye/proc/update_visibility() - SIGNAL_HANDLER - if(use_static) - ai.camera_visibility(src) - -// Use this when setting the aiEye's location. -// It will also stream the chunk that the new loc is in. - -/mob/eye/ai_eye/proc/setLoc(destination, force_update = FALSE) +/mob/eye/camera/ai/setLoc(destination, force_update = FALSE) if(!ai) return if(!isturf(ai.loc)) return - destination = get_turf(destination) - if(!force_update && (destination == get_turf(src))) - return //we are already here! - if (destination) - abstract_move(destination) - else - moveToNullspace() - if(use_static) - ai.camera_visibility(src) + + . = ..() + if(ai.client && !ai.multicam_on) ai.client.set_eye(src) update_ai_detect_hud() - update_parallax_contents() //Holopad if(istype(ai.current, /obj/machinery/holopad)) var/obj/machinery/holopad/H = ai.current @@ -122,33 +104,31 @@ if(ai.master_multicam) ai.master_multicam.refresh_view() -/mob/eye/ai_eye/zMove(dir, turf/target, z_move_flags = NONE, recursions_left = 1, list/falling_movs) - . = ..() - if(.) - setLoc(loc, force_update = TRUE) - -/mob/eye/ai_eye/Move() - return +/mob/eye/camera/ai/update_visibility() + if(ai) + ai.camera_visibility(src) + else + ..() -/mob/eye/ai_eye/proc/GetViewerClient() +/mob/eye/camera/ai/GetViewerClient() if(ai) return ai.client return null -/mob/eye/ai_eye/Destroy() - if(ai) - ai.all_eyes -= src - ai = null - for(var/V in visibleCameraChunks) - var/datum/camerachunk/c = V - c.remove(src) - GLOB.aiEyes -= src - if(ai_detector_visible) - var/datum/atom_hud/ai_detector/hud = GLOB.huds[DATA_HUD_AI_DETECT] - hud.remove_atom_from_hud(src) - var/list/L = hud_list[AI_DETECT_HUD] - QDEL_LIST(L) - return ..() +/mob/eye/camera/ai/examine(mob/user) //Displays a silicon's laws to ghosts + . = ..() + if(istype(ai) && ai.laws && isobserver(user)) + . += "[ai] has the following laws:" + for(var/law in ai.laws.get_law_list(include_zeroth = TRUE)) + . += law + +/mob/eye/camera/ai/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) + . = ..() + if(same_z_layer) + return + update_ai_detect_hud() + +/*----------------------------------------------------*/ /atom/proc/move_camera_by_click() if(!isAI(usr)) @@ -189,7 +169,6 @@ sprint = initial(sprint) ai_tracking_tool.reset_tracking() - #undef SPRINT_PER_STEP #undef MAX_SPRINT #undef SPRINT_PER_TICK @@ -215,12 +194,11 @@ /mob/living/silicon/ai/proc/create_eye() if(eyeobj) return - eyeobj = new /mob/eye/ai_eye() + eyeobj = new /mob/eye/camera/ai() all_eyes += eyeobj eyeobj.ai = src - eyeobj.setLoc(loc) eyeobj.name = "[name] (AI Eye)" - eyeobj.real_name = eyeobj.name + eyeobj.setLoc(loc, TRUE) set_eyeobj_visible(TRUE) /mob/living/silicon/ai/proc/set_eyeobj_visible(state = TRUE) @@ -241,7 +219,7 @@ acceleration = !acceleration to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].") -/mob/eye/ai_eye/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, list/message_mods = list(), message_range) +/mob/eye/camera/ai/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, list/message_mods = list(), message_range) . = ..() if(relay_speech && speaker && ai && !radio_freq && speaker != ai && GLOB.cameranet.checkCameraVis(speaker)) ai.relay_speech(message, speaker, message_language, raw_message, radio_freq, spans, message_mods) diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm index 12ee1ce3b5371..049243d90f1d4 100644 --- a/code/modules/mob/living/silicon/ai/multicam.dm +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -4,11 +4,11 @@ var/mob/living/silicon/ai/ai var/mutable_appearance/highlighted_background var/highlighted = FALSE - var/mob/eye/ai_eye/pic_in_pic/aiEye + var/mob/eye/camera/ai/pic_in_pic/aiEye /atom/movable/screen/movable/pic_in_pic/ai/Initialize(mapload, datum/hud/hud_owner) . = ..() - aiEye = new /mob/eye/ai_eye/pic_in_pic() + aiEye = new /mob/eye/camera/ai/pic_in_pic() aiEye.screen = src /atom/movable/screen/movable/pic_in_pic/ai/Destroy() @@ -126,37 +126,38 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) //Dummy camera eyes -/mob/eye/ai_eye/pic_in_pic +/mob/eye/camera/ai/pic_in_pic name = "Secondary AI Eye" + icon_state = "ai_pip_camera" invisibility = INVISIBILITY_OBSERVER mouse_opacity = MOUSE_OPACITY_ICON - icon_state = "ai_pip_camera" + ai_detector_color = COLOR_ORANGE + var/atom/movable/screen/movable/pic_in_pic/ai/screen var/list/cameras_telegraphed = list() var/telegraph_cameras = TRUE var/telegraph_range = 7 - ai_detector_color = COLOR_ORANGE -/mob/eye/ai_eye/pic_in_pic/GetViewerClient() +/mob/eye/camera/ai/pic_in_pic/GetViewerClient() if(screen?.ai) return screen.ai.client -/mob/eye/ai_eye/pic_in_pic/setLoc(turf/destination, force_update = FALSE) - if (destination) - abstract_move(destination) - else - moveToNullspace() +/mob/eye/camera/ai/pic_in_pic/update_visibility() if(screen?.ai) screen.ai.camera_visibility(src) else - GLOB.cameranet.visibility(src) + ..() + +/mob/eye/camera/ai/pic_in_pic/setLoc(turf/destination, force_update = FALSE) + . = ..() update_camera_telegraphing() update_ai_detect_hud() -/mob/eye/ai_eye/pic_in_pic/get_visible_turfs() +/mob/eye/camera/ai/pic_in_pic/get_visible_turfs() + SHOULD_CALL_PARENT(FALSE) //we do our own thing here return screen ? screen.get_visible_turfs() : list() -/mob/eye/ai_eye/pic_in_pic/proc/update_camera_telegraphing() +/mob/eye/camera/ai/pic_in_pic/proc/update_camera_telegraphing() if(!telegraph_cameras) return var/list/obj/machinery/camera/add = list() @@ -185,7 +186,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) C.in_use_lights++ C.update_appearance() -/mob/eye/ai_eye/pic_in_pic/proc/disable_camera_telegraphing() +/mob/eye/camera/ai/pic_in_pic/proc/disable_camera_telegraphing() telegraph_cameras = FALSE for (var/obj/machinery/camera/C as anything in cameras_telegraphed) if(QDELETED(C)) @@ -194,7 +195,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) C.update_appearance() cameras_telegraphed.Cut() -/mob/eye/ai_eye/pic_in_pic/Destroy() +/mob/eye/camera/ai/pic_in_pic/Destroy() disable_camera_telegraphing() return ..() diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 85e749d276541..67083168eb30e 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,8 +1,13 @@ /mob/living/silicon/spawn_gibs() new /obj/effect/gibspawner/robot(drop_location(), src) -/mob/living/silicon/spawn_dust() - new /obj/effect/decal/remains/robot(loc) +/mob/living/silicon/spawn_dust(just_ash) + if(just_ash) + return ..() + + var/obj/effect/decal/remains/robot/robones = new(loc) + robones.pixel_z = -6 + robones.pixel_w = rand(-1, 1) /mob/living/silicon/death(gibbed) diag_hud_set_status() diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index cefd9d144b764..1754a89aa5cb9 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -24,7 +24,7 @@ /mob/living/silicon/proc/post_lawchange(announce = TRUE) throw_alert(ALERT_NEW_LAW, /atom/movable/screen/alert/newlaw) if(announce && last_lawchange_announce != world.time) - to_chat(src, span_boldannounce("Your laws have been changed.")) + to_chat(src, span_bolddanger("Your laws have been changed.")) SEND_SOUND(src, sound('sound/machines/cryo_warning.ogg')) // lawset modules cause this function to be executed multiple times in a tick, so we wait for the next tick in order to be able to see the entire lawset addtimer(CALLBACK(src, PROC_REF(show_laws)), 0) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 91627b5099fe5..99c5686aa5325 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -7,9 +7,6 @@ QDEL_NULL(mmi) return ..() -/mob/living/silicon/robot/spawn_dust() - new /obj/effect/decal/remains/robot(loc) - /mob/living/silicon/robot/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 88876e0233e52..14a920b350ae1 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -19,6 +19,7 @@ AddElement(/datum/element/ridable, /datum/component/riding/creature/cyborg) RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge)) RegisterSignal(src, COMSIG_LIGHT_EATER_ACT, PROC_REF(on_light_eater)) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_GOT_DAMPENED), PROC_REF(on_dampen)) robot_modules_background = new() robot_modules_background.icon_state = "block" @@ -134,6 +135,12 @@ QDEL_LIST(upgrades) QDEL_NULL(cell) QDEL_NULL(robot_suit) + + if (smoke_particles) + remove_shared_particles(smoke_particles) + if (spark_particles) + remove_shared_particles(spark_particles) + return ..() /mob/living/silicon/robot/Topic(href, href_list) @@ -290,7 +297,7 @@ cut_overlays() SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) icon_state = model.cyborg_base_icon - if(stat != DEAD && !(HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || IsStun() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. + if(stat < UNCONSCIOUS && !HAS_TRAIT(src, TRAIT_KNOCKEDOUT) && !IsStun() && !IsParalyzed() && !low_power_mode) //Not dead, not stunned. if(!eye_lights) eye_lights = new() if(lamp_enabled || lamp_doom) @@ -565,7 +572,7 @@ removing.update_appearance() else - to_chat(src, span_boldannounce("Oops! Something went very wrong, your MMI was unable to receive your mind. \ + to_chat(src, span_bolddanger("Oops! Something went very wrong, your MMI was unable to receive your mind. \ You have been ghosted. Please make a bug report so we can fix this bug.")) ghostize() stack_trace("Borg MMI lacked a brainmob") @@ -957,6 +964,10 @@ buckle_mob_flags= RIDER_NEEDS_ARM // just in case return ..() +/mob/living/silicon/robot/post_buckle_mob(mob/living/victim_to_boot) + if(HAS_TRAIT(src, TRAIT_GOT_DAMPENED)) + eject_riders() + /mob/living/silicon/robot/can_resist() if(lockcharge) balloon_alert(src, "locked down!") @@ -1053,3 +1064,16 @@ . = ..() set_stat(CONSCIOUS) //This is a horrible hack, but silicon code forced my hand update_stat() + +/mob/living/silicon/robot/proc/on_dampen() + SIGNAL_HANDLER + eject_riders() + +/mob/living/silicon/robot/proc/eject_riders() + if(!length(buckled_mobs)) + return + for(var/mob/living/buckled_mob as anything in buckled_mobs) + buckled_mob.visible_message(span_warning("[buckled_mob] is knocked off of [src] by the charge in [src]'s chassis induced by the hyperkinetic dampener field!")) + buckled_mob.Paralyze(1 SECONDS) + unbuckle_mob(buckled_mob) + do_sparks(5, 0, src) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index d9caad422927e..a451166bcada8 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real if(opened) to_chat(user, span_warning("You must close the cover to swipe an ID card!")) else - if(allowed(usr)) + if(allowed(user)) locked = !locked to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] [src]'s cover.")) update_icons() @@ -193,41 +193,34 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real var/brute_percent = bruteloss / maxHealth var/burn_percent = fireloss / maxHealth + var/old_smoke = smoke_particles if (brute_percent > MODERATE_DAMAGE_UPPER_BOUND) - if(!smoke_particles) - smoke_particles = new(src, /particles/smoke/cyborg/heavy_damage, PARTICLE_ATTACH_MOB) - else if(!istype(smoke_particles.particles, /particles/smoke/cyborg/heavy_damage)) //TODO: needs to be darker - QDEL_NULL(smoke_particles) - smoke_particles = new(src, /particles/smoke/cyborg/heavy_damage, PARTICLE_ATTACH_MOB) - + smoke_particles = /particles/smoke/cyborg/heavy_damage else if (brute_percent > LOW_DAMAGE_UPPER_BOUND) - if(!smoke_particles) - smoke_particles = new(src, /particles/smoke/cyborg, PARTICLE_ATTACH_MOB) - else if(!istype(smoke_particles.particles, /particles/smoke/cyborg)) - QDEL_NULL(smoke_particles) - smoke_particles = new(src, /particles/smoke/cyborg, PARTICLE_ATTACH_MOB) - + smoke_particles = /particles/smoke/cyborg else - if(smoke_particles) - QDEL_NULL(smoke_particles) + smoke_particles = null - if (burn_percent > MODERATE_DAMAGE_UPPER_BOUND) - if(!spark_particles) - spark_particles = new(src, /particles/embers/spark/severe, PARTICLE_ATTACH_MOB) - else if(!istype(spark_particles.particles, /particles/embers/spark/severe)) //TODO: needs to be more dramatic - QDEL_NULL(spark_particles) - spark_particles = new(src, /particles/embers/spark/severe, PARTICLE_ATTACH_MOB) + if (old_smoke != smoke_particles) + if (old_smoke) + remove_shared_particles(old_smoke) + if (smoke_particles) + add_shared_particles(smoke_particles) + var/old_sparks = spark_particles + if (burn_percent > MODERATE_DAMAGE_UPPER_BOUND) + spark_particles = /particles/embers/spark/severe else if (burn_percent > LOW_DAMAGE_UPPER_BOUND) - if(!spark_particles) - spark_particles = new(src, /particles/embers/spark, PARTICLE_ATTACH_MOB) - else if(!istype(spark_particles.particles, /particles/embers/spark)) - QDEL_NULL(spark_particles) - spark_particles = new(src, /particles/embers/spark, PARTICLE_ATTACH_MOB) - + spark_particles = /particles/embers/spark else - if(spark_particles) - QDEL_NULL(spark_particles) + spark_particles = null + + if (old_sparks != spark_particles) + if (old_sparks) + remove_shared_particles(old_sparks) + if (spark_particles) + add_shared_particles(spark_particles) + #undef LOW_DAMAGE_UPPER_BOUND #undef MODERATE_DAMAGE_UPPER_BOUND @@ -280,7 +273,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real . &= ~(SHOVE_CAN_MOVE|SHOVE_CAN_HIT_SOMETHING) /mob/living/silicon/robot/welder_act(mob/living/user, obj/item/tool) - if(user.combat_mode && usr != src) + if(user.combat_mode && user != src) return FALSE . = TRUE user.changeNext_move(CLICK_CD_MELEE) @@ -456,7 +449,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real if(EXPLODE_DEVASTATE) investigate_log("has been gibbed by an explosion.", INVESTIGATE_DEATHS) gib(DROP_ALL_REMAINS) - return + return TRUE if(EXPLODE_HEAVY) if (stat != DEAD) adjustBruteLoss(60) diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm index dd4ba8b6bd499..07b8322bd7c48 100644 --- a/code/modules/mob/living/silicon/robot/robot_defines.dm +++ b/code/modules/mob/living/silicon/robot/robot_defines.dm @@ -16,6 +16,7 @@ has_limbs = TRUE hud_type = /datum/hud/robot unique_name = TRUE + mouse_drop_zone = TRUE ///Represents the cyborg's model (engineering, medical, etc.) var/obj/item/robot_model/model = null @@ -118,10 +119,10 @@ var/low_power_mode = FALSE ///So they can initialize sparks whenever/N var/datum/effect_system/spark_spread/spark_system - ///Smoke particle holder for brute damage - var/obj/effect/abstract/particle_holder/smoke_particles = null - ///Spark particle holder for burn damage - var/obj/effect/abstract/particle_holder/spark_particles = null + ///Smoke particle type for brute damage + var/smoke_particles + ///Spark particle type for burn damage + var/spark_particles ///Jetpack-like effect. var/ionpulse = FALSE diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index d19526e584c79..734ec24ef028c 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -77,6 +77,7 @@ TRAIT_SILICON_ACCESS, TRAIT_REAGENT_SCANNER, TRAIT_UNOBSERVANT, + TRAIT_NO_SLIP_ALL, ) add_traits(traits_to_apply, ROUNDSTART_TRAIT) @@ -264,7 +265,7 @@ if (lawcache_zeroth) if (force || (lawcache_zeroth in lawcache_lawcheck)) - say("[radiomod] 0. [lawcache_zeroth]", forced = forced_log_message) + say("[radiomod] 0. [lawcache_zeroth]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE)) sleep(1 SECONDS) for (var/index in 1 to length(lawcache_hacked)) @@ -273,7 +274,7 @@ if (length(law) <= 0) continue if (force || (law in lawcache_hackedcheck)) - say("[radiomod] [num]. [law]", forced = forced_log_message) + say("[radiomod] [num]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE)) sleep(1 SECONDS) for (var/index in 1 to length(lawcache_ion)) @@ -282,7 +283,7 @@ if (length(law) <= 0) return if (force || (law in lawcache_ioncheck)) - say("[radiomod] [num]. [law]", forced = forced_log_message) + say("[radiomod] [num]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE)) sleep(1 SECONDS) var/number = 1 @@ -291,7 +292,7 @@ if (length(law) <= 0) continue if (force || (law in lawcache_lawcheck)) - say("[radiomod] [number]. [law]", forced = forced_log_message) + say("[radiomod] [number]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE)) number++ sleep(1 SECONDS) @@ -301,7 +302,7 @@ if (length(law) <= 0) continue if (force || (law in lawcache_lawcheck)) - say("[radiomod] [number]. [law]", forced = forced_log_message) + say("[radiomod] [number]. [law]", forced = forced_log_message, message_mods = list(MODE_SEQUENTIAL = TRUE)) number++ sleep(1 SECONDS) diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 404b0324f71a0..7a78cb4be0537 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -82,13 +82,13 @@ /mob/living/silicon/check_block(atom/hitby, damage, attack_text, attack_type, armour_penetration, damage_type, attack_flag) . = ..() - if(.) - return TRUE + if(. == SUCCESSFUL_BLOCK) + return SUCCESSFUL_BLOCK if(damage_type == BRUTE && attack_type == UNARMED_ATTACK && attack_flag == MELEE && damage <= 10) playsound(src, 'sound/effects/bang.ogg', 10, TRUE) visible_message(span_danger("[attack_text] doesn't leave a dent on [src]!"), vision_distance = COMBAT_MESSAGE_RANGE) - return TRUE - return FALSE + return SUCCESSFUL_BLOCK + return FAILED_BLOCK /mob/living/silicon/attack_drone(mob/living/basic/drone/user) if(user.combat_mode) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 2c5d4c6aa91bd..38599c204653a 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -1014,7 +1014,7 @@ Pass a positive integer as an argument to override a bot's default speed. to_chat(src, span_boldnotice(get_emagged_message())) return if(!(bot_cover_flags & BOT_COVER_HACKED)) - to_chat(user, span_boldannounce("You fail to repair [src]'s [hackables].")) + to_chat(user, span_bolddanger("You fail to repair [src]'s [hackables].")) return bot_cover_flags &= ~(BOT_COVER_EMAGGED|BOT_COVER_HACKED) to_chat(user, span_notice("You reset the [src]'s [hackables].")) diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 80e2b8c0c8343..143c79534d359 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -190,67 +190,67 @@ to_chat(user, span_notice("You complete the ED-209.")) qdel(src) -//Floorbot assemblies -/obj/item/bot_assembly/floorbot +//Repairbot assemblies +/obj/item/bot_assembly/repairbot desc = "It's a toolbox with tiles sticking out the top." - name = "tiles and toolbox" - icon_state = "toolbox_tiles" + name = "Repairbot Chasis" + icon_state = "repairbot_base" throwforce = 10 - created_name = "Floorbot" + created_name = "Repairbot" + ///the toolbox our repairbot is made of var/toolbox = /obj/item/storage/toolbox/mechanical - var/toolbox_color = "" //Blank for blue, r for red, y for yellow, etc. + ///the color of our toolbox + var/toolbox_color = "" -/obj/item/bot_assembly/floorbot/Initialize(mapload) +/obj/item/bot_assembly/repairbot/Initialize(mapload) . = ..() update_appearance() -/obj/item/bot_assembly/floorbot/update_name() - . = ..() - switch(build_step) - if(ASSEMBLY_SECOND_STEP) - name = "incomplete floorbot assembly" - else - name = initial(name) +/obj/item/bot_assembly/repairbot/proc/set_color(new_color) + add_atom_colour(new_color, FIXED_COLOUR_PRIORITY) + toolbox_color = new_color -/obj/item/bot_assembly/floorbot/update_desc() +/obj/item/bot_assembly/repairbot/update_desc() . = ..() switch(build_step) - if(ASSEMBLY_SECOND_STEP) - desc = "It's a toolbox with tiles sticking out the top and a sensor attached." + if(ASSEMBLY_FIRST_STEP) + desc = "It's a toolbox with a giant monitor sticking out!." else desc = initial(desc) -/obj/item/bot_assembly/floorbot/update_icon_state() +/obj/item/bot_assembly/repairbot/update_overlays() . = ..() - switch(build_step) - if(ASSEMBLY_FIRST_STEP) - icon_state = "[toolbox_color]toolbox_tiles" - if(ASSEMBLY_SECOND_STEP) - icon_state = "[toolbox_color]toolbox_tiles_sensor" + if(build_step >= ASSEMBLY_FIRST_STEP) + . += mutable_appearance(icon, "repairbot_base_sensor", appearance_flags = RESET_COLOR) + if(build_step >= ASSEMBLY_SECOND_STEP) + . += mutable_appearance(icon, "repairbot_base_arms", appearance_flags = RESET_COLOR) -/obj/item/bot_assembly/floorbot/attackby(obj/item/W, mob/user, params) +/obj/item/bot_assembly/repairbot/attackby(obj/item/item, mob/user, params) ..() switch(build_step) if(ASSEMBLY_FIRST_STEP) - if(isprox(W)) - if(!user.temporarilyRemoveItemFromInventory(W)) - return - to_chat(user, span_notice("You add [W] to [src].")) - qdel(W) - build_step++ - update_appearance() - + if(!istype(item, /obj/item/bodypart/arm/left/robot) && !istype(item, /obj/item/bodypart/arm/right/robot)) + return + if(!can_finish_build(item, user)) + return + build_step++ + to_chat(user, span_notice("You add [item] to [src]. Boop beep!")) + qdel(item) + update_appearance() if(ASSEMBLY_SECOND_STEP) - if(istype(W, /obj/item/bodypart/arm/left/robot) || istype(W, /obj/item/bodypart/arm/right/robot)) - if(!can_finish_build(W, user)) - return - var/mob/living/simple_animal/bot/floorbot/A = new(drop_location(), toolbox_color) - A.name = created_name - A.robot_arm = W.type - A.toolbox = toolbox - to_chat(user, span_notice("You add [W] to [src]. Boop beep!")) - qdel(W) - qdel(src) + if(!istype(item, /obj/item/stack/conveyor)) + return + if(!can_finish_build(item, user)) + return + var/mob/living/basic/bot/repairbot/repair = new(drop_location()) + repair.name = created_name + repair.toolbox = toolbox + repair.set_color(toolbox_color) + to_chat(user, span_notice("You add [item] to [src]. Boop beep!")) + var/obj/item/stack/crafting_stack = item + var/atom/used_belt = crafting_stack.split_stack(user, 1) + qdel(used_belt) + qdel(src) //Medbot Assembly diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index df9db2defb173..81fad948ae12d 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -86,7 +86,7 @@ var/obj/projectile/fired_bullet = new projectile(loc) playsound(src, shoot_sound, 50, TRUE) - fired_bullet.preparePixelProjectile(target, src) + fired_bullet.aim_projectile(target, src) fired_bullet.fire() /mob/living/simple_animal/bot/secbot/ed209/emp_act(severity) diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm deleted file mode 100644 index ae17e58686c65..0000000000000 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ /dev/null @@ -1,448 +0,0 @@ -#define HULL_BREACH 1 -#define LINE_SPACE_MODE 2 -#define FIX_TILE 3 -#define AUTO_TILE 4 -#define PLACE_TILE 5 -#define REPLACE_TILE 6 -#define TILE_EMAG 7 - -//Floorbot -/mob/living/simple_animal/bot/floorbot - name = "\improper Floorbot" - desc = "A little floor repairing robot, he looks so excited!" - icon = 'icons/mob/silicon/aibots.dmi' - icon_state = "floorbot0" - density = FALSE - health = 25 - maxHealth = 25 - - req_one_access = list(ACCESS_ROBOTICS, ACCESS_CONSTRUCTION) - radio_key = /obj/item/encryptionkey/headset_eng - radio_channel = RADIO_CHANNEL_ENGINEERING - bot_type = FLOOR_BOT - hackables = "floor construction protocols" - path_image_color = "#FFA500" - possessed_message = "You are a floorbot! Repair the hull to the best of your ability!" - - var/process_type //Determines what to do when process_scan() receives a target. See process_scan() for details. - var/targetdirection - var/replacetiles = FALSE - var/placetiles = FALSE - var/maxtiles = 100 - var/obj/item/stack/tile/tilestack - var/fixfloors = TRUE - var/autotile = FALSE - var/turf/target - var/toolbox = /obj/item/storage/toolbox/mechanical - var/toolbox_color = "" - -/mob/living/simple_animal/bot/floorbot/Initialize(mapload, new_toolbox_color) - . = ..() - ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - toolbox_color = new_toolbox_color - update_appearance(UPDATE_ICON) - - // Doing this hurts my soul, but simplebot access reworks are for another day. - var/datum/id_trim/job/engi_trim = SSid_access.trim_singletons_by_path[/datum/id_trim/job/station_engineer] - access_card.add_access(engi_trim.access + engi_trim.wildcard_access) - prev_access = access_card.access.Copy() - - if(toolbox_color == "s") - health = 100 - maxHealth = 100 - -/mob/living/simple_animal/bot/floorbot/Exited(atom/movable/gone, direction) - if(tilestack == gone) - if(tilestack && tilestack.max_amount < tilestack.amount) //split the stack if it exceeds its normal max_amount - var/iterations = round(tilestack.amount/tilestack.max_amount) //round() without second arg floors the value - for(var/a in 1 to iterations) - if(a == iterations) - tilestack.split_stack(null, tilestack.amount - tilestack.max_amount) - else - tilestack.split_stack(null, tilestack.max_amount) - tilestack = null - -/mob/living/simple_animal/bot/floorbot/turn_on() - . = ..() - update_appearance() - -/mob/living/simple_animal/bot/floorbot/turn_off() - ..() - update_appearance() - -/mob/living/simple_animal/bot/floorbot/bot_reset() - ..() - target = null - toggle_magnet(FALSE) - -/mob/living/simple_animal/bot/floorbot/attackby(obj/item/W , mob/user, params) - if(istype(W, /obj/item/stack/tile/iron)) - to_chat(user, span_notice("The floorbot can produce normal tiles itself.")) - return - if(istype(W, /obj/item/stack/tile)) - var/old_amount = tilestack ? tilestack.amount : 0 - var/obj/item/stack/tile/tiles = W - if(tilestack) - if(!tiles.can_merge(tilestack)) - to_chat(user, span_warning("Different custom tiles are already inside the floorbot.")) - return - if(tilestack.amount >= maxtiles) - to_chat(user, span_warning("The floorbot can't hold any more custom tiles.")) - return - tiles.merge(tilestack, maxtiles) - else - if(tiles.amount > maxtiles) - tilestack = tilestack.split_stack(null, maxtiles) - else - tilestack = W - tilestack.forceMove(src) - to_chat(user, span_notice("You load [tilestack.amount - old_amount] tiles into the floorbot. It now contains [tilestack.amount] tiles.")) - return - else - ..() - -/mob/living/simple_animal/bot/floorbot/emag_act(mob/user, obj/item/card/emag/emag_card) - . = ..() - if(!(bot_cover_flags & BOT_COVER_EMAGGED)) - return - balloon_alert(user, "safeties disabled") - audible_message(span_danger("[src] buzzes oddly!")) - return TRUE - -///mobs should use move_resist instead of anchored. -/mob/living/simple_animal/bot/floorbot/proc/toggle_magnet(engage = TRUE, change_icon = TRUE) - if(engage) - ADD_TRAIT(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT) - move_resist = INFINITY - if(change_icon) - icon_state = "[toolbox_color]floorbot-c" - else - REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT) - move_resist = initial(move_resist) - if(change_icon) - update_icon() - -// Variables sent to TGUI -/mob/living/simple_animal/bot/floorbot/ui_data(mob/user) - var/list/data = ..() - if(!(bot_cover_flags & BOT_COVER_LOCKED) || HAS_SILICON_ACCESS(user)) - data["custom_controls"]["tile_hull"] = autotile - data["custom_controls"]["place_tiles"] = placetiles - data["custom_controls"]["place_custom"] = replacetiles - data["custom_controls"]["repair_damage"] = fixfloors - data["custom_controls"]["traction_magnets"] = !!HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT) - data["custom_controls"]["tile_stack"] = 0 - data["custom_controls"]["line_mode"] = FALSE - if(tilestack) - data["custom_controls"]["tile_stack"] = tilestack.amount - if(targetdirection) - data["custom_controls"]["line_mode"] = dir2text(targetdirection) - return data - -// Actions received from TGUI -/mob/living/simple_animal/bot/floorbot/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - var/mob/user = ui.user - if(. || (bot_cover_flags & BOT_COVER_LOCKED && !HAS_SILICON_ACCESS(user))) - return - - switch(action) - if("place_custom") - replacetiles = !replacetiles - if("place_tiles") - placetiles = !placetiles - if("repair_damage") - fixfloors = !fixfloors - if("tile_hull") - autotile = !autotile - if("traction_magnets") - toggle_magnet(!HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, BUSY_FLOORBOT_TRAIT), FALSE) - if("eject_tiles") - if(tilestack) - tilestack.forceMove(drop_location()) - if("line_mode") - var/setdir = tgui_input_list(user, "Select construction direction", "Direction", list("north", "east", "south", "west", "disable")) - if(isnull(setdir) || QDELETED(ui) || ui.status != UI_INTERACTIVE) - return - switch(setdir) - if("north") - targetdirection = 1 - if("south") - targetdirection = 2 - if("east") - targetdirection = 4 - if("west") - targetdirection = 8 - if("disable") - targetdirection = null - -/mob/living/simple_animal/bot/floorbot/handle_automated_action() - if(!..()) - return - - if(mode == BOT_REPAIRING) - return - - if(prob(5)) - audible_message("[src] makes an excited booping beeping sound!") - - var/list/tiles_scanned = list() - //Normal scanning procedure. We have tiles loaded, are not emagged. - if(!target && !(bot_cover_flags & BOT_COVER_EMAGGED)) - if(targetdirection != null) //The bot is in line mode. - var/turf/T = get_step(src, targetdirection) - if(isspaceturf(T)) //Check for space - target = T - process_type = LINE_SPACE_MODE - if(isfloorturf(T)) //Check for floor - target = T - if(!target) - process_type = HULL_BREACH //Ensures the floorbot does not try to "fix" space areas or shuttle docking zones. - - tiles_scanned += list(/turf/open/space) - - if(!target && placetiles) //Finds a floor without a tile and gives it one. - process_type = PLACE_TILE //The target must be the floor and not a tile. The floor must not already have a floortile. - tiles_scanned += list(/turf/open/floor) - - if(!target && fixfloors) //Repairs damaged floors and tiles. - process_type = FIX_TILE - tiles_scanned += list(/turf/open/floor) - - if(!target && replacetiles && tilestack) //Replace a floor tile with custom tile - process_type = REPLACE_TILE //The target must be a tile. The floor must already have a floortile. - tiles_scanned += list(/turf/open/floor) - - if(!target && bot_cover_flags & BOT_COVER_EMAGGED) //We are emagged! Time to rip up the floors! - process_type = TILE_EMAG - tiles_scanned += list(/turf/open/floor) - - target = scan(tiles_scanned) - - if (!target) - if(bot_mode_flags & BOT_MODE_AUTOPATROL) - switch(mode) - if(BOT_IDLE, BOT_START_PATROL) - start_patrol() - if(BOT_PATROL) - bot_patrol() - return - - if(loc == target || loc == get_turf(target)) - if(check_bot(target)) //Target is not defined at the parent - if(prob(50)) //50% chance to still try to repair so we dont end up with 2 floorbots failing to fix the last breach - target = null - path = list() - return - if(isturf(target) && !(bot_cover_flags & BOT_COVER_EMAGGED)) - repair(target) - else if(bot_cover_flags & BOT_COVER_EMAGGED && isfloorturf(target)) - var/turf/open/floor/floor = target - toggle_magnet() - mode = BOT_REPAIRING - if(isplatingturf(floor)) - floor.attempt_lattice_replacement() - else - floor.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - audible_message(span_danger("[src] makes an excited booping sound.")) - addtimer(CALLBACK(src, PROC_REF(go_idle)), 0.5 SECONDS) - path = list() - return - - if(!length(path)) - if(!isturf(target)) - var/turf/TL = get_turf(target) - path = get_path_to(src, TL, max_distance=30, access=access_card.GetAccess(), simulated_only = FALSE) - else - path = get_path_to(src, target, max_distance=30, access=access_card.GetAccess(), simulated_only = FALSE) - - if(!bot_move(target)) - add_to_ignore(target) - target = null - mode = BOT_IDLE - else if(!bot_move(target)) - target = null - mode = BOT_IDLE - -/mob/living/simple_animal/bot/floorbot/proc/go_idle() - if (QDELETED(src)) - return - toggle_magnet(FALSE) - mode = BOT_IDLE - target = null - -/mob/living/simple_animal/bot/floorbot/proc/is_hull_breach(turf/t) //Ignore space tiles not considered part of a structure, also ignores shuttle docking areas. - var/area/t_area = get_area(t) - if(t_area && (t_area.name == "Space" || findtext(t_area.name, "huttle"))) - return FALSE - else - return TRUE - -//Floorbots, having several functions, need sort out special conditions here. -/mob/living/simple_animal/bot/floorbot/process_scan(scan_target) - var/result - var/turf/open/floor/floor - move_resist = initial(move_resist) - switch(process_type) - if(HULL_BREACH) //The most common job, patching breaches in the station's hull. - if(is_hull_breach(scan_target)) //Ensure that the targeted space turf is actually part of the station, and not random space. - result = scan_target - move_resist = INFINITY //Prevent the floorbot being blown off-course while trying to reach a hull breach. - if(LINE_SPACE_MODE) //Space turfs in our chosen direction are considered. - if(get_dir(src, scan_target) == targetdirection) - result = scan_target - move_resist = INFINITY - if(PLACE_TILE) - floor = scan_target - if(isplatingturf(floor)) //The floor must not already have a tile. - result = floor - if(REPLACE_TILE) - floor = scan_target - if(isfloorturf(floor) && !isplatingturf(floor)) //The floor must already have a tile. - result = floor - if(FIX_TILE) //Selects only damaged floors. - floor = scan_target - if(istype(floor) && (floor.broken || floor.burnt)) - result = floor - if(TILE_EMAG) //Emag mode! Rip up the floor and cause breaches to space! - floor = scan_target - if(!isplatingturf(floor)) - result = floor - else //If no special processing is needed, simply return the result. - result = scan_target - return result - -/mob/living/simple_animal/bot/floorbot/proc/repair(turf/target_turf) - if(check_bot_working(target_turf)) - add_to_ignore(target_turf) - target = null - playsound(src, 'sound/mobs/non-humanoids/floorbot/whistlereset.ogg', 50, TRUE) - return - if(isspaceturf(target_turf)) - //Must be a hull breach or in line mode to continue. - if(!is_hull_breach(target_turf) && !targetdirection) - target = null - return - else if(!isfloorturf(target_turf)) - return - if(isspaceturf(target_turf)) //If we are fixing an area not part of pure space, it is - toggle_magnet() - visible_message(span_notice("[targetdirection ? "[src] begins installing a bridge plating." : "[src] begins to repair the hole."] ")) - mode = BOT_REPAIRING - if(!do_after(src, 5 SECONDS, target = target_turf) && mode == BOT_REPAIRING) - go_idle() - return - - if(!autotile) - target_turf.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) - go_idle() - return - - if(replacetiles && tilestack) - target_turf.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) //make sure a hull is actually below the floor tile - tilestack.place_tile(target_turf, src) - if(!tilestack) - speak("Requesting refill of custom floor tiles to continue replacing.") - else - target_turf.place_on_top(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) //make sure a hull is actually below the floor tile - target_turf.place_on_top(/turf/open/floor/iron, flags = CHANGETURF_INHERIT_AIR) - go_idle() - return - - var/turf/open/floor/floor = target_turf - var/was_replacing = replacetiles - - if(floor.broken || floor.burnt || isplatingturf(floor)) - toggle_magnet() - mode = BOT_REPAIRING - visible_message(span_notice("[src] begins [(floor.broken || floor.burnt) ? "repairing the floor" : "placing a floor tile"].")) - if(!do_after(src, 5 SECONDS, target = floor) && mode == BOT_REPAIRING) - go_idle() - return - else if(replacetiles && tilestack && floor.type != tilestack.turf_type) - toggle_magnet() - mode = BOT_REPAIRING - visible_message(span_notice("[src] begins replacing the floor tiles.")) - if(do_after(src, 5 SECONDS, target = target_turf) && mode == BOT_REPAIRING && tilestack) - go_idle() - return - - var/area/is_this_maints = get_area(floor) - if(was_replacing && tilestack) //turn the tile into plating (if needed), then replace it - floor = floor.make_plating(TRUE) || floor - tilestack.place_tile(floor, src) - if(!tilestack) - speak("Requesting refill of custom floor tiles to continue replacing.") - go_idle() - return - - if(floor.broken || floor.burnt) //repair the tile and reset it to be undamaged (rather than replacing it) - floor.broken = FALSE - floor.burnt = FALSE - floor.update_appearance() - go_idle() - return - - if(istype(is_this_maints, /area/station/maintenance)) //place catwalk if it's plating and we're in maints - floor.place_on_top(/turf/open/floor/catwalk_floor, flags = CHANGETURF_INHERIT_AIR) - go_idle() - return - - //place normal tile if it's plating anywhere else - floor = floor.make_plating(TRUE) || floor - floor.place_on_top(/turf/open/floor/iron, flags = CHANGETURF_INHERIT_AIR) - go_idle() - -/mob/living/simple_animal/bot/floorbot/update_icon_state() - . = ..() - icon_state = "[toolbox_color]floorbot[get_bot_flag(bot_mode_flags, BOT_MODE_ON)]" - -/mob/living/simple_animal/bot/floorbot/explode() - target = null - var/atom/Tsec = drop_location() - - drop_part(toolbox, Tsec) - - new /obj/item/assembly/prox_sensor(Tsec) - - if(tilestack) - tilestack.forceMove(drop_location()) - - new /obj/item/stack/tile/iron/base(Tsec, 1) - return ..() - -/mob/living/simple_animal/bot/floorbot/UnarmedAttack(atom/target, proximity_flag, list/modifiers) - if(!can_unarmed_attack()) - return - - if (!isturf(target)) - return ..() - - if(!(bot_cover_flags & BOT_COVER_EMAGGED) || !isfloorturf(target)) - repair(target) - return - - var/turf/open/floor/floor = target - if(isplatingturf(floor)) - floor.attempt_lattice_replacement() - else - floor.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - audible_message(span_danger("[src] makes an excited booping sound.")) - -/** - * Checks a given turf to see if another floorbot is there, working as well. - */ -/mob/living/simple_animal/bot/floorbot/proc/check_bot_working(turf/active_turf) - if(isturf(active_turf)) - for(var/mob/living/simple_animal/bot/floorbot/robot in active_turf) - if(robot.mode == BOT_REPAIRING) - return TRUE - return FALSE - -#undef HULL_BREACH -#undef LINE_SPACE_MODE -#undef FIX_TILE -#undef AUTO_TILE -#undef PLACE_TILE -#undef REPLACE_TILE -#undef TILE_EMAG diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 5e9018384bef6..e1117e3200f77 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -243,14 +243,14 @@ return TRUE -/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/Proj) +/mob/living/simple_animal/bot/mulebot/bullet_act(obj/projectile/proj) . = ..() if(. && !QDELETED(src)) //Got hit and not blown up yet. if(prob(50) && !isnull(load)) unload(0) if(prob(25)) visible_message(span_danger("Something shorts out inside [src]!")) - wires.cut_random(source = Proj.firer) + wires.cut_random(source = proj.firer) /mob/living/simple_animal/bot/mulebot/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 407e6070bae35..795390562b20b 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -297,15 +297,15 @@ update_appearance() return TRUE -/mob/living/simple_animal/bot/secbot/bullet_act(obj/projectile/Proj) +/mob/living/simple_animal/bot/secbot/bullet_act(obj/projectile/proj) . = ..() if(. != BULLET_ACT_HIT) return - if(istype(Proj, /obj/projectile/beam) || istype(Proj, /obj/projectile/bullet)) - if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) - if(Proj.is_hostile_projectile() && Proj.damage < src.health && ishuman(Proj.firer)) - retaliate(Proj.firer) + if(istype(proj, /obj/projectile/beam) || istype(proj, /obj/projectile/bullet)) + if((proj.damage_type == BURN) || (proj.damage_type == BRUTE)) + if(proj.is_hostile_projectile() && proj.damage < src.health && ishuman(proj.firer)) + retaliate(proj.firer) /mob/living/simple_animal/bot/secbot/UnarmedAttack(atom/attack_target, proximity_flag, list/modifiers) if(!(bot_mode_flags & BOT_MODE_ON)) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 201c83497dfd5..583f2ba1d6c9e 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -165,11 +165,11 @@ FindTarget(list(source)) return ..() -/mob/living/simple_animal/hostile/bullet_act(obj/projectile/P) +/mob/living/simple_animal/hostile/bullet_act(obj/projectile/proj) if(stat == CONSCIOUS && !target && AIStatus != AI_OFF && !client) - if(P.firer && get_dist(src, P.firer) <= aggro_vision_range) - FindTarget(list(P.firer)) - Goto(P.starting, move_to_delay, 3) + if(proj.firer && get_dist(src, proj.firer) <= aggro_vision_range) + FindTarget(list(proj.firer)) + Goto(proj.starting, move_to_delay, 3) return ..() //////////////HOSTILE MOB TARGETING AND AGGRESSION//////////// 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 ae3b10b11990a..1f544c0d322eb 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 @@ -106,7 +106,7 @@ Difficulty: Medium /obj/projectile/kinetic/miner damage = 20 - speed = 0.9 + speed = 1.1 icon_state = "ka_tracer" range = 4 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 f1e3461271359..248b73c6677cc 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -297,9 +297,9 @@ Difficulty: Hard if(.) recovery_time = world.time + 20 // can only attack melee once every 2 seconds but rapid_melee gives higher priority -/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/P) +/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/projectile/proj) if(BUBBLEGUM_IS_ENRAGED) - visible_message(span_danger("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!"), span_userdanger("You deflect the projectile!")) + visible_message(span_danger("[src] deflects the [proj]! [p_They()] can't be hit with ranged weapons while enraged!"), span_userdanger("You deflect the projectile!")) playsound(src, SFX_BULLET_MISS, 300, TRUE) return BULLET_ACT_BLOCK return ..() 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 3af739f736c0a..d921b5f5878b6 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -182,7 +182,7 @@ icon_state = "chronobolt" damage = 25 armour_penetration = 100 - speed = 2 + speed = 0.5 damage_type = BRUTE pass_flags = PASSTABLE plane = GAME_PLANE @@ -193,7 +193,7 @@ AddComponent(/datum/component/parriable_projectile) /obj/projectile/colossus/can_hit_target(atom/target, direct_target = FALSE, ignore_loc = FALSE, cross_failed = FALSE) - if(isliving(target)) + if(isliving(target) && target != firer) direct_target = TRUE return ..(target, direct_target, ignore_loc, cross_failed) @@ -278,12 +278,12 @@ ActivationReaction(user, ACTIVATE_WEAPON) ..() -/obj/machinery/anomalous_crystal/bullet_act(obj/projectile/P, def_zone) +/obj/machinery/anomalous_crystal/bullet_act(obj/projectile/proj, def_zone) . = ..() - if(istype(P, /obj/projectile/magic)) - ActivationReaction(P.firer, ACTIVATE_MAGIC, P.damage_type) + if(istype(proj, /obj/projectile/magic)) + ActivationReaction(proj.firer, ACTIVATE_MAGIC, proj.damage_type) return - ActivationReaction(P.firer, P.armor_flag, P.damage_type) + ActivationReaction(proj.firer, proj.armor_flag, proj.damage_type) /obj/machinery/anomalous_crystal/proc/ActivationReaction(mob/user, method, damtype) if(!COOLDOWN_FINISHED(src, cooldown_timer)) @@ -405,9 +405,9 @@ /obj/machinery/anomalous_crystal/emitter/ActivationReaction(mob/user, method) if(..()) - var/obj/projectile/P = new generated_projectile(get_turf(src)) - P.firer = src - P.fire(dir2angle(dir)) + var/obj/projectile/proj = new generated_projectile(get_turf(src)) + proj.firer = src + proj.fire(dir2angle(dir)) /obj/machinery/anomalous_crystal/dark_reprise //Revives anyone nearby, but turns them into shadowpeople and renders them uncloneable, so the crystal is your only hope of getting up again if you go down. observer_desc = "When activated, this crystal revives anyone nearby, but turns them into Shadowpeople and makes them unclonable, making the crystal their only hope of getting up again." diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm index 8c32b2a3c47d6..8cdf9141ab845 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm @@ -126,7 +126,7 @@ Difficulty: Extremely Hard if(FROST_MINER_SHOULD_ENRAGE) INVOKE_ASYNC(src, PROC_REF(check_enraged)) return COMPONENT_BLOCK_ABILITY_START - var/projectile_speed_multiplier = 1 - enraged * 0.5 + var/projectile_speed_multiplier = 1 + enraged frost_orbs.projectile_speed_multiplier = projectile_speed_multiplier snowball_machine_gun.projectile_speed_multiplier = projectile_speed_multiplier ice_shotgun.projectile_speed_multiplier = projectile_speed_multiplier @@ -198,8 +198,7 @@ Difficulty: Extremely Hard icon_state = "ice_1" damage = 20 armour_penetration = 100 - speed = 1 - pixel_speed_multiplier = 0.1 + speed = 0.1 range = 500 homing_turn_speed = 3 damage_type = BURN @@ -214,8 +213,7 @@ Difficulty: Extremely Hard icon_state = "nuclear_particle" damage = 5 armour_penetration = 100 - speed = 1 - pixel_speed_multiplier = 0.333 + speed = 0.33 range = 150 damage_type = BRUTE explode_hit_objects = FALSE @@ -225,8 +223,7 @@ Difficulty: Extremely Hard icon_state = "ice_2" damage = 15 armour_penetration = 100 - speed = 1 - pixel_speed_multiplier = 0.333 + speed = 0.33 range = 150 damage_type = BRUTE 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 f8569897accf1..0ea9819f71b7b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -237,7 +237,7 @@ desc = "An ash drakes true flame." name = "Fire Barrier" icon = 'icons/effects/fire.dmi' - icon_state = "1" + icon_state = "light" anchored = TRUE opacity = FALSE density = TRUE 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 9383718e7bd30..509ca49ab34ea 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -573,8 +573,8 @@ Difficulty: Hard if(mover == caster.pulledby) return if(isprojectile(mover)) - var/obj/projectile/P = mover - if(P.firer == caster) + var/obj/projectile/proj = mover + if(proj.firer == caster) return if(mover != caster) return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index a7db852492442..4643d529d495c 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -198,11 +198,10 @@ Difficulty: Hard /obj/projectile/colossus/wendigo_shockwave name = "wendigo shockwave" - speed = 2 - /// If wave movement is enabled - var/wave_movement = FALSE + speed = 0.5 + /// Amount the angle changes every pixel move - var/wave_speed = 15 + var/wave_speed = 0.5 /// Amount of movements this projectile has made var/pixel_moves = 0 @@ -210,18 +209,18 @@ Difficulty: Hard damage = 15 /obj/projectile/colossus/wendigo_shockwave/wave - speed = 8 - wave_movement = TRUE - wave_speed = 10 + speed = 0.125 + wave_speed = 0.3 /obj/projectile/colossus/wendigo_shockwave/wave/alternate - wave_speed = -10 + wave_speed = -0.3 -/obj/projectile/colossus/wendigo_shockwave/pixel_move(trajectory_multiplier, hitscanning = FALSE) +/obj/projectile/colossus/wendigo_shockwave/process_movement(pixels_to_move, hitscan, tile_limit) . = ..() - if(wave_movement) - pixel_moves++ - set_angle(original_angle + pixel_moves * wave_speed) + if (QDELETED(src)) + return + pixel_moves += . + set_angle(original_angle + pixel_moves * wave_speed) /obj/item/wendigo_blood name = "bottle of wendigo blood" 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 03d79c108d60d..5fbd6cda5cbfb 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 @@ -101,8 +101,8 @@ if(mover == set_target) return FALSE if(isprojectile(mover)) - var/obj/projectile/P = mover - if(P.firer == set_target) + var/obj/projectile/proj = mover + if(proj.firer == set_target) return FALSE #define IGNORE_PROC_IF_NOT_TARGET(X) /mob/living/simple_animal/hostile/asteroid/curseblob/##X(AM) { if (AM == set_target) return ..(); } @@ -119,9 +119,9 @@ IGNORE_PROC_IF_NOT_TARGET(attack_larva) IGNORE_PROC_IF_NOT_TARGET(attack_animal) -/mob/living/simple_animal/hostile/asteroid/curseblob/bullet_act(obj/projectile/Proj) - if(Proj.firer != set_target) - return +/mob/living/simple_animal/hostile/asteroid/curseblob/bullet_act(obj/projectile/proj) + if(proj.firer != set_target) + return BULLET_ACT_BLOCK return ..() /mob/living/simple_animal/hostile/asteroid/curseblob/attacked_by(obj/item/I, mob/living/L) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm index b12be32587e3d..48316d25020bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -135,7 +135,7 @@ H = new /obj/projectile/herald(startloc) else H = new /obj/projectile/herald/teleshot(startloc) - H.preparePixelProjectile(marker, startloc) + H.aim_projectile(marker, startloc) H.firer = src if(target) H.original = target @@ -228,7 +228,7 @@ icon_state= "chronobolt" damage = 20 armour_penetration = 60 - speed = 2 + speed = 0.5 damage_type = BRUTE pass_flags = PASSTABLE @@ -276,7 +276,7 @@ var/turf/startloc = get_turf(owner) var/obj/projectile/herald/H = null H = new /obj/projectile/herald(startloc) - H.preparePixelProjectile(marker, startloc) + H.aim_projectile(marker, startloc) H.firer = owner H.fire(set_angle) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm index 4853e0f3d019b..051733211ed3c 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -67,7 +67,7 @@ /datum/action/innate/elite_attack/bonfire_teleport name = "Bonfire Teleport" button_icon_state = "bonfire_teleport" - chosen_message = span_boldwarning("You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it.") + chosen_message = span_boldwarning("You will leave a bonfire. Second use will let you swap positions with it indefinitely. Using this move on the same tile as your active bonfire removes it.") chosen_attack_num = BONFIRE_TELEPORT /datum/action/innate/elite_attack/spew_smoke diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm index a44cae6f139f5..7f6a5c5cd36e3 100644 --- a/code/modules/mob/living/simple_animal/hostile/ooze.dm +++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm @@ -359,7 +359,7 @@ // Why is this in InterceptClickOn() and not Activate()? // Well, we need to use the params of the click intercept - // for passing into preparePixelProjectile, so we'll handle it here instead. + // for passing into aim_projectile, so we'll handle it here instead. // We just need to make sure Pre-activate and Activate return TRUE so we make it this far caller.visible_message( span_nicegreen("[caller] launches a mending globule!"), @@ -372,7 +372,7 @@ var/modifiers = params2list(params) var/obj/projectile/globule/globule = new(caller.loc) - globule.preparePixelProjectile(target, caller, modifiers) + globule.aim_projectile(target, caller, modifiers) globule.def_zone = caller.zone_selected globule.fire() diff --git a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm index 8eab28a52e6a5..56dcbcaf7e1fe 100644 --- a/code/modules/mob/living/simple_animal/hostile/vatbeast.dm +++ b/code/modules/mob/living/simple_animal/hostile/vatbeast.dm @@ -31,7 +31,13 @@ GRANT_ACTION(/datum/action/cooldown/tentacle_slap) add_cell_sample() - AddComponent(/datum/component/tameable, list(/obj/item/food/fries, /obj/item/food/cheesyfries, /obj/item/food/cornchips, /obj/item/food/carrotfries), tame_chance = 30, bonus_tame_chance = 0) + var/static/list/food_types = list( + /obj/item/food/fries, + /obj/item/food/cheesyfries, + /obj/item/food/cornchips, + /obj/item/food/carrotfries, + ) + AddComponent(/datum/component/tameable, food_types = food_types, tame_chance = 30, bonus_tame_chance = 0) /mob/living/simple_animal/hostile/vatbeast/tamed(mob/living/tamer, obj/item/food) buckle_lying = 0 diff --git a/code/modules/mob/living/sneeze.dm b/code/modules/mob/living/sneeze.dm index ebf6162083482..af638d7c71a77 100644 --- a/code/modules/mob/living/sneeze.dm +++ b/code/modules/mob/living/sneeze.dm @@ -53,7 +53,7 @@ suppressed = SUPPRESSED_VERY range = 4 - speed = 4 + speed = 0.25 spread = 40 damage_type = BRUTE damage = 0 diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 4efc847805f7f..11815d71b1220 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -424,12 +424,12 @@ ///////////////////////// CLEAR STATUS ///////////////////////// /mob/living/proc/adjust_status_effects_on_shake_up() - AdjustStun(-60) - AdjustKnockdown(-60) - AdjustUnconscious(-60) - AdjustSleeping(-100) - AdjustParalyzed(-60) - AdjustImmobilized(-60) + AdjustStun(-6 SECONDS) + AdjustKnockdown(-6 SECONDS) + AdjustUnconscious(-6 SECONDS) + AdjustSleeping(-10 SECONDS) + AdjustParalyzed(-6 SECONDS) + AdjustImmobilized(-6 SECONDS) ///////////////////////////////// FROZEN ///////////////////////////////////// diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index aae9434191ce3..36ff9c3ada7b5 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -277,7 +277,7 @@ hearers -= ignored_mobs //DOPPLER EDIT ADDITION BEGIN - AI QoL - for(var/mob/eye/ai_eye/ai_eye in hearers) + for(var/mob/eye/camera/ai/ai_eye in hearers) if(ai_eye.ai?.client && !(ai_eye.ai.stat == DEAD)) hearers -= ai_eye hearers |= ai_eye.ai @@ -357,7 +357,7 @@ var/list/hearers = get_hearers_in_view(hearing_distance, src) //DOPPLER EDIT ADDITION BEGIN - AI QoL - for(var/mob/eye/ai_eye/ai_eye in hearers) + for(var/mob/eye/camera/ai/ai_eye in hearers) if(ai_eye.ai?.client && !(ai_eye.ai.stat == DEAD)) hearers -= ai_eye hearers |= ai_eye.ai @@ -647,7 +647,7 @@ return /mob/living/handle_eye_contact(mob/living/examined_mob) - if(!istype(examined_mob) || src == examined_mob || examined_mob.stat >= UNCONSCIOUS || !client) + if(!istype(examined_mob) || src == examined_mob || examined_mob.stat >= UNCONSCIOUS || !client || is_blind()) return var/imagined_eye_contact = FALSE @@ -663,12 +663,16 @@ // check to see if their face is blocked or, if not, a signal blocks it if(examined_mob.is_face_visible() && SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT) - var/msg = span_smallnotice("You make eye contact with [examined_mob].") - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), src, msg), 0.3 SECONDS) // so the examine signal has time to fire and this will print after + var/obj/item/clothing/eye_cover = examined_mob.is_eyes_covered() + if (!eye_cover || (!eye_cover.tint && !eye_cover.flash_protect)) + var/msg = span_smallnotice("You make eye contact with [examined_mob].") + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), src, msg), 0.3 SECONDS) // so the examine signal has time to fire and this will print after - if(!imagined_eye_contact && is_face_visible() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT) - var/msg = span_smallnotice("[src] makes eye contact with you.") - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), examined_mob, msg), 0.3 SECONDS) + if(!imagined_eye_contact && is_face_visible() && !examined_mob.is_blind() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT) + var/obj/item/clothing/eye_cover = is_eyes_covered() + if (!eye_cover || (!eye_cover.tint && !eye_cover.flash_protect)) + var/msg = span_smallnotice("[src] makes eye contact with you.") + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), examined_mob, msg), 0.3 SECONDS) /** * Called by using Activate Held Object with an empty hand/limb @@ -917,9 +921,8 @@ return if(!selected_hand) - selected_hand = (active_hand_index % held_items.len)+1 - - if(istext(selected_hand)) + selected_hand = active_hand_index + else if(istext(selected_hand)) selected_hand = LOWER_TEXT(selected_hand) if(selected_hand == "right" || selected_hand == "r") selected_hand = 2 @@ -928,8 +931,9 @@ if(selected_hand != active_hand_index) swap_hand(selected_hand) - else - mode() + + // _queue_verb requires a client, so when we don't have it (AI controlled mob) we don't use it + client ? mode() : execute_mode() /mob/proc/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) //For sec bot threat assessment return 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index f79a1c10cc689..743bdad8c4511 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -281,6 +281,9 @@ if (SEND_SIGNAL(src, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, movement_dir, continuous_move, backup) & COMPONENT_PREVENT_SPACEMOVE_HALT) return FALSE + if (drift_handler?.attempt_halt(movement_dir, continuous_move, backup)) + return FALSE + if(continuous_move || !istype(backup) || !movement_dir || backup.anchored) return TRUE @@ -300,8 +303,9 @@ /** * Finds a target near a mob that is viable for pushing off when moving. * Takes the intended movement direction as input, alongside if the context is checking if we're allowed to continue drifting + * If include_floors is TRUE, includes floors *with gravity* */ -/mob/get_spacemove_backup(moving_direction, continuous_move) +/mob/get_spacemove_backup(moving_direction, continuous_move, include_floors = FALSE) var/atom/secondary_backup var/list/priority_dirs = (moving_direction in GLOB.cardinals) ? GLOB.cardinals : GLOB.diagonals for(var/atom/pushover as anything in range(1, get_turf(src))) @@ -309,13 +313,15 @@ continue if(isarea(pushover)) continue + var/is_priority = pushover.loc == loc || (get_dir(src, pushover) in priority_dirs) if(isturf(pushover)) var/turf/turf = pushover if(isspaceturf(turf)) continue if(!turf.density && !mob_negates_gravity()) - continue - if (get_dir(src, pushover) in priority_dirs) + if (!include_floors || !turf.has_gravity()) + continue + if (is_priority) return pushover secondary_backup = pushover continue @@ -335,21 +341,21 @@ if(rebound.last_pushoff == world.time) continue if(continuous_move && !pass_allowed) - var/datum/move_loop/move/rebound_engine = GLOB.move_manager.processing_on(rebound, SSnewtonian_movement) + var/datum/move_loop/smooth_move/rebound_engine = GLOB.move_manager.processing_on(rebound, SSnewtonian_movement) // If you're moving toward it and you're both going the same direction, stop - if(moving_direction == get_dir(src, pushover) && rebound_engine && moving_direction == rebound_engine.direction) + if(moving_direction == get_dir(src, pushover) && rebound_engine && moving_direction == angle2dir(rebound_engine.angle)) continue else if(!pass_allowed) if(moving_direction == get_dir(src, pushover)) // Can't push "off" of something that you're walking into continue if(rebound.anchored) - if (get_dir(src, rebound) in priority_dirs) + if (is_priority) return rebound secondary_backup = rebound continue if(pulling == rebound) continue - if (get_dir(src, rebound) in priority_dirs) + if (is_priority) return rebound secondary_backup = rebound return secondary_backup diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index ee4725075aadc..ecc3eaaedc241 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -26,7 +26,7 @@ return var/parts_to_check = parts - part if(part.loc == src) - if(!deploy(user, part) || (active && !delayed_seal_part(part))) + if(!deploy(user, part)) return SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user) for(var/obj/item/checking_part as anything in parts_to_check) @@ -35,7 +35,7 @@ choose_deploy(user) break else - if((active && !delayed_seal_part(part, silent = TRUE)) || !retract(user, part)) + if(!retract(user, part)) return SEND_SIGNAL(src, COMSIG_MOD_RETRACTED, user) for(var/obj/item/checking_part as anything in parts_to_check) @@ -64,12 +64,7 @@ if(deploy && part.loc == src) if(!deploy(null, part)) continue - if(active && !delayed_seal_part(part)) - retract(null, part) - return else if(!deploy && part.loc != src) - if(active && !delayed_seal_part(part)) - return retract(null, part) if(deploy) SEND_SIGNAL(src, COMSIG_MOD_DEPLOYED, user) @@ -78,7 +73,7 @@ return TRUE /// Deploys a part of the suit onto the user. -/obj/item/mod/control/proc/deploy(mob/user, obj/item/part) +/obj/item/mod/control/proc/deploy(mob/user, obj/item/part, instant = FALSE) var/datum/mod_part/part_datum = get_part_datum(part) if(!wearer) playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -86,7 +81,7 @@ if(part.loc != src) if(!user) return FALSE - balloon_alert(user, "[part.name] already deployed!") + balloon_alert(user, "already deployed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) if(part_datum.can_overslot) var/obj/item/overslot = wearer.get_item_by_slot(part.slot_flags) @@ -97,14 +92,21 @@ if(wearer.equip_to_slot_if_possible(part, part.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) ADD_TRAIT(part, TRAIT_NODROP, MOD_TRAIT) wearer.update_clothing(slot_flags) - if(!user) + SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part_datum) + if(user) + wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."), + span_notice("[part] deploy[part.p_s()] with a mechanical hiss."), + span_hear("You hear a mechanical hiss.")) + playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + if(!active || part_datum.sealed) return TRUE - wearer.visible_message(span_notice("[wearer]'s [part.name] deploy[part.p_s()] with a mechanical hiss."), - span_notice("[part] deploy[part.p_s()] with a mechanical hiss."), - span_hear("You hear a mechanical hiss.")) - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - SEND_SIGNAL(src, COMSIG_MOD_PART_DEPLOYED, user, part) - return TRUE + if(instant) + seal_part(part, is_sealed = TRUE) + return TRUE + else if(delayed_seal_part(part)) + return TRUE + balloon_alert(user, "can't seal, retracting!") + retract(user, part, instant = TRUE) else if(part_datum.overslotting) var/obj/item/overslot = part_datum.overslotting @@ -117,14 +119,21 @@ return FALSE /// Retract a part of the suit from the user. -/obj/item/mod/control/proc/retract(mob/user, obj/item/part) +/obj/item/mod/control/proc/retract(mob/user, obj/item/part, instant = FALSE) var/datum/mod_part/part_datum = get_part_datum(part) if(part.loc == src) if(!user) return FALSE - balloon_alert(user, "[part.name] already retracted!") + balloon_alert(user, "already retracted!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE + if(active && part_datum.sealed) + if(instant) + seal_part(part, is_sealed = FALSE) + else if(!delayed_seal_part(part)) + balloon_alert(user, "can't unseal!") + playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE REMOVE_TRAIT(part, TRAIT_NODROP, MOD_TRAIT) wearer.transferItemToLoc(part, src, force = TRUE) if(part_datum.overslotting) @@ -132,7 +141,7 @@ if(!QDELING(wearer) && !wearer.equip_to_slot_if_possible(overslot, overslot.slot_flags, qdel_on_fail = FALSE, disable_warning = TRUE)) wearer.dropItemToGround(overslot, force = TRUE, silent = TRUE) wearer.update_clothing(slot_flags) - SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part) + SEND_SIGNAL(src, COMSIG_MOD_PART_RETRACTED, user, part_datum) if(!user) return TRUE wearer.visible_message(span_notice("[wearer]'s [part.name] retract[part.p_s()] back into [src] with a mechanical hiss."), @@ -145,7 +154,7 @@ /obj/item/mod/control/proc/toggle_activate(mob/user, force_deactivate = FALSE) if(!wearer) if(!force_deactivate) - balloon_alert(user, "equip suit first!") + balloon_alert(user, "not equipped!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(!force_deactivate && (SEND_SIGNAL(src, COMSIG_MOD_ACTIVATE, user) & MOD_CANCEL_ACTIVATE)) @@ -156,16 +165,16 @@ playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(!get_charge() && !force_deactivate) - balloon_alert(user, "suit not powered!") + balloon_alert(user, "no power source!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(open && !force_deactivate) - balloon_alert(user, "close the suit panel!") + balloon_alert(user, "panel open!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(activating) if(!force_deactivate) - balloon_alert(user, "suit already [active ? "shutting down" : "starting up"]!") + balloon_alert(user, "already [active ? "shutting down" : "starting up"]!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE for(var/obj/item/mod/module/module as anything in modules) @@ -221,13 +230,12 @@ SEND_SIGNAL(src, COMSIG_MOD_TOGGLED, user) return TRUE -/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part, silent = FALSE) +/obj/item/mod/control/proc/delayed_seal_part(obj/item/clothing/part) . = FALSE var/datum/mod_part/part_datum = get_part_datum(part) if(do_after(wearer, activation_step_time, wearer, MOD_ACTIVATION_STEP_FLAGS, extra_checks = CALLBACK(src, PROC_REF(get_wearer)), hidden = TRUE)) - if(!silent) - to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message].")) - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + to_chat(wearer, span_notice("[part] [!part_datum.sealed ? part_datum.sealed_message : part_datum.unsealed_message].")) + playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) seal_part(part, is_sealed = !part_datum.sealed) return TRUE @@ -262,6 +270,7 @@ wearer.update_obscured_slots(part.visor_flags_inv) if((part.clothing_flags & (MASKINTERNALS|HEADINTERNALS)) && wearer.invalid_internals()) wearer.cutoff_internals() + SEND_SIGNAL(src, COMSIG_MOD_PART_SEALED, part_datum) if(is_sealed) if (!active) return @@ -308,12 +317,8 @@ /// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits. /obj/item/mod/control/proc/quick_activation() - for(var/obj/item/part as anything in get_parts()) - deploy(null, part) - for(var/obj/item/part as anything in get_parts()) - if(part.loc == src) - continue - seal_part(part, is_sealed = TRUE) control_activation(is_on = TRUE) + for(var/obj/item/part as anything in get_parts()) + deploy(null, part, instant = TRUE) #undef MOD_ACTIVATION_STEP_FLAGS diff --git a/code/modules/mod/mod_ai.dm b/code/modules/mod/mod_ai.dm index 1336ff1707449..62e9188fddd1a 100644 --- a/code/modules/mod/mod_ai.dm +++ b/code/modules/mod/mod_ai.dm @@ -3,19 +3,19 @@ if(!.) return if(!open) //mod must be open - balloon_alert(user, "suit must be open to transfer!") + balloon_alert(user, "panel closed!") return switch(interaction) if(AI_TRANS_TO_CARD) if(!ai_assistant) - balloon_alert(user, "no ai in suit!") + balloon_alert(user, "no ai in unit!") return balloon_alert(user, "transferring to card...") if(!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return if(!ai_assistant) - balloon_alert(user, "no ai in suit!") + balloon_alert(user, "no ai in unit!") return balloon_alert(user, "ai transferred to card") ai_exit_mod(card) @@ -33,13 +33,13 @@ if(intAI.stat || !intAI.client) balloon_alert(user, "ai unresponsive!") return - balloon_alert(user, "transferring to suit...") + balloon_alert(user, "transferring to unit...") if(!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return if(ai_assistant) return - balloon_alert(user, "ai transferred to suit") + balloon_alert(user, "ai transferred to unit") ai_enter_mod(intAI) card.AI = null @@ -74,14 +74,14 @@ if (isnull(card.pai?.mind)) balloon_alert(user, "pAI unresponsive!") return FALSE - balloon_alert(user, "transferring to suit...") + balloon_alert(user, "transferring to unit...") if (!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return FALSE if (!user.transferItemToLoc(card, src)) balloon_alert(user, "transfer failed!") return FALSE - balloon_alert(user, "pAI transferred to suit") + balloon_alert(user, "pAI transferred to unit") var/mob/living/silicon/pai/pai_assistant = card.pai pai_assistant.can_transmit = TRUE pai_assistant.can_receive = TRUE @@ -99,14 +99,14 @@ return FALSE if (!forced) if (!open) - balloon_alert(user, "suit panel closed!") + balloon_alert(user, "panel closed!") return FALSE balloon_alert(user, "uninstalling card...") if (!do_after(user, 5 SECONDS, target = src)) balloon_alert(user, "interrupted!") return FALSE - balloon_alert(user, "pAI removed from suit") + balloon_alert(user, "pAI removed") var/mob/living/silicon/pai/pai_helper = ai_assistant pai_helper.can_holo = TRUE pai_helper.card.forceMove(get_turf(src)) @@ -115,7 +115,7 @@ /// Called when a new ai assistant is inserted /obj/item/mod/control/proc/on_gained_assistant(mob/living/silicon/new_helper) ai_assistant = new_helper - balloon_alert(new_helper, "transferred to a suit") + balloon_alert(new_helper, "transferred to a mod unit") for(var/datum/action/action as anything in actions) action.Grant(new_helper) @@ -134,7 +134,10 @@ #define AI_FALL_TIME (1 SECONDS) /obj/item/mod/control/relaymove(mob/user, direction) - if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE)) + if((!active && wearer) || get_charge() < CHARGE_PER_STEP || user != ai_assistant || !COOLDOWN_FINISHED(src, cooldown_mod_move) || (wearer?.pulledby?.grab_state > GRAB_PASSIVE)) + return FALSE + var/datum/mod_part/legs_to_move = get_part_datum_from_slot(ITEM_SLOT_FEET) + if(wearer && (!legs_to_move || !legs_to_move.sealed)) return FALSE var/timemodifier = MOVE_DELAY * (ISDIAGONALDIR(direction) ? sqrt(2) : 1) * (wearer ? WEARER_DELAY : LONE_DELAY) if(wearer && !wearer.Process_Spacemove(direction)) @@ -147,7 +150,7 @@ if(ismovable(wearer?.loc)) return wearer.loc.relaymove(wearer, direction) else if(wearer) - ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT) + ADD_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src)) addtimer(CALLBACK(src, PROC_REF(ai_fall)), AI_FALL_TIME, TIMER_UNIQUE | TIMER_OVERRIDE) var/atom/movable/mover = wearer || src return mover.try_step_multiz(direction) @@ -160,7 +163,7 @@ /obj/item/mod/control/proc/ai_fall() if(!wearer) return - REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, MOD_TRAIT) + REMOVE_TRAIT(wearer, TRAIT_FORCED_STANDING, REF(src)) /obj/item/mod/ai_minicard name = "AI mini-card" diff --git a/code/modules/mod/mod_clothes.dm b/code/modules/mod/mod_clothes.dm index 29377c66c6da4..7c63655dee86c 100644 --- a/code/modules/mod/mod_clothes.dm +++ b/code/modules/mod/mod_clothes.dm @@ -11,6 +11,11 @@ cold_protection = HEAD item_flags = IMMUTABLE_SLOW +// Even without a hat stabilizer, hats can be worn - however, they'll fall off very easily +/obj/item/clothing/head/mod/Initialize(mapload) + . = ..() + AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) + /obj/item/clothing/suit/mod name = "MOD chestplate" desc = "A chestplate for a MODsuit." @@ -44,6 +49,7 @@ cold_protection = HANDS|ARMS item_flags = IMMUTABLE_SLOW equip_sound = null + pickup_sound = null drop_sound = null /obj/item/clothing/shoes/mod diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm index 16ce70df94563..3581c04e606a9 100644 --- a/code/modules/mod/mod_construction.dm +++ b/code/modules/mod/mod_construction.dm @@ -162,7 +162,7 @@ if(!istype(part, /obj/item/mod/core)) return if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "core stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "core inserted") @@ -181,7 +181,7 @@ if(SCREWED_CORE_STEP) if(istype(part, /obj/item/mod/construction/helmet)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "helmet stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "helmet added") @@ -194,7 +194,7 @@ if(HELMET_STEP) if(istype(part, /obj/item/mod/construction/chestplate)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "chestplate stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "chestplate added") @@ -209,7 +209,7 @@ if(CHESTPLATE_STEP) if(istype(part, /obj/item/mod/construction/gauntlets)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "gauntlets stuck to your hand!") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) balloon_alert(user, "gauntlets added") @@ -224,10 +224,10 @@ if(GAUNTLETS_STEP) if(istype(part, /obj/item/mod/construction/boots)) //Construct if(!user.transferItemToLoc(part, src)) - balloon_alert(user, "boots added") + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) - balloon_alert(user, "fit [part.name]") + balloon_alert(user, "boots added") boots = part step = BOOTS_STEP else if(part.tool_behaviour == TOOL_CROWBAR) //Deconstruct @@ -260,13 +260,14 @@ if(istype(part, /obj/item/mod/construction/plating)) //Construct var/obj/item/mod/construction/plating/external_plating = part if(!user.transferItemToLoc(part, src)) + balloon_alert(user, "it's stuck!") return playsound(src, 'sound/machines/click.ogg', 30, TRUE) var/obj/item/mod = new /obj/item/mod/control(drop_location(), external_plating.theme, null, core) core = null qdel(src) user.put_in_hands(mod) - mod.balloon_alert(user, "suit finished") + mod.balloon_alert(user, "unit finished") else if(part.tool_behaviour == TOOL_SCREWDRIVER) //Construct if(part.use_tool(src, user, 0, volume=30)) balloon_alert(user, "assembly unscrewed") diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 0f521e40691f4..8d5c5c209540d 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -97,7 +97,6 @@ theme.set_up_parts(src, new_skin) for(var/obj/item/part as anything in get_parts()) RegisterSignal(part, COMSIG_ATOM_DESTRUCTION, PROC_REF(on_part_destruction)) - RegisterSignal(part, COMSIG_QDELETING, PROC_REF(on_part_deletion)) set_wires(new /datum/wires/mod(src)) if(length(req_access)) locked = TRUE @@ -118,14 +117,19 @@ QDEL_NULL(core) QDEL_NULL(mod_link) for(var/datum/mod_part/part_datum as anything in get_part_datums(all = TRUE)) + var/obj/item/part_item = part_datum.part_item part_datum.part_item = null part_datum.overslotting = null + mod_parts -= part_datum + if(!QDELING(part_item)) + qdel(part_item) return ..() /obj/item/mod/control/atom_destruction(damage_flag) + var/atom/visible_atom = wearer || src if(wearer) - wearer.visible_message(span_danger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE) clean_up() + visible_atom.visible_message(span_bolddanger("[src] fall[p_s()] apart, completely destroyed!"), vision_distance = COMBAT_MESSAGE_RANGE) for(var/obj/item/mod/module/module as anything in modules) uninstall(module) if(ai_assistant) @@ -220,12 +224,12 @@ if(user != wearer) return ..() if(active) - balloon_alert(wearer, "deactivate the suit first!") + balloon_alert(wearer, "unit active!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return for(var/obj/item/part as anything in get_parts()) if(part.loc != src) - balloon_alert(user, "retract parts first!") + balloon_alert(user, "parts extended!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return FALSE @@ -233,12 +237,12 @@ if(user != wearer || !istype(over_object, /atom/movable/screen/inventory/hand)) return if(active) - balloon_alert(wearer, "deactivate the suit first!") + balloon_alert(wearer, "unit active!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return for(var/obj/item/part as anything in get_parts()) if(part.loc != src) - balloon_alert(wearer, "retract parts first!") + balloon_alert(wearer, "parts extended!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, FALSE, SILENCED_SOUND_EXTRARANGE) return if(!wearer.incapacitated) @@ -266,14 +270,15 @@ /obj/item/mod/control/screwdriver_act(mob/living/user, obj/item/screwdriver) if(active || activating || ai_controller) - balloon_alert(user, "deactivate suit first!") + balloon_alert(user, "unit active!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING balloon_alert(user, "[open ? "closing" : "opening"] cover...") screwdriver.play_tool_sound(src, 100) if(screwdriver.use_tool(src, user, 1 SECONDS)) if(active || activating) - balloon_alert(user, "deactivate suit first!") + balloon_alert(user, "unit active!") + return ITEM_INTERACT_SUCCESS screwdriver.play_tool_sound(src, 100) balloon_alert(user, "cover [open ? "closed" : "opened"]") open = !open @@ -283,7 +288,7 @@ /obj/item/mod/control/crowbar_act(mob/living/user, obj/item/crowbar) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING if(!allowed(user)) @@ -315,14 +320,14 @@ /obj/item/mod/control/tool_act(mob/living/user, obj/item/tool, list/modifiers) if(istype(tool, /obj/item/pai_card)) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") return NONE // shoves the card in the storage anyways insert_pai(user, tool) return ITEM_INTERACT_SUCCESS if(istype(tool, /obj/item/mod/paint)) var/obj/item/mod/paint/paint_kit = tool if(active || activating) - balloon_alert(user, "suit is active!") + balloon_alert(user, "unit active!") return ITEM_INTERACT_BLOCKING if(LAZYACCESS(modifiers, RIGHT_CLICK)) // Right click if(paint_kit.editing_mod == src) @@ -341,7 +346,7 @@ return ITEM_INTERACT_SUCCESS if(istype(tool, /obj/item/mod/module)) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING install(tool, user) @@ -349,11 +354,11 @@ return ITEM_INTERACT_SUCCESS if(istype(tool, /obj/item/mod/core)) if(!open) - balloon_alert(user, "open the cover first!") + balloon_alert(user, "cover closed!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING if(core) - balloon_alert(user, "core already installed!") + balloon_alert(user, "already has core!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return ITEM_INTERACT_BLOCKING var/obj/item/mod/core/attacking_core = tool @@ -385,7 +390,7 @@ /obj/item/mod/control/emag_act(mob/user, obj/item/card/emag/emag_card) locked = !locked - balloon_alert(user, "suit access [locked ? "locked" : "unlocked"]") + balloon_alert(user, "access [locked ? "locked" : "unlocked"]") return TRUE /obj/item/mod/control/emp_act(severity) @@ -445,12 +450,11 @@ CRASH("get_part_datum called with incorrect item [part] passed.") /obj/item/mod/control/proc/get_part_from_slot(slot) - slot = "[slot]" - for(var/part_slot in mod_parts) - if(slot != part_slot) - continue - var/datum/mod_part/part = mod_parts[part_slot] - return part.part_item + var/datum/mod_part/part = mod_parts["[slot]"] + return part?.part_item + +/obj/item/mod/control/proc/get_part_datum_from_slot(slot) + return mod_parts["[slot]"] /obj/item/mod/control/proc/set_wearer(mob/living/carbon/human/user) if(wearer == user) @@ -511,7 +515,9 @@ for(var/obj/item/part as anything in get_parts()) seal_part(part, is_sealed = FALSE) for(var/obj/item/part as anything in get_parts()) - retract(null, part) + if(part.loc == src) + continue + INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after if(active) control_activation(is_on = FALSE) mod_link?.end_call() @@ -519,7 +525,7 @@ unset_wearer() old_wearer.temporarilyRemoveItemFromInventory(src) -/obj/item/mod/control/proc/on_species_gain(datum/source, datum/species/new_species, datum/species/old_species) +/obj/item/mod/control/proc/on_species_gain(datum/source, datum/species/new_species, datum/species/old_species, pref_load, regenerate_icons) SIGNAL_HANDLER for(var/obj/item/part in get_parts(all = TRUE)) @@ -579,24 +585,24 @@ for(var/obj/item/mod/module/old_module as anything in modules) if(is_type_in_list(new_module, old_module.incompatible_modules) || is_type_in_list(old_module, new_module.incompatible_modules)) if(user) - balloon_alert(user, "[new_module] incompatible with [old_module]!") + balloon_alert(user, "incompatible with [old_module]!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return var/complexity_with_module = complexity complexity_with_module += new_module.complexity if(complexity_with_module > complexity_max) if(user) - balloon_alert(user, "[new_module] would make [src] too complex!") + balloon_alert(user, "above complexity max!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return if(!new_module.has_required_parts(mod_parts)) if(user) - balloon_alert(user, "[new_module] incompatible with [src]'s parts!") + balloon_alert(user, "lacking required parts!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return if(!new_module.can_install(src)) if(user) - balloon_alert(user, "[new_module] cannot be installed into [src]!") + balloon_alert(user, "can't install!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return new_module.forceMove(src) @@ -661,6 +667,12 @@ /obj/item/mod/control/proc/check_charge(amount) return core?.check_charge(amount) || FALSE +/obj/item/mod/control/proc/get_chargebar_color() + return core?.get_chargebar_color() || "transparent" + +/obj/item/mod/control/proc/get_chargebar_string() + return core?.get_chargebar_string() || "No Core Detected" + /** * Updates the wearer's hud according to the current state of the MODsuit */ @@ -706,6 +718,9 @@ uninstall(part) return if(part in get_parts()) + if(QDELING(part) && !QDELING(src)) + qdel(src) + return var/datum/mod_part/part_datum = get_part_datum(part) if(part_datum.sealed) seal_part(part, is_sealed = FALSE) @@ -714,7 +729,7 @@ if(!wearer) part.forceMove(src) return - retract(wearer, part) + INVOKE_ASYNC(src, PROC_REF(retract), wearer, part, /* instant = */ TRUE) // async to appease spaceman DMM because the branch we don't run has a do_after /obj/item/mod/control/proc/on_part_destruction(obj/item/part, damage_flag) SIGNAL_HANDLER @@ -723,14 +738,6 @@ return atom_destruction(damage_flag) -/obj/item/mod/control/proc/on_part_deletion(obj/item/part) - SIGNAL_HANDLER - - if(QDELING(src)) - return - part.moveToNullspace() - qdel(src) - /obj/item/mod/control/proc/on_overslot_exit(obj/item/part, atom/movable/overslot, direction) SIGNAL_HANDLER @@ -750,7 +757,7 @@ to_chat(user, span_warning("It's too dangerous to smear [speed_potion] on [src] while it's active!")) return SPEED_POTION_STOP to_chat(user, span_notice("You slather the red gunk over [src], making it faster.")) - set_mod_color(COLOR_RED) + set_mod_color(color_transition_filter(COLOR_RED)) slowdown_inactive = 0 slowdown_active = 0 update_speed() diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index 79a8eff5e290a..01e0902b6b03c 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -25,30 +25,45 @@ mod.update_charge_alert() mod = null +/// Returns the item responsible for charging the suit, like a power cell, an ethereal's stomach, the core itself, etc. /obj/item/mod/core/proc/charge_source() return +/// Returns the amount of charge in the core. /obj/item/mod/core/proc/charge_amount() return 0 +/// Returns the max amount of charge stored in the core. /obj/item/mod/core/proc/max_charge_amount() return 1 +/// Adds a set amount of charge to the core. /obj/item/mod/core/proc/add_charge(amount) return FALSE +/// Subtracts a set amount of charge from the core. /obj/item/mod/core/proc/subtract_charge(amount) return FALSE +/// Checks if there's enough charge in the core to use an amount of energy. /obj/item/mod/core/proc/check_charge(amount) return FALSE -/** - * Gets what icon state to display on the HUD for the charge level of this core - */ +/// Returns what icon state to display on the HUD for the charge level of this core /obj/item/mod/core/proc/get_charge_icon_state() return "0" +/// Gets what the UI should use for the charge bar color. +/obj/item/mod/core/proc/get_chargebar_color() + return "bad" + +/// Gets what the UI should use for the charge bar text. +/obj/item/mod/core/proc/get_chargebar_string() + var/charge_amount = charge_amount() + var/max_charge_amount = max_charge_amount() + return "[display_energy(charge_amount)] of [display_energy(max_charge_amount())] \ + ([round((100 * charge_amount) / max_charge_amount, 1)]%)" + /obj/item/mod/core/infinite name = "MOD infinite core" icon_state = "mod-core-infinite" @@ -76,6 +91,12 @@ /obj/item/mod/core/infinite/get_charge_icon_state() return "high" +/obj/item/mod/core/infinite/get_chargebar_color() + return "teal" + +/obj/item/mod/core/infinite/get_chargebar_string() + return "Infinite" + /obj/item/mod/core/standard name = "MOD standard core" icon_state = "mod-core-standard" @@ -163,6 +184,22 @@ return "empty" +/obj/item/mod/core/standard/get_chargebar_color() + if(isnull(charge_source())) + return "transparent" + switch(round(charge_amount() / max_charge_amount(), 0.01)) + if(-INFINITY to 0.33) + return "bad" + if(0.33 to 0.66) + return "average" + if(0.66 to INFINITY) + return "good" + +/obj/item/mod/core/standard/get_chargebar_string() + if(isnull(charge_source())) + return "Power Cell Missing" + return ..() + /obj/item/mod/core/standard/proc/install_cell(new_cell) cell = new_cell cell.forceMove(src) @@ -222,11 +259,11 @@ if(!istype(attacking_item, /obj/item/stock_parts/power_store/cell)) return FALSE if(!mod.open) - mod.balloon_alert(user, "open the cover first!") + mod.balloon_alert(user, "cover closed!") playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE if(cell) - mod.balloon_alert(user, "cell already installed!") + mod.balloon_alert(user, "already has cell!") playsound(mod, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) return FALSE install_cell(attacking_item) @@ -260,7 +297,9 @@ name = "MOD ethereal core" icon_state = "mod-core-ethereal" desc = "A reverse engineered core of a Modular Outerwear Device. Using natural liquid electricity from Ethereals, \ - preventing the need to use external sources to convert electric charge." + preventing the need to use external sources to convert electric charge. As the suits are naturally charged by \ + liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \ + times less energy usage." /// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits. var/charge_modifier = 0.1 @@ -279,22 +318,41 @@ /obj/item/mod/core/ethereal/add_charge(amount) var/obj/item/organ/stomach/ethereal/charge_source = charge_source() - if(!charge_source) + if(isnull(charge_source)) return FALSE - charge_source.adjust_charge(amount*charge_modifier) + charge_source.adjust_charge(amount * charge_modifier) return TRUE /obj/item/mod/core/ethereal/subtract_charge(amount) var/obj/item/organ/stomach/ethereal/charge_source = charge_source() - if(!charge_source) + if(isnull(charge_source)) return FALSE - return -charge_source.adjust_charge(-amount*charge_modifier) + return -charge_source.adjust_charge(-amount * charge_modifier) /obj/item/mod/core/ethereal/check_charge(amount) - return charge_amount() >= amount*charge_modifier + return charge_amount() >= amount * charge_modifier /obj/item/mod/core/ethereal/get_charge_icon_state() - return charge_source() ? "0" : "missing" + return isnull(charge_source()) ? "missing" : "0" + +/obj/item/mod/core/ethereal/get_chargebar_color() + if(isnull(charge_source())) + return "transparent" + switch(charge_amount()) + if(-INFINITY to ETHEREAL_CHARGE_LOWPOWER) + return "bad" + if(ETHEREAL_CHARGE_LOWPOWER to ETHEREAL_CHARGE_NORMAL) + return "average" + if(ETHEREAL_CHARGE_NORMAL to ETHEREAL_CHARGE_FULL) + return "good" + if(ETHEREAL_CHARGE_FULL to INFINITY) + return "teal" + +/obj/item/mod/core/ethereal/get_chargebar_string() + var/obj/item/organ/stomach/ethereal/charge_source = charge_source() + if(isnull(charge_source()) || isnull(charge_source.cell)) + return "Biological Battery Missing" + return ..() #define PLASMA_CORE_ORE_CHARGE (1.5 * STANDARD_CELL_CHARGE) #define PLASMA_CORE_SHEET_CHARGE (2 * STANDARD_CELL_CHARGE) @@ -355,6 +413,13 @@ return "empty" +/obj/item/mod/core/plasma/get_chargebar_color() + switch(round(charge_amount() / max_charge_amount(), 0.01)) + if(-INFINITY to 0.33) + return "bad" + if(0.33 to INFINITY) + return "purple" + /obj/item/mod/core/plasma/proc/on_mod_interaction(datum/source, mob/living/user, obj/item/thing) SIGNAL_HANDLER diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index e7a5a20d9f370..a93ebec8b570c 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -213,7 +213,7 @@ if(!user.transferItemToLoc(attacked_by, src)) return cell = attacked_by - balloon_alert(user, "installed [cell.name]") + balloon_alert(user, "cell installed") /obj/item/clothing/neck/link_scryer/update_name(updates) . = ..() @@ -227,7 +227,7 @@ /obj/item/clothing/neck/link_scryer/attack_hand_secondary(mob/user, list/modifiers) if(!cell) return SECONDARY_ATTACK_CONTINUE_CHAIN - balloon_alert(user, "removed [cell.name]") + balloon_alert(user, "cell removed") user.put_in_hands(cell) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN @@ -409,7 +409,7 @@ if(!link_user) return if(HAS_TRAIT(link_user, TRAIT_IN_CALL)) - holder.balloon_alert(user, "user already in call!") + holder.balloon_alert(user, "already calling!") return var/mob/living/link_target = called.get_user_callback.Invoke() if(!link_target) @@ -511,6 +511,7 @@ desc = "Someone is calling you! Left-click this to accept the call. Right-click to deny it." icon_state = "called" timeout = 10 SECONDS + clickable_glow = TRUE var/end_message = "call timed out!" /// A weak reference to the MODlink that is calling. var/datum/weakref/caller_ref diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm index e3e42e55f613c..2f658e9df2470 100644 --- a/code/modules/mod/mod_paint.dm +++ b/code/modules/mod/mod_paint.dm @@ -153,10 +153,10 @@ return NONE var/obj/item/mod/control/mod = attacked_atom if(mod.active || mod.activating) - balloon_alert(user, "suit is active!") + balloon_alert(user, "unit active!") return ITEM_INTERACT_BLOCKING if(!(skin in mod.theme.variants)) - balloon_alert(user, "incompatible theme!") + balloon_alert(user, "wrong theme for skin!") return ITEM_INTERACT_BLOCKING mod.theme.set_skin(mod, skin) balloon_alert(user, "skin applied") diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index 76f9063df0b9c..706bdb802696a 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -316,6 +316,7 @@ slowdown_active = 1 allowed_suit_storage = list( /obj/item/analyzer, + /obj/item/extinguisher, /obj/item/fireaxe/metal_h2_axe, /obj/item/pipe_dispenser, /obj/item/t_scanner, diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 626144bf3e114..91fb00c633b06 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -467,43 +467,43 @@ ) /// The insignia type, insignias show what sort of member of the ERT you're dealing with. var/insignia_type = /obj/item/mod/module/insignia - /// Additional module we add, as a treat. - var/additional_module + /// Additional module (or modules if list) we add, as a treat. + var/additional_modules /obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin, new_core) applied_modules.Insert(1, insignia_type) - if(additional_module) - applied_modules += additional_module - default_pins += additional_module + if(additional_modules) + applied_modules += additional_modules + default_pins += additional_modules return ..() /obj/item/mod/control/pre_equipped/responsory/commander insignia_type = /obj/item/mod/module/insignia/commander - additional_module = /obj/item/mod/module/power_kick + additional_modules = /obj/item/mod/module/power_kick /obj/item/mod/control/pre_equipped/responsory/security insignia_type = /obj/item/mod/module/insignia/security - additional_module = /obj/item/mod/module/pepper_shoulders + additional_modules = /obj/item/mod/module/pepper_shoulders /obj/item/mod/control/pre_equipped/responsory/engineer insignia_type = /obj/item/mod/module/insignia/engineer - additional_module = /obj/item/mod/module/rad_protection + additional_modules = /obj/item/mod/module/rad_protection /obj/item/mod/control/pre_equipped/responsory/medic insignia_type = /obj/item/mod/module/insignia/medic - additional_module = /obj/item/mod/module/quick_carry + additional_modules = /obj/item/mod/module/quick_carry /obj/item/mod/control/pre_equipped/responsory/janitor insignia_type = /obj/item/mod/module/insignia/janitor - additional_module = /obj/item/mod/module/noslip + additional_modules = list(/obj/item/mod/module/noslip, /obj/item/mod/module/mister/cleaner) /obj/item/mod/control/pre_equipped/responsory/clown insignia_type = /obj/item/mod/module/insignia/clown - additional_module = /obj/item/mod/module/bikehorn + additional_modules = /obj/item/mod/module/bikehorn /obj/item/mod/control/pre_equipped/responsory/chaplain insignia_type = /obj/item/mod/module/insignia/chaplain - additional_module = /obj/item/mod/module/injector + additional_modules = /obj/item/mod/module/injector /obj/item/mod/control/pre_equipped/responsory/inquisitory applied_skin = "inquisitory" @@ -538,19 +538,19 @@ /obj/item/mod/control/pre_equipped/responsory/inquisitory/commander insignia_type = /obj/item/mod/module/insignia/commander - additional_module = /obj/item/mod/module/power_kick + additional_modules = /obj/item/mod/module/power_kick /obj/item/mod/control/pre_equipped/responsory/inquisitory/security insignia_type = /obj/item/mod/module/insignia/security - additional_module = /obj/item/mod/module/pepper_shoulders + additional_modules = /obj/item/mod/module/pepper_shoulders /obj/item/mod/control/pre_equipped/responsory/inquisitory/medic insignia_type = /obj/item/mod/module/insignia/medic - additional_module = /obj/item/mod/module/quick_carry + additional_modules = /obj/item/mod/module/quick_carry /obj/item/mod/control/pre_equipped/responsory/inquisitory/chaplain insignia_type = /obj/item/mod/module/insignia/chaplain - additional_module = /obj/item/mod/module/injector + additional_modules = /obj/item/mod/module/injector /obj/item/mod/control/pre_equipped/apocryphal theme = /datum/mod_theme/apocryphal diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm index 2a8ccf7b4bf94..9a8e77f7e8e76 100644 --- a/code/modules/mod/mod_ui.dm +++ b/code/modules/mod/mod_ui.dm @@ -9,8 +9,10 @@ // Suit information var/suit_status = list( "core_name" = core?.name, - "cell_charge_current" = get_charge(), - "cell_charge_max" = get_max_charge(), + "charge_current" = get_charge(), + "charge_max" = get_max_charge(), + "chargebar_color" = get_chargebar_color(), + "chargebar_string" = get_chargebar_string(), "active" = active, "ai_name" = ai_assistant?.name, "has_pai" = ispAI(ai_assistant), @@ -56,23 +58,25 @@ "configuration_data" = module.get_configuration(user), )) data["module_custom_status"] = module_custom_status - data["module_info"] = module_info - return data - -/obj/item/mod/control/ui_static_data(mob/user) - var/data = list() - data["ui_theme"] = ui_theme data["control"] = name - data["complexity_max"] = complexity_max + data["module_info"] = module_info var/part_info = list() for(var/obj/item/part as anything in get_parts()) part_info += list(list( "slot" = english_list(parse_slot_flags(part.slot_flags)), "name" = part.name, + "deployed" = part.loc != src, + "ref" = REF(part), )) data["parts"] = part_info return data +/obj/item/mod/control/ui_static_data(mob/user) + var/data = list() + data["ui_theme"] = ui_theme + data["complexity_max"] = complexity_max + return data + /obj/item/mod/control/ui_state(mob/user) if(user == ai_assistant) return GLOB.contained_state @@ -89,7 +93,7 @@ if("lock") if(!locked || allowed(ui.user)) locked = !locked - balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]!") + balloon_alert(ui.user, "[locked ? "locked" : "unlocked"]") else balloon_alert(ui.user, "access insufficent!") playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -115,6 +119,14 @@ if(!module) return module.pin(ui.user) + if("deploy") + var/obj/item/mod_part = locate(params["ref"]) in get_parts() + if(!mod_part) + return + if(mod_part.loc == src) + deploy(ui.user, mod_part) + else + retract(ui.user, mod_part) if("eject_pai") if (!ishuman(ui.user)) return diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 28a588609a783..565919c07ecd5 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -300,7 +300,7 @@ /obj/item/mod/module/proc/add_ui_data() return list() -/// Creates a list of configuring options for this module +/// Creates a list of configuring options for this module, possible configs include number, bool, color, list, button. /obj/item/mod/module/proc/get_configuration(mob/user) return list() @@ -418,7 +418,7 @@ /obj/item/mod/module/anomaly_locked name = "MOD anomaly locked module" desc = "A form of a module, locked behind an anomalous core to function." - incompatible_modules = list(/obj/item/mod/module/anomaly_locked) + incompatible_modules = list() /// The core item the module runs off. var/obj/item/assembly/signaler/anomaly/core /// Accepted types of anomaly cores. @@ -491,7 +491,7 @@ balloon_alert(user, "no core!") return if(!core_removable) - balloon_alert(user, "can't remove core!") + balloon_alert(user, "already has core!") return balloon_alert(user, "removing core...") if(!do_after(user, 3 SECONDS, target = src)) diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm index 3c9ae3310b755..733e5ab40d97b 100644 --- a/code/modules/mod/modules/module_kinesis.dm +++ b/code/modules/mod/modules/module_kinesis.dm @@ -17,7 +17,7 @@ accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav) required_slots = list(ITEM_SLOT_GLOVES) /// Range of the knesis grab. - var/grab_range = 5 + var/grab_range = 8 /// Time between us hitting objects with kinesis. var/hit_cooldown_time = 1 SECONDS /// Stat required for us to grab a mob. diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm index f0a92e3a05153..487844bc2a04f 100644 --- a/code/modules/mod/modules/module_pathfinder.dm +++ b/code/modules/mod/modules/module_pathfinder.dm @@ -117,19 +117,19 @@ /obj/item/implant/mod/proc/recall() if(!module?.mod) - balloon_alert(imp_in, "no connected suit!") + balloon_alert(imp_in, "no connected unit!") return FALSE if(module.mod.open) - balloon_alert(imp_in, "suit is open!") + balloon_alert(imp_in, "cover open!") return FALSE if(module.mod.ai_controller) - balloon_alert(imp_in, "already in transit!") + balloon_alert(imp_in, "already moving!") return FALSE if(ismob(get_atom_on_turf(module.mod))) balloon_alert(imp_in, "already on someone!") return FALSE if(module.z != z || get_dist(imp_in, module.mod) > MOD_AI_RANGE) - balloon_alert(imp_in, "too far away!") + balloon_alert(imp_in, "too far!") return FALSE var/datum/ai_controller/mod_ai = new /datum/ai_controller/mod(module.mod) module.mod.ai_controller = mod_ai diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 0401dbfdbe969..3eef7d47f158b 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -52,9 +52,10 @@ playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) balloon_alert(mod.wearer, "armor boosted, EVA lost") actual_speed_added = max(0, min(mod.slowdown_active, speed_added)) - var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) - if(istype(head_cover)) - ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) + if(head_cover) + RegisterSignal(mod, COMSIG_MOD_PART_SEALED, PROC_REF(seal_helmet)) + seal_helmet(mod, head_cover) var/list/mod_parts = mod.get_parts(all = TRUE) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().add_other_armor(armor_mod)) @@ -71,9 +72,10 @@ if(!deleting) playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) balloon_alert(mod.wearer, "armor retracts, EVA ready") - var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) - if(istype(head_cover)) - REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) + if(head_cover) + UnregisterSignal(mod, COMSIG_MOD_PART_SEALED) + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) var/list/mod_parts = mod.get_parts(all = TRUE) for(var/obj/item/part as anything in mod.get_parts(all = TRUE)) part.set_armor(part.get_armor().subtract_other_armor(armor_mod)) @@ -91,6 +93,15 @@ overlay_state_active = "[initial(overlay_state_active)]-[mod.skin]" return ..() +/obj/item/mod/module/armor_booster/proc/seal_helmet(datum/source, datum/mod_part/part) + var/datum/mod_part/head_cover = mod.get_part_datum_from_slot(ITEM_SLOT_HEAD) || mod.get_part_datum_from_slot(ITEM_SLOT_MASK) || mod.get_part_datum_from_slot(ITEM_SLOT_EYES) + if(part != head_cover) + return + if(part.sealed) + ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) + else + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) + ///Energy Shield - Gives you a rechargeable energy shield that nullifies attacks. /obj/item/mod/module/energy_shield name = "MOD energy shield module" @@ -184,10 +195,10 @@ required_slots = list(ITEM_SLOT_BACK) /obj/item/mod/module/anti_magic/on_part_activation() - mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src)) /obj/item/mod/module/anti_magic/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_HOLY), REF(src)) /obj/item/mod/module/anti_magic/wizard name = "MOD magic neutralizer module" @@ -199,10 +210,10 @@ required_slots = list() /obj/item/mod/module/anti_magic/wizard/on_part_activation() - mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src)) /obj/item/mod/module/anti_magic/wizard/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_ANTIMAGIC, TRAIT_ANTIMAGIC_NO_SELFBLOCK), REF(src)) ///Insignia - Gives you a skin specific stripe. /obj/item/mod/module/insignia @@ -262,24 +273,20 @@ required_slots = list(ITEM_SLOT_FEET) /obj/item/mod/module/noslip/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src)) /obj/item/mod/module/noslip/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_NO_SLIP_WATER, REF(src)) //Bite of 87 Springlock - Equips faster, disguised as DNA lock. /obj/item/mod/module/springlock/bite_of_87 + name = /obj/item/mod/module/dna_lock::name + desc = /obj/item/mod/module/dna_lock::desc + icon_state = /obj/item/mod/module/dna_lock::icon_state + complexity = /obj/item/mod/module/dna_lock::complexity + use_energy_cost = /obj/item/mod/module/dna_lock::use_energy_cost step_change = 0.1 -/obj/item/mod/module/springlock/bite_of_87/Initialize(mapload) - . = ..() - var/obj/item/mod/module/dna_lock/the_dna_lock_behind_the_slaughter = /obj/item/mod/module/dna_lock - name = initial(the_dna_lock_behind_the_slaughter.name) - desc = initial(the_dna_lock_behind_the_slaughter.desc) - icon_state = initial(the_dna_lock_behind_the_slaughter.icon_state) - complexity = initial(the_dna_lock_behind_the_slaughter.complexity) - use_energy_cost = initial(the_dna_lock_behind_the_slaughter.use_energy_cost) - /obj/item/mod/module/springlock/bite_of_87/on_part_activation() ..() if(check_holidays(APRIL_FOOLS) || prob(1)) @@ -306,7 +313,7 @@ if(!.) return var/obj/projectile/flame = new /obj/projectile/bullet/incendiary/fire(mod.wearer.loc) - flame.preparePixelProjectile(target, mod.wearer) + flame.aim_projectile(target, mod.wearer) flame.firer = mod.wearer playsound(src, 'sound/items/modsuit/flamethrower.ogg', 75, TRUE) INVOKE_ASYNC(flame, TYPE_PROC_REF(/obj/projectile, fire)) @@ -404,7 +411,7 @@ /obj/item/mod/module/chameleon/used() if(mod.active || mod.activating) - balloon_alert(mod.wearer, "suit active!") + balloon_alert(mod.wearer, "unit active!") return FALSE return ..() @@ -514,7 +521,7 @@ mod.item_flags &= ~EXAMINE_SKIP /obj/item/mod/module/infiltrator/on_part_activation() - mod.wearer.add_traits(traits_to_add, MOD_TRAIT) + mod.wearer.add_traits(traits_to_add, REF(src)) RegisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH, PROC_REF(on_speech_modification)) var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE) user_tongue.temp_say_mod = "states" @@ -523,7 +530,7 @@ head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE /obj/item/mod/module/infiltrator/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(traits_to_add, MOD_TRAIT) + mod.wearer.remove_traits(traits_to_add, REF(src)) UnregisterSignal(mod.wearer, COMSIG_TRY_MODIFY_SPEECH) var/obj/item/organ/tongue/user_tongue = mod.wearer.get_organ_slot(ORGAN_SLOT_TONGUE) user_tongue.temp_say_mod = initial(user_tongue.temp_say_mod) @@ -559,11 +566,16 @@ /obj/item/mod/module/stealth/wraith name = "MOD Wraith Cloaking Module" - desc = "A more destructive adaptation of the stealth module." + desc = "A more destructive adaptation of the stealth module. Incompatible with armor modules" icon_state = "cloak_traitor" stealth_alpha = 30 module_type = MODULE_ACTIVE cooldown_time = 2 SECONDS + incompatible_modules = list(/obj/item/mod/module/stealth, /obj/item/mod/module/armor_booster) + /// How much time before we are able to cloak again after the cloak is broken (not disabled) + COOLDOWN_DECLARE(recloak_timer) + /// If the stealth portion of the module is active + var/stealth_active = FALSE /obj/item/mod/module/stealth/wraith/on_select_use(atom/target) . = ..() @@ -573,7 +585,7 @@ balloon_alert(mod.wearer, "can't reach that!") return if(istype(target, /obj/machinery/power/apc)) //Bit too strong for a module so this is blacklisted - balloon_alert(mod.wearer, "cant disable apc!") + balloon_alert(mod.wearer, "can't disable apc!") return var/list/things_to_disrupt = list(target) @@ -585,28 +597,41 @@ if(disrupted.on_saboteur(src, 1 MINUTES)) mod.add_charge(DEFAULT_CHARGE_DRAIN * 250) +/obj/item/mod/module/stealth/wraith/on_activation() + return // Don't activate stealth when the module is activated because the stealth portion of the module is fully passive + +/obj/item/mod/module/stealth/wraith/on_deactivation(display_message = TRUE, deleting = FALSE) + . = ..() + UnregisterSignal(mod.wearer, list(COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN)) + /obj/item/mod/module/stealth/wraith/on_part_activation() start_stealth() /obj/item/mod/module/stealth/wraith/on_part_deactivation(deleting) - if(bumpoff) - UnregisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP) - UnregisterSignal(mod.wearer, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED)) + UnregisterSignal(mod.wearer, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED, COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN)) animate(mod.wearer, alpha = 255, time = 1.5 SECONDS) + stealth_active = FALSE /obj/item/mod/module/stealth/wraith/proc/start_stealth() - if(bumpoff) - RegisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP, PROC_REF(unstealth)) + if(!COOLDOWN_FINISHED(src, recloak_timer)) // Prevents being able to bypass the cooldown by disabling and re-enabling the module + addtimer(CALLBACK(src, PROC_REF(start_stealth)), recloak_timer) + return + RegisterSignals(mod.wearer, list(COMSIG_LIVING_MOB_BUMP, COMSIG_ATOM_BUMPED, COMSIG_MOB_FIRED_GUN), PROC_REF(unstealth)) RegisterSignal(mod.wearer, COMSIG_LIVING_UNARMED_ATTACK, PROC_REF(on_unarmed_attack)) RegisterSignal(mod.wearer, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act)) RegisterSignals(mod.wearer, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_ATOM_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW, COMSIG_CARBON_CUFF_ATTEMPTED), PROC_REF(unstealth)) animate(mod.wearer, alpha = stealth_alpha, time = 1.5 SECONDS) drain_power(use_energy_cost) + stealth_active = TRUE /obj/item/mod/module/stealth/wraith/unstealth(datum/source) + if(!stealth_active) + return . = ..() if(mod.active) - addtimer(CALLBACK(src, PROC_REF(start_stealth)), 5 SECONDS) + COOLDOWN_START(src, recloak_timer, 20 SECONDS) + addtimer(CALLBACK(src, PROC_REF(start_stealth)), 20 SECONDS) + stealth_active = FALSE /obj/item/mod/module/stealth/wraith/examine_more(mob/user) . = ..() diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index aea9a415cf4e4..ea12a61e5b4d4 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -62,12 +62,12 @@ var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY) /obj/item/mod/module/magboot/on_activation() - mod.wearer.add_traits(active_traits, MOD_TRAIT) + mod.wearer.add_traits(active_traits, REF(src)) mod.slowdown += slowdown_active mod.wearer.update_equipment_speed_mods() /obj/item/mod/module/magboot/on_deactivation(display_message = TRUE, deleting = FALSE) - mod.wearer.remove_traits(active_traits, MOD_TRAIT) + mod.wearer.remove_traits(active_traits, REF(src)) mod.slowdown -= slowdown_active mod.wearer.update_equipment_speed_mods() @@ -91,12 +91,19 @@ cooldown_time = 1.5 SECONDS required_slots = list(ITEM_SLOT_GLOVES) +/obj/item/mod/module/tether/used() + if(HAS_TRAIT_FROM(mod.wearer, TRAIT_TETHER_ATTACHED, REF(src))) + balloon_alert(mod.wearer, "already tethered!") + playsound(src, 'sound/items/weapons/gun/general/dry_fire.ogg', 25, TRUE) + return FALSE + return ..() + /obj/item/mod/module/tether/on_select_use(atom/target) . = ..() if(!.) return var/obj/projectile/tether = new /obj/projectile/tether(mod.wearer.loc, src) - tether.preparePixelProjectile(target, mod.wearer) + tether.aim_projectile(target, mod.wearer) tether.firer = mod.wearer playsound(src, 'sound/items/weapons/batonextend.ogg', 25, TRUE) INVOKE_ASYNC(tether, TYPE_PROC_REF(/obj/projectile, fire)) @@ -104,7 +111,7 @@ /obj/item/mod/module/tether/get_configuration() . = ..() - .["cut_tethers"] = add_ui_configuration("Cut Tethers", "pin", TRUE) + .["cut_tethers"] = add_ui_configuration("Cut Tethers", "button", "scissors") /obj/item/mod/module/tether/configure_edit(key, value) if (key != "cut_tethers") @@ -139,7 +146,10 @@ /obj/projectile/tether/proc/on_embedded(datum/source, obj/item/payload, atom/hit) SIGNAL_HANDLER - firer.AddComponent(/datum/component/tether, hit, 7, "MODtether", payload, parent_module = parent_module) + if (HAS_TRAIT_FROM(hit, TRAIT_TETHER_ATTACHED, REF(parent_module))) + return + + firer.AddComponent(/datum/component/tether, hit, 7, "MODtether", payload, parent_module = parent_module, tether_trait_source = REF(parent_module)) /obj/projectile/tether/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) . = ..() @@ -161,17 +171,16 @@ return if (istype(target, /obj/item/tether_anchor) || isstructure(target) || ismachinery(target)) - firer.AddComponent(/datum/component/tether, target, 7, "MODtether", parent_module = parent_module) + if(HAS_TRAIT_FROM(target, TRAIT_TETHER_ATTACHED, REF(parent_module))) + return + var/avoid_target_trait = FALSE + if (istype(target, /obj/item/tether_anchor)) + avoid_target_trait = TRUE + firer.AddComponent(/datum/component/tether, target, 7, "MODtether", parent_module = parent_module, tether_trait_source = REF(parent_module), no_target_trait = avoid_target_trait) return - var/hitx - var/hity - if(target == original) - hitx = target.pixel_x + p_x - 16 - hity = target.pixel_y + p_y - 16 - else - hitx = target.pixel_x + rand(-8, 8) - hity = target.pixel_y + rand(-8, 8) + var/hitx = impact_x + var/hity = impact_y if (!isnull(last_turf) && last_turf != target && last_turf != target.loc) var/turf_dir = get_dir(last_turf, get_turf(target)) @@ -188,7 +197,7 @@ anchor.pixel_x = hitx anchor.pixel_y = hity anchor.anchored = TRUE - firer.AddComponent(/datum/component/tether, anchor, 7, "MODtether", parent_module = parent_module) + firer.AddComponent(/datum/component/tether, anchor, 7, "MODtether", parent_module = parent_module, tether_trait_source = REF(parent_module)) /obj/projectile/tether/Destroy() QDEL_NULL(line) @@ -216,8 +225,12 @@ if (!can_interact(user) || !user.CanReach(src) || !isturf(loc)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(HAS_TRAIT_FROM(user, TRAIT_TETHER_ATTACHED, REF(src))) + balloon_alert(user, "already tethered!") + return + balloon_alert(user, "attached tether") - user.AddComponent(/datum/component/tether, src, 7, "tether") + user.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/item/tether_anchor/mouse_drop_receive(atom/target, mob/user, params) @@ -227,9 +240,13 @@ if (!isliving(target) || !target.CanReach(src)) return + if(HAS_TRAIT_FROM(target, TRAIT_TETHER_ATTACHED, REF(src))) + balloon_alert(user, "already tethered!") + return + if (target == user) balloon_alert(user, "attached tether") - user.AddComponent(/datum/component/tether, src, 7, "tether") + user.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src), no_target_trait = TRUE) return balloon_alert(user, "attaching tether...") @@ -237,9 +254,13 @@ if (!do_after(user, 5 SECONDS, target)) return + if(HAS_TRAIT_FROM(target, TRAIT_TETHER_ATTACHED, REF(src))) + balloon_alert(user, "already tethered!") + return + balloon_alert(user, "attached tether") to_chat(target, span_userdanger("[user] attaches a tether to you!")) - target.AddComponent(/datum/component/tether, src, 7, "tether") + target.AddComponent(/datum/component/tether, src, 7, "tether", tether_trait_source = REF(src), no_target_trait = TRUE) /datum/embed_data/tether_projectile embed_chance = 65 //spiky @@ -267,14 +288,14 @@ /obj/item/mod/module/rad_protection/on_part_activation() AddComponent(/datum/component/geiger_sound) - ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) RegisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) for(var/obj/item/part in mod.get_parts(all = TRUE)) ADD_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT) /obj/item/mod/module/rad_protection/on_part_deactivation(deleting = FALSE) qdel(GetComponent(/datum/component/geiger_sound)) - REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) UnregisterSignal(mod.wearer, COMSIG_IN_RANGE_OF_IRRADIATION) for(var/obj/item/part in mod.get_parts(all = TRUE)) REMOVE_TRAIT(part, TRAIT_RADIATION_PROTECTED_CLOTHING, MOD_TRAIT) @@ -309,10 +330,10 @@ required_slots = list(ITEM_SLOT_GLOVES) /obj/item/mod/module/constructor/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src)) /obj/item/mod/module/constructor/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src)) /obj/item/mod/module/constructor/on_use() rcd_scan(src, fade_time = 10 SECONDS) @@ -332,10 +353,10 @@ required_slots = list(ITEM_SLOT_HEAD) /obj/item/mod/module/headprotector/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) /obj/item/mod/module/headprotector/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src)) ///Mister - Sprays water over an area. /obj/item/mod/module/mister diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 42e4c56f55ec1..3f4dfe405f738 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -143,14 +143,15 @@ COMSIG_MODULE_DEACTIVATED, \ MOD_ABORT_USE, \ thrust_callback, \ + thrust_callback, \ /datum/effect_system/trail_follow/ion/grav_allowed, \ ) if (!isnull(mod) && !isnull(mod.wearer) && mod.wearer.get_item_by_slot(slot_flags) == src) if (!stabilize) - ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) else - REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) /obj/item/mod/module/jetpack/get_configuration() . = ..() @@ -171,11 +172,11 @@ /obj/item/mod/module/jetpack/on_activation() mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed) if (!stabilize) - ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) /obj/item/mod/module/jetpack/on_deactivation(display_message = TRUE, deleting = FALSE) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/full_speed) - REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_NOGRAV_ALWAYS_DRIFT, REF(src)) /obj/item/mod/module/jetpack/advanced name = "MOD advanced ion jetpack module" @@ -672,10 +673,10 @@ return ..() /obj/item/mod/module/plasma_stabilizer/on_equip() - ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src)) /obj/item/mod/module/plasma_stabilizer/on_unequip() - REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_HEAD_ATMOS_SEALED, REF(src)) //Finally, https://pipe.miroware.io/5b52ba1d94357d5d623f74aa/mspfa/Nuke%20Ops/Panels/0648.gif can be real: @@ -699,7 +700,8 @@ var/obj/item/clothing/helmet = mod.get_part_from_slot(ITEM_SLOT_HEAD) if(!istype(helmet)) return - helmet.AddComponent(/datum/component/hat_stabilizer) + // Override pre-existing component + helmet.AddComponent(/datum/component/hat_stabilizer, loose_hat = FALSE) /obj/item/mod/module/hat_stabilizer/on_part_deactivation(deleting = FALSE) if(deleting) @@ -707,7 +709,8 @@ var/obj/item/clothing/helmet = mod.get_part_from_slot(ITEM_SLOT_HEAD) if(!istype(helmet)) return - qdel(helmet.GetComponent(/datum/component/hat_stabilizer)) + // Override again! + helmet.AddComponent(/datum/component/hat_stabilizer, loose_hat = TRUE) /obj/item/mod/module/hat_stabilizer/syndicate name = "MOD elite hat stabilizer module" @@ -731,10 +734,10 @@ required_slots = list(ITEM_SLOT_GLOVES) /obj/item/mod/module/signlang_radio/on_part_activation() - ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src)) /obj/item/mod/module/signlang_radio/on_part_deactivation(deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src)) ///A module that recharges the suit by an itsy tiny bit whenever the user takes a step. Originally called "magneto module" but the videogame reference sounds cooler. /obj/item/mod/module/joint_torsion @@ -926,7 +929,7 @@ icon_state = "fishing_glove" complexity = 1 overlay_state_inactive = "fishing_glove" - incompatible_modules = (/obj/item/mod/module/fishing_glove) + incompatible_modules = list(/obj/item/mod/module/fishing_glove) required_slots = list(ITEM_SLOT_GLOVES) var/obj/item/fishing_rod/equipped @@ -952,7 +955,7 @@ if(!istype(tool, /obj/item/fishing_rod)) return ..() if(equipped) - balloon_alert(user, "remove current rod first!") + balloon_alert(user, "already has rod!") if(!user.transferItemToLoc(tool, src)) user.balloon_alert(user, "it's stuck!") equipped = tool diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index f6b978d05352f..48089b0125c9a 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -295,8 +295,8 @@ mod.wearer.AddElement(/datum/element/forced_gravity, NEGATIVE_GRAVITY) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(check_upstairs)) RegisterSignal(mod.wearer, COMSIG_MOB_SAY, PROC_REF(on_talk)) - ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) - passtable_on(mod.wearer, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) + passtable_on(mod.wearer, REF(src)) check_upstairs() //todo at some point flip your screen around /obj/item/mod/module/atrocinator/deactivate(display_message = TRUE, deleting = FALSE) @@ -312,24 +312,32 @@ UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) UnregisterSignal(mod.wearer, COMSIG_MOB_SAY) step_count = 0 - REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) - passtable_off(mod.wearer, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) + passtable_off(mod.wearer, REF(src)) var/turf/open/openspace/current_turf = get_turf(mod.wearer) if(istype(current_turf)) current_turf.zFall(mod.wearer, falling_from_move = TRUE) -/obj/item/mod/module/atrocinator/proc/check_upstairs() +/obj/item/mod/module/atrocinator/proc/check_upstairs(atom/movable/source, atom/oldloc, direction, forced, list/old_locs, momentum_change) SIGNAL_HANDLER if(you_fucked_up || mod.wearer.has_gravity() > NEGATIVE_GRAVITY) return + var/turf/open/current_turf = get_turf(mod.wearer) var/turf/open/openspace/turf_above = get_step_multiz(mod.wearer, UP) if(current_turf && istype(turf_above)) current_turf.zFall(mod.wearer) + return + else if(!turf_above && istype(current_turf) && current_turf.planetary_atmos) //nothing holding you down INVOKE_ASYNC(src, PROC_REF(fly_away)) - else if(!(step_count % 2)) + return + + if (forced || (SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES)))) + return + + if(!(step_count % 2)) playsound(current_turf, 'sound/items/modsuit/atrocinator_step.ogg', 50) step_count++ diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm index 154717cbcc11c..f71814fc7db53 100644 --- a/code/modules/mod/modules/modules_medical.dm +++ b/code/modules/mod/modules/modules_medical.dm @@ -77,13 +77,13 @@ /obj/item/mod/module/quick_carry/on_part_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT) - ADD_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src)) + ADD_TRAIT(mod.wearer, quick_carry_trait, REF(src)) /obj/item/mod/module/quick_carry/on_part_deactivation(deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, MOD_TRAIT) - REMOVE_TRAIT(mod.wearer, quick_carry_trait, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_FASTMED, REF(src)) + REMOVE_TRAIT(mod.wearer, quick_carry_trait, REF(src)) /obj/item/mod/module/quick_carry/advanced name = "MOD advanced quick carry module" @@ -165,7 +165,7 @@ return var/atom/movable/fired_organ = pop(organ_list) var/obj/projectile/organ/projectile = new /obj/projectile/organ(mod.wearer.loc, fired_organ) - projectile.preparePixelProjectile(target, mod.wearer) + projectile.aim_projectile(target, mod.wearer) projectile.firer = mod.wearer playsound(src, 'sound/vehicles/mecha/hydraulic.ogg', 25, TRUE) INVOKE_ASYNC(projectile, TYPE_PROC_REF(/obj/projectile, fire)) @@ -200,13 +200,10 @@ var/mob/living/carbon/human/organ_receiver = target var/succeed = FALSE if(organ_receiver.surgeries.len) - for(var/datum/surgery/procedure as anything in organ_receiver.surgeries) + for(var/datum/surgery/organ_manipulation/procedure in organ_receiver.surgeries) if(procedure.location != organ.zone) continue - if(!istype(procedure, /datum/surgery/organ_manipulation)) - continue - var/datum/surgery_step/surgery_step = procedure.get_surgery_step() - if(!istype(surgery_step, /datum/surgery_step/manipulate_organs)) + if(!ispath(procedure.steps[procedure.status], /datum/surgery_step/manipulate_organs)) continue succeed = TRUE break diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index c4e8962c4476d..5f7abdd712b87 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -73,11 +73,11 @@ /obj/item/mod/module/stealth/ninja/on_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) /obj/item/mod/module/stealth/ninja/on_deactivation(display_message = TRUE, deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_SILENT_FOOTSTEPS, REF(src)) ///Camera Vision - Prevents flashes, blocks tracking. /obj/item/mod/module/welding/camera_vision @@ -173,16 +173,16 @@ var/accepted_type = /obj/item/energy_katana /obj/item/mod/module/weapon_recall/on_part_activation() - mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src)) /obj/item/mod/module/weapon_recall/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_NOGUNS, TRAIT_TOSS_GUN_HARD), REF(src)) /obj/item/mod/module/weapon_recall/on_use() if(!linked_weapon) var/obj/item/weapon_to_link = mod.wearer.is_holding_item_of_type(accepted_type) if(!weapon_to_link) - balloon_alert(mod.wearer, "can't locate weapon!") + balloon_alert(mod.wearer, "no linked weapon!") return set_weapon(weapon_to_link) balloon_alert(mod.wearer, "[linked_weapon.name] linked") @@ -191,7 +191,7 @@ balloon_alert(mod.wearer, "already on self!") return var/distance = get_dist(mod.wearer, linked_weapon) - var/in_view = (linked_weapon in view(mod.wearer)) + var/in_view = (linked_weapon in view(mod.wearer)) && !(linked_weapon in get_turf(mod.wearer)) if(!in_view && !drain_power(use_energy_cost * distance)) balloon_alert(mod.wearer, "not enough charge!") return @@ -323,7 +323,7 @@ if(IS_SPACE_NINJA(mod.wearer) && isliving(target)) mod.wearer.say("Get over here!", forced = type) var/obj/projectile/net = new /obj/projectile/energy_net(mod.wearer.loc, src) - net.preparePixelProjectile(target, mod.wearer) + net.aim_projectile(target, mod.wearer) net.firer = mod.wearer playsound(src, 'sound/items/weapons/punchmiss.ogg', 25, TRUE) INVOKE_ASYNC(net, TYPE_PROC_REF(/obj/projectile, fire)) diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm index 409b442336636..8cb15d35370aa 100644 --- a/code/modules/mod/modules/modules_science.dm +++ b/code/modules/mod/modules/modules_science.dm @@ -14,10 +14,10 @@ required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK) /obj/item/mod/module/reagent_scanner/on_activation() - ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) /obj/item/mod/module/reagent_scanner/on_deactivation(display_message = TRUE, deleting = FALSE) - REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src)) /obj/item/mod/module/reagent_scanner/advanced name = "MOD advanced reagent scanner module" @@ -31,12 +31,12 @@ /obj/item/mod/module/reagent_scanner/advanced/on_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src)) RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion)) /obj/item/mod/module/reagent_scanner/advanced/on_deactivation(display_message = TRUE, deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_RESEARCH_SCANNER, REF(src)) UnregisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION) /obj/item/mod/module/reagent_scanner/advanced/proc/sense_explosion(datum/source, turf/epicenter, @@ -55,9 +55,9 @@ desc = "A module that uses a gravitational core to make the user completely weightless." icon_state = "antigrav" module_type = MODULE_TOGGLE - complexity = 3 + complexity = 2 active_power_cost = DEFAULT_CHARGE_DRAIN * 0.7 - incompatible_modules = list(/obj/item/mod/module/anomaly_locked, /obj/item/mod/module/atrocinator) + incompatible_modules = list(/obj/item/mod/module/atrocinator, /obj/item/mod/module/anomaly_locked/antigrav) accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) @@ -88,21 +88,34 @@ icon_state = "teleporter" module_type = MODULE_ACTIVE complexity = 3 - use_energy_cost = DEFAULT_CHARGE_DRAIN * 5 - cooldown_time = 5 SECONDS + use_energy_cost = DEFAULT_CHARGE_DRAIN * 25 + cooldown_time = 4 SECONDS + incompatible_modules = list(/obj/item/mod/module/anomaly_locked/teleporter) accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/bluespace) required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT) /// Time it takes to teleport - var/teleport_time = 3 SECONDS + var/teleport_time = 1 SECONDS + /// Maximum turf range + var/max_range = 9 /obj/item/mod/module/anomaly_locked/teleporter/on_select_use(atom/target) . = ..() if(!.) return var/turf/open/target_turf = get_turf(target) - if(!istype(target_turf) || target_turf.is_blocked_turf_ignore_climbable() || !(target_turf in view(mod.wearer))) + if(get_dist(target_turf, mod.wearer) > max_range) + balloon_alert(mod.wearer, "too far!") + return + if(!istype(target_turf)) balloon_alert(mod.wearer, "invalid target!") return + if(target_turf.is_blocked_turf_ignore_climbable() || !los_check(mod.wearer, target, pass_args = PASSTABLE|PASSGLASS|PASSGRILLE|PASSMOB|PASSMACHINE|PASSSTRUCTURE|PASSFLAPS|PASSWINDOW)) + balloon_alert(mod.wearer, "blocked destination!") + return + // check early so we don't go through the whole loops + if(!check_teleport_valid(mod.wearer, target_turf, channel = TELEPORT_CHANNEL_BLUESPACE, original_destination = target_turf)) + balloon_alert(mod.wearer, "something holds you back!") + return balloon_alert(mod.wearer, "teleporting...") var/matrix/pre_matrix = matrix() pre_matrix.Scale(4, 0.25) diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index c25dd75275574..b705de0f4beaa 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -123,7 +123,7 @@ balloon_alert(mod.wearer, "nothing to holster!") return if(!istype(holding) || holding.w_class > WEIGHT_CLASS_BULKY) - balloon_alert(mod.wearer, "it doesn't fit!") + balloon_alert(mod.wearer, "doesn't fit!") return if(mod.wearer.transferItemToLoc(holding, src, force = FALSE, silent = TRUE)) holstered = holding @@ -310,7 +310,7 @@ /// Debuff multiplier on projectiles. var/debuff_multiplier = 0.66 /// Speed multiplier on projectiles, higher means slower. - var/speed_multiplier = 2.5 + var/speed_multiplier = 0.4 /// List of all tracked projectiles. var/list/tracked_projectiles = list() /// Effect image on projectiles. @@ -326,32 +326,10 @@ if(istype(dampening_field)) QDEL_NULL(dampening_field) dampening_field = new(mod.wearer, field_radius, TRUE, src) - RegisterSignal(dampening_field, COMSIG_DAMPENER_CAPTURE, PROC_REF(dampen_projectile)) - RegisterSignal(dampening_field, COMSIG_DAMPENER_RELEASE, PROC_REF(release_projectile)) /obj/item/mod/module/projectile_dampener/on_deactivation(display_message, deleting = FALSE) QDEL_NULL(dampening_field) -/obj/item/mod/module/projectile_dampener/proc/dampen_projectile(datum/source, obj/projectile/projectile) - SIGNAL_HANDLER - - projectile.damage *= damage_multiplier - projectile.stamina *= damage_multiplier - projectile.stun *= debuff_multiplier - projectile.knockdown *= debuff_multiplier - projectile.speed *= speed_multiplier - projectile.add_overlay(projectile_effect) - -/obj/item/mod/module/projectile_dampener/proc/release_projectile(datum/source, obj/projectile/projectile) - SIGNAL_HANDLER - - projectile.damage /= damage_multiplier - projectile.speed /= speed_multiplier - projectile.stamina /= damage_multiplier - projectile.stun /= debuff_multiplier - projectile.knockdown /= debuff_multiplier - projectile.cut_overlay(projectile_effect) - ///Active Sonar - Displays a hud circle on the turf of any living creatures in the given radius /obj/item/mod/module/active_sonar name = "MOD active sonar" @@ -522,11 +500,11 @@ idle_power_cost = 0 if(STORMTROOPER_MODE) idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.4 - mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(stormtrooper_fired_gun)) if(SHARPSHOOTER_MODE) idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.6 - mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN, PROC_REF(sharpshooter_fired_gun)) RegisterSignal(mod.wearer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, PROC_REF(apply_ricochet)) mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant) @@ -535,10 +513,10 @@ switch(selected_mode) if(STORMTROOPER_MODE) UnregisterSignal(mod.wearer, COMSIG_MOB_FIRED_GUN) - mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_DOUBLE_TAP), REF(src)) if(SHARPSHOOTER_MODE) UnregisterSignal(mod.wearer, list(COMSIG_MOB_FIRED_GUN, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE)) - mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_NO_GUN_AKIMBO, TRAIT_NICE_SHOT), REF(src)) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/shooting_assistant) /obj/item/mod/module/shooting_assistant/drain_power(amount) @@ -582,10 +560,10 @@ required_slots = list(ITEM_SLOT_OCLOTHING) /obj/item/mod/module/shove_blocker/on_part_activation() - mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src)) /obj/item/mod/module/shove_blocker/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_NO_STAGGER, TRAIT_NO_THROW_HITPUSH), REF(src)) /obj/item/mod/module/shove_blocker/locked name = "superglued MOD bulwark module" @@ -602,8 +580,8 @@ /obj/item/mod/module/quick_cuff/on_part_activation() . = ..() - ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT) + ADD_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src)) /obj/item/mod/module/quick_cuff/on_part_deactivation(deleting = FALSE) . = ..() - REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_FAST_CUFFING, REF(src)) diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 79d2d3779e0ff..9cf7c4702f70c 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -46,7 +46,7 @@ if(!isitem(target)) return if(!isturf(target.loc)) - balloon_alert(mod.wearer, "must be on the floor!") + balloon_alert(mod.wearer, "not in storage!") return var/obj/item/microwave_target = target var/datum/effect_system/spark_spread/spark_effect = new() @@ -80,7 +80,7 @@ var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET) if(shoes) shoes.AddComponent(/datum/component/squeak, list('sound/effects/footstep/clownstep1.ogg'=1,'sound/effects/footstep/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please - mod.wearer.AddElementTrait(TRAIT_WADDLING, MOD_TRAIT, /datum/element/waddling) + mod.wearer.AddElementTrait(TRAIT_WADDLING, REF(src), /datum/element/waddling) if(is_clown_job(mod.wearer.mind?.assigned_role)) mod.wearer.add_mood_event("clownshoes", /datum/mood_event/clownshoes) @@ -88,6 +88,24 @@ var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET) if(shoes && !deleting) qdel(shoes.GetComponent(/datum/component/squeak)) - REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, MOD_TRAIT) + REMOVE_TRAIT(mod.wearer, TRAIT_WADDLING, REF(src)) if(is_clown_job(mod.wearer.mind?.assigned_role)) mod.wearer.clear_mood_event("clownshoes") + +// recharging cleaner spray module +/obj/item/mod/module/mister/cleaner + name = "MOD janitorial mister module" + desc = "An space cleaner mister, able to clean up messes quickly. Synthesizes its own supply over time (if active)." + device = /obj/item/reagent_containers/spray/mister/janitor + volume = 100 + active_power_cost = DEFAULT_CHARGE_DRAIN + +/obj/item/mod/module/mister/cleaner/Initialize(mapload) + . = ..() + reagents.flags = AMOUNT_VISIBLE + reagents.add_reagent(/datum/reagent/space_cleaner, volume) + +/obj/item/mod/module/mister/cleaner/on_active_process(seconds_per_tick) + var/refill_add = min(volume - reagents.total_volume, 2 * seconds_per_tick) + if(refill_add > 0) + reagents.add_reagent(/datum/reagent/space_cleaner, refill_add) diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 8be66e0b3e38c..2c4a5955aed2b 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -61,7 +61,7 @@ return stored_crates += picked_crate picked_crate.forceMove(src) - balloon_alert(mod.wearer, "picked up [picked_crate]") + balloon_alert(mod.wearer, "picked up crate") drain_power(use_energy_cost) else if(length(stored_crates)) var/turf/target_turf = get_turf(target) @@ -407,11 +407,11 @@ )) /obj/item/mod/module/ash_accretion/on_part_activation() - mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT) + mod.wearer.add_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src)) RegisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) /obj/item/mod/module/ash_accretion/on_part_deactivation(deleting = FALSE) - mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), MOD_TRAIT) + mod.wearer.remove_traits(list(TRAIT_ASHSTORM_IMMUNE, TRAIT_SNOWSTORM_IMMUNE), REF(src)) UnregisterSignal(mod.wearer, COMSIG_MOVABLE_MOVED) if(!traveled_tiles) return @@ -496,10 +496,10 @@ mod.wearer.base_pixel_y -= 4 animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y, flags = ANIMATION_PARALLEL) mod.wearer.SpinAnimation(1.5) - mod.wearer.add_traits(user_traits, MOD_TRAIT) + mod.wearer.add_traits(user_traits, REF(src)) mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE) - mod.wearer.add_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown) + mod.wearer.add_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) mod.wearer.add_movespeed_modifier(/datum/movespeed_modifier/sphere) RegisterSignal(mod.wearer, COMSIG_MOB_STATCHANGE, PROC_REF(on_statchange)) @@ -509,8 +509,8 @@ mod.wearer.base_pixel_y += 4 animate(mod.wearer, animate_time, pixel_y = mod.wearer.base_pixel_y) addtimer(CALLBACK(mod.wearer, TYPE_PROC_REF(/datum, remove_filter), list("mod_ball", "mod_blur", "mod_outline")), animate_time) - mod.wearer.remove_traits(user_traits, MOD_TRAIT) - mod.wearer.remove_movespeed_mod_immunities(MOD_TRAIT, /datum/movespeed_modifier/damage_slowdown) + mod.wearer.remove_traits(user_traits, REF(src)) + mod.wearer.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/damage_slowdown) mod.wearer.RemoveElement(/datum/element/footstep, FOOTSTEP_OBJ_ROBOT, 1, -6, sound_vary = TRUE) mod.wearer.AddElement(/datum/element/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) mod.wearer.remove_movespeed_modifier(/datum/movespeed_modifier/sphere) @@ -528,7 +528,7 @@ if(!.) return var/obj/projectile/bomb = new /obj/projectile/bullet/mining_bomb(mod.wearer.loc) - bomb.preparePixelProjectile(target, mod.wearer) + bomb.aim_projectile(target, mod.wearer) bomb.firer = mod.wearer playsound(src, 'sound/items/weapons/gun/general/grenade_launch.ogg', 75, TRUE) INVOKE_ASYNC(bomb, TYPE_PROC_REF(/obj/projectile, fire)) diff --git a/code/modules/mod/modules/modules_timeline.dm b/code/modules/mod/modules/modules_timeline.dm index c14825bf3c70d..da36c2153d00f 100644 --- a/code/modules/mod/modules/modules_timeline.dm +++ b/code/modules/mod/modules/modules_timeline.dm @@ -133,13 +133,13 @@ ///Signal fired when wearer attempts to trigger modules, if attempting while time is stopped /obj/item/mod/module/timestopper/proc/on_module_triggered(datum/source) SIGNAL_HANDLER - balloon_alert(mod.wearer, "not while channelling timestop!") + balloon_alert(mod.wearer, "not while stopping time!") return MOD_ABORT_USE ///Signal fired when wearer attempts to activate/deactivate suits, if attempting while time is stopped /obj/item/mod/module/timestopper/proc/on_activate_block(datum/source, user) SIGNAL_HANDLER - balloon_alert(user, "not while channelling timestop!") + balloon_alert(user, "not while stopping time!") return MOD_CANCEL_ACTIVATE ///Timeline Jumper - Infinite phasing. needs some special effects @@ -222,7 +222,7 @@ //fire projectile var/obj/projectile/energy/chrono_beam/chrono_beam = new /obj/projectile/energy/chrono_beam(get_turf(src)) chrono_beam.tem_weakref = WEAKREF(src) - chrono_beam.preparePixelProjectile(target, mod.wearer) + chrono_beam.aim_projectile(target, mod.wearer) chrono_beam.firer = mod.wearer playsound(src, 'sound/items/modsuit/time_anchor_set.ogg', 50, TRUE) INVOKE_ASYNC(chrono_beam, TYPE_PROC_REF(/obj/projectile, fire)) diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm index d4b6154f88620..64ddc69d2edbf 100644 --- a/code/modules/mod/modules/modules_visor.dm +++ b/code/modules/mod/modules/modules_visor.dm @@ -14,12 +14,12 @@ /obj/item/mod/module/visor/on_activation() if(length(visor_traits)) - mod.wearer.add_traits(visor_traits, MOD_TRAIT) + mod.wearer.add_traits(visor_traits, REF(src)) mod.wearer.update_sight() /obj/item/mod/module/visor/on_deactivation(display_message = TRUE, deleting = FALSE) if(length(visor_traits)) - mod.wearer.remove_traits(visor_traits, MOD_TRAIT) + mod.wearer.remove_traits(visor_traits, REF(src)) mod.wearer.update_sight() //Medical Visor - Gives you a medical HUD. diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index d8b97c523019d..009ad0370b219 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -139,6 +139,25 @@ //you can't close apps in emergency mode. if(isnull(internal_cell) || internal_cell.charge) active_program.kill_program(usr) + // DOPPLER EDIT ADDITION START - NTNRC_FOR_ALL + else // Slightly cursed code to let you swap between the chat client or messenger instead + + if(istype(active_program, /datum/computer_file/program/chatclient)) + var/datum/computer_file/program/messenger/our_messenger = locate() in stored_files + if(isnull(our_messenger)) + return TRUE + open_program(usr, our_messenger) + + else if(istype(active_program, /datum/computer_file/program/messenger)) + var/datum/computer_file/program/chatclient/our_chat_client = locate() in stored_files + if(isnull(our_chat_client)) + return TRUE + if(!get_ntnet_status()) // Can't swap to NTNRC without NTNet. + to_chat(usr, span_danger("\The [src]'s screen shows \"Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\" warning.")) + return TRUE + open_program(usr, our_chat_client) + + // DOPPLER EDIT ADDITION END - NTNRC_FOR_ALL return TRUE if("PC_shutdown") shutdown_computer() diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index 1fea772b85e58..05882d17f582b 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -39,6 +39,7 @@ /datum/computer_file/program/nt_pay, /datum/computer_file/program/notepad, /datum/computer_file/program/crew_manifest, + /datum/computer_file/program/chatclient, // DOPPLER EDIT ADDITION - NTNRC_FOR_ALL ) ///List of items that can be stored in a PDA var/static/list/contained_item = list( diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 2d81fb6c3b5cb..763335d6728ab 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -187,6 +187,6 @@ // "Burn" damage is equally strong against internal components and exterior casing // "Brute" damage mostly damages the casing. /obj/machinery/modular_computer/bullet_act(obj/projectile/proj) - return cpu?.bullet_act(proj) || ..() + return cpu?.projectile_hit(proj) || ..() #undef CPU_INTERACTABLE diff --git a/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm index 8045bcb1db0db..fc743caa66c67 100644 --- a/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/chatroom/ntnrc_client.dm @@ -160,6 +160,11 @@ if("PRG_setpassword") if(!authed) return + // DOPPLER EDIT ADDITION START - NTNRC_FOR_ALL + if(channel.strong) // Block setting passwords on important channels + computer.visible_message(span_warning("Warning. May not set a password on common channels.")) + return + // DOPPLER EDIT ADDITION END - NTNRC_FOR_ALL var/new_password = sanitize(params["new_password"]) if(!authed) return diff --git a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm index f851dada495f3..e62aa35a6088c 100644 --- a/code/modules/modular_computers/file_system/programs/maintenance/camera.dm +++ b/code/modules/modular_computers/file_system/programs/maintenance/camera.dm @@ -11,12 +11,18 @@ circuit_comp_type = /obj/item/circuit_component/mod_program/camera /// Camera built-into the tablet. - var/obj/item/camera/internal_camera + var/obj/item/camera/app/internal_camera /// Latest picture taken by the app. var/datum/picture/internal_picture /// How many pictures were taken already, used for the camera's TGUI photo display var/picture_number = 1 +// Special type of camera for this exact usecase to prevent harddels +/obj/item/camera/app + name = "internal camera" + desc = "Specialized internal camera protected from the hellish depths of SSWardrobe. \ + Yell at coders if you somehow manage to see this" + /datum/computer_file/program/maintenance/camera/on_install() . = ..() internal_camera = new(computer) diff --git a/code/modules/modular_computers/file_system/programs/virtual_pet.dm b/code/modules/modular_computers/file_system/programs/virtual_pet.dm index 746824f8d8bf7..ed30fdbd70326 100644 --- a/code/modules/modular_computers/file_system/programs/virtual_pet.dm +++ b/code/modules/modular_computers/file_system/programs/virtual_pet.dm @@ -445,7 +445,7 @@ GLOBAL_LIST_EMPTY(virtual_pets_list) for(var/type_index as anything in hat_selections) if(level >= hat_selections[type_index]) var/obj/item/hat = type_index - var/obj/item/hat_name = initial(hat.name) + var/hat_name = initial(hat.name) if(length(SSachievements.achievements)) // The Achievements subsystem is active. var/datum/award/required_cheevo = cheevo_hats[hat] if(required_cheevo && !user.client.get_award_status(required_cheevo)) diff --git a/code/modules/pai/hud.dm b/code/modules/pai/hud.dm index 77bcafefc82d2..cb7a5c9df390a 100644 --- a/code/modules/pai/hud.dm +++ b/code/modules/pai/hud.dm @@ -2,6 +2,7 @@ /atom/movable/screen/pai icon = 'icons/hud/screen_pai.dmi' + mouse_over_pointer = MOUSE_HAND_POINTER var/required_software /atom/movable/screen/pai/Click() diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index ee732432851a7..728ac6427cec9 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -398,7 +398,7 @@ master_ref = WEAKREF(master) master_name = master.real_name master_dna = master.dna.unique_enzymes - to_chat(src, span_boldannounce("You have been bound to a new master: [user.real_name]!")) + to_chat(src, span_bolddanger("You have been bound to a new master: [user.real_name]!")) holochassis_ready = TRUE return TRUE diff --git a/code/modules/pai/software.dm b/code/modules/pai/software.dm index 59db371610797..285193c7e4cd7 100644 --- a/code/modules/pai/software.dm +++ b/code/modules/pai/software.dm @@ -171,7 +171,7 @@ if(!holder.has_dna()) balloon_alert(src, "no dna detected!") return FALSE - to_chat(src, span_boldannounce(("[holder]'s UE string: [holder.dna.unique_enzymes]"))) + to_chat(src, span_bolddanger(("[holder]'s UE string: [holder.dna.unique_enzymes]"))) to_chat(src, span_notice("DNA [holder.dna.unique_enzymes == master_dna ? "matches" : "does not match"] our stored Master's DNA.")) return TRUE diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 7750b3926465f..968a093684b60 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -19,6 +19,7 @@ "Black" = "clipboard_black", "White" = "clipboard_white", ) + unique_reskin_changes_inhand = TRUE /// The stored pen var/obj/item/pen/pen diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index 3199156106c05..e442005feb7f4 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -328,7 +328,10 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("PA HR Department", "PA Legal Department history_add("Send", params["name"]) GLOB.requests.fax_request(usr.client, "sent a fax message from [fax_name]/[fax_id] to [params["name"]]", fax_paper) - to_chat(GLOB.admins, span_adminnotice("[icon2html(src.icon, GLOB.admins)]FAX REQUEST: [ADMIN_FULLMONTY(usr)]: [span_linkify("sent a fax message from [fax_name]/[fax_id][ADMIN_FLW(src)] to [html_encode(params["name"])]")] [ADMIN_SHOW_PAPER(fax_paper)] [ADMIN_PRINT_FAX(fax_paper, fax_name, params["id"])]"), confidential = TRUE) + to_chat(GLOB.admins, + span_adminnotice("[icon2html(src.icon, GLOB.admins)]FAX REQUEST: [ADMIN_FULLMONTY(usr)]: [span_linkify("sent a fax message from [fax_name]/[fax_id][ADMIN_FLW(src)] to [html_encode(params["name"])]")] [ADMIN_SHOW_PAPER(fax_paper)] [ADMIN_PRINT_FAX(fax_paper, fax_name, params["id"])]"), + type = MESSAGE_TYPE_PRAYER, + confidential = TRUE) for(var/client/staff as anything in GLOB.admins) if(staff?.prefs.read_preference(/datum/preference/toggle/comms_notification)) SEND_SOUND(staff, sound('sound/misc/server-ready.ogg')) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 525cb8aac2310..fcd73ec99bf1e 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -394,7 +394,7 @@ * * plane_type - what it will be folded into (path) */ /obj/item/paper/proc/make_plane(mob/living/user, plane_type = /obj/item/paperplane) - balloon_alert(user, "folded into a plane") + loc.balloon_alert(user, "folded into a plane") user.temporarilyRemoveItemFromInventory(src) var/obj/item/paperplane/new_plane = new plane_type(loc, src) if(user.Adjacent(new_plane)) @@ -634,7 +634,7 @@ var/stamp_icon_state = stamp_info["stamp_icon_state"] if (LAZYLEN(raw_stamp_data) >= MAX_PAPER_STAMPS) - to_chat(usr, pick("You try to stamp but you miss!", "There is no where else you can stamp!")) + to_chat(usr, pick("You try to stamp but you miss!", "There is nowhere else you can stamp!")) return TRUE add_stamp(stamp_class, stamp_x, stamp_y, stamp_rotation, stamp_icon_state) @@ -649,7 +649,7 @@ var/this_input_length = length_char(paper_input) if(this_input_length == 0) - to_chat(user, pick("Writing block strikes again!", "You forgot to write anthing!")) + to_chat(user, pick("Writing block strikes again!", "You forgot to write anything!")) return TRUE // If the paper is on an unwritable noticeboard, this usually shouldn't be possible. diff --git a/code/modules/paperwork/paperwork.dm b/code/modules/paperwork/paperwork.dm index 2acedcf00f093..9c88bb61a68c2 100644 --- a/code/modules/paperwork/paperwork.dm +++ b/code/modules/paperwork/paperwork.dm @@ -61,6 +61,10 @@ add_stamp() return TRUE +/obj/item/paperwork/examine(mob/user) // DOPPLER EDIT - paperwork has more description, modifying examine to fake the standard extended examine text + . = ..() + . += span_notice("This item could be examined further...") + /obj/item/paperwork/examine_more(mob/user) . = ..() diff --git a/code/modules/plumbing/plumbers/iv_drip.dm b/code/modules/plumbing/plumbers/iv_drip.dm index 45c2ebca27acb..e528745bb60c2 100644 --- a/code/modules/plumbing/plumbers/iv_drip.dm +++ b/code/modules/plumbing/plumbers/iv_drip.dm @@ -14,7 +14,7 @@ AddComponent(/datum/component/simple_rotation) /obj/machinery/iv_drip/plumbing/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) - if(attached) + if(attachment) context[SCREENTIP_CONTEXT_RMB] = "Take needle out" else if(reagent_container && !use_internal_storage) context[SCREENTIP_CONTEXT_RMB] = "Eject container" diff --git a/code/modules/plumbing/plumbers/pill_press.dm b/code/modules/plumbing/plumbers/pill_press.dm index 23a7c7b03e54f..b5b0744589ae7 100644 --- a/code/modules/plumbing/plumbers/pill_press.dm +++ b/code/modules/plumbing/plumbers/pill_press.dm @@ -1,7 +1,5 @@ ///the minimum size of a pill or patch #define MIN_VOLUME 5 -///the maximum size a pill or patch can be -#define MAX_VOLUME 50 ///max amount of pills allowed on our tile before we start storing them instead #define MAX_FLOOR_PRODUCTS 10 @@ -11,16 +9,16 @@ desc = "A press that makes pills, patches and bottles." icon_state = "pill_press" - /// current operating product (pills or patches) - var/product = "pill" /// selected size of the product var/current_volume = 10 + /// maximum printable volume of the product + var/max_volume = 50 /// prefix for the product name var/product_name = "factory" /// All packaging types wrapped up in 1 big list var/static/list/packaging_types = null ///The type of packaging to use - var/packaging_type + var/obj/item/reagent_containers/packaging_type ///Category of packaging var/packaging_category /// list of products stored in the machine, so we dont have 610 pills on one tile @@ -52,34 +50,28 @@ packaging_types += list(category_item) - packaging_type = REF(GLOB.reagent_containers[CAT_PILLS][1]) - decode_category() + packaging_type = GLOB.reagent_containers[CAT_PILLS][1] + max_volume = initial(packaging_type.volume) + current_volume = clamp(current_volume, MIN_VOLUME, max_volume) AddComponent(/datum/component/plumbing/simple_demand, bolt, layer) +/obj/machinery/plumbing/pill_press/Destroy(force) + QDEL_LAZYLIST(stored_products) + return ..() + /obj/machinery/plumbing/pill_press/examine(mob/user) . = ..() . += span_notice("The [name] currently has [stored_products.len] stored. There needs to be less than [MAX_FLOOR_PRODUCTS] on the floor to continue dispensing.") -/// decode product category from its type path and returns the decoded typepath -/obj/machinery/plumbing/pill_press/proc/decode_category() - var/obj/item/reagent_containers/container = locate(packaging_type) - if(ispath(container, /obj/item/reagent_containers/pill/patch)) - packaging_category = CAT_PATCHES - else if(ispath(container, /obj/item/reagent_containers/pill)) - packaging_category = CAT_PILLS - else - packaging_category = "Bottles" - return container - /obj/machinery/plumbing/pill_press/process(seconds_per_tick) if(!is_operational) return //shift & check to account for floating point inaccuracies if(reagents.total_volume >= current_volume) - var/obj/item/reagent_containers/container = locate(packaging_type) - container = new container(src) + var/obj/item/reagent_containers/container = new packaging_type(src) + var/suffix switch(packaging_category) if(CAT_PILLS) @@ -121,7 +113,6 @@ var/list/data = list() data["min_volume"] = MIN_VOLUME - data["max_volume"] = MAX_VOLUME data["packaging_types"] = packaging_types return data @@ -130,8 +121,9 @@ var/list/data = list() data["current_volume"] = current_volume + data["max_volume"] = max_volume data["product_name"] = product_name - data["packaging_type"] = packaging_type + data["packaging_type"] = REF(packaging_type) data["packaging_category"] = packaging_category return data @@ -141,21 +133,57 @@ if(.) return - . = TRUE switch(action) if("change_current_volume") - current_volume = round(clamp(text2num(params["volume"]), MIN_VOLUME, MAX_VOLUME)) + var/value = params["volume"] + if(isnull(value)) + return FALSE + + value = text2num(value) + if(isnull(value)) + return FALSE + + current_volume = clamp(value, MIN_VOLUME, max_volume) + return TRUE + if("change_product_name") var/formatted_name = html_encode(params["name"]) if (length(formatted_name) > MAX_NAME_LEN) product_name = copytext(formatted_name, 1, MAX_NAME_LEN + 1) else product_name = formatted_name + return TRUE + if("change_product") - packaging_type = params["ref"] - var/obj/item/reagent_containers/container = decode_category() - current_volume = clamp(current_volume, MIN_VOLUME, initial(container.volume)) + var/container = params["ref"] + if(!container) + return FALSE + + //is a valid option + var/container_found = FALSE + for(var/list/category as anything in packaging_types) + if(container_found) + break + for(var/list/package_item as anything in category["products"]) + if(container == package_item["ref"]) + container_found = TRUE + break + if(!container_found) + return FALSE + + //decode container & its category + packaging_type = locate(container) + if(ispath(packaging_type, /obj/item/reagent_containers/pill/patch)) + packaging_category = CAT_PATCHES + else if(ispath(packaging_type, /obj/item/reagent_containers/pill)) + packaging_category = CAT_PILLS + else + packaging_category = "Bottles" + + //get new volumes + max_volume = initial(packaging_type.volume) + current_volume = clamp(current_volume, MIN_VOLUME, max_volume) + return TRUE #undef MIN_VOLUME -#undef MAX_VOLUME #undef MAX_FLOOR_PRODUCTS diff --git a/code/modules/point/point.dm b/code/modules/point/point.dm index 683710bf128e4..98574373a816c 100644 --- a/code/modules/point/point.dm +++ b/code/modules/point/point.dm @@ -122,7 +122,15 @@ if(!(pointing_at in view(client.view, src))) return FALSE - + if(iscarbon(src)) // special interactions for carbons + var/mob/living/carbon/our_carbon = src + if(our_carbon.usable_hands <= 0 || src.incapacitated & INCAPABLE_RESTRAINTS || HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) + if(TIMER_COOLDOWN_FINISHED(src, "point_verb_emote_cooldown")) + //cooldown handled in the emote. + our_carbon.emote("point [pointing_at]") + else + to_chat(src, span_warning("You need to wait before pointing again!")) + return FALSE point_at(pointing_at, TRUE) return TRUE diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 3657bb84db83a..4d38d6944feeb 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -99,7 +99,7 @@ continue if(on_turf.dir != dir) continue - stack_trace("Conflicting double stacked light [on_turf.type] found at ([our_location.x],[our_location.y],[our_location.z])") + stack_trace("Conflicting double stacked light [on_turf.type] found at [get_area(our_location)] ([our_location.x],[our_location.y],[our_location.z])") qdel(on_turf) if(!mapload) //sync up nightshift lighting for player made lights @@ -222,6 +222,8 @@ var/color_set = bulb_colour if(color) color_set = color + if (cached_color_filter) + color_set = apply_matrix_to_color(color_set, cached_color_filter["color"], cached_color_filter["space"] || COLORSPACE_RGB) if(reagents) START_PROCESSING(SSmachines, src) var/area/local_area = get_room_area() @@ -576,15 +578,13 @@ else if(istype(user) && user.dna.check_mutation(/datum/mutation/human/telekinesis)) to_chat(user, span_notice("You telekinetically remove the light [fitting].")) else - var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") - if(affecting?.receive_damage( 0, 5 )) // 5 burn damage - user.update_damage_overlays() + var/obj/item/bodypart/affecting = user.get_active_hand() + user.apply_damage(5, BURN, affecting, wound_bonus = CANT_WOUND) if(HAS_TRAIT(user, TRAIT_LIGHTBULB_REMOVER)) - to_chat(user, span_notice("You feel your [affecting] burning, and the light beginning to budge.")) + to_chat(user, span_notice("You feel your [affecting.plaintext_zone] burning, but the light begins to budge...")) if(!do_after(user, 5 SECONDS, target = src)) return - if(affecting?.receive_damage( 0, 10 )) // 10 more burn damage - user.update_damage_overlays() + user.apply_damage(10, BURN, user.get_active_hand(), wound_bonus = CANT_WOUND) to_chat(user, span_notice("You manage to remove the light [fitting], shattering it in process.")) break_light_tube() else @@ -725,7 +725,7 @@ plane = FLOOR_PLANE light_type = /obj/item/light/bulb fitting = "bulb" - nightshift_brightness = 3 + nightshift_brightness = 4 fire_brightness = 4.5 /obj/machinery/light/floor/get_light_offset() diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index dff4a732b9312..69693af3a4a92 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -73,10 +73,10 @@ tesla_zap(source = src, zap_range = 5, power = power_gen * 20) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), src, 2, 3, 4, null, 8), 10 SECONDS) // Not a normal explosion. -/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/Proj) +/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/proj) . = ..() - if(!going_kaboom && istype(Proj) && Proj.damage > 0 && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))) - log_bomber(Proj.firer, "triggered a", src, "explosion via projectile") + if(!going_kaboom && istype(proj) && proj.damage > 0 && ((proj.damage_type == BURN) || (proj.damage_type == BRUTE))) + log_bomber(proj.firer, "triggered a", src, "explosion via projectile") overload() /obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 1993a51e29b46..a53d959c9e31e 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -149,7 +149,7 @@ if(current_size <= STAGE_TWO) investigate_log("has been destroyed by a heavy explosion.", INVESTIGATE_ENGINE) qdel(src) - return + return TRUE energy -= round(((energy + 1) / 2), 1) if(EXPLODE_HEAVY) diff --git a/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm b/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm index 4fe8863815a2d..e1d2a25d4da07 100644 --- a/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm +++ b/code/modules/power/supermatter/supermatter_delamination/delamination_effects.dm @@ -40,9 +40,9 @@ message = "You hear a lot of rattling in the disposal pipes around you as reality itself distorts. Yet, you feel safe." else message = "You hold onto \the [victim.loc] as hard as you can, as reality distorts around you. You feel safe." - to_chat(victim, span_boldannounce(message)) + to_chat(victim, span_bolddanger(message)) continue - to_chat(victim, span_boldannounce("You feel reality distort for a moment...")) + to_chat(victim, span_bolddanger("You feel reality distort for a moment...")) if (isliving(victim)) var/mob/living/living_victim = victim living_victim.add_mood_event("delam", /datum/mood_event/delam) @@ -161,7 +161,7 @@ for(var/mob/player as anything in GLOB.player_list) if(!isdead(player)) var/mob/living/living_player = player - to_chat(player, span_boldannounce("Everything around you is resonating with a powerful energy. This can't be good.")) + to_chat(player, span_bolddanger("Everything around you is resonating with a powerful energy. This can't be good.")) living_player.add_mood_event("cascade", /datum/mood_event/cascade) SEND_SOUND(player, 'sound/effects/magic/charge.ogg') diff --git a/code/modules/power/supermatter/supermatter_hit_procs.dm b/code/modules/power/supermatter/supermatter_hit_procs.dm index 167ee7988b138..d2e87ef4e548d 100644 --- a/code/modules/power/supermatter/supermatter_hit_procs.dm +++ b/code/modules/power/supermatter/supermatter_hit_procs.dm @@ -48,7 +48,7 @@ if(!is_valid_z_level(get_turf(hearing_mob), sm_turf)) continue SEND_SOUND(hearing_mob, 'sound/effects/supermatter.ogg') //everyone goan know bout this - to_chat(hearing_mob, span_boldannounce("A horrible screeching fills your ears, and a wave of dread washes over you...")) + to_chat(hearing_mob, span_bolddanger("A horrible screeching fills your ears, and a wave of dread washes over you...")) qdel(src) return gain diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 2e2931c835c0d..ab210fe1986fe 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -243,7 +243,7 @@ //This also means we have no need to track distance, as the doview() proc does it all for us. //Darkness fucks oview up hard. I've tried dview() but it doesn't seem to work - //I hate existance + //I hate existence for(var/atom/A as anything in typecache_filter_list(oview(zap_range+2, source), things_to_shock)) if(!(zap_flags & ZAP_ALLOW_DUPLICATES) && LAZYACCESS(shocked_targets, A)) continue diff --git a/code/modules/power/turbine/turbine.dm b/code/modules/power/turbine/turbine.dm index e839800158f63..2112002e50745 100644 --- a/code/modules/power/turbine/turbine.dm +++ b/code/modules/power/turbine/turbine.dm @@ -1,11 +1,18 @@ +///Minimum pressure of gases pumped through the turbine #define MINIMUM_TURBINE_PRESSURE 0.01 +///Returns the minimum pressure if it falls below the value #define PRESSURE_MAX(value)(max((value), MINIMUM_TURBINE_PRESSURE)) +///Use emissive for overlays +#define EMISSIVE_OVERLAY (1 << 0) +///No turned off overlay +#define NO_INACTIVE_OVERLAY (1 << 1) /obj/machinery/power/turbine + icon = 'icons/obj/machines/engine/turbine.dmi' density = TRUE resistance_flags = FIRE_PROOF can_atmos_pass = ATMOS_PASS_DENSITY - processing_flags = NONE + processing_flags = START_PROCESSING_MANUALLY ///Checks if the machine is processing or not var/active = FALSE @@ -17,15 +24,8 @@ var/obj/item/turbine_parts/part_path ///The gas mixture this turbine part is storing var/datum/gas_mixture/machine_gasmix - - ///Our overlay when active - var/active_overlay = "" - ///Our overlay when off - var/off_overlay = "" - ///Our overlay when open - var/open_overlay = "" - ///Should we use emissive appearance? - var/emissive = FALSE + ///Flags for our overlays + var/overlay_flags = NONE /obj/machinery/power/turbine/Initialize(mapload, gas_theoretical_volume) . = ..() @@ -59,41 +59,6 @@ deactivate_parts() return ..() -/** - * Handles all the calculations needed for the gases, work done, temperature increase/decrease - * - * Arguments - * * datum/gas_mixture/input_mix - the gas from the environment or from another part of the turbine - * * datum/gas_mixture/output_mix - the gas that got pumped into this part from the input mix. - * ideally should be same as input mix but varying texmperatur & pressures can cause varying results - * * work_amount_to_remove - the amount of work to subtract from the actual work done to pump in the input mixture. - * For e.g. if gas was transfered from the inlet compressor to the rotor we want to subtract the work done - * by the inlet from the rotor to get the true work done - * * intake_size - the percentage of gas to be fed into an turbine part, controlled by turbine computer for inlet compressor only - */ -/obj/machinery/power/turbine/proc/transfer_gases(datum/gas_mixture/input_mix, datum/gas_mixture/output_mix, work_amount_to_remove, intake_size = 1) - //pump gases. if no gases were transferred then no work was done - var/output_pressure = PRESSURE_MAX(output_mix.return_pressure()) - var/datum/gas_mixture/transferred_gases = input_mix.pump_gas_to(output_mix, input_mix.return_pressure() * intake_size) - if(!transferred_gases) - return 0 - - //compute work done - var/work_done = QUANTIZE(transferred_gases.total_moles()) * R_IDEAL_GAS_EQUATION * transferred_gases.temperature * log((transferred_gases.volume * PRESSURE_MAX(transferred_gases.return_pressure())) / (output_mix.volume * output_pressure)) * TURBINE_WORK_CONVERSION_MULTIPLIER - if(work_amount_to_remove) - work_done = work_done - work_amount_to_remove - - //compute temperature & work from temperature if that is a lower value - var/output_mix_heat_capacity = output_mix.heat_capacity() - if(!output_mix_heat_capacity) - return 0 - work_done = min(work_done, (output_mix_heat_capacity * output_mix.temperature - output_mix_heat_capacity * TCMB) / TURBINE_HEAT_CONVERSION_MULTIPLIER) - output_mix.temperature = max((output_mix.temperature * output_mix_heat_capacity + work_done * TURBINE_HEAT_CONVERSION_MULTIPLIER) / output_mix_heat_capacity, TCMB) - return work_done - -/obj/machinery/power/turbine/block_superconductivity() - return TRUE - /obj/machinery/power/turbine/add_context(atom/source, list/context, obj/item/held_item, mob/user) if(isnull(held_item)) return NONE @@ -128,7 +93,7 @@ . = ..() if(installed_part) . += span_notice("Currently at tier [installed_part.current_tier].") - if(installed_part.current_tier + 1 < installed_part.max_tier) + if(installed_part.current_tier + 1 < TURBINE_PART_TIER_FOUR) . += span_notice("Can be upgraded by using a tier [installed_part.current_tier + 1] part.") . += span_notice("The [installed_part.name] can be [EXAMINE_HINT("pried")] out.") else @@ -140,15 +105,54 @@ /obj/machinery/power/turbine/update_overlays() . = ..() + if(panel_open) - . += open_overlay + . += "[base_icon_state]_open" if(active) - . += active_overlay - if(emissive) - . += emissive_appearance(icon, active_overlay, src) - else - . += off_overlay + . += "[base_icon_state]_on" + if(overlay_flags & EMISSIVE_OVERLAY) + . += emissive_appearance(icon, "[base_icon_state]_on", src) + else if(!(overlay_flags & NO_INACTIVE_OVERLAY)) + . += "[base_icon_state]_off" + + +/** + * Handles all the calculations needed for the gases, work done, temperature increase/decrease + * + * Arguments + * * datum/gas_mixture/input_mix - the gas from the environment or from another part of the turbine + * * datum/gas_mixture/output_mix - the gas that got pumped into this part from the input mix. + * ideally should be same as input mix but varying texmperatur & pressures can cause varying results + * * work_amount_to_remove - the amount of work to subtract from the actual work done to pump in the input mixture. + * For e.g. if gas was transfered from the inlet compressor to the rotor we want to subtract the work done + * by the inlet from the rotor to get the true work done + * * intake_size - the percentage of gas to be fed into an turbine part, controlled by turbine computer for inlet compressor only + */ +/obj/machinery/power/turbine/proc/transfer_gases(datum/gas_mixture/input_mix, datum/gas_mixture/output_mix, work_amount_to_remove, intake_size = 1) + PROTECTED_PROC(TRUE) + + //pump gases. if no gases were transferred then no work was done + var/output_pressure = PRESSURE_MAX(output_mix.return_pressure()) + var/datum/gas_mixture/transferred_gases = input_mix.pump_gas_to(output_mix, input_mix.return_pressure() * intake_size) + if(!transferred_gases) + return 0 + + //compute work done + var/work_done = QUANTIZE(transferred_gases.total_moles()) * R_IDEAL_GAS_EQUATION * transferred_gases.temperature * log((transferred_gases.volume * PRESSURE_MAX(transferred_gases.return_pressure())) / (output_mix.volume * output_pressure)) * TURBINE_WORK_CONVERSION_MULTIPLIER + if(work_amount_to_remove) + work_done = work_done - work_amount_to_remove + + //compute temperature & work from temperature if that is a lower value + var/output_mix_heat_capacity = output_mix.heat_capacity() + if(!output_mix_heat_capacity) + return 0 + work_done = min(work_done, (output_mix_heat_capacity * output_mix.temperature - output_mix_heat_capacity * TCMB) / TURBINE_HEAT_CONVERSION_MULTIPLIER) + output_mix.temperature = max((output_mix.temperature * output_mix_heat_capacity + work_done * TURBINE_HEAT_CONVERSION_MULTIPLIER) / output_mix_heat_capacity, TCMB) + return work_done + +/obj/machinery/power/turbine/block_superconductivity() + return TRUE /obj/machinery/power/turbine/screwdriver_act(mob/living/user, obj/item/tool) . = ITEM_INTERACT_BLOCKING @@ -165,7 +169,7 @@ deactivate_parts(user) else activate_parts(user) - update_appearance() + update_appearance(UPDATE_OVERLAYS) return ITEM_INTERACT_SUCCESS @@ -229,22 +233,22 @@ if(gone == installed_part) installed_part = null -/obj/machinery/power/turbine/attackby(obj/item/turbine_parts/object, mob/user, params) - //not the correct part +/obj/machinery/power/turbine/item_interaction(mob/living/user, obj/item/turbine_parts/object, list/modifiers) + . = NONE if(!istype(object, part_path)) return ..() //not in a state to accep the part. return TRUE so we don't bash the machine and damage it if(active) balloon_alert(user, "turn off the machine first!") - return TRUE + return ITEM_INTERACT_BLOCKING if(!panel_open) balloon_alert(user, "open the maintenance hatch first!") - return TRUE + return ITEM_INTERACT_BLOCKING //install the part if(!do_after(user, 2 SECONDS, src)) - return TRUE + return ITEM_INTERACT_BLOCKING if(installed_part) user.put_in_hands(installed_part) balloon_alert(user, "replaced part with the one in hand") @@ -252,22 +256,21 @@ balloon_alert(user, "installed new part") user.transferItemToLoc(object, src) installed_part = object - return TRUE + return ITEM_INTERACT_SUCCESS /// Gets the efficiency of the installed part, returns 0 if no part is installed /obj/machinery/power/turbine/proc/get_efficiency() + SHOULD_BE_PURE(TRUE) + return installed_part?.part_efficiency || 0 /obj/machinery/power/turbine/inlet_compressor name = "inlet compressor" desc = "The input side of a turbine generator, contains the compressor." - icon = 'icons/obj/machines/engine/turbine.dmi' icon_state = "inlet_compressor" + base_icon_state = "inlet" circuit = /obj/item/circuitboard/machine/turbine_compressor part_path = /obj/item/turbine_parts/compressor - active_overlay = "inlet_animation" - off_overlay = "inlet_off" - open_overlay = "inlet_open" /// The rotor this inlet is linked to var/obj/machinery/power/turbine/core_rotor/rotor @@ -296,6 +299,8 @@ * Returns temperature of the gas mix absorbed only if some work was done */ /obj/machinery/power/turbine/inlet_compressor/proc/compress_gases() + SHOULD_NOT_OVERRIDE(TRUE) + compressor_work = 0 compressor_pressure = MINIMUM_TURBINE_PRESSURE if(QDELETED(input_turf)) @@ -314,16 +319,14 @@ return input_turf_mixture.temperature +//===========================OUTLET============================================== /obj/machinery/power/turbine/turbine_outlet name = "turbine outlet" desc = "The output side of a turbine generator, contains the turbine and the stator." - icon = 'icons/obj/machines/engine/turbine.dmi' icon_state = "turbine_outlet" + base_icon_state = "outlet" circuit = /obj/item/circuitboard/machine/turbine_stator part_path = /obj/item/turbine_parts/stator - active_overlay = "outlet_animation" - off_overlay = "outlet_off" - open_overlay = "outlet_open" /// The rotor this outlet is linked to var/obj/machinery/power/turbine/core_rotor/rotor @@ -343,6 +346,8 @@ /// push gases from its gas mix to output turf /obj/machinery/power/turbine/turbine_outlet/proc/expel_gases() + SHOULD_NOT_OVERRIDE(TRUE) + if(QDELETED(output_turf)) output_turf = get_step(loc, dir) //turf is blocked don't eject gases @@ -358,18 +363,16 @@ //return ejected gases return ejected_gases +//===========================================CORE ROTOR========================================= /obj/machinery/power/turbine/core_rotor name = "core rotor" desc = "The middle part of a turbine generator, contains the rotor and the main computer." - icon = 'icons/obj/machines/engine/turbine.dmi' icon_state = "core_rotor" - active_overlay = "core_light" - open_overlay = "core_open" - active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION - emissive = TRUE + base_icon_state = "core" can_change_cable_layer = TRUE circuit = /obj/item/circuitboard/machine/turbine_rotor part_path = /obj/item/turbine_parts/rotor + overlay_flags = EMISSIVE_OVERLAY | NO_INACTIVE_OVERLAY ///ID to easily connect the main part of the turbine to the computer var/mapping_id @@ -378,9 +381,9 @@ ///Reference to the turbine var/obj/machinery/power/turbine/turbine_outlet/turbine ///Rotation per minute the machine is doing - var/rpm + var/rpm = 0 ///Amount of power the machine is producing - var/produced_energy + var/produced_energy = 0 ///Check to see if all parts are connected to the core var/all_parts_connected = FALSE ///Max rmp that the installed parts can handle, limits the rpms @@ -462,16 +465,21 @@ //works same as regular left click return multitool_act(user, tool) -/// convinience proc for balloon alert which returns if viewer is null +/** + * convinience proc for balloon alert which returns if viewer is null + * Arguments + * + * * mob/viewer - the player receiving the message + * * text - the message + */ /obj/machinery/power/turbine/core_rotor/proc/feedback(mob/viewer, text) + PRIVATE_PROC(TRUE) + if(isnull(viewer)) return balloon_alert(viewer, text) -/** - * Called to activate the complete machine, checks for part presence, correct orientation and installed parts - * Registers the input/output turfs - */ +///Called to activate the complete machine, checks for part presence, correct orientation and installed parts /obj/machinery/power/turbine/core_rotor/activate_parts(mob/user, check_only = FALSE) //if this is not a checkup and all parts are connected then we have nothing to do if(!check_only && all_parts_connected) @@ -479,13 +487,18 @@ //locate compressor & turbine, when checking we simply check to see if they are still there if(!check_only) - compressor = locate(/obj/machinery/power/turbine/inlet_compressor) in get_step(src, REVERSE_DIR(dir)) - turbine = locate(/obj/machinery/power/turbine/turbine_outlet) in get_step(src, dir) + compressor = locate() in get_step(src, REVERSE_DIR(dir)) + turbine = locate() in get_step(src, dir) - //maybe look for them the other way around. we want the rotor to allign with them either way for player convinience - if(!compressor && !turbine) - compressor = locate(/obj/machinery/power/turbine/inlet_compressor) in get_step(src, dir) - turbine = locate(/obj/machinery/power/turbine/turbine_outlet) in get_step(src, REVERSE_DIR(dir)) + //maybe look for them the other way around. this means the rotor is facing the wrong way + if(QDELETED(compressor) && QDELETED(turbine)) + compressor = locate() in get_step(src, dir) + turbine = locate() in get_step(src, REVERSE_DIR(dir)) + + //show corrective actions + if(!QDELETED(compressor) || !QDELETED(turbine)) + feedback(user, "rotor is facing the wrong way!") + return (all_parts_connected = FALSE) //sanity checks for compressor if(QDELETED(compressor)) @@ -505,17 +518,17 @@ if(QDELETED(turbine)) feedback(user, "missing turbine!") return (all_parts_connected = FALSE) - if(turbine.dir != dir && turbine.dir != REVERSE_DIR(dir)) + if(turbine.dir != dir && turbine.dir != REVERSE_DIR(dir)) //make sure it's not perpendicular to the rotor feedback(user, "turbine not aligned with rotor!") return (all_parts_connected = FALSE) if(!turbine.can_connect) - feedback(user, "turbine panel is either open or is misplaced!") //we say misplaced because can_connect becomes FALSE when this turbine is moved + feedback(user, "close turbine panel!") //we say misplaced because can_connect becomes FALSE when this turbine is moved return (all_parts_connected = FALSE) if(!turbine.installed_part) feedback(user, "turbine is missing stator part!") return (all_parts_connected = FALSE) - //final sanity check to make sure turbine & compressor are facing the same direction. From an visual perspective they will appear facing away from each other actually. I know blame spriter's + //sanity check to make sure turbine & compressor are facing the same direction. From an visual perspective they will appear facing away from each other actually. I know blame spriter's if(compressor.dir != turbine.dir) feedback(user, "turbine & compressor are not facing away from each other!") return (all_parts_connected = FALSE) @@ -537,85 +550,60 @@ * Allows to null the various machines and references from the main core */ /obj/machinery/power/turbine/core_rotor/deactivate_parts() - if(all_parts_connected) - power_off() + toggle_power(force_off = TRUE) compressor?.rotor = null compressor = null turbine?.rotor = null turbine = null all_parts_connected = FALSE disconnect_from_network() - SSair.stop_processing_machine(src) /obj/machinery/power/turbine/core_rotor/on_deconstruction(disassembled) deactivate_parts() return ..() /// Toggle power on and off, not safe -/obj/machinery/power/turbine/core_rotor/proc/toggle_power() - if(active) - power_off() - return - power_on() - -/** - * Activate all three parts, not safe, it assumes the machine already connected and properly working - * It does a minimun check to ensure the parts still exist - */ -/obj/machinery/power/turbine/core_rotor/proc/power_on() - if(active || QDELETED(compressor) || QDELETED(turbine)) - return - active = TRUE - compressor.active = TRUE - turbine.active = TRUE - call_parts_update_appearance() - SSair.start_processing_machine(src) - -/// Calls all parts update appearance proc. -/obj/machinery/power/turbine/core_rotor/proc/call_parts_update_appearance() - update_appearance() - if(!QDELETED(compressor)) - compressor.update_appearance() - if(!QDELETED(turbine)) - turbine.update_appearance() +/obj/machinery/power/turbine/core_rotor/proc/toggle_power(force_off) + SHOULD_NOT_OVERRIDE(TRUE) + + //toggle status + if(force_off) + if(!active) //was already off + return + active = FALSE + else + active = !active -/** - * Deactivate all three parts, not safe, it assumes the machine already connected and properly working - * will try to turn off whatever components are left of this machine - */ -/obj/machinery/power/turbine/core_rotor/proc/power_off() - if(!active) - return - active = FALSE + //update operation status of parts + update_appearance(UPDATE_OVERLAYS) if(!QDELETED(compressor)) - compressor.active = FALSE + compressor.active = active + compressor.update_appearance(UPDATE_OVERLAYS) if(!QDELETED(turbine)) - turbine.active = FALSE - call_parts_update_appearance() - SSair.stop_processing_machine(src) + turbine.active = active + turbine.update_appearance(UPDATE_OVERLAYS) -/// Returns true if all parts have their panel closed -/obj/machinery/power/turbine/core_rotor/proc/all_parts_ready() - if(QDELETED(compressor)) - return FALSE - if(QDELETED(turbine)) - return FALSE - return !panel_open && !compressor.panel_open && !turbine.panel_open + //start or stop processing + if(active) + update_mode_power_usage(ACTIVE_POWER_USE, active_power_usage) + begin_processing() + else + unset_static_power() + end_processing() /// Getter for turbine integrity, return the amount in % /obj/machinery/power/turbine/core_rotor/proc/get_turbine_integrity() + SHOULD_NOT_OVERRIDE(TRUE) + var/integrity = damage / 500 integrity = max(round(100 - integrity * 100, 0.01), 0) return integrity -/obj/machinery/power/turbine/core_rotor/process_atmos() +/obj/machinery/power/turbine/core_rotor/process(seconds_per_tick) if(!active || !activate_parts(check_only = TRUE) || (machine_stat & BROKEN) || !powered(ignore_use_power = TRUE)) - power_off() + deactivate_parts() return PROCESS_KILL - //use power to operate internal electronics & stuff - update_mode_power_usage(ACTIVE_POWER_USE, active_power_usage) - //===============COMPRESSOR WORKING========// //Transfer gases from turf to compressor var/temperature = compressor.compress_gases() @@ -668,9 +656,9 @@ work_done = max(work_done - compressor.compressor_work * TURBINE_COMPRESSOR_STATOR_INTERACTION_MULTIPLIER - turbine_work, 0) //calculate final acheived rpm rpm = ((work_done * compressor.get_efficiency()) ** turbine.get_efficiency()) * get_efficiency() / TURBINE_RPM_CONVERSION - rpm = FLOOR(min(rpm, max_allowed_rpm), 1) + rpm = min(ROUND_UP(rpm), max_allowed_rpm) //add energy into the grid, also use part of it for turbine operation - produced_energy = rpm * TURBINE_ENERGY_RECTIFICATION_MULTIPLIER * TURBINE_RPM_CONVERSION + produced_energy = rpm * TURBINE_ENERGY_RECTIFICATION_MULTIPLIER * TURBINE_RPM_CONVERSION * seconds_per_tick add_avail(produced_energy) /obj/item/paper/guides/jobs/atmos/turbine @@ -686,3 +674,5 @@ #undef PRESSURE_MAX #undef MINIMUM_TURBINE_PRESSURE +#undef EMISSIVE_OVERLAY +#undef NO_INACTIVE_OVERLAY diff --git a/code/modules/power/turbine/turbine_computer.dm b/code/modules/power/turbine/turbine_computer.dm index 2ad777edd6228..7771bda03f8df 100644 --- a/code/modules/power/turbine/turbine_computer.dm +++ b/code/modules/power/turbine/turbine_computer.dm @@ -11,19 +11,17 @@ /obj/machinery/computer/turbine_computer/post_machine_initialize() . = ..() - locate_machinery() -/obj/machinery/computer/turbine_computer/locate_machinery(multitool_connection) if(!mapping_id) return for(var/obj/machinery/power/turbine/core_rotor/main as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/power/turbine/core_rotor)) if(main.mapping_id != mapping_id) continue register_machine(main) - return + break -/obj/machinery/computer/turbine_computer/multitool_act(mob/living/user, obj/item/tool) - var/obj/item/multitool/multitool = tool +/obj/machinery/computer/turbine_computer/multitool_act(mob/living/user, obj/item/multitool/multitool) + . = ITEM_INTERACT_FAILURE if(!istype(multitool.buffer, /obj/machinery/power/turbine/core_rotor)) to_chat(user, span_notice("Wrong machine type in [multitool] buffer...")) return @@ -31,12 +29,21 @@ to_chat(user, span_notice("Changing [src] bluespace network...")) if(!do_after(user, 0.2 SECONDS, src)) return + playsound(get_turf(user), 'sound/machines/click.ogg', 10, TRUE) register_machine(multitool.buffer) to_chat(user, span_notice("You link [src] to the console in [multitool]'s buffer.")) - return TRUE + return ITEM_INTERACT_SUCCESS + +/** + * Links the rotor with this computer + * Arguments + * + * * obj/machinery/power/turbine/core_rotor/machine - the machine to link + */ +/obj/machinery/computer/turbine_computer/proc/register_machine(obj/machinery/power/turbine/core_rotor/machine) + PRIVATE_PROC(TRUE) -/obj/machinery/computer/turbine_computer/proc/register_machine(machine) turbine_core = WEAKREF(machine) /obj/machinery/computer/turbine_computer/ui_interact(mob/user, datum/tgui/ui) @@ -47,26 +54,27 @@ ui.open() /obj/machinery/computer/turbine_computer/ui_data(mob/user) - var/list/data = list() + . = list() + //do we have the main rotor with all parts connected var/obj/machinery/power/turbine/core_rotor/main_control = turbine_core?.resolve() - data["connected"] = !!QDELETED(main_control) - if(!main_control) + if(QDELETED(main_control) || !main_control.all_parts_connected) + .["connected"] = FALSE return + else + .["connected"] = TRUE - data["active"] = main_control.active - data["rpm"] = main_control.rpm ? main_control.rpm : 0 - data["power"] = main_control.produced_energy ? main_control.produced_energy : 0 - data["integrity"] = main_control.get_turbine_integrity() - data["parts_linked"] = main_control.all_parts_connected - data["parts_ready"] = main_control.all_parts_ready() + //operation status + .["active"] = main_control.active + .["rpm"] = main_control.rpm + .["power"] = energy_to_power(main_control.produced_energy) + .["integrity"] = main_control.get_turbine_integrity() - data["max_rpm"] = main_control.max_allowed_rpm - data["max_temperature"] = main_control.max_allowed_temperature - data["temp"] = main_control.compressor?.input_turf?.air.temperature || 0 - data["regulator"] = QDELETED(main_control.compressor) ? 0 : main_control.compressor.intake_regulator - - return data + //running parameters + .["max_rpm"] = main_control.max_allowed_rpm + .["max_temperature"] = main_control.max_allowed_temperature + .["temp"] = main_control.compressor.input_turf?.air.temperature || 0 + .["regulator"] = main_control.compressor.intake_regulator /obj/machinery/computer/turbine_computer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() @@ -76,19 +84,35 @@ switch(action) if("toggle_power") var/obj/machinery/power/turbine/core_rotor/main_control = turbine_core?.resolve() - if(!main_control || !main_control.all_parts_connected || main_control.rpm > 1000) - return TRUE - if(!main_control.activate_parts(usr, check_only = TRUE)) - return TRUE + if(!main_control) + return FALSE + + if(!main_control.active) //turning on the machine requires all part to be linked + if(!main_control.activate_parts(ui.user, check_only = TRUE)) + return FALSE + else if(main_control.rpm > 1000) //turning off requires rpm to be less than 1000 + return FALSE + main_control.toggle_power() main_control.rpm = 0 main_control.produced_energy = 0 - . = TRUE + return TRUE + if("regulate") - var/intake_size = text2num(params["regulate"]) + var/intake_size = params["regulate"] + if(isnull(intake_size)) + return FALSE + + intake_size = text2num(intake_size) + if(isnull(intake_size)) + return FALSE + var/obj/machinery/power/turbine/core_rotor/main_control = turbine_core?.resolve() - if(intake_size == null || !main_control) - return - if(!QDELETED(main_control.compressor)) - main_control.compressor.intake_regulator = clamp(intake_size, 0.01, 1) - . = TRUE + if(!main_control) + return FALSE + + if(QDELETED(main_control.compressor)) + return FALSE + + main_control.compressor.intake_regulator = clamp(intake_size, 0.01, 1) + return TRUE diff --git a/code/modules/power/turbine/turbine_parts.dm b/code/modules/power/turbine/turbine_parts.dm index 4215fccf39fe0..e568f9e096469 100644 --- a/code/modules/power/turbine/turbine_parts.dm +++ b/code/modules/power/turbine/turbine_parts.dm @@ -1,3 +1,8 @@ +///String to access turbine part typepath to upgrade +#define TURBINE_UPGRADE_PART "part" +///String to access turbine part required amount to upgrade +#define TURBINE_UPGRADE_AMOUNT "amount" + /obj/item/turbine_parts name = "turbine parts" desc = "you really should call an admin" @@ -8,90 +13,62 @@ var/part_efficiency = 0 ///Efficiency increase amount for each tier var/part_efficiency_increase_amount = 0 - ///Current part tier var/current_tier = TURBINE_PART_TIER_ONE - ///Max part tier - var/max_tier = TURBINE_PART_TIER_FOUR - - ///Stores the path of the material for the second tier upgrade - var/obj/item/stack/sheet/second_tier_material = /obj/item/stack/sheet/plasteel - ///Amount of second tier material for the upgrade - var/second_tier_material_amount = 10 - - ///Stores the path of the material for the third tier upgrade - var/obj/item/stack/sheet/third_tier_material = /obj/item/stack/sheet/mineral/titanium - ///Amount of third tier material for the upgrade - var/third_tier_material_amount = 10 - - ///Stores the path of the material for the fourth tier upgrade - var/obj/item/stack/sheet/fourth_tier_material = /obj/item/stack/sheet/mineral/metal_hydrogen - ///Amount of fourth tier material for the upgrade - var/fourth_tier_material_amount = 5 - ///Max rpm reachable by the part var/max_rpm = 35000 - ///Multiplier to increase the max rpm per tier, max should be around 500000 rpm - var/max_rpm_tier_multiplier = 2.5 - ///Max temperature achievable by the part before the turbine starts to take damage var/max_temperature = 50000 - ///Max temperature exponential value per tier - var/max_temperature_tier_exponential = 1.2 /obj/item/turbine_parts/examine(mob/user) . = ..() - . += "This is a tier [current_tier] turbine part, rated for [max_rpm] rpm and [max_temperature] K." - var/upgrade_material_name_amount - switch(current_tier) - if(TURBINE_PART_TIER_ONE) - upgrade_material_name_amount = "[second_tier_material_amount] [initial(second_tier_material.name)] sheets" - if(TURBINE_PART_TIER_TWO) - upgrade_material_name_amount = "[third_tier_material_amount] [initial(third_tier_material.name)] sheets" - if(TURBINE_PART_TIER_THREE) - upgrade_material_name_amount = "[fourth_tier_material_amount] [initial(fourth_tier_material.name)] sheets" + . += span_notice("This is a tier [current_tier] turbine part, rated for [max_rpm] rpm and [max_temperature] K.") - if(upgrade_material_name_amount) - . += "Can be upgraded with [upgrade_material_name_amount]." + var/list/required_parts = get_tier_upgrades() + if(length(required_parts)) + var/obj/item/stack/material = required_parts[TURBINE_UPGRADE_PART] + . += span_notice("Can be upgraded with [required_parts[TURBINE_UPGRADE_AMOUNT]] [initial(material.name)] sheets.") else - . += "Is already at max tier." + . += span_notice("Is already at max tier.") + +///Returns a list containing the typepath & amount of it required to upgrade to the next tier +/obj/item/turbine_parts/proc/get_tier_upgrades() + PROTECTED_PROC(TRUE) + SHOULD_BE_PURE(TRUE) + RETURN_TYPE(/list) -/obj/item/turbine_parts/attackby(obj/item/attacking_item, mob/user, params) - if(current_tier >= max_tier) - return FALSE switch(current_tier) if(TURBINE_PART_TIER_ONE) - if(!istype(attacking_item, second_tier_material)) - return - var/obj/item/stack/sheet/second_tier = attacking_item - if(do_after(user, 1 SECONDS, src) && second_tier.use(second_tier_material_amount)) - current_tier = 2 - part_efficiency += part_efficiency_increase_amount - max_rpm *= max_rpm_tier_multiplier - max_temperature = max_temperature ** max_temperature_tier_exponential - return TRUE + return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/plasteel, TURBINE_UPGRADE_AMOUNT = 10) if(TURBINE_PART_TIER_TWO) - if(!istype(attacking_item, third_tier_material)) - return - var/obj/item/stack/sheet/third_tier = attacking_item - if(do_after(user, 2 SECONDS, src) && third_tier.use(third_tier_material_amount)) - current_tier = 3 - part_efficiency += part_efficiency_increase_amount - max_rpm *= max_rpm_tier_multiplier - max_temperature = max_temperature ** max_temperature_tier_exponential - return TRUE + return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/titanium, TURBINE_UPGRADE_AMOUNT = 10) if(TURBINE_PART_TIER_THREE) - if(!istype(attacking_item, fourth_tier_material)) - return - var/obj/item/stack/sheet/fourth_tier = attacking_item - if(do_after(user, 3 SECONDS, src) && fourth_tier.use(fourth_tier_material_amount)) - current_tier = 4 - part_efficiency += part_efficiency_increase_amount - max_rpm *= max_rpm_tier_multiplier - max_temperature = max_temperature ** max_temperature_tier_exponential - return TRUE - - return ..() + return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/metal_hydrogen, TURBINE_UPGRADE_AMOUNT = 5) + +/obj/item/turbine_parts/item_interaction(mob/living/user, obj/item/attacking_item, list/modifiers) + . = NONE + + var/list/required_parts = get_tier_upgrades() + if(!length(required_parts)) + balloon_alert(user, "already at max tier!") + return ITEM_INTERACT_FAILURE + + var/obj/item/stack/sheet/material = attacking_item + if(!istype(material, required_parts[TURBINE_UPGRADE_PART])) + balloon_alert(user, "incorrect part!") + return ITEM_INTERACT_FAILURE + + var/amount = required_parts[TURBINE_UPGRADE_AMOUNT] + if(material.amount < amount) + balloon_alert(user, "requires [amount] sheets!") + return ITEM_INTERACT_FAILURE + + if(do_after(user, current_tier SECONDS, src) && material.use(amount)) + current_tier += 1 + part_efficiency += part_efficiency_increase_amount + max_rpm *= 2.5 + max_temperature = max_temperature ** 1.2 + return ITEM_INTERACT_SUCCESS /obj/item/turbine_parts/compressor name = "compressor part" @@ -113,9 +90,15 @@ icon_state = "stator_part" part_efficiency = 0.85 part_efficiency_increase_amount = 0.015 - second_tier_material = /obj/item/stack/sheet/mineral/titanium - third_tier_material = /obj/item/stack/sheet/mineral/metal_hydrogen - fourth_tier_material = /obj/item/stack/sheet/mineral/zaukerite - second_tier_material_amount = 15 - third_tier_material_amount = 15 - fourth_tier_material_amount = 10 + +/obj/item/turbine_parts/stator/get_tier_upgrades() + switch(current_tier) + if(TURBINE_PART_TIER_ONE) + return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/titanium, TURBINE_UPGRADE_AMOUNT = 15) + if(TURBINE_PART_TIER_TWO) + return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/metal_hydrogen, TURBINE_UPGRADE_AMOUNT = 15) + if(TURBINE_PART_TIER_THREE) + return list(TURBINE_UPGRADE_PART = /obj/item/stack/sheet/mineral/zaukerite, TURBINE_UPGRADE_AMOUNT = 10) + +#undef TURBINE_UPGRADE_PART +#undef TURBINE_UPGRADE_AMOUNT diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm index b15cd334a8e6d..25973e92e7a3a 100644 --- a/code/modules/projectiles/ammunition/_firing.dm +++ b/code/modules/projectiles/ammunition/_firing.dm @@ -61,6 +61,8 @@ loaded_projectile.damage *= gun.projectile_damage_multiplier * integrity_mult loaded_projectile.stamina *= gun.projectile_damage_multiplier * integrity_mult + loaded_projectile.speed *= gun.projectile_speed_multiplier * integrity_mult + loaded_projectile.wound_bonus += gun.projectile_wound_bonus loaded_projectile.wound_bonus *= loaded_projectile.wound_bonus >= 0 ? 1 : 2 - integrity_mult loaded_projectile.bare_wound_bonus += gun.projectile_wound_bonus @@ -83,12 +85,12 @@ if(loaded_projectile.firer) firing_dir = get_dir(fired_from, target) if(!loaded_projectile.suppressed && firing_effect_type && !tk_firing(user, fired_from)) - new firing_effect_type(get_turf(src), firing_dir) + new firing_effect_type(user || get_turf(src), firing_dir) var/direct_target if(target && curloc.Adjacent(targloc, target=targloc, mover=src)) //if the target is right on our location or adjacent (including diagonally if reachable) we'll skip the travelling code in the proj's fire() direct_target = target - loaded_projectile.preparePixelProjectile(target, fired_from, params2list(params), spread) + loaded_projectile.aim_projectile(target, fired_from, params2list(params), spread) var/obj/projectile/loaded_projectile_cache = loaded_projectile loaded_projectile = null loaded_projectile_cache.fire(null, direct_target) diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm index 811b4309f5258..6e0c26af7359c 100644 --- a/code/modules/projectiles/ammunition/ballistic/revolver.dm +++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -1,26 +1,26 @@ // .357 (Syndie Revolver) -/obj/item/ammo_casing/a357 +/obj/item/ammo_casing/c357 name = ".357 bullet casing" desc = "A .357 bullet casing." caliber = CALIBER_357 - projectile_type = /obj/projectile/bullet/a357 + projectile_type = /obj/projectile/bullet/c357 -/obj/item/ammo_casing/a357/spent +/obj/item/ammo_casing/c357/spent projectile_type = null -/obj/item/ammo_casing/a357/match +/obj/item/ammo_casing/c357/match name = ".357 match bullet casing" desc = "A .357 bullet casing, manufactured to exceedingly high standards." - projectile_type = /obj/projectile/bullet/a357/match + projectile_type = /obj/projectile/bullet/c357/match -/obj/item/ammo_casing/a357/phasic +/obj/item/ammo_casing/c357/phasic name = ".357 phasic bullet casing" - projectile_type = /obj/projectile/bullet/a357/phasic + projectile_type = /obj/projectile/bullet/c357/phasic -/obj/item/ammo_casing/a357/heartseeker +/obj/item/ammo_casing/c357/heartseeker name = ".357 heartseeker bullet casing" - projectile_type = /obj/projectile/bullet/a357/heartseeker + projectile_type = /obj/projectile/bullet/c357/heartseeker // 7.62x38mmR (Nagant Revolver) @@ -53,6 +53,11 @@ desc = "A .38 rubber bullet casing, manufactured to exceedingly bouncy standards." projectile_type = /obj/projectile/bullet/c38/match/bouncy +/obj/item/ammo_casing/c38/match/true + name = ".38 True Strike bullet casing" + desc = "A .38 True Strike bullet casing." + projectile_type = /obj/projectile/bullet/c38/match/true + /obj/item/ammo_casing/c38/dumdum name = ".38 DumDum bullet casing" desc = "A .38 DumDum bullet casing." @@ -67,3 +72,35 @@ name = ".38 Iceblox bullet casing" desc = "A .38 Iceblox bullet casing." projectile_type = /obj/projectile/bullet/c38/iceblox + +//gatfruit +/obj/item/ammo_casing/pea + name = "pea bullet casing" + desc = "A bizarre pea bullet." + caliber = CALIBER_PEA + icon_state = "pea" + projectile_type = /obj/projectile/bullet/pea + /// Damage we achieve at 100 potency + var/max_damage = 15 + /// Damage set by the plant + var/damage = 15 //max potency, is set + +/obj/item/ammo_casing/pea/Initialize(mapload) + . = ..() + create_reagents(60, SEALED_CONTAINER) + +/obj/item/ammo_casing/pea/ready_proj(atom/target, mob/living/user, quiet, zone_override, atom/fired_from) + . = ..() + if(isnull(loaded_projectile)) + return + loaded_projectile.damage = damage + +/obj/item/ammo_casing/pea/attack_self(mob/user) + . = ..() + if(isnull(loaded_projectile)) + return + var/obj/item/food/grown/peas/peas = new(user.drop_location()) + user.put_in_hands(peas) + to_chat(user, span_notice("You separate [peas] from [src].")) + loaded_projectile = null + update_appearance() diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index bbd89389eb809..b664be74e87f3 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -2,7 +2,7 @@ name = "speed loader (.357)" desc = "Designed to quickly reload revolvers." icon_state = "357" - ammo_type = /obj/item/ammo_casing/a357 + ammo_type = /obj/item/ammo_casing/c357 max_ammo = 7 caliber = CALIBER_357 multiple_sprites = AMMO_BOX_PER_BULLET @@ -13,13 +13,13 @@ /obj/item/ammo_box/a357/match name = "speed loader (.357 Match)" desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." - ammo_type = /obj/item/ammo_casing/a357/match + ammo_type = /obj/item/ammo_casing/c357/match ammo_band_color = "#77828a" /obj/item/ammo_box/a357/phasic name = "speed loader (.357 Phasic)" desc = "Designed to quickly reload revolvers. Holds phasic ammo, also known as 'Ghost Lead', allowing it to pass through non-organic material." - ammo_type = /obj/item/ammo_casing/a357/phasic + ammo_type = /obj/item/ammo_casing/c357/phasic ammo_band_color = "#693a6a" /obj/item/ammo_box/a357/heartseeker @@ -27,7 +27,7 @@ desc = "Designed to quickly reload revolvers. Holds heartseeker ammo, which veers into targets with exceptional precision using \ an unknown method. It apparently predicts movement using neural pulses in the brain, but that's less marketable. \ As seen in the hit NTFlik horror-space western film, Forget-Me-Not! Brought to you by Roseus Galactic!" - ammo_type = /obj/item/ammo_casing/a357/heartseeker + ammo_type = /obj/item/ammo_casing/c357/heartseeker ammo_band_color = "#a91e1e" /obj/item/ammo_box/c38 @@ -60,6 +60,12 @@ ammo_type = /obj/item/ammo_casing/c38/match/bouncy ammo_band_color = "#556696" +/obj/item/ammo_box/c38/true + name = "speed loader (.38 True Strike)" + desc = "Designed to quickly reload revolvers. Bullets bounce towards new targets with surprising accuracy." + ammo_type = /obj/item/ammo_casing/c38/match/true + ammo_band_color = "#d647b0" + /obj/item/ammo_box/c38/dumdum name = "speed loader (.38 DumDum)" desc = "Designed to quickly reload revolvers. These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets." diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 882fefedec111..96916fe9bb5ad 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -21,3 +21,66 @@ /obj/item/ammo_box/magazine/m223/phasic name = "toploader magazine (.223 Phasic)" ammo_type = /obj/item/ammo_casing/a223/phasic + +// .38 (Battle Rifle) // + +/obj/item/ammo_box/magazine/m38 + name = "battle rifle magazine (.38)" + desc = "A magazine for a BR-38 battle rifle." + icon_state = "38mag" + base_icon_state = "38mag" + w_class = WEIGHT_CLASS_NORMAL + ammo_type = /obj/item/ammo_casing/c38 + caliber = CALIBER_38 + max_ammo = 15 + ammo_band_icon = "+38mag_ammo_band" + ammo_band_color = null + +/obj/item/ammo_box/magazine/m38/update_icon_state() + . = ..() + icon_state = "[base_icon_state][ammo_count() ? "-ammo" : ""]" + +/obj/item/ammo_box/magazine/m38/empty + start_empty = TRUE + +/obj/item/ammo_box/magazine/m38/trac + name = "battle rifle magazine (.38 TRAC)" + desc = "A magazine for a BR-38 battle rifle. TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal." + ammo_type = /obj/item/ammo_casing/c38/trac + ammo_band_color = "#7b6383" + +/obj/item/ammo_box/magazine/m38/match + name = "battle rifle magazine (.38 Match)" + desc = "A magazine for a BR-38 battle rifle. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + ammo_type = /obj/item/ammo_casing/c38/match + ammo_band_color = "#7b6383" + +/obj/item/ammo_box/magazine/m38/match/bouncy + name = "battle rifle magazine (.38 Rubber)" + desc = "A magazine for a BR-38 battle rifle. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." + ammo_type = /obj/item/ammo_casing/c38/match/bouncy + ammo_band_color = "#556696" + +/obj/item/ammo_box/magazine/m38/true + name = "battle rifle magazine (.38 True Strike)" + desc = "A magazine for a BR-38 battle rifle. Bullets bounce towards new targets with surprising accuracy." + ammo_type = /obj/item/ammo_casing/c38/match/true + ammo_band_color = "#d647b0" + +/obj/item/ammo_box/magazine/m38/dumdum + name = "battle rifle magazine (.38 DumDum)" + desc = "A magazine for a BR-38 battle rifle. These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets." + ammo_type = /obj/item/ammo_casing/c38/dumdum + ammo_band_color = "#969578" + +/obj/item/ammo_box/magazine/m38/hotshot + name = "battle rifle magazine (.38 Hot Shot)" + desc = "A magazine for a BR-38 battle rifle. Hot Shot bullets contain an incendiary payload." + ammo_type = /obj/item/ammo_casing/c38/hotshot + ammo_band_color = "#805a57" + +/obj/item/ammo_box/magazine/m38/iceblox + name = "battle rifle magazine (.38 Iceblox)" + desc = "A magazine for a BR-38 battle rifle. Iceblox bullets contain a cryogenic payload." + ammo_type = /obj/item/ammo_casing/c38/iceblox + ammo_band_color = "#658e94" diff --git a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm index 28df0262352d1..7f467881a9d61 100644 --- a/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm +++ b/code/modules/projectiles/boxes_magazines/internal/_cylinder.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/internal/cylinder name = "revolver cylinder" - ammo_type = /obj/item/ammo_casing/a357 + ammo_type = /obj/item/ammo_casing/c357 caliber = CALIBER_357 max_ammo = 7 diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index e74a192d6900f..1e891abeef280 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -12,7 +12,7 @@ /obj/item/ammo_box/magazine/internal/cylinder/rus357 name = "\improper Russian revolver cylinder" - ammo_type = /obj/item/ammo_casing/a357 + ammo_type = /obj/item/ammo_casing/c357 caliber = CALIBER_357 max_ammo = 6 multiload = FALSE @@ -21,5 +21,11 @@ /obj/item/ammo_box/magazine/internal/cylinder/rus357/Initialize(mapload) . = ..() for (var/i in 1 to max_ammo - 1) - stored_ammo += new /obj/item/ammo_casing/a357/spent(src) - stored_ammo += new /obj/item/ammo_casing/a357(src) + stored_ammo += new /obj/item/ammo_casing/c357/spent(src) + stored_ammo += new /obj/item/ammo_casing/c357(src) + +/obj/item/ammo_box/magazine/internal/cylinder/peashooter + name = "peashooter cylinder" + ammo_type = /obj/item/ammo_casing/pea + caliber = CALIBER_PEA + max_ammo = 7 diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index b1f761831ee62..fb44ee41d9d15 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -54,11 +54,11 @@ /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force name = "two round magazine" max_ammo = 2 - caliber = CALIBER_REBAR_FORCED + caliber = CALIBER_REBAR ammo_type = /obj/item/ammo_casing/rebar /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie max_ammo = 3 - caliber = CALIBER_REBAR_SYNDIE + caliber = CALIBER_REBAR ammo_type = /obj/item/ammo_casing/rebar/syndie diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d3b0782036b2b..76cf2d1811302 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -54,6 +54,10 @@ /// Even snowflakier way to modify projectile wounding bonus/potential for projectiles fired from this gun. var/projectile_wound_bonus = 0 + /// The most reasonable way to modify projectile speed values for projectile fired from this gun. Honest. + /// Lower values are better, higher values are worse. + var/projectile_speed_multiplier = 1 + var/spread = 0 //Spread induced by the gun itself. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. @@ -74,8 +78,9 @@ /obj/item/gun/Initialize(mapload) . = ..() - if(pin) - pin = new pin(src) + if(ispath(pin)) + pin = new pin + pin.gun_insert(new_gun = src) add_seclight_point() add_bayonet_point() @@ -597,7 +602,8 @@ /obj/item/gun/proc/unlock() //used in summon guns and as a convience for admins if(pin) qdel(pin) - pin = new /obj/item/firing_pin + var/obj/item/firing_pin/new_pin = new + new_pin.gun_insert(new_gun = src) //Happens before the actual projectile creation /obj/item/gun/proc/before_firing(atom/target,mob/user) diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 1c158cf4a87da..89c6deaa4d2d8 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -352,3 +352,196 @@ actions_types = list() fire_sound = 'sound/items/weapons/laser.ogg' casing_ejector = FALSE + +// NT Battle Rifle // + +/obj/item/gun/ballistic/automatic/battle_rifle + name = "\improper NT BR-38 battle rifle" + desc = "Nanotrasen's prototype security weapon, found exclusively in the hands of their private security teams. Chambered in .38 pistol rounds. \ + Ignore that this makes it technically a carbine. And that it functions as a designated marksman rifle. Marketing weren't being very co-operative \ + when it came time to name the gun. That, and the endless arguments in board rooms about exactly what designation the gun is meant to be." + icon = 'icons/obj/weapons/guns/wide_guns.dmi' + icon_state = "battle_rifle" + inhand_icon_state = "battle_rifle" + base_icon_state = "battle_rifle" + worn_icon = 'icons/mob/clothing/back.dmi' + worn_icon_state = "battle_rifle" + slot_flags = ITEM_SLOT_BACK + + weapon_weight = WEAPON_HEAVY + accepted_magazine_type = /obj/item/ammo_box/magazine/m38 + w_class = WEIGHT_CLASS_BULKY + force = 15 //this thing is kind of oversized, okay? + mag_display = TRUE + projectile_damage_multiplier = 1.2 + projectile_speed_multiplier = 1.2 + fire_delay = 2 + burst_size = 1 + actions_types = list() + spread = 10 //slightly inaccurate in burst fire mode, mostly important for long range shooting + fire_sound = 'sound/items/weapons/thermalpistol.ogg' + suppressor_x_offset = 8 + + /// Determines how many shots we can make before the weapon needs to be maintained. + var/shots_before_degradation = 10 + /// The max number of allowed shots this gun can have before degradation. + var/max_shots_before_degradation = 10 + /// Determines the degradation stage. The higher the value, the more poorly the weapon performs. + var/degradation_stage = 0 + /// Maximum degradation stage. + var/degradation_stage_max = 5 + /// The probability of degradation increasing per shot. + var/degradation_probability = 10 + /// The maximum speed malus for projectile flight speed. Projectiles probably shouldn't move too slowly or else they will start to cause problems. + var/maximum_speed_malus = 0.7 + /// What is our damage multiplier if the gun is emagged? + var/emagged_projectile_damage_multiplier = 1.6 + + /// Whether or not our gun is suffering an EMP related malfunction. + var/emp_malfunction = FALSE + + /// Our timer for when our gun is suffering an extreme malfunction. AKA it is going to explode + var/explosion_timer + + SET_BASE_PIXEL(-8, 0) + +/obj/item/gun/ballistic/automatic/battle_rifle/Initialize(mapload) + . = ..() + AddComponent(/datum/component/scope, range_modifier = 2) + register_context() + +/obj/item/gun/ballistic/automatic/battle_rifle/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + + if(held_item?.tool_behaviour == TOOL_MULTITOOL && shots_before_degradation < max_shots_before_degradation) + context[SCREENTIP_CONTEXT_LMB] = "Reset System" + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/gun/ballistic/automatic/battle_rifle/examine_more(mob/user) + . = ..() + . += span_notice("Looking down at the [name], you recall something you read in a promotional pamphlet... ") + + . += span_info("The BR-38 possesses an acceleration rail that launches bullets at higher than typical velocity.\ + This allows even less powerful cartridges to put out significant amounts of stopping power.") + + . += span_notice("However, you also remember some of the rumors... ") + + . += span_notice("In a sour twist of irony for Nanotrasen's historical issues with ballistics-based security weapons, the BR-38 has one significant flaw. \ + It is possible for the weapon to suffer from unintended discombulations due to closed heat distribution systems should the weapon be tampered with. \ + R&D are working on this issue before the weapon sees commercial sales. That, and trying to work out why the weapon's onboard computation systems suffer \ + from so many calculation errors.") + +/obj/item/gun/ballistic/automatic/battle_rifle/examine(mob/user) + . = ..() + if(shots_before_degradation) + . += span_notice("[src] can fire [shots_before_degradation] more times before risking system degradation.") + else + . += span_notice("[src] is in the process of system degradation. It is currently at stage [degradation_stage] of [degradation_stage_max]. Use a multitool on [src] to recalibrate. Alternatively, insert it into a weapon recharger.") + +/obj/item/gun/ballistic/automatic/battle_rifle/update_icon_state() + . = ..() + if(!shots_before_degradation) + inhand_icon_state = "[base_icon_state]-empty" + else + inhand_icon_state = "[base_icon_state]" + +/obj/item/gun/ballistic/automatic/battle_rifle/update_overlays() + . = ..() + if(degradation_stage) + . += "[base_icon_state]_empty" + else if(shots_before_degradation) + var/ratio_for_overlay = CEILING(clamp(shots_before_degradation / max_shots_before_degradation, 0, 1) * 3, 1) + . += "[icon_state]_stage_[ratio_for_overlay]" + +/obj/item/gun/ballistic/automatic/battle_rifle/emp_act(severity) + . = ..() + if (!(. & EMP_PROTECT_SELF) && prob(50 / severity)) + shots_before_degradation = 0 + emp_malfunction = TRUE + attempt_degradation(TRUE) + +/obj/item/gun/ballistic/automatic/battle_rifle/emag_act(mob/user, obj/item/card/emag/emag_card) + . = ..() + if(obj_flags & EMAGGED) + return FALSE + obj_flags |= EMAGGED + projectile_damage_multiplier = emagged_projectile_damage_multiplier + balloon_alert(user, "heat distribution systems deactivated") + return TRUE + +/obj/item/gun/ballistic/automatic/battle_rifle/multitool_act(mob/living/user, obj/item/tool) + if(!tool.use_tool(src, user, 20 SECONDS, volume = 50)) + balloon_alert(user, "interrupted!") + return ITEM_INTERACT_BLOCKING + + emp_malfunction = FALSE + shots_before_degradation = initial(shots_before_degradation) + degradation_stage = initial(degradation_stage) + projectile_speed_multiplier = initial(projectile_speed_multiplier) + fire_delay = initial(fire_delay) + update_appearance() + balloon_alert(user, "system reset") + return ITEM_INTERACT_SUCCESS + +/obj/item/gun/ballistic/automatic/battle_rifle/try_fire_gun(atom/target, mob/living/user, params) + . = ..() + if(!chambered || (chambered && !chambered.loaded_projectile)) + return + + if(shots_before_degradation) + shots_before_degradation -- + return + + else if ((obj_flags & EMAGGED) && degradation_stage == degradation_stage_max && !explosion_timer) + perform_extreme_malfunction(user) + + else + attempt_degradation(FALSE) + + +/obj/item/gun/ballistic/automatic/battle_rifle/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + if(chambered.loaded_projectile && prob(75) && (emp_malfunction || degradation_stage == degradation_stage_max)) + balloon_alert_to_viewers("*click*") + playsound(src, dry_fire_sound, dry_fire_sound_volume, TRUE) + return + + return ..() + +/// Proc to handle weapon degradation. Called when attempting to fire or immediately after an EMP takes place. +/obj/item/gun/ballistic/automatic/battle_rifle/proc/attempt_degradation(force_increment = FALSE) + if(!prob(degradation_probability) && !force_increment || degradation_stage == degradation_stage_max) + return //Only update if we actually increment our degradation stage + + degradation_stage = clamp(degradation_stage + (obj_flags & EMAGGED ? 2 : 1), 0, degradation_stage_max) + projectile_speed_multiplier = clamp(initial(projectile_speed_multiplier) + degradation_stage * 0.1, initial(projectile_speed_multiplier), maximum_speed_malus) + fire_delay = initial(fire_delay) + (degradation_stage * 0.5) + do_sparks(1, TRUE, src) + update_appearance() + +/// Called by /obj/machinery/recharger while inserted: attempts to recalibrate our gun but reducing degradation. +/obj/item/gun/ballistic/automatic/battle_rifle/proc/attempt_recalibration(restoring_shots_before_degradation = FALSE, recharge_rate = 1) + emp_malfunction = FALSE + + if(restoring_shots_before_degradation) + shots_before_degradation = clamp(round(shots_before_degradation + recharge_rate, 1), 0, max_shots_before_degradation) + + else + degradation_stage = clamp(degradation_stage - 1, 0, degradation_stage_max) + if(degradation_stage) + projectile_speed_multiplier = clamp(initial(projectile_speed_multiplier) - degradation_stage * 0.1, maximum_speed_malus, initial(projectile_speed_multiplier)) + fire_delay = initial(fire_delay) + (degradation_stage * 0.5) + else + projectile_speed_multiplier = initial(projectile_speed_multiplier) + fire_delay = initial(fire_delay) + + update_appearance() + +/// Proc to handle the countdown for our detonation +/obj/item/gun/ballistic/automatic/battle_rifle/proc/perform_extreme_malfunction(mob/living/user) + balloon_alert(user, "gun is exploding, throw it!") + explosion_timer = addtimer(CALLBACK(src, PROC_REF(fucking_explodes_you)), 5 SECONDS, (TIMER_UNIQUE|TIMER_OVERRIDE)) + playsound(src, 'sound/items/weapons/gun/general/empty_alarm.ogg', 50, FALSE) + +/// proc to handle our detonation +/obj/item/gun/ballistic/automatic/battle_rifle/proc/fucking_explodes_you() + explosion(src, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 6, explosion_cause = src) diff --git a/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm b/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm index d7a24c9deba47..41152b170ad3b 100644 --- a/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm +++ b/code/modules/projectiles/guns/ballistic/bows/bow_arrows.dm @@ -60,7 +60,7 @@ desc = "Quite the sticky situation..." icon_state = "sticky_arrow_projectile" damage = 30 - speed = 0.75 + speed = 1.3 range = 20 embed_type = /datum/embed_data/arrow/sticky diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index bb589bc011a14..6fe97628fb072 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -318,3 +318,9 @@ clumsy_check = FALSE icon_state = "mateba" +/obj/item/gun/ballistic/revolver/peashooter + name = "peashooter" + icon_state = "peashooter" + desc = "A wild plantlife mutation that shoots hardened peas. Incredible." + fire_sound = 'sound/items/weapons/peashoot.ogg' + accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder/peashooter diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 7e174b544ea29..d542f2299148c 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -225,7 +225,7 @@ update_appearance() /obj/projectile/kinetic/on_range() - strike_thing() + strike_thing(loc) ..() /obj/projectile/kinetic/on_hit(atom/target, blocked = 0, pierce_hit) @@ -258,6 +258,17 @@ //mecha_kineticgun version of the projectile /obj/projectile/kinetic/mech range = 5 + damage = 80 + +/obj/projectile/kinetic/mech/strike_thing(atom/target) + . = ..() + new /obj/effect/temp_visual/explosion/fast(target) + for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(1, target) - target) + mineral_turf.gets_drilled(firer, TRUE) + for(var/mob/living/living_mob in range(1, target) - firer - target) + var/armor = living_mob.run_armor_check(def_zone, armor_flag, armour_penetration = armour_penetration) + living_mob.apply_damage(damage, damage_type, def_zone, armor) + to_chat(living_mob, span_userdanger("You're struck by a [name]!")) //Modkits /obj/item/borg/upgrade/modkit diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 9c69a718986e4..b1a34c30eb936 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -151,11 +151,11 @@ var/size_per_tile = 0.1 var/max_scale = 4 -/obj/projectile/beam/laser/accelerator/Range() +/obj/projectile/beam/laser/accelerator/reduce_range() ..() damage += 7 - transform = 0 - transform *= min(1 + (decayedRange - range) * size_per_tile, max_scale) + transform = matrix() + transform *= min(1 + (maximum_range - range) * size_per_tile, max_scale) ///X-ray gun diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 8072f62e46458..0cd4148e70996 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -431,7 +431,7 @@ playsound(user.loc, 'sound/effects/coin2.ogg', 50, TRUE) user.visible_message(span_warning("[user] flips a coin towards [target]!"), span_danger("You flip a coin towards [target]!")) var/obj/projectile/bullet/coin/new_coin = new(get_turf(user), target_turf, user) - new_coin.preparePixelProjectile(target_turf, user) + new_coin.aim_projectile(target_turf, user) new_coin.fire() return ITEM_INTERACT_SUCCESS diff --git a/code/modules/projectiles/guns/special/blastcannon.dm b/code/modules/projectiles/guns/special/blastcannon.dm index a7c35c9122ec2..80bf245aa3305 100644 --- a/code/modules/projectiles/guns/special/blastcannon.dm +++ b/code/modules/projectiles/guns/special/blastcannon.dm @@ -49,8 +49,6 @@ /obj/item/gun/blastcannon/Initialize(mapload) . = ..() - if(!pin) - pin = new RegisterSignal(src, COMSIG_ATOM_INTERNAL_EXPLOSION, PROC_REF(channel_blastwave)) AddElement(/datum/element/update_icon_updates_onmob) @@ -193,7 +191,7 @@ SSexplosions.shake_the_room(start_turf, max(heavy, medium, light, 0), (capped_heavy * 15) + (capped_medium * 20), capped_heavy, capped_medium) var/obj/projectile/blastwave/blastwave = new(loc, heavy, medium, light) - blastwave.preparePixelProjectile(target, start_turf, params2list(modifiers), spread) + blastwave.aim_projectile(target, start_turf, params2list(modifiers), spread) blastwave.fire() cached_firer = null cached_target = null @@ -314,7 +312,7 @@ /obj/projectile/blastwave/is_hostile_projectile() return TRUE -/obj/projectile/blastwave/Range() +/obj/projectile/blastwave/reduce_range() . = ..() if(QDELETED(src)) return diff --git a/code/modules/projectiles/guns/special/medbeam.dm b/code/modules/projectiles/guns/special/medbeam.dm index 0ad5caf2fec82..95da571baf547 100644 --- a/code/modules/projectiles/guns/special/medbeam.dm +++ b/code/modules/projectiles/guns/special/medbeam.dm @@ -83,56 +83,26 @@ last_check = world.time - if(!los_check(loc, current_target)) + if(!los_check(loc, current_target, mid_check = CALLBACK(src, PROC_REF(mid_los_check)))) QDEL_NULL(current_beam)//this will give the target lost message return if(current_target) on_beam_tick(current_target) -/obj/item/gun/medbeam/proc/los_check(atom/movable/user, mob/target) - var/turf/user_turf = user.loc - if(mounted) - user_turf = get_turf(user) - else if(!istype(user_turf)) - return FALSE - var/obj/dummy = new(user_turf) - dummy.pass_flags |= PASSTABLE|PASSGLASS|PASSGRILLE //Grille/Glass so it can be used through common windows - var/turf/previous_step = user_turf - var/first_step = TRUE - for(var/turf/next_step as anything in (get_line(user_turf, target) - user_turf)) - if(first_step) - for(var/obj/blocker in user_turf) - if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1)) - continue - if(blocker.CanPass(dummy, get_dir(user_turf, next_step))) - continue - return FALSE // Could not leave the first turf. - first_step = FALSE - if(mounted && next_step == user_turf) - - continue //Mechs are dense and thus fail the check - if(next_step.density) +/obj/item/gun/medbeam/proc/mid_los_check(atom/movable/user, mob/target, pass_args = PASSTABLE|PASSGLASS|PASSGRILLE, turf/next_step, obj/dummy) + for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams! + if(QDELETED(current_beam)) + break //We shouldn't be processing anymore. + if(QDELETED(B)) + continue + if(!B.owner) + stack_trace("beam without an owner! [B]") + continue + if(B.owner.origin != current_beam.origin) + explosion(B.loc, heavy_impact_range = 3, light_impact_range = 5, flash_range = 8, explosion_cause = src) qdel(dummy) return FALSE - for(var/atom/movable/movable as anything in next_step) - if(!movable.CanPass(dummy, get_dir(next_step, previous_step))) - qdel(dummy) - return FALSE - for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams! - if(QDELETED(current_beam)) - break //We shouldn't be processing anymore. - if(QDELETED(B)) - continue - if(!B.owner) - stack_trace("beam without an owner! [B]") - continue - if(B.owner.origin != current_beam.origin) - explosion(B.loc, heavy_impact_range = 3, light_impact_range = 5, flash_range = 8, explosion_cause = src) - qdel(dummy) - return FALSE - previous_step = next_step - qdel(dummy) return TRUE /obj/item/gun/medbeam/proc/on_beam_hit(mob/living/target) diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 7ee44a10e7d83..46345e769e4bd 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -20,11 +20,6 @@ var/pin_removable = TRUE var/obj/item/gun/gun -/obj/item/firing_pin/New(newloc) - ..() - if(isgun(newloc)) - gun = newloc - /obj/item/firing_pin/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(!isgun(interacting_with)) return NONE @@ -58,8 +53,8 @@ balloon_alert(user, "authentication checks overridden") return TRUE -/obj/item/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/G) - gun = G +/obj/item/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/new_gun) + gun = new_gun forceMove(gun) gun.pin = src return TRUE @@ -165,9 +160,9 @@ return TRUE //The clown op leader antag datum isn't a subtype of the normal clown op antag datum. return FALSE -/obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/G) +/obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/new_gun) ..() - G.clumsy_check = FALSE + new_gun.clumsy_check = FALSE /obj/item/firing_pin/clown/ultra/gun_remove(mob/living/user) gun.clumsy_check = initial(gun.clumsy_check) @@ -244,14 +239,15 @@ if(pin_owner) . += span_notice("This firing pin is currently authorized to pay into the account of [pin_owner.account_holder].") -/obj/item/firing_pin/paywall/gun_insert(mob/living/user, obj/item/gun/G) +/obj/item/firing_pin/paywall/gun_insert(mob/living/user, obj/item/gun/new_gun) if(!pin_owner) - to_chat(user, span_warning("ERROR: Please swipe valid identification card before installing firing pin!")) - user.put_in_hands(src) + if(isnull(user)) + forceMove(new_gun.drop_location()) + else + to_chat(user, span_warning("ERROR: Please swipe valid identification card before installing firing pin!")) + user.put_in_hands(src) return FALSE - gun = G - forceMove(gun) - gun.pin = src + ..() if(multi_payment) gun.desc += span_notice(" This [gun.name] has a per-shot cost of [payment_amount] credit[( payment_amount > 1 ) ? "s" : ""].") return TRUE @@ -260,7 +256,7 @@ /obj/item/firing_pin/paywall/gun_remove(mob/living/user) - gun.desc = initial(desc) + gun.desc = gun::desc ..() /obj/item/firing_pin/paywall/attackby(obj/item/M, mob/living/user, params) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0b03f41293142..1a21ac4f82d89 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1,7 +1,8 @@ -#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get without actual hitscan. -#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 //How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers. -#define MAX_RANGE_HIT_PRONE_TARGETS 10 //How far do the projectile hits the prone mob +/// Not actually hitscan but close as we get without actual hitscan. +#define MOVES_HITSCAN -1 +/// How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers. +#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 /obj/projectile name = "projectile" @@ -15,30 +16,56 @@ generic_canpass = FALSE blocks_emissive = EMISSIVE_BLOCK_GENERIC layer = MOB_LAYER - //The sound this plays on impact. + /// The sound this plays on impact. var/hitsound = 'sound/items/weapons/pierce.ogg' - var/hitsound_wall = "" + /// Sound played when the projectile hits a wall + var/hitsound_wall resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - var/def_zone = "" //Aiming at - var/atom/movable/firer = null//Who shot it - var/datum/fired_from = null // the thing that the projectile was fired from (gun, turret, spell) - var/suppressed = FALSE //Attack message - var/yo = null - var/xo = null - var/atom/original = null // the original target clicked - var/turf/starting = null // the projectile's starting turf + /// Zone at which the projectile is aimed at + var/def_zone = "" + /// Atom who shot the projectile (Not the gun, the guy who shot the gun) + var/atom/movable/firer = null + /// The thing that the projectile was fired from (gun, turret, spell) + var/datum/fired_from = null + /// One of three suppression states: NONE displays the hit message and produces a loud sound, + /// QUIET makes a quiet sound and only lets the victim know they've been shot, and VERY only makes a very quiet sound with no messages + var/suppressed = SUPPRESSED_NONE + /// Original clicked target + var/atom/original = null + /// Initial target x coordinate offset of the projectile + VAR_FINAL/xo = null + /// Initial target y coordinate offset of the projectile + VAR_FINAL/yo = null + /// Projectile's starting turf + var/turf/starting = null + /// pixel_x where the player clicked. Default is the center. var/p_x = 16 - var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center - - //Fired processing vars - var/fired = FALSE //Have we been fired yet - var/paused = FALSE //for suspending the projectile midair - var/last_projectile_move = 0 - var/last_process = 0 - var/time_offset = 0 - var/datum/point/vector/trajectory - var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! + /// pixel_y where the player clicked. Default is the center + var/p_y = 16 + /// X coordinate at which the projectile entered a new turf + var/entry_x + /// Y coordinate at which the projectile entered a new turf + var/entry_y + /// X coordinate at which the projectile visually impacted the target + var/impact_x + /// Y coordinate at which the projectile visually impacted the target + var/impact_y + /// Turf of the last atom we've impacted + VAR_FINAL/turf/last_impact_turf = null + + /// If the projectile was fired already + var/fired = FALSE + /// If the projectile is suspended mid-air + var/paused = FALSE + /// Last time the projectile moved, used for lag compensation if SSprojectiles starts chugging + VAR_PRIVATE/last_projectile_move = 0 + /// Last time the projectile was processed, also used for lag compensation + VAR_PRIVATE/last_process = 0 + /// How many pixels we missed last tick due to lag or speed cap + VAR_PRIVATE/overrun = 0 + /// Projectile's movement vector - this caches sine/cosine of our angle to cut down on trig calculations + var/datum/vector/movement_vector /// We already impacted these things, do not impact them again. Used to make sure we can pierce things we want to pierce. Lazylist, typecache style (object = TRUE) for performance. var/list/impacted = list() /// If TRUE, we can hit our firer. @@ -66,38 +93,36 @@ var/projectile_phasing = NONE /// Bitflag for things the projectile should hit, but pierce through without deleting itself. Defers to projectile_phasing. Uses pass_flags flags. var/projectile_piercing = NONE - /// number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc! + /// Number of times we've pierced something. Incremented BEFORE bullet_act and on_hit proc! var/pierces = 0 - /// how many times this projectile can pierce something before deleting + /// How many times this projectile can pierce something before deleting var/max_pierces = 0 /// If objects are below this layer, we pass through them var/hit_threshhold = PROJECTILE_HIT_THRESHHOLD_LAYER - /// During each fire of SSprojectiles, the number of deciseconds since the last fire of SSprojectiles - /// is divided by this var, and the result truncated to the next lowest integer is - /// the number of times the projectile's `pixel_move` proc will be called. - var/speed = 0.8 - - /// This var is multiplied by SSprojectiles.global_pixel_speed to get how many pixels - /// the projectile moves during each iteration of the movement loop - /// - /// If you want to make a fast-moving projectile, you should keep this equal to 1 and - /// reduce the value of `speed`. If you want to make a slow-moving projectile, make - /// `speed` a modest value like 1 and set this to a low value like 0.2. - var/pixel_speed_multiplier = 1 + /// How many tiles we pass in a single SSprojectiles tick + var/speed = 1.25 /// The current angle of the projectile. Initially null, so if the arg is missing from [/fire()], we can calculate it from firer and target as fallback. var/angle - var/original_angle = 0 //Angle at firing - var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle - var/spread = 0 //amount (in degrees) of projectile spread - animate_movement = NO_STEPS //Use SLIDE_STEPS in conjunction with legacy - /// how many times we've ricochet'd so far (instance variable, not a stat) + /// Angle at the moment of firing + var/original_angle = 0 + /// Set TRUE to prevent projectiles from having their sprites rotated based on firing angle + var/nondirectional_sprite = FALSE + /// Random spread done projectile-side for convinience + var/spread = 0 + /// Additional rotation for the projectile, in case it uses some object's sprite + var/projectile_angle = 0 + /// Gliding does not enjoy something getting moved multiple turfs in a tick, which is why we animate it manually + animate_movement = NO_STEPS + + // Ricochet logic + /// How many times we've ricochet'd so far (instance variable, not a stat) var/ricochets = 0 - /// how many times we can ricochet max + /// How many times we can ricochet max var/ricochets_max = 0 - /// how many times we have to ricochet min (unless we hit an atom we can ricochet off) + /// How many times we have to ricochet min (unless we hit an atom we can ricochet off) var/min_ricochets = 0 /// 0-100 (or more, I guess), the base chance of ricocheting, before being modified by the atom we shoot and our chance decay var/ricochet_chance = 0 @@ -114,18 +139,22 @@ /// Can our ricochet autoaim hit our firer? var/ricochet_shoots_firer = TRUE - ///If the object being hit can pass the damage on to something else, it should not do it for this bullet - var/force_hit = FALSE - - //Hitscan - var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored. - var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. Used for hitscan effect generation. - /// Last turf an angle was changed in for hitscan projectiles. - var/turf/last_angle_set_hitscan_store - var/datum/point/beam_index - var/turf/hitscan_last //last turf touched during hitscanning. + // Hitscan logic + /// Wherever this projectile is hitscan. Hitscan projectiles are processed until the end of their path instantly upon being fired and leave a tracer in their path + var/hitscan = FALSE + /// Associated list of coordinate points in which we changed trajectories in order to calculate hitscan tracers + /// Value points to the next point in the beam + var/list/datum/point/beam_points + /// Last point in the beam + var/datum/point/last_point + /// Next forceMove will not create tracer end/start effects + var/free_hitscan_forceMove = FALSE + + /// Hitscan tracer effect left behind the projectile var/tracer_type + /// Hitscan muzzle effect spawned on the firer var/muzzle_type + /// Hitscan impact effect spawned on the target var/impact_type //Fancy hitscan lighting effects! @@ -139,11 +168,16 @@ var/impact_light_range = 2 var/impact_light_color_override - //Homing + // Homing + /// If the projectile is homing. Warning - this changes projectile's processing logic, reverting it to segmented processing instead of new raymarching logic var/homing = FALSE + /// Target the projectile is homing on var/atom/homing_target - var/homing_turn_speed = 10 //Angle per tick. - var/homing_inaccuracy_min = 0 //in pixels for these. offsets are set once when setting target. + /// Angles per move segment, distance is based on SSprojectiles.pixels_per_decisecond + /// With pixels_per_decisecond set to 16 and homing_turn_speed, the projectile can turn up to 20 pixels per turf passed + var/homing_turn_speed = 10 + // Allowed leeway in pixels + var/homing_inaccuracy_min = 0 var/homing_inaccuracy_max = 0 var/homing_offset_x = 0 var/homing_offset_y = 0 @@ -151,17 +185,20 @@ var/damage = 10 var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY are the only things that should be in here - ///Defines what armor to use when it hits things. Must be set to bullet, laser, energy, or bomb + /// Defines what armor to use when it hits things. Must be set to bullet, laser, energy, or bomb var/armor_flag = BULLET - ///How much armor this projectile pierces. + /// How much armor this projectile pierces. var/armour_penetration = 0 - ///Whether or not our projectile doubles the value of affecting armour + /// Whether or not our projectile doubles the value of affecting armour var/weak_against_armour = FALSE - var/projectile_type = /obj/projectile - var/range = 50 //This will de-increment every step. When 0, it will deletze the projectile. - var/decayedRange //stores original range - var/reflect_range_decrease = 5 //amount of original range that falls off when reflecting, so it doesn't go forever - var/reflectable = NONE // Can it be reflected or not? + /// This will de-increment every step. When 0, it will delete the projectile. + var/range = 50 + /// Original range upon being fired/reflected + var/maximum_range + /// Amount of original range that falls off when reflecting, so it doesn't go forever + var/reflect_range_decrease = 5 + /// If this projectile can be reflected + var/reflectable = FALSE // Status effects applied on hit var/stun = 0 SECONDS @@ -182,59 +219,86 @@ /// Slurring applied on projectile hit var/slur = 0 SECONDS - var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all. - var/catastropic_dismemberment = FALSE //If TRUE, this projectile deals its damage to the chest if it dismembers a limb. - var/impact_effect_type //what type of impact effect to show when hitting something - var/log_override = FALSE //is this type spammed enough to not log? (KAs) - /// If true, the projectile won't cause any logging. Used for hallucinations and shit. + /// Damage the limb must have for it to be dismembered upon getting hit. 0 will prevent dismembering altogether + var/dismemberment = 0 + /// If TRUE, this projectile deals its damage to the chest if it dismembers a limb. + var/catastropic_dismemberment = FALSE + /// Impact VFX created upon hitting something + var/impact_effect_type + /// If the act of firing this projectile does not create logs + var/log_override = FALSE + /// If true, the projectile won't cause any logging whatsoever. Used for hallucinations and shit. var/do_not_log = FALSE /// We ignore mobs with these factions. var/list/ignored_factions - - ///If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets + /// Turf that we have registered connect_loc signal - this is done for performance, as we're moving ~a dozen turfs per tick + /// and registering and unregistering signal for every single one of them is stupid. Unregistering the signal from the correct turf in case we get moved by smth else is important + var/turf/last_tick_turf + /// Remaining pixel movement last tick - used for precise range calculations + var/pixels_moved_last_tile = 0 + /// In order to preserve animations, projectiles are only deleted the tick *after* they impact something. + /// Same is applied to reaching the range limit + var/deletion_queued = NONE + /// How many ticks should we wait in queued deletion mode before qdeleting? Sometimes increased in animations + var/ticks_to_deletion = 1 + + /// If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets var/shrapnel_type - ///If we have a shrapnel_type defined, these embedding stats will be passed to the spawned shrapnel type, which will roll for embedding on the target + /// If we have a shrapnel_type defined, these embedding stats will be passed to the spawned shrapnel type, which will roll for embedding on the target var/embed_type - ///Saves embedding data + /// Saves embedding data var/datum/embed_data/embed_data - ///If TRUE, hit mobs, even if they are lying on the floor and are not our target within MAX_RANGE_HIT_PRONE_TARGETS tiles + /// If TRUE, hit mobs, even if they are lying on the floor and are not our target within MAX_RANGE_HIT_PRONE_TARGETS tiles var/hit_prone_targets = FALSE - ///if TRUE, ignores the range of MAX_RANGE_HIT_PRONE_TARGETS tiles of hit_prone_targets + /// If TRUE, ignores the range of MAX_RANGE_HIT_PRONE_TARGETS tiles of hit_prone_targets var/ignore_range_hit_prone_targets = FALSE - ///For what kind of brute wounds we're rolling for, if we're doing such a thing. Lasers obviously don't care since they do burn instead. + /// For what kind of brute wounds we're rolling for, if we're doing such a thing. Lasers obviously don't care since they do burn instead. var/sharpness = NONE - ///How much we want to drop damage per tile as it travels through the air + /// How much we want to drop damage per tile as it travels through the air var/damage_falloff_tile - ///How much we want to drop stamina damage (defined by the stamina variable) per tile as it travels through the air + /// How much we want to drop stamina damage (defined by the stamina variable) per tile as it travels through the air var/stamina_falloff_tile - ///How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes + /// How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes var/wound_falloff_tile - ///How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes + /// How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes var/embed_falloff_tile - ///How much accuracy is lost for each tile travelled + /// How much accuracy is lost for each tile travelled var/accuracy_falloff = 7 - ///How much accuracy before falloff starts to matter. Formula is range - falloff * tiles travelled + /// How much accuracy before falloff starts to matter. Formula is range - falloff * tiles travelled var/accurate_range = 100 - var/static/list/projectile_connections = list(COMSIG_ATOM_ENTERED = PROC_REF(on_entered)) /// If true directly targeted turfs can be hit var/can_hit_turfs = FALSE /obj/projectile/Initialize(mapload) . = ..() - decayedRange = range - if(get_embed()) + maximum_range = range + if (get_embed()) AddElement(/datum/element/embed) - AddElement(/datum/element/connect_loc, projectile_connections) - add_traits(list(TRAIT_FREE_HYPERSPACE_MOVEMENT, TRAIT_FREE_HYPERSPACE_SOFTCORDON_MOVEMENT), INNATE_TRAIT) -/obj/projectile/proc/Range() +/obj/projectile/Destroy() + if (hitscan) + generate_hitscan_tracers() + STOP_PROCESSING(SSprojectiles, src) + firer = null + original = null + if (movement_vector) + QDEL_NULL(movement_vector) + if (beam_points) + QDEL_LIST(beam_points) + if (last_point) + QDEL_NULL(last_point) + return ..() + +/// Called every time a projectile passes one tile worth of movement +/obj/projectile/proc/reduce_range() range-- - if(wound_bonus != CANT_WOUND) + pixels_moved_last_tile -= ICON_SIZE_ALL + if(wound_falloff_tile && wound_bonus != CANT_WOUND) wound_bonus += wound_falloff_tile bare_wound_bonus = max(0, bare_wound_bonus + wound_falloff_tile) - if(get_embed()) - set_embed(embed_data.generate_with_values(embed_data.embed_chance + embed_falloff_tile)) // Should be rewritten in projecitle refactor + if(embed_falloff_tile && get_embed()) + set_embed(embed_data.generate_with_values(embed_data.embed_chance + embed_falloff_tile)) if(damage_falloff_tile && damage >= 0) damage += damage_falloff_tile if(stamina_falloff_tile && stamina >= 0) @@ -242,26 +306,22 @@ SEND_SIGNAL(src, COMSIG_PROJECTILE_RANGE) if(range <= 0 && loc) - on_range() + if (hitscan) + qdel(src) + return + deletion_queued = PROJECTILE_RANGE_DELETE if(damage_falloff_tile && damage <= 0 || stamina_falloff_tile && stamina <= 0) - on_range() + if (hitscan) + qdel(src) + return + deletion_queued = PROJECTILE_RANGE_DELETE -/obj/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range +/// Called next tick after the projectile reaches its maximum range so the animation has time to fully play out +/obj/projectile/proc/on_range() SEND_SIGNAL(src, COMSIG_PROJECTILE_RANGE_OUT) qdel(src) -/// Returns the string form of the def_zone we have hit. -/mob/living/proc/check_hit_limb_zone_name(hit_zone) - if(has_limbs) - return hit_zone - -/mob/living/carbon/check_hit_limb_zone_name(hit_zone) - if(get_bodypart(hit_zone)) - return hit_zone - else //when a limb is missing the damage is actually passed to the chest - return BODY_ZONE_CHEST - /** * Called when the projectile hits something * @@ -289,21 +349,19 @@ hit_limb_zone = victim.check_hit_limb_zone_name(def_zone) if(fired_from) - SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, angle, hit_limb_zone, blocked) - SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_ON_HIT, firer, target, angle, hit_limb_zone, blocked) + SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, angle, hit_limb_zone, blocked, pierce_hit) + SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_ON_HIT, firer, target, angle, hit_limb_zone, blocked, pierce_hit) - if(QDELETED(src)) // in case one of the above signals deleted the projectile for whatever reason + if(QDELETED(src) || deletion_queued) // in case one of the above signals deleted the projectile for whatever reason return BULLET_ACT_BLOCK var/turf/target_turf = get_turf(target) - var/hitx - var/hity if(target == original) - hitx = target.pixel_x + p_x - 16 - hity = target.pixel_y + p_y - 16 + impact_x = target.pixel_x + p_x - ICON_SIZE_X / 2 + impact_y = target.pixel_y + p_y - ICON_SIZE_Y / 2 else - hitx = target.pixel_x + rand(-8, 8) - hity = target.pixel_y + rand(-8, 8) + impact_x = entry_x + movement_vector?.pixel_x * rand(0, ICON_SIZE_X / 2) + impact_y = entry_y + movement_vector?.pixel_y * rand(0, ICON_SIZE_Y / 2) if(isturf(target) && hitsound_wall) playsound(src, hitsound_wall, clamp(vol_by_damage() + (suppressed ? 0 : 20), 0, 100), TRUE, -1) @@ -311,9 +369,9 @@ if(damage > 0 && (damage_type == BRUTE || damage_type == BURN) && iswallturf(target_turf) && prob(75)) var/turf/closed/wall/target_wall = target_turf if(impact_effect_type && !hitscan) - new impact_effect_type(target_wall, hitx, hity) + new impact_effect_type(target_wall, impact_x, impact_y) - target_wall.add_dent(WALL_DENT_SHOT, hitx, hity) + target_wall.add_dent(WALL_DENT_SHOT, impact_x, impact_y) return BULLET_ACT_HIT if (hitsound) @@ -321,11 +379,11 @@ if (!isliving(target)) if(impact_effect_type && !hitscan) - new impact_effect_type(target_turf, hitx, hity) + new impact_effect_type(target_turf, impact_x, impact_y) return BULLET_ACT_HIT if((blocked >= 100 || (damage && damage_type != BRUTE)) && impact_effect_type && !hitscan) - new impact_effect_type(target_turf, hitx, hity) + new impact_effect_type(target_turf, impact_x, impact_y) var/mob/living/living_target = target var/reagent_note @@ -353,9 +411,20 @@ /obj/projectile/proc/vol_by_damage() if (suppressed) return 5 - if(!damage) + if (!damage) return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume - return clamp(damage * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 1 + return clamp(damage * 0.67, 30, 100) // Multiply projectile damage by 0.67, then CLAMP the value between 30 and 1 + +/obj/projectile/proc/firer_deleted(datum/source) + SIGNAL_HANDLER + // Shooting yourself point-blank + if (firer == original) + original = null + firer = null + +/obj/projectile/proc/original_deleted(datum/source) + SIGNAL_HANDLER + original = null /obj/projectile/proc/on_ricochet(atom/target) ricochets++ @@ -378,16 +447,10 @@ set_angle(get_angle(src, unlucky_sob.loc)) original = unlucky_sob -/obj/projectile/proc/store_hitscan_collision(datum/point/point_cache) - beam_segments[beam_index] = point_cache - beam_index = point_cache - beam_segments[beam_index] = null - /obj/projectile/Bump(atom/bumped_atom) SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, bumped_atom) - if(!can_hit_target(bumped_atom, bumped_atom == original, TRUE, TRUE)) - return - impact(bumped_atom) + if (can_hit_target(bumped_atom, bumped_atom == original, TRUE, TRUE)) + impact(bumped_atom) /** * Called when the projectile hits something @@ -401,44 +464,58 @@ * Also, we select_target to find what to process_hit first. */ /obj/projectile/proc/impact(atom/target) - if(impacted[target.weak_reference]) // never doublehit, otherwise someone may end up running into a projectile from the back + // Don't impact anything if we've been queued for deletion + if (deletion_queued) + return + + // never doublehit, otherwise someone may end up running into a projectile from the back + if(impacted[target.weak_reference]) return if(ricochets < ricochets_max && check_ricochet_flag(target) && check_ricochet(target) && target.handle_ricochet(src)) on_ricochet(target) impacted = list() // Shoot a x-ray laser at a pair of mirrors I dare you ignore_source_check = TRUE // Firer is no longer immune - decayedRange = max(0, decayedRange - reflect_range_decrease) + maximum_range = max(0, maximum_range - reflect_range_decrease) ricochet_chance *= ricochet_decay_chance damage *= ricochet_decay_damage stamina *= ricochet_decay_damage - range = decayedRange - if(hitscan && trajectory) - store_hitscan_collision(trajectory.copy_to()) + range = maximum_range return - var/turf/target_turf = get_turf(target) + last_impact_turf = get_turf(target) // Lower accurancy/longer range tradeoff. 7 is a balanced number to use. - def_zone = ran_zone(def_zone, clamp(accurate_range - (accuracy_falloff * get_dist(target_turf, starting)), 5, 100)) - process_hit_loop(select_target(target_turf, target)) + def_zone = ran_zone(def_zone, clamp(accurate_range - (accuracy_falloff * get_dist(last_impact_turf, starting)), 5, 100)) + var/impact_result = process_hit_loop(select_target(last_impact_turf, target)) + if (impact_result == PROJECTILE_IMPACT_PASSED) + return + if (hitscan) + qdel(src) + return + deletion_queued = PROJECTILE_IMPACT_DELETE /* * Main projectile hit loop code * As long as there are valid targets on the hit target's tile, we will loop through all the ones that we have not hit * (and thus invalidated) and try to hit them until either no targets remain or we've been deleted. + * Should *never* be called directly, as impact() is the proc queueing projectiles for deletion + * If you need to call this directly, you should reconsider the choices that led you to this point */ /obj/projectile/proc/process_hit_loop(atom/target) SHOULD_NOT_SLEEP(TRUE) - SHOULD_NOT_OVERRIDE(TRUE) + PRIVATE_PROC(TRUE) + + // Don't impact anything if we've been queued for deletion + if (deletion_queued) + return PROJECTILE_IMPACT_PASSED var/turf/target_turf = get_turf(target) - while (target && !QDELETED(src)) + while (target && !QDELETED(src) && !deletion_queued) // Doublehitting can be an issue with slow projectiles or when the server is chugging impacted[WEAKREF(target)] = TRUE var/mode = prehit_pierce(target) if(mode == PROJECTILE_DELETE_WITHOUT_HITTING) - qdel(src) - return + return PROJECTILE_IMPACT_INTERRUPTED // If we've phasing through a target, first set ourselves as phasing and then try to locate a new one if(mode == PROJECTILE_PIERCE_PHASE) @@ -448,27 +525,29 @@ target = select_target(target_turf, target) continue - if (SEND_SIGNAL(target, COMSIG_PROJECTILE_PREHIT, args, src) & PROJECTILE_INTERRUPT_HIT) - qdel(src) - return + var/target_signal = SEND_SIGNAL(target, COMSIG_PROJECTILE_PREHIT, src) + if (target_signal & PROJECTILE_INTERRUPT_HIT_PHASE) + return PROJECTILE_IMPACT_PASSED + if (target_signal & PROJECTILE_INTERRUPT_HIT) + return PROJECTILE_IMPACT_INTERRUPTED - if (SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_PREHIT, args) & PROJECTILE_INTERRUPT_HIT) - qdel(src) - return + var/self_signal = SEND_SIGNAL(src, COMSIG_PROJECTILE_SELF_PREHIT, target) + if (self_signal & PROJECTILE_INTERRUPT_HIT_PHASE) + return PROJECTILE_IMPACT_PASSED + if (self_signal & PROJECTILE_INTERRUPT_HIT) + return PROJECTILE_IMPACT_INTERRUPTED if(mode == PROJECTILE_PIERCE_HIT) pierces += 1 // Targets should handle their impact logic on our own and if they decide that we hit them, they call our on_hit - var/result = target.bullet_act(src, def_zone, mode == PROJECTILE_PIERCE_HIT) + var/result = target.projectile_hit(src, def_zone, mode == PROJECTILE_PIERCE_HIT) if (result != BULLET_ACT_FORCE_PIERCE && max_pierces && pierces >= max_pierces) - qdel(src) - return + return PROJECTILE_IMPACT_SUCCESSFUL // If we're not piercing or phasing, delete ourselves if (result != BULLET_ACT_FORCE_PIERCE && mode != PROJECTILE_PIERCE_HIT && mode != PROJECTILE_PIERCE_PHASE) - qdel(src) - return + return PROJECTILE_IMPACT_SUCCESSFUL // We've piercing though this one, go look for a new target if(!(movement_type & PHASING)) @@ -477,13 +556,14 @@ target = select_target(target_turf, target) + return PROJECTILE_IMPACT_PASSED + /** * Selects a target to hit from a turf * * @params - * T - The turf - * target - The "preferred" atom to hit, usually what we Bumped() first. - * bumped - used to track if something is the reason we impacted in the first place. + * our_turf - Turf on which we hit the target + * bumped - What we've impacted and why this selection was called in the first place. * If set, this atom is always treated as dense by can_hit_target. * * Priority: @@ -523,8 +603,8 @@ // 6. nothing // (returns null) -//Returns true if the target atom is on our current turf and above the right layer -//If direct target is true it's the originally clicked target. +/// Returns true if the target atom is on our current turf and above the right layer +/// If direct target is true it's the originally clicked target. /obj/projectile/proc/can_hit_target(atom/target, direct_target = FALSE, ignore_loc = FALSE, cross_failed = FALSE) if(QDELETED(target) || impacted[target.weak_reference]) return FALSE @@ -538,7 +618,7 @@ var/mob/living/living_target = target living_target.block_projectile_effects() return FALSE - if(!ignore_source_check && firer) + if(!ignore_source_check && firer && !direct_target) if(target == firer || (target == firer.loc && ismecha(firer.loc)) || (target in firer.buckled_mobs)) return FALSE if(ismob(firer)) @@ -568,7 +648,7 @@ return FALSE if(hit_prone_targets) var/mob/living/buckled_to = living_target.lowest_buckled_mob() - if((decayedRange - range) <= MAX_RANGE_HIT_PRONE_TARGETS) // after MAX_RANGE_HIT_PRONE_TARGETS tiles, auto-aim hit for mobs on the floor turns off + if((maximum_range - range) <= MAX_RANGE_HIT_PRONE_TARGETS) // after MAX_RANGE_HIT_PRONE_TARGETS tiles, auto-aim hit for mobs on the floor turns off return TRUE if(ignore_range_hit_prone_targets) // doesn't apply to projectiles that must hit the target in combat mode or something else, no matter what return TRUE @@ -579,19 +659,6 @@ return FALSE return TRUE -/** - * Scan if we should hit something and hit it if we need to - * The difference between this and handling in impact is - * In this we strictly check if we need to impact() something in specific - * If we do, we do - * We don't even check if it got hit already - impact() does that - * In impact there's more code for selecting WHAT to hit - * So this proc is more of checking if we should hit something at all BY having an atom cross us. - */ -/obj/projectile/proc/scan_crossed_hit(atom/movable/crossed_atom) - if(can_hit_target(crossed_atom, direct_target = (crossed_atom == original))) - impact(crossed_atom) - /** * Scans if we should hit something on the turf we just moved to if we haven't already * @@ -619,14 +686,15 @@ */ /obj/projectile/proc/on_entered(datum/source, atom/movable/entered_atom) SIGNAL_HANDLER - scan_crossed_hit(entered_atom) + if(can_hit_target(entered_atom, direct_target = (entered_atom == original))) + impact(entered_atom) /** * Projectile can pass through * Used to not even attempt to Bump() or fail to Cross() anything we already hit. */ /obj/projectile/CanPassThrough(atom/blocker, movement_dir, blocker_opinion) - return ..() || impacted[blocker.weak_reference] + return impacted[blocker.weak_reference] || ..() /** * Projectile moved: @@ -644,7 +712,8 @@ if(temporary_unstoppable_movement) temporary_unstoppable_movement = FALSE movement_type &= ~PHASING - scan_moved_turf() //mostly used for making sure we can hit a non-dense object the user directly clicked on, and for penetrating projectiles that don't bump + // Mostly used for making sure we can hit a non-dense object the user directly clicked on, and for penetrating projectiles that don't bump + scan_moved_turf() /** * Checks if we should pierce something. @@ -674,268 +743,443 @@ /obj/projectile/proc/check_ricochet_flag(atom/target) if((armor_flag in list(ENERGY, LASER)) && (target.flags_ricochet & RICOCHET_SHINY)) return TRUE - if((armor_flag in list(BOMB, BULLET)) && (target.flags_ricochet & RICOCHET_HARD)) return TRUE - return FALSE -/obj/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight. - if(!trajectory && isnull(forced_angle) && isnull(angle)) - return FALSE - var/datum/point/vector/current = trajectory - if(!current) - var/turf/T = get_turf(src) - current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? angle : forced_angle, SSprojectiles.global_pixel_speed) - var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move) - return v.return_turf() - -/obj/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle) - var/turf/current = get_turf(src) - var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle) - return get_line(current, ending) - /obj/projectile/Process_Spacemove(movement_dir = 0, continuous_move = FALSE) return TRUE //Bullets don't drift in space -/obj/projectile/process() - last_process = world.time - if(!loc || !fired || !trajectory) - fired = FALSE - return PROCESS_KILL - if(paused || !isturf(loc)) - last_projectile_move += world.time - last_process //Compensates for pausing, so it doesn't become a hitscan projectile when unpaused from charged up ticks. - return - var/elapsed_time_deciseconds = (world.time - last_projectile_move) + time_offset - time_offset = 0 - var/required_moves = speed > 0? FLOOR(elapsed_time_deciseconds / speed, 1) : MOVES_HITSCAN //Would be better if a 0 speed made hitscan but everyone hates those so I can't make it a universal system :< - if(required_moves == MOVES_HITSCAN) - required_moves = SSprojectiles.global_max_tick_moves - else - if(required_moves > SSprojectiles.global_max_tick_moves) - var/overrun = required_moves - SSprojectiles.global_max_tick_moves - required_moves = SSprojectiles.global_max_tick_moves - time_offset += overrun * speed - time_offset += MODULUS(elapsed_time_deciseconds, speed) - SEND_SIGNAL(src, COMSIG_PROJECTILE_BEFORE_MOVE) - for(var/i in 1 to required_moves) - pixel_move(pixel_speed_multiplier, FALSE) - /obj/projectile/proc/fire(fire_angle, atom/direct_target) LAZYINITLIST(impacted) - if(fired_from) + if (fired_from) SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original) - if(firer) + if (firer) RegisterSignal(firer, COMSIG_QDELETING, PROC_REF(firer_deleted)) SEND_SIGNAL(firer, COMSIG_PROJECTILE_FIRER_BEFORE_FIRE, src, fired_from, original) if (original) if (firer != original) RegisterSignal(original, COMSIG_QDELETING, PROC_REF(original_deleted)) - if(!log_override && firer && original && !do_not_log) + if (!log_override && firer && original && !do_not_log) log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]") //note: mecha projectile logging is handled in /obj/item/mecha_parts/mecha_equipment/weapon/action(). try to keep these messages roughly the sameish just for consistency's sake. - if(direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) // point blank shots - process_hit_loop(direct_target) - if(QDELETED(src)) + if (direct_target && (get_dist(direct_target, get_turf(src)) <= 1)) // point blank shots + impact(direct_target) + if (QDELETED(src)) return var/turf/starting = get_turf(src) - if(isnum(fire_angle)) + if (isnum(fire_angle)) set_angle(fire_angle) - else if(isnull(angle)) //Try to resolve through offsets if there's no angle set. - if(isnull(xo) || isnull(yo)) + else if (isnull(angle)) //Try to resolve through offsets if there's no angle set. + if (isnull(xo) || isnull(yo)) stack_trace("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!") qdel(src) return - var/turf/target = locate(clamp(starting + xo, 1, world.maxx), clamp(starting + yo, 1, world.maxy), starting.z) + var/turf/target = locate(clamp(starting.x + xo, 1, world.maxx), clamp(starting.y + yo, 1, world.maxy), starting.z) set_angle(get_angle(src, target)) - if(spread) + if (spread) set_angle(angle + (rand() - 0.5) * spread) original_angle = angle - trajectory_ignore_forcemove = TRUE + movement_vector = new(speed, angle) + if (hitscan) + beam_points = list() + free_hitscan_forceMove = TRUE forceMove(starting) - trajectory_ignore_forcemove = FALSE - trajectory = new(starting.x, starting.y, starting.z, pixel_x, pixel_y, angle, SSprojectiles.global_pixel_speed) last_projectile_move = world.time fired = TRUE play_fov_effect(starting, 6, "gunfire", dir = NORTH, angle = angle) SEND_SIGNAL(src, COMSIG_PROJECTILE_FIRE) - if(hitscan) + if (hitscan && !deletion_queued) + record_hitscan_start() process_hitscan() - if(QDELETED(src)) + if (QDELETED(src)) return - if(!(datum_flags & DF_ISPROCESSING)) + if (!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprojectiles, src) - pixel_move(pixel_speed_multiplier, FALSE) //move it now! + // move it now to avoid potentially hitting yourself with firer-hitting projectiles + if (!deletion_queued && !hitscan) + process_movement(max(FLOOR(speed, 1), 1), tile_limit = TRUE) -/obj/projectile/proc/set_angle(new_angle) //wrapper for overrides. +/// Makes projectile home onto the passed target with minor inaccuracy +/obj/projectile/proc/set_homing_target(atom/target) + if(!target || (!isturf(target) && !isturf(target.loc))) + return FALSE + homing = TRUE + homing_target = target + homing_offset_x = rand(homing_inaccuracy_min, homing_inaccuracy_max) + homing_offset_y = rand(homing_inaccuracy_min, homing_inaccuracy_max) + if(prob(50)) + homing_offset_x = -homing_offset_x + if(prob(50)) + homing_offset_y = -homing_offset_y + +/obj/projectile/proc/set_angle(new_angle) + if (angle == new_angle) + return if(!nondirectional_sprite) - transform = transform.TurnTo(angle, new_angle) + transform = transform.TurnTo(angle, new_angle + projectile_angle) angle = new_angle - if(trajectory) - trajectory.set_angle(new_angle) - if(fired && hitscan && isloc(loc) && (loc != last_angle_set_hitscan_store)) - last_angle_set_hitscan_store = loc - var/datum/point/point_cache = new (src) - point_cache = trajectory.copy_to() - store_hitscan_collision(point_cache) - return TRUE - -/obj/projectile/proc/firer_deleted(datum/source) - SIGNAL_HANDLER - // Shooting yourself point-blank - if (firer == original) - original = null - firer = null - -/obj/projectile/proc/original_deleted(datum/source) - SIGNAL_HANDLER - original = null + if(movement_vector) + movement_vector.set_angle(new_angle) + if(fired && hitscan && isturf(loc)) + create_hitscan_point() /// Same as set_angle, but the reflection continues from the center of the object that reflects it instead of the side -/obj/projectile/proc/set_angle_centered(new_angle) +/obj/projectile/proc/set_angle_centered(center_turf, new_angle) + if (angle == new_angle) + return if(!nondirectional_sprite) - transform = transform.TurnTo(angle, new_angle) + transform = transform.TurnTo(angle, new_angle + projectile_angle) + free_hitscan_forceMove = TRUE + forceMove(center_turf) + entry_x = 0 + entry_y = 0 angle = new_angle - if(trajectory) - trajectory.set_angle(new_angle) + if(movement_vector) + movement_vector.set_angle(new_angle) + if(fired && hitscan && isturf(loc)) + create_hitscan_point(tile_center = TRUE) + +/obj/projectile/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, angle)) + set_angle(var_value) + return TRUE + return ..() - var/list/coordinates = trajectory.return_coordinates() - trajectory.set_location(coordinates[1], coordinates[2], coordinates[3]) // Sets the trajectory to the center of the tile it bounced at +/* + * Projectile's process calculates the amount of pixels that it needs to move per tick and calls moveloop processing + * There is a strict cap on how many pixels it can move in a tick to prevent them from turning into hitscans during lag + * Path that the projectile could not finish would be stored in the overrun variable to be processed next tick + */ - if(fired && hitscan && isloc(loc) && (loc != last_angle_set_hitscan_store)) // Handles hitscan projectiles - last_angle_set_hitscan_store = loc - var/datum/point/point_cache = new (src) - point_cache.initialize_location(coordinates[1], coordinates[2], coordinates[3]) // Take the center of the hitscan collision tile - store_hitscan_collision(point_cache) - return TRUE +/obj/projectile/process() + last_process = world.time + if(!loc || !fired || !movement_vector) + fired = FALSE + return PROCESS_KILL -/obj/projectile/forceMove(atom/target) - if(!isloc(target) || !isloc(loc) || !z) - return ..() - var/zc = target.z != z - var/old = loc - if(zc) - before_z_change(old, target) - . = ..() - if(QDELETED(src)) // we coulda bumped something + // If last tick the projectile impacted something or reached its range, don't process it + if (deletion_queued == PROJECTILE_IMPACT_DELETE) + ticks_to_deletion -= 1 + if (!ticks_to_deletion) + qdel(src) return - if(trajectory && !trajectory_ignore_forcemove && isturf(target)) - if(hitscan) - finalize_hitscan_and_generate_tracers(FALSE) - trajectory.initialize_location(target.x, target.y, target.z, 0, 0) - if(hitscan) - record_hitscan_start(RETURN_PRECISE_POINT(src)) - if(zc) - after_z_change(old, target) - -/obj/projectile/proc/after_z_change(atom/olcloc, atom/newloc) - return -/obj/projectile/proc/before_z_change(atom/oldloc, atom/newloc) - return + if (deletion_queued == PROJECTILE_RANGE_DELETE) + on_range() + return -/obj/projectile/vv_edit_var(var_name, var_value) - switch(var_name) - if(NAMEOF(src, angle)) - set_angle(var_value) - return TRUE - else - return ..() + if(paused || !isturf(loc)) + // Compensates for pausing, so it doesn't become a hitscan projectile when unpaused from charged up ticks. + last_projectile_move = last_process + return -/obj/projectile/proc/set_pixel_speed(new_speed) - if(trajectory) - trajectory.set_speed(new_speed) - return TRUE - return FALSE + if (hitscan) + process_hitscan() + return -/obj/projectile/proc/record_hitscan_start(datum/point/point_cache) - if(point_cache) - beam_segments = list() - beam_index = point_cache - beam_segments[beam_index] = null //record start. + // Calculates how many pixels should be moved this tick, including overrun debt from the previous tick + var/elapsed_time = world.time - last_projectile_move + var/pixels_to_move = elapsed_time * SSprojectiles.pixels_per_decisecond * speed + overrun + overrun = 0 -/obj/projectile/proc/process_hitscan() - var/safety = range * 10 - record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1)) - while(loc && !QDELETED(src)) - if(paused) - stoplag(1) - continue - if(safety-- <= 0) - if(loc) - Bump(loc) - if(!QDELETED(src)) - qdel(src) - return //Kill! - pixel_move(1, TRUE) - // No kevinz I do not care that this is a hitscan weapon, it is not allowed to travel 100 turfs in a tick - if(CHECK_TICK && QDELETED(src)) - return + if (pixels_to_move > SSprojectiles.max_pixels_per_tick) + overrun = pixels_to_move - SSprojectiles.max_pixels_per_tick + pixels_to_move = SSprojectiles.max_pixels_per_tick -/obj/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE) - if(!loc || !trajectory) - return + overrun += MODULUS(pixels_to_move, 1) + pixels_to_move = FLOOR(pixels_to_move, 1) + SEND_SIGNAL(src, COMSIG_PROJECTILE_BEFORE_MOVE) + + // Registering turf entries is done here instead of a connect_loc because else it could be called multiple times per tick and waste performance + if (last_tick_turf) + UnregisterSignal(last_tick_turf, COMSIG_ATOM_ENTERED) + + process_movement(pixels_to_move) + + if (!QDELETED(src) && !deletion_queued && isturf(loc)) + RegisterSignal(loc, COMSIG_ATOM_ENTERED, PROC_REF(on_entered)) + last_tick_turf = loc + +/* + * Main projectile movement cycle. + * Normal behavior moves projectiles in a straight line through tiles, but it gets trickier with homing. + * Every pixels_per_decisecond we will stop and call process_homing(), which while a bit rough, does not have a significant performance impact + * This proc needs to be very performant, so do not add overridable logic that can be handled in homing or animations here. + * Return is how many tiles we've actually passed (or attempted to pass, if we ended up on a half-move) + * + * pixels_to_move determines how many pixels the projectile should move + * hitscan prevents animation logic from running + * tile_limit prevents any movements past the first tile change + */ +/obj/projectile/proc/process_movement(pixels_to_move, hitscan = FALSE, tile_limit = FALSE) + if (!isturf(loc) || !movement_vector) + return 0 + var/total_move_distance = pixels_to_move + var/movements_done = 0 last_projectile_move = world.time - if(homing) - process_homing() - var/forcemoved = FALSE - for(var/i in 1 to SSprojectiles.global_iterations_per_move) - if(QDELETED(src)) - return - trajectory.increment(trajectory_multiplier) - var/turf/cur_turf = trajectory.return_turf() - if(!istype(cur_turf)) - // step back to the last valid turf before we Destroy - trajectory.increment(-trajectory_multiplier) + while (pixels_to_move > 0 && isturf(loc) && !QDELETED(src) && !deletion_queued) + // Because pixel_x/y represents offset and not actual visual position of the projectile, we add 16 pixels to each and cut the excess because projectiles are not meant to be highly offset by default + var/pixel_x_actual = pixel_x + ICON_SIZE_X / 2 + if(pixel_x_actual > ICON_SIZE_X) + pixel_x_actual = pixel_x_actual % ICON_SIZE_X + + var/pixel_y_actual = pixel_y + ICON_SIZE_Y / 2 + if(pixel_y_actual > ICON_SIZE_Y) + pixel_y_actual = pixel_y_actual % ICON_SIZE_Y + + var/distance_to_border = INFINITY + // What distances do we need to move to hit the horizontal/vertical turf border + var/x_to_border = INFINITY + var/y_to_border = INFINITY + // If we're moving strictly up/down/left/right then one of these can be 0 and produce div by zero + if (movement_vector.pixel_x) + var/x_border_dist = -pixel_x_actual + if (movement_vector.pixel_x > 0) + x_border_dist = ICON_SIZE_X - pixel_x_actual + x_to_border = x_border_dist / movement_vector.pixel_x + distance_to_border = x_to_border + + if (movement_vector.pixel_y) + var/y_border_dist = -pixel_y_actual + if (movement_vector.pixel_y > 0) + y_border_dist = ICON_SIZE_Y - pixel_y_actual + y_to_border = y_border_dist / movement_vector.pixel_y + distance_to_border = min(distance_to_border, y_to_border) + + // Something went extremely wrong + if (distance_to_border == INFINITY) + stack_trace("WARNING: Projectile had an empty movement vector and tried to process") qdel(src) - return - if (cur_turf == loc) - continue - if (cur_turf.z == loc.z) - step_towards(src, cur_turf) - hitscan_last = loc - SEND_SIGNAL(src, COMSIG_PROJECTILE_PIXEL_STEP) - continue - var/old = loc - before_z_change(loc, cur_turf) - trajectory_ignore_forcemove = TRUE - forceMove(cur_turf) - trajectory_ignore_forcemove = FALSE - after_z_change(old, loc) - if(!hitscanning) - pixel_x = trajectory.return_px() - pixel_y = trajectory.return_py() - forcemoved = TRUE - hitscan_last = loc - SEND_SIGNAL(src, COMSIG_PROJECTILE_PIXEL_STEP) - if(QDELETED(src)) //deleted on last move - return - if(!hitscanning && !forcemoved) - pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move - pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move - animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) - Range() + return movements_done + + var/distance_to_move = min(distance_to_border, pixels_to_move) + // For homing we cap the maximum distance to move every loop + if (homing && distance_to_move > SSprojectiles.pixels_per_decisecond) + distance_to_move = SSprojectiles.pixels_per_decisecond + + // Figure out if we move to the next turf and if so, what its positioning relatively to us is + var/x_shift = distance_to_move >= x_to_border ? SIGN(movement_vector.pixel_x) : 0 + var/y_shift = distance_to_move >= y_to_border ? SIGN(movement_vector.pixel_y) : 0 + var/moving_turfs = x_shift || y_shift + // Calculate where in the turf we will be when we cross the edge. + // This is a projectile variable because its also used in hit VFX + entry_x = pixel_x + movement_vector.pixel_x * distance_to_move - x_shift * ICON_SIZE_X + entry_y = pixel_y + movement_vector.pixel_y * distance_to_move - y_shift * ICON_SIZE_Y + var/delete_distance = 0 + + if (moving_turfs) + var/turf/new_turf = locate(x + x_shift, y + y_shift, z) + // We've hit an invalid turf, end of a z level or smth went wrong + if (!istype(new_turf)) + qdel(src) + return movements_done + + // Move to the next tile + step_towards(src, new_turf) + SEND_SIGNAL(src, COMSIG_PROJECTILE_MOVE_PROCESS_STEP) + // We hit something and got deleted, stop the loop + if (QDELETED(src)) + return movements_done + if (loc != new_turf) + moving_turfs = FALSE + // If we've impacted something, we need to animate our movement until the actual hit + // Otherwise the projectile visually disappears slightly before the actual impact + if (deletion_queued) + // distance_to_move is how much we have to step to get to the next turf, hypotenuse is how much we need + // to move in the next turf to get from entry to impact position + delete_distance = distance_to_move + sqrt((impact_x - entry_x) ** 2 + (impact_y - entry_y) ** 2) + + movements_done += 1 + // We cannot move more than one turf worth of distance per loop, so this is a safe solution + pixels_moved_last_tile += distance_to_move + if (!deletion_queued && pixels_moved_last_tile >= ICON_SIZE_ALL) + reduce_range() + if (QDELETED(src)) + return movements_done + // Similarly with range out deletion, need to calculate how many pixels we can actually move before deleting + if (deletion_queued) + delete_distance = distance_to_move - (ICON_SIZE_ALL - pixels_moved_last_tile) + + if (deletion_queued) + // We moved to the next turf first, then impacted something + // This means that we need to offset our visual position back to the previous turf, then figure out + // how much we moved on the next turf (or we didn't move at all in which case we both shifts are 0 anyways) + if (moving_turfs) + pixel_x -= x_shift * ICON_SIZE_X + pixel_y -= y_shift * ICON_SIZE_Y + + // Similarly to normal animate code, but use lowered deletion distance instead. + var/delete_x = pixel_x + movement_vector.pixel_x * delete_distance + var/delete_y = pixel_y + movement_vector.pixel_y * delete_distance + // In order to keep a consistent speed, calculate at what point between ticks we get deleted + var/animate_time = world.tick_lag * delete_distance / total_move_distance + // Sometimes we need to move *just a bit* more than we can afford this tick - in this case, delete a tick after + // so we don't disappear before impact. This shouldn't be more than 1, ever. + if (delete_distance > pixels_to_move) + ticks_to_deletion += 1 + // We can use animation chains to visually disappear between ticks. + if (!move_animate(delete_x, delete_y, animate_time, deleting = TRUE)) + animate(src, pixel_x = delete_x, pixel_y = delete_y, time = animate_time, flags = ANIMATION_PARALLEL | ANIMATION_CONTINUE) + animate(alpha = 0, time = 0, flags = ANIMATION_CONTINUE) + return movements_done + + pixels_to_move -= distance_to_move + // animate() instantly changes pixel_x/y values and just interpolates them client-side so next loop processes properly + if (hitscan) + pixel_x = entry_x + pixel_y = entry_y + else + // We need to shift back to the tile we were on before moving + pixel_x -= x_shift * ICON_SIZE_X + pixel_y -= y_shift * ICON_SIZE_Y + if (!move_animate(entry_x, entry_y)) + animate(src, pixel_x = entry_x, pixel_y = entry_y, time = world.tick_lag * distance_to_move / total_move_distance, flags = ANIMATION_PARALLEL | ANIMATION_CONTINUE) + + // Homing caps our movement speed per loop while leaving per tick speed intact, so we can just call process_homing every loop here + if (homing) + process_homing() + + // We've hit a timestop field, abort any remaining movement + if (paused) + return movements_done + + // Prevents long-range high-speed projectiles from ruining the server performance by moving 100 tiles per tick when subsystem is set to a high cap + if (TICK_CHECK) + // If we ran out of time, add whatever distance we're yet to pass to overrun debt to be processed next tick and break the loop + overrun += pixels_to_move + return movements_done + + if (tile_limit && moving_turfs) + return movements_done + + return movements_done + +/// Called every time projectile animates its movement, in case child wants to have custom animations. +/// Returning TRUE cancels normal animation +/obj/projectile/proc/move_animate(animate_x, animate_y, animate_time = world.tick_lag, deleting = FALSE) + return FALSE -/obj/projectile/proc/process_homing() //may need speeding up in the future performance wise. +/// Called every projectile loop for homing or alternatively, custom trajectory changes. +/obj/projectile/proc/process_homing() if(!homing_target) - return FALSE + return var/datum/point/new_point = RETURN_PRECISE_POINT(homing_target) - new_point.x += clamp(homing_offset_x, 1, world.maxx) - new_point.y += clamp(homing_offset_y, 1, world.maxy) + new_point.pixel_x += homing_offset_x + new_point.pixel_y += homing_offset_y var/new_angle = closer_angle_difference(angle, angle_between_points(RETURN_PRECISE_POINT(src), new_point)) set_angle(angle + clamp(new_angle, -homing_turn_speed, homing_turn_speed)) -/obj/projectile/proc/set_homing_target(atom/target) - if(!target || (!isturf(target) && !isturf(target.loc))) - return FALSE - homing = TRUE - homing_target = target - homing_offset_x = rand(homing_inaccuracy_min, homing_inaccuracy_max) - homing_offset_y = rand(homing_inaccuracy_min, homing_inaccuracy_max) - if(prob(50)) - homing_offset_x = -homing_offset_x - if(prob(50)) - homing_offset_y = -homing_offset_y +/// Attempts to force the projectile to move until the subsystem runs out of processing time, the projectile impacts something or gets frozen by timestop +/obj/projectile/proc/process_hitscan() + if (isnull(movement_vector)) + qdel(src) + return + + while (isturf(loc) && !QDELETED(src)) + process_movement(ICON_SIZE_ALL, hitscan = TRUE) + if (TICK_CHECK || paused || QDELETED(src)) + return + +/// Creates (or wipes clean) list of tracer keypoints and creates a first point. +/obj/projectile/proc/record_hitscan_start(offset = TRUE) + if (isnull(beam_points)) + beam_points = list() + else + QDEL_LIST_ASSOC(beam_points) + QDEL_NULL(last_point) + last_point = RETURN_PRECISE_POINT(src) + // If moving, increment its position a bit to prevent it from looking like its coming from firer's ass + if (offset && !isnull(movement_vector)) + last_point.increment(movement_vector.pixel_x * MUZZLE_EFFECT_PIXEL_INCREMENT, movement_vector.pixel_y * MUZZLE_EFFECT_PIXEL_INCREMENT) + beam_points[last_point] = null + +/// Creates a new keypoint in which the tracer will split +/obj/projectile/proc/create_hitscan_point(impact = FALSE, tile_center = FALSE, broken_segment = FALSE) + var/atom/handle_atom = last_impact_turf || src + var/atom/used_point = tile_center ? loc : src + var/datum/point/new_point = impact ? new /datum/point(handle_atom.x, handle_atom.y, handle_atom.z, impact_x, impact_y) : RETURN_PRECISE_POINT(used_point) + if (!broken_segment) + beam_points[last_point] = new_point + beam_points[new_point] = null + last_point = new_point + +/obj/projectile/forceMove(atom/target) + if (!hitscan || isnull(beam_points)) + return ..() + create_hitscan_point() + . = ..() + if(!isturf(loc) || !isturf(target) || !z || QDELETED(src) || deletion_queued) + return + if (isnull(movement_vector) || free_hitscan_forceMove) + return + // Create firing VFX and start a new chain because we most likely got teleported + generate_hitscan_tracers(impact = FALSE) + original_angle = angle + record_hitscan_start(offset = FALSE) + +/obj/projectile/proc/generate_hitscan_tracers(impact = TRUE) + if (!length(beam_points)) + return + + if (impact) + create_hitscan_point(impact = TRUE) + + if (tracer_type) + // Stores all turfs we've created light effects on, in order to not dupe them if we enter a reflector loop + // Uses an assoc list for performance reasons + var/list/passed_turfs = list() + for (var/beam_point in beam_points) + generate_tracer(beam_point, passed_turfs) + + if (muzzle_type) + var/datum/point/start_point = beam_points[1] + var/atom/movable/muzzle_effect = new muzzle_type(loc) + start_point.move_atom_to_src(muzzle_effect) + var/matrix/matrix = new + matrix.Turn(original_angle) + muzzle_effect.transform = matrix + muzzle_effect.color = color + muzzle_effect.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override || color) + QDEL_IN(muzzle_effect, PROJECTILE_TRACER_DURATION) + + if (impact_type) + var/atom/movable/impact_effect = new impact_type(loc) + last_point.move_atom_to_src(impact_effect) + var/matrix/matrix = new + matrix.Turn(angle) + impact_effect.transform = matrix + impact_effect.color = color + impact_effect.set_light(impact_light_range, impact_light_intensity, impact_light_color_override || color) + QDEL_IN(impact_effect, PROJECTILE_TRACER_DURATION) + +/obj/projectile/proc/generate_tracer(datum/point/start_point, list/passed_turfs) + if (isnull(beam_points[start_point])) + return + + var/datum/point/end_point = beam_points[start_point] + var/datum/point/midpoint = point_midpoint_points(start_point, end_point) + var/obj/effect/projectile/tracer/tracer_effect = new tracer_type(midpoint.return_turf()) + tracer_effect.apply_vars( + angle_override = angle_between_points(start_point, end_point), + p_x = midpoint.pixel_x, + p_y = midpoint.pixel_y, + color_override = color, + scaling = pixel_length_between_points(start_point, end_point) / ICON_SIZE_ALL + ) + SET_PLANE_EXPLICIT(tracer_effect, GAME_PLANE, src) + + QDEL_IN(tracer_effect, PROJECTILE_TRACER_DURATION) + + if (!hitscan_light_range || !hitscan_light_intensity) + return + + var/list/turf/light_line = get_line(start_point.return_turf(), end_point.return_turf()) + for (var/turf/light_turf as anything in light_line) + if (passed_turfs[light_turf]) + continue + passed_turfs[light_turf] = TRUE + QDEL_IN(new /obj/effect/abstract/projectile_lighting(light_turf, hitscan_light_color_override || color, hitscan_light_range, hitscan_light_intensity), PROJECTILE_TRACER_DURATION) /** * Aims the projectile at a target. @@ -950,29 +1194,50 @@ * - deviation: (Optional) How the trajectory should deviate from the target in degrees. * - //Spread is FORCED! */ -/obj/projectile/proc/preparePixelProjectile(atom/target, atom/source, list/modifiers = null, deviation = 0) +/obj/projectile/proc/aim_projectile(atom/target, atom/source, list/modifiers = null, deviation = 0) if(!(isnull(modifiers) || islist(modifiers))) - stack_trace("WARNING: Projectile [type] fired with non-list modifiers, likely was passed click params.") + stack_trace("WARNING: Projectile [type] fired with non-list modifiers, likely was passed click params. Modifiers were the following: [modifiers]") modifiers = null var/turf/source_loc = get_turf(source) var/turf/target_loc = get_turf(target) + if(isnull(source_loc)) stack_trace("WARNING: Projectile [type] fired from nullspace.") qdel(src) return FALSE - trajectory_ignore_forcemove = TRUE - forceMove(source_loc) - trajectory_ignore_forcemove = FALSE + if(fired) + stack_trace("WARNING: Projectile [type] was aimed after already being fired.") + qdel(src) + return FALSE + free_hitscan_forceMove = TRUE + forceMove(source_loc) starting = source_loc pixel_x = source.pixel_x pixel_y = source.pixel_y original = target + + // Trim off excess pixel_x/y by converting them into turf offset + if (abs(pixel_x) > ICON_SIZE_X / 2) + for (var/i in 1 to floor(abs(pixel_x) + ICON_SIZE_X / 2) / ICON_SIZE_X) + var/turf/new_loc = get_step(source_loc, pixel_x > 0 ? EAST : WEST) + if (!istype(new_loc)) + break + source_loc = new_loc + pixel_x = pixel_x % (ICON_SIZE_X / 2) + + if (abs(pixel_y) > ICON_SIZE_Y / 2) + for (var/i in 1 to floor(abs(pixel_y) + ICON_SIZE_Y / 2) / ICON_SIZE_Y) + var/turf/new_loc = get_step(source_loc, pixel_y > 0 ? NORTH : SOUTH) + if (!istype(new_loc)) + break + source_loc = new_loc + pixel_y = pixel_y % (ICON_SIZE_X / 2) + if(length(modifiers)) var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, target_loc && target, modifiers) - p_x = calculated[2] p_y = calculated[3] set_angle(calculated[1] + deviation) @@ -1031,63 +1296,11 @@ //Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average. var/list/screenview = view_to_pixels(user.client.view) - var/ox = round(screenview[1] / 2) - user.client.pixel_x //"origin" x - var/oy = round(screenview[2] / 2) - user.client.pixel_y //"origin" y + var/ox = round(screenview[1] * 0.5) - user.client.pixel_x //"origin" x + var/oy = round(screenview[2] * 0.5) - user.client.pixel_y //"origin" y angle = ATAN2(tx - oy, ty - ox) return list(angle, p_x, p_y) -/obj/projectile/Destroy() - if(hitscan) - finalize_hitscan_and_generate_tracers() - STOP_PROCESSING(SSprojectiles, src) - cleanup_beam_segments() - firer = null - original = null - if(trajectory) - QDEL_NULL(trajectory) - return ..() - -/obj/projectile/proc/cleanup_beam_segments() - QDEL_LIST_ASSOC(beam_segments) - beam_segments = list() - QDEL_NULL(beam_index) - -/obj/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE) - if(trajectory && beam_index) - var/datum/point/point_cache = trajectory.copy_to() - beam_segments[beam_index] = point_cache - generate_hitscan_tracers(null, null, impacting) - -/obj/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3, impacting = TRUE) - if(!length(beam_segments)) - return - if(tracer_type) - var/tempref = REF(src) - for(var/datum/point/beam_point in beam_segments) - generate_tracer_between_points(beam_point, beam_segments[beam_point], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity, tempref) - if(muzzle_type && duration > 0) - var/datum/point/beam_point = beam_segments[1] - var/atom/movable/thing = new muzzle_type - beam_point.move_atom_to_src(thing) - var/matrix/matrix = new - matrix.Turn(original_angle) - thing.transform = matrix - thing.color = color - thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color) - QDEL_IN(thing, duration) - if(impacting && impact_type && duration > 0) - var/datum/point/beam_point = beam_segments[beam_segments[beam_segments.len]] - var/atom/movable/thing = new impact_type - beam_point.move_atom_to_src(thing) - var/matrix/matrix = new - matrix.Turn(angle) - thing.transform = matrix - thing.color = color - thing.set_light(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color) - QDEL_IN(thing, duration) - if(cleanup) - cleanup_beam_segments() - /obj/projectile/experience_pressure_difference() return @@ -1126,15 +1339,11 @@ firer = hit_atom yo = new_y - current_tile.y xo = new_x - current_tile.x - var/new_angle_s = angle + rand(120,240) + var/new_angle_s = angle + rand(120, 240) while(new_angle_s > 180) // Translate to regular projectile degrees new_angle_s -= 360 set_angle(new_angle_s) -#undef MOVES_HITSCAN -#undef MUZZLE_EFFECT_PIXEL_INCREMENT -#undef MAX_RANGE_HIT_PRONE_TARGETS - /// Fire a projectile from this atom at another atom /atom/proc/fire_projectile(projectile_type, atom/target, sound, firer, list/ignore_targets = list()) if (!isnull(sound)) @@ -1150,7 +1359,7 @@ bullet.yo = target.y - startloc.y bullet.xo = target.x - startloc.x bullet.original = target - bullet.preparePixelProjectile(target, src) + bullet.aim_projectile(target, src) bullet.fire() return bullet @@ -1167,3 +1376,6 @@ if(!isnull(embed_data) && !GLOB.embed_by_type[embed_data.type]) qdel(embed_data) embed_data = ispath(embed) ? get_embed_by_type(armor) : embed + +#undef MOVES_HITSCAN +#undef MUZZLE_EFFECT_PIXEL_INCREMENT diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 355221eab8620..edbb0535ac640 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -15,7 +15,7 @@ light_color = COLOR_SOFT_RED ricochets_max = 50 //Honk! ricochet_chance = 80 - reflectable = REFLECT_NORMAL + reflectable = TRUE wound_bonus = -20 bare_wound_bonus = 10 @@ -45,7 +45,7 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser damage = 9 wound_bonus = -40 - speed = 1.1 + speed = 0.9 //overclocked laser, does a bit more damage but has much higher wound power (-0 vs -20) /obj/projectile/beam/laser/hellfire @@ -53,7 +53,7 @@ icon_state = "hellfire" wound_bonus = 0 damage = 30 - speed = 0.6 // higher power = faster, that's how light works right + speed = 1.6 light_color = "#FF969D" /obj/projectile/beam/laser/heavylaser diff --git a/code/modules/projectiles/projectile/bullets/_incendiary.dm b/code/modules/projectiles/projectile/bullets/_incendiary.dm index 2e526adb05311..d5c4dc93c5bfa 100644 --- a/code/modules/projectiles/projectile/bullets/_incendiary.dm +++ b/code/modules/projectiles/projectile/bullets/_incendiary.dm @@ -35,7 +35,7 @@ suppressed = SUPPRESSED_VERY damage_type = BURN armor_flag = BOMB - speed = 1.2 + speed = 0.8 wound_bonus = 30 bare_wound_bonus = 30 wound_falloff_tile = -4 diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index 63e491e2f290d..bc64363a2d33f 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -79,7 +79,7 @@ icon_state = "smartgun" damage = 10 embed_type = /datum/embed_data/bullet_c160smart - speed = 2 + speed = 0.5 homing_turn_speed = 5 homing_inaccuracy_min = 4 homing_inaccuracy_max = 10 diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm index e9d6389c89d0d..6513be9cfb7c8 100644 --- a/code/modules/projectiles/projectile/bullets/revolver.dm +++ b/code/modules/projectiles/projectile/bullets/revolver.dm @@ -48,7 +48,6 @@ name = ".38 Rubber bullet" damage = 10 stamina = 30 - weak_against_armour = TRUE ricochets_max = 6 ricochet_incidence_leeway = 0 ricochet_chance = 130 @@ -57,6 +56,16 @@ sharpness = NONE embed_type = null +/obj/projectile/bullet/c38/match/true + name = ".38 True Strike bullet" + damage = 15 + ricochet_auto_aim_range = 3 + ricochet_auto_aim_angle = 100 + ricochet_incidence_leeway = 0 + ricochet_shoots_firer = FALSE + shrapnel_type = null + embed_type = null + // premium .38 ammo from cargo, weak against armor, lower base damage, but excellent at embedding and causing slice wounds at close range /obj/projectile/bullet/c38/dumdum name = ".38 DumDum bullet" @@ -106,9 +115,9 @@ /obj/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = 0, pierce_hit) . = ..() if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(6) - M.ignite_mob() + var/mob/living/carbon/criminal_scum = target + criminal_scum.adjust_fire_stacks(6) + criminal_scum.ignite_mob() /obj/projectile/bullet/c38/iceblox //see /obj/projectile/temp for the original code name = ".38 Iceblox bullet" @@ -119,24 +128,24 @@ /obj/projectile/bullet/c38/iceblox/on_hit(atom/target, blocked = 0, pierce_hit) . = ..() if(isliving(target)) - var/mob/living/M = target - M.adjust_bodytemperature(((100-blocked)/100)*(temperature - M.bodytemperature)) + var/mob/living/criminal_scum = target + criminal_scum.adjust_bodytemperature(((100-blocked)/100)*(temperature - criminal_scum.bodytemperature)) // .357 (Syndie Revolver) -/obj/projectile/bullet/a357 +/obj/projectile/bullet/c357 name = ".357 bullet" damage = 60 wound_bonus = -30 -/obj/projectile/bullet/a357/phasic +/obj/projectile/bullet/c357/phasic name = ".357 phasic bullet" icon_state = "gaussphase" damage = 35 armour_penetration = 100 projectile_phasing = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS -/obj/projectile/bullet/a357/heartseeker +/obj/projectile/bullet/c357/heartseeker name = ".357 heartseeker bullet" icon_state = "gauss" damage = 50 @@ -144,7 +153,7 @@ homing_turn_speed = 120 // admin only really, for ocelot memes -/obj/projectile/bullet/a357/match +/obj/projectile/bullet/c357/match name = ".357 match bullet" ricochets_max = 5 ricochet_chance = 140 @@ -152,3 +161,32 @@ ricochet_auto_aim_range = 6 ricochet_incidence_leeway = 80 ricochet_decay_chance = 1 + +//gatfruit +/obj/projectile/bullet/pea + name = "pea bullet" + damage = 15 + weak_against_armour = TRUE + ricochets_max = 3 + ricochet_chance = 100 + icon_state = "pea" + +/obj/projectile/bullet/pea/Initialize(mapload) + . = ..() + create_reagents(100, NO_REACT) //same as the fruit itself, wont ever hit that much though i believe + +/obj/projectile/bullet/pea/on_hit(mob/living/carbon/target, blocked = 0, pierce_hit) + if(istype(target) && blocked != 100) + if(iszombie(target)) // https://www.youtube.com/watch?v=ssZoq1eUK-s + target.adjustBruteLoss(15) + if(target.can_inject(target_zone = def_zone)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. + ..() + reagents.trans_to(target, reagents.total_volume, methods = INJECT) + return BULLET_ACT_HIT + blocked = 100 + target.visible_message(span_danger("\The [src] is deflected!"), span_userdanger("You are protected against \the [src]!")) + . = ..() + if(reagents & NO_REACT) //first impact on a noncarbon + reagents.flags &= ~(NO_REACT) + reagents.handle_reactions() + diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 4caec924625e1..1302aea9315a4 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -67,7 +67,7 @@ name = "rebar" icon_state = "rebar" damage = 30 - speed = 0.4 + speed = 2.5 dismemberment = 1 //because a 1 in 100 chance to just blow someones arm off is enough to be cool but also not enough to be reliable armour_penetration = 10 wound_bonus = -20 @@ -93,7 +93,6 @@ name = "rebar" icon_state = "rebar" damage = 45 - speed = 0.4 dismemberment = 2 //It's a budget sniper rifle. armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor. wound_bonus = 10 @@ -116,7 +115,7 @@ name = "zaukerite shard" icon_state = "rebar_zaukerite" damage = 60 - speed = 0.6 + speed = 1.6 dismemberment = 10 damage_type = TOX eyeblur = 5 @@ -141,7 +140,7 @@ name = "metallic hydrogen bolt" icon_state = "rebar_hydrogen" damage = 35 - speed = 0.6 + speed = 1.6 projectile_piercing = PASSMOB|PASSVEHICLE projectile_phasing = ~(PASSMOB|PASSVEHICLE) max_pierces = 3 @@ -172,7 +171,6 @@ name = "healium bolt" icon_state = "rebar_healium" damage = 0 - speed = 0.4 dismemberment = 0 damage_type = BRUTE armour_penetration = 100 @@ -199,7 +197,6 @@ name = "supermatter bolt" icon_state = "rebar_supermatter" damage = 0 - speed = 0.4 dismemberment = 0 damage_type = TOX embed_type = null diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index a2c11f76d4789..3576c9e5a12d1 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -94,7 +94,7 @@ stamina = 11 sharpness = NONE embed_type = null - speed = 1.2 + speed = 0.8 stamina_falloff_tile = -0.25 ricochets_max = 4 ricochet_chance = 120 @@ -106,7 +106,7 @@ /// Subtracted from the ricochet chance for each tile traveled var/tile_dropoff_ricochet = 4 -/obj/projectile/bullet/pellet/shotgun_rubbershot/Range() +/obj/projectile/bullet/pellet/shotgun_rubbershot/reduce_range() if(ricochet_chance > 0) ricochet_chance -= tile_dropoff_ricochet . = ..() @@ -124,7 +124,7 @@ wound_bonus = -25 bare_wound_bonus = 50 wound_falloff_tile = -10 - speed = 0.8 + speed = 1.2 ricochet_decay_chance = 0.6 ricochet_decay_damage = 0.3 demolition_mod = 10 diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm index 6118d90644d9e..44caa2ebe2162 100644 --- a/code/modules/projectiles/projectile/bullets/sniper.dm +++ b/code/modules/projectiles/projectile/bullets/sniper.dm @@ -2,7 +2,7 @@ /obj/projectile/bullet/p50 name =".50 BMG bullet" - speed = 0.4 + speed = 2.5 range = 400 // Enough to travel from one corner of the Z to the opposite corner and then some. damage = 70 paralyze = 100 @@ -87,7 +87,7 @@ name = ".50 BMG aggression dissuasion round" icon_state = "gaussstrong" damage = 25 - speed = 0.3 + speed = 3 range = 16 /obj/projectile/bullet/p50/marksman diff --git a/code/modules/projectiles/projectile/bullets/special.dm b/code/modules/projectiles/projectile/bullets/special.dm index c1299b3bed0f0..cd1439cbb01ae 100644 --- a/code/modules/projectiles/projectile/bullets/special.dm +++ b/code/modules/projectiles/projectile/bullets/special.dm @@ -79,8 +79,7 @@ /obj/projectile/bullet/coin name = "marksman coin" icon_state = "coinshot" - pixel_speed_multiplier = 0.333 - speed = 1 + speed = 0.33 damage = 5 color = "#dbdd4c" @@ -100,7 +99,7 @@ /obj/projectile/bullet/coin/Initialize(mapload, turf/the_target, mob/original_firer) src.original_firer = original_firer target_turf = the_target - range = (get_dist(original_firer, target_turf) + 3) * 3 // 3 tiles past the origin (the *3 is because Range() ticks 3 times a tile because of the slower speed) + range = (get_dist(original_firer, target_turf) + 3) * 3 // 3 tiles past the origin (the *3 is because reduce_range() ticks 3 times a tile because of the slower speed) . = ..() @@ -167,7 +166,7 @@ if(Adjacent(current_turf, target_turf)) new_splitshot.fire(get_angle(current_turf, target_turf), direct_target = next_target) else - new_splitshot.preparePixelProjectile(next_target, get_turf(src)) + new_splitshot.aim_projectile(next_target, get_turf(src)) new_splitshot.fire() if(istype(next_target, /obj/projectile/bullet/coin)) // handle further splitshot checks diff --git a/code/modules/projectiles/projectile/energy/_energy.dm b/code/modules/projectiles/projectile/energy/_energy.dm index 8527041e86006..0985691a5fb72 100644 --- a/code/modules/projectiles/projectile/energy/_energy.dm +++ b/code/modules/projectiles/projectile/energy/_energy.dm @@ -4,5 +4,5 @@ damage = 0 damage_type = BURN armor_flag = ENERGY - reflectable = REFLECT_NORMAL + reflectable = TRUE impact_effect_type = /obj/effect/temp_visual/impact_effect/energy diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm index b82ff478a05b4..08c3569028664 100644 --- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm +++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm @@ -6,7 +6,7 @@ armor_flag = ENERGY damage_type = TOX damage = 10 - speed = 0.4 + speed = 2.5 hitsound = 'sound/items/weapons/emitter2.ogg' impact_type = /obj/effect/projectile/impact/xray var/static/list/particle_colors = list( @@ -29,7 +29,7 @@ if (ishuman(target)) SSradiation.irradiate(target) - ..() + return ..() /atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction. var/obj/projectile/energy/nuclear_particle/P = new /obj/projectile/energy/nuclear_particle(src) diff --git a/code/modules/projectiles/projectile/energy/photon.dm b/code/modules/projectiles/projectile/energy/photon.dm index 5210737a19801..00ae9281af7b6 100644 --- a/code/modules/projectiles/projectile/energy/photon.dm +++ b/code/modules/projectiles/projectile/energy/photon.dm @@ -1,4 +1,4 @@ -#define MULTIPLY_PIXELSPEED 0.8 +#define MULTIPLY_SPEED 0.8 /obj/projectile/energy/photon name = "photon bolt" @@ -9,7 +9,6 @@ damage = 5 //It's literally a weaker tesla bolt, which is already weak. Don't worry, we'll fix that. range = 20 speed = 1 - pixel_speed_multiplier = 1 projectile_piercing = PASSMOB light_color = LIGHT_COLOR_DEFAULT light_system = OVERLAY_LIGHT @@ -44,9 +43,9 @@ if(prob(40)) new /obj/effect/hotspot(arrived) -/obj/projectile/energy/photon/Range() +/obj/projectile/energy/photon/reduce_range() . = ..() - pixel_speed_multiplier *= MULTIPLY_PIXELSPEED + speed *= MULTIPLY_SPEED /obj/projectile/energy/photon/on_range() do_sparks(rand(4, 9), FALSE, src) @@ -55,4 +54,4 @@ flashed_mob.flash_act() return ..() -#undef MULTIPLY_PIXELSPEED +#undef MULTIPLY_SPEED diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm index 9dfe043a01565..91677dab2fc8d 100644 --- a/code/modules/projectiles/projectile/energy/tesla.dm +++ b/code/modules/projectiles/projectile/energy/tesla.dm @@ -29,7 +29,7 @@ name = "tesla orb" icon_state = "ice_1" damage = 0 - speed = 1.5 + speed = 0.66 var/shock_damage = 5 /obj/projectile/energy/tesla_cannon/on_hit(atom/target, blocked = 0, pierce_hit) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 5c050bdebb6c2..c7f457ee427a1 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -37,7 +37,7 @@ if(isliving(target)) var/mob/living/victim = target if(victim.mob_biotypes & MOB_UNDEAD) //negative energy heals the undead - if(victim.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE)) // This heals suicides + if(victim.revive(ADMIN_HEAL_ALL & ~HEAL_REFRESH_ORGANS , force_grab_ghost = TRUE)) // This heals suicides victim.grab_ghost(force = TRUE) to_chat(victim, span_notice("You rise with a start, you're undead!!!")) else if(victim.stat != DEAD) @@ -68,7 +68,7 @@ victim.death() return - if(victim.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE)) // This heals suicides + if(victim.revive(ADMIN_HEAL_ALL & ~HEAL_REFRESH_ORGANS , force_grab_ghost = TRUE)) // This heals suicides to_chat(victim, span_notice("You rise with a start, you're alive!!!")) else if(victim.stat != DEAD) to_chat(victim, span_notice("You feel great!")) @@ -238,7 +238,8 @@ /obj/projectile/magic/locker/Destroy() locker_suck = FALSE - RemoveElement(/datum/element/connect_loc, projectile_connections) //We do this manually so the forcemoves don't "hit" us. This behavior is kinda dumb, someone refactor this + if (last_tick_turf) + UnregisterSignal(last_tick_turf, COMSIG_ATOM_ENTERED) for(var/atom/movable/AM in contents) AM.forceMove(get_turf(src)) . = ..() @@ -400,8 +401,10 @@ var/trail_icon = 'icons/effects/magic.dmi' /// The icon state the trail uses. var/trail_icon_state = "arrow" + /// Can we spawn a trail effect again? + COOLDOWN_DECLARE(trail_cooldown) -/obj/projectile/magic/aoe/Range() +/obj/projectile/magic/aoe/reduce_range() if(trigger_range >= 1) for(var/mob/living/nearby_guy in range(trigger_range, get_turf(src))) if(nearby_guy.stat == DEAD) @@ -413,38 +416,31 @@ return ..() -/obj/projectile/magic/aoe/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE) +/obj/projectile/magic/aoe/prehit_pierce(atom/target) if(can_only_hit_target && target != original) - return FALSE + return PROJECTILE_PIERCE_PHASE return ..() -/obj/projectile/magic/aoe/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) - . = ..() - if(trail) - create_trail() - -/// Creates and handles the trail that follows the projectile. -/obj/projectile/magic/aoe/proc/create_trail() - if(!trajectory) +/obj/projectile/magic/aoe/move_animate(animate_x, animate_y, animate_time = world.tick_lag, deleting = FALSE) + if(!trail || !movement_vector || deleting || !COOLDOWN_FINISHED(src, trail_cooldown)) return - var/datum/point/vector/previous = trajectory.return_vector_after_increments(1, -1) - var/obj/effect/overlay/trail = new /obj/effect/overlay(previous.return_turf()) - trail.pixel_x = previous.return_px() - trail.pixel_y = previous.return_py() - trail.icon = trail_icon - trail.icon_state = trail_icon_state - //might be changed to temp overlay - trail.set_density(FALSE) - trail.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - QDEL_IN(trail, trail_lifespan) + var/obj/effect/overlay/trail_effect = new /obj/effect/overlay(loc) + trail_effect.pixel_x = pixel_x + trail_effect.pixel_y = pixel_y + trail_effect.icon = trail_icon + trail_effect.icon_state = trail_icon_state + trail_effect.set_density(FALSE) + trail_effect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + QDEL_IN(trail_effect, trail_lifespan) + COOLDOWN_START(src, trail_cooldown, trail_lifespan) /obj/projectile/magic/aoe/lightning name = "lightning bolt" icon_state = "tesla_projectile" //Better sprites are REALLY needed and appreciated!~ damage = 15 damage_type = BURN - speed = 0.3 + speed = 3.5 /// The power of the zap itself when it electrocutes someone var/zap_power = 2e4 @@ -513,8 +509,7 @@ name = "magic missile" icon_state = "magicm" range = 100 - speed = 1 - pixel_speed_multiplier = 0.2 + speed = 0.2 trigger_range = 0 can_only_hit_target = TRUE paralyze = 6 SECONDS @@ -540,8 +535,7 @@ antimagic_flags = MAGIC_RESISTANCE_HOLY ignored_factions = list(FACTION_CULT) range = 105 - speed = 1 - pixel_speed_multiplier = 1/7 + speed = 0.15 /obj/projectile/magic/aoe/juggernaut/on_hit(atom/target, blocked = 0, pierce_hit) . = ..() diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm index 5f1f1017e836e..8d1030c8c93ef 100644 --- a/code/modules/projectiles/projectile/special/curse.dm +++ b/code/modules/projectiles/projectile/special/curse.dm @@ -10,7 +10,7 @@ damage_type = BURN damage = 10 paralyze = 20 - speed = 2 + speed = 0.5 range = 16 var/datum/beam/arm var/handedness = 0 diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm index 43d7968b9ae72..ce95ff585e07e 100644 --- a/code/modules/projectiles/projectile/special/temperature.dm +++ b/code/modules/projectiles/projectile/special/temperature.dm @@ -36,6 +36,13 @@ icon_state = "lava" temperature = 100 // Raise the body temp by 100 points +/obj/projectile/temp/hot/on_hit(atom/target, blocked = FALSE, pierce_hit) + . = ..() + + if(isliving(target)) + var/mob/living/living_target = target + living_target.adjust_wet_stacks(-10) + /obj/projectile/temp/cryo name = "cryo beam" range = 9 diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 7716784e4b438..a009ab35dd1f3 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -9,7 +9,6 @@ circuit = /obj/item/circuitboard/machine/reagentgrinder pass_flags = PASSTABLE resistance_flags = ACID_PROOF - interaction_flags_machine = parent_type::interaction_flags_machine | INTERACT_MACHINE_OFFLINE anchored_tabletop_offset = 8 /// The maximum weight of items this grinder can hold @@ -90,10 +89,14 @@ for(var/obj/item/target in src) if((target in component_parts) || target == beaker) continue - to_process["[target.name]"] += 1 + var/amount = 1 + if (isstack(target)) + var/obj/item/stack/target_stack = target + amount = target_stack.amount + to_process["[target.name]"] += amount total_weight += target.w_class if(to_process.len) - . += span_notice("Currently holding.") + . += span_notice("Currently holding:") for(var/target_name as anything in to_process) . += span_notice("[to_process[target_name]] [target_name]") . += span_notice("Filled to [round((total_weight / maximum_weight) * 100)]% capacity.") @@ -269,45 +272,36 @@ return NONE /obj/machinery/reagentgrinder/wrench_act(mob/living/user, obj/item/tool) - if(user.combat_mode) - return NONE + . = NONE - var/tool_result = ITEM_INTERACT_BLOCKING if(operating) balloon_alert(user, "still operating!") - return tool_result + return ITEM_INTERACT_BLOCKING if(default_unfasten_wrench(user, tool) == SUCCESSFUL_UNFASTEN) update_appearance(UPDATE_OVERLAYS) - tool_result = ITEM_INTERACT_SUCCESS - return tool_result + return ITEM_INTERACT_SUCCESS /obj/machinery/reagentgrinder/screwdriver_act(mob/living/user, obj/item/tool) - if(user.combat_mode) - return NONE + . = NONE - var/tool_result = ITEM_INTERACT_BLOCKING if(operating) balloon_alert(user, "still operating!") - return tool_result + return ITEM_INTERACT_BLOCKING if(default_deconstruction_screwdriver(user, icon_state, icon_state, tool)) update_appearance(UPDATE_OVERLAYS) - tool_result = ITEM_INTERACT_SUCCESS - return tool_result + return ITEM_INTERACT_SUCCESS /obj/machinery/reagentgrinder/crowbar_act(mob/living/user, obj/item/tool) - if(user.combat_mode) - return NONE + . = NONE - var/tool_result = ITEM_INTERACT_BLOCKING if(operating) balloon_alert(user, "still operating!") - return tool_result + return ITEM_INTERACT_BLOCKING if(default_deconstruction_crowbar(tool)) - tool_result = ITEM_INTERACT_SUCCESS - return tool_result + return ITEM_INTERACT_SUCCESS /obj/machinery/reagentgrinder/proc/on_storage_dump(datum/source, datum/storage/storage, mob/user) SIGNAL_HANDLER @@ -324,9 +318,7 @@ /obj/machinery/reagentgrinder/attack_hand_secondary(mob/user, list/modifiers) . = ..() - if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) - return - if(operating || !can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH)) + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN || !check_interactable(user)) return replace_beaker(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN @@ -338,13 +330,11 @@ return attack_hand_secondary(user, modifiers) /obj/machinery/reagentgrinder/ui_interact(mob/user) - . = ..() - - //some interaction sanity checks - if(!anchored || operating || !can_interact(user) || !user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH)) + //sanity check + if(!user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH)) return + var/static/radial_eject = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_eject") - var/static/radial_mix = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_mix") //create list of options available var/list/options = list() @@ -353,7 +343,7 @@ if((to_process in component_parts) || to_process == beaker) continue - if(!QDELETED(beaker) && !beaker.reagents.holder_full() && is_operational && anchored) + if(is_operational && anchored && !QDELETED(beaker) && !beaker.reagents.holder_full()) var/static/radial_grind = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_grind") options["grind"] = radial_grind @@ -362,16 +352,17 @@ options["eject"] = radial_eject break + //eject action if we have a beaker if(!QDELETED(beaker)) options["eject"] = radial_eject //mix reagents present inside - if(beaker?.reagents.total_volume && is_operational && anchored) + if(is_operational && anchored && beaker.reagents.total_volume) + var/static/radial_mix = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_mix") options["mix"] = radial_mix + //examine action if Ai is trying to see whats up if(HAS_AI_ACCESS(user)) - if(machine_stat & NOPOWER) - return var/static/radial_examine = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_examine") options["examine"] = radial_examine @@ -385,16 +376,18 @@ ) if(!choice) return + + //act on choice switch(choice) if("eject") replace_beaker(user) dump_inventory_contents() if("grind", "juice") - operate_for(60 DECISECONDS, choice == "juice", user) + operate_for(6 SECONDS, choice == "juice", user) if("mix") - mix(50 DECISECONDS, user) + mix(5 SECONDS, user) if("examine") - to_chat(user, examine_block(span_infoplain("[examine(user)]"))) + to_chat(user, examine_block(jointext(examine(user), "\n"))) /** * Checks if the radial menu can interact with this machine @@ -405,13 +398,7 @@ /obj/machinery/reagentgrinder/proc/check_interactable(mob/user) PRIVATE_PROC(TRUE) - if(!can_interact(user)) - return FALSE - - if(!anchored || operating || !user.can_perform_action(src, ALLOW_SILICON_REACH)) - return FALSE - - return TRUE + return !operating && user.can_perform_action(src, ALLOW_SILICON_REACH | FORBID_TELEKINESIS_REACH) /** * Grinds/Juices all contents inside the grinder @@ -424,10 +411,14 @@ /obj/machinery/reagentgrinder/proc/operate_for(time, juicing = FALSE, mob/user) PRIVATE_PROC(TRUE) + if(!anchored || !is_operational || QDELETED(beaker) || beaker.reagents.holder_full()) + operating = FALSE + return + operating = TRUE + var/duration = time / speed Shake(pixelshiftx = 1, pixelshifty = 0, duration = duration) - operating = TRUE if(!juicing) playsound(src, 'sound/machines/blender.ogg', 50, TRUE) else @@ -482,10 +473,15 @@ /obj/machinery/reagentgrinder/proc/mix(time, mob/user) PRIVATE_PROC(TRUE) + if(!anchored || !is_operational || QDELETED(beaker) || !beaker.reagents.total_volume) + operating = FALSE + return + operating = TRUE + var/duration = time / speed Shake(pixelshiftx = 1, pixelshifty = 0, duration = duration) - operating = TRUE + playsound(src, 'sound/machines/juicer.ogg', 20, TRUE) addtimer(CALLBACK(src, PROC_REF(mix_complete), duration), duration) @@ -499,8 +495,7 @@ /obj/machinery/reagentgrinder/proc/mix_complete(duration) PRIVATE_PROC(TRUE) - if(QDELETED(beaker) || beaker.reagents.total_volume <= 0) - operating = FALSE + if(QDELETED(src) || !is_operational) return //Recipe to make Butter @@ -512,13 +507,12 @@ tasty_butter.reagents.set_all_reagents_purity(purity) //Recipe to make Mayonnaise - if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk)) - beaker.reagents.convert_reagent(/datum/reagent/consumable/eggyolk, /datum/reagent/consumable/mayonnaise) + beaker.reagents.convert_reagent(/datum/reagent/consumable/eggyolk, /datum/reagent/consumable/mayonnaise) //Recipe to make whipped cream - if (beaker.reagents.has_reagent(/datum/reagent/consumable/cream)) - beaker.reagents.convert_reagent(/datum/reagent/consumable/cream, /datum/reagent/consumable/whipped_cream) + beaker.reagents.convert_reagent(/datum/reagent/consumable/cream, /datum/reagent/consumable/whipped_cream) //power consumed based on the ratio of total reagents mixed use_energy((active_power_usage * (duration / 1 SECONDS)) * (beaker.reagents.total_volume / beaker.reagents.maximum_volume)) + operating = FALSE diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 4ed21b0e29871..7176b4c13370e 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -82,7 +82,7 @@ var/purge_multiplier = 1 ///The default reagent container for the reagent, used for icon generation - var/obj/item/reagent_containers/default_container = /obj/item/reagent_containers/cup/bottle + var/obj/default_container = /obj/item/reagent_containers/cup/bottle // Used for restaurants. ///The amount a robot will pay for a glass of this (20 units but can be higher if you pour more, be frugal!) @@ -129,10 +129,10 @@ exposed_mob.reagents.add_reagent(type, amount, added_purity = purity) /// Applies this reagent to an [/obj] -/datum/reagent/proc/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/proc/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) SHOULD_CALL_PARENT(TRUE) - return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_OBJ, exposed_obj, reac_volume) + return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_OBJ, exposed_obj, reac_volume, methods, show_message) /// Applies this reagent to a [/turf] /datum/reagent/proc/expose_turf(turf/exposed_turf, reac_volume) diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 1f0df3ca51a89..4b4843c4dc908 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -77,7 +77,7 @@ if(3) //VICTORY ROYALE to_chat(affected_mob, span_hierophant("You win, and the malevolent spirits fade away as well as your wounds.")) affected_mob.client.give_award(/datum/award/achievement/jobs/helbitaljanken, affected_mob) - affected_mob.revive(HEAL_ALL) + affected_mob.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS) holder.del_reagent(type) return diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 7866b2eb37f14..76c88142c92f8 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -81,7 +81,7 @@ if(liver.apply_organ_damage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * liver.alcohol_tolerance * heavy_drinker_multiplier * seconds_per_tick, 0))/150))) return UPDATE_MOB_HEALTH -/datum/reagent/consumable/ethanol/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/consumable/ethanol/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) if(istype(exposed_obj, /obj/item/paper)) var/obj/item/paper/paperaffected = exposed_obj paperaffected.clear_paper() @@ -183,7 +183,7 @@ . = ..() drinker.set_dizzy_if_lower(10 SECONDS * REM * seconds_per_tick) drinker.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) - drinker.AdjustSleeping(-40 * REM * seconds_per_tick) + drinker.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE)) drinker.set_jitter_if_lower(10 SECONDS) @@ -231,7 +231,7 @@ /datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) . = ..() drinker.adjust_drowsiness(-14 SECONDS * REM * seconds_per_tick) - drinker.AdjustSleeping(-40 * REM * seconds_per_tick) + drinker.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) drinker.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, drinker.get_body_temp_normal()) if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE)) drinker.set_jitter_if_lower(10 SECONDS) @@ -1411,7 +1411,7 @@ if(52 to 201) drinker.Sleeping(100 * REM * seconds_per_tick) if(202 to INFINITY) - drinker.AdjustSleeping(40 * REM * seconds_per_tick) + drinker.AdjustSleeping(4 SECONDS * REM * seconds_per_tick) if(drinker.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH @@ -2655,7 +2655,7 @@ var/mob/living/carbon/exposed_carbon = exposed_mob var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) - stomach.adjust_charge(reac_volume * 0.02 * ETHEREAL_CHARGE_NORMAL) + stomach.adjust_charge(reac_volume * 0.001 * ETHEREAL_CHARGE_NORMAL) /datum/reagent/consumable/ethanol/telepole name = "Telepole" @@ -2675,7 +2675,7 @@ var/mob/living/carbon/exposed_carbon = exposed_mob var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) - stomach.adjust_charge(reac_volume * 0.05 * ETHEREAL_CHARGE_NORMAL) + stomach.adjust_charge(reac_volume * 0.008 * ETHEREAL_CHARGE_NORMAL) /datum/reagent/consumable/ethanol/pod_tesla name = "Pod Tesla" @@ -2702,7 +2702,7 @@ var/mob/living/carbon/exposed_carbon = exposed_mob var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH) if(istype(stomach)) - stomach.adjust_charge(reac_volume * 0.1 * ETHEREAL_CHARGE_NORMAL) + stomach.adjust_charge(reac_volume * 0.03 * ETHEREAL_CHARGE_NORMAL) // Welcome to the Blue Room Bar and Grill, home to Mars' finest cocktails /datum/reagent/consumable/ethanol/rice_beer diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm index 2cbf4c3ecf778..93f3c41e64df5 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm @@ -278,7 +278,7 @@ . = ..() affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) //310.15 is the normal bodytemp. affected_mob.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal()) if(holder.has_reagent(/datum/reagent/consumable/frostoil)) @@ -300,7 +300,7 @@ affected_mob.adjust_dizzy(-4 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-2 SECONDS * REM * seconds_per_tick) affected_mob.adjust_jitter(-6 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-20 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick) if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick)) if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) . = UPDATE_MOB_HEALTH @@ -377,7 +377,7 @@ . = ..() affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()) /datum/reagent/consumable/hot_ice_coffee @@ -398,7 +398,7 @@ . = ..() affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-60 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-6 SECONDS * REM * seconds_per_tick) affected_mob.adjust_bodytemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()) if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH @@ -416,7 +416,7 @@ . = ..() affected_mob.adjust_dizzy(-4 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-2 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick)) if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) . = UPDATE_MOB_HEALTH @@ -529,7 +529,7 @@ affected_mob.set_jitter_if_lower(40 SECONDS * REM * seconds_per_tick) affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick) affected_mob.remove_status_effect(/datum/status_effect/drowsiness) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()) /datum/reagent/consumable/spacemountainwind @@ -543,7 +543,7 @@ /datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() affected_mob.adjust_drowsiness(-14 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-20 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick) affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()) affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick) @@ -642,7 +642,7 @@ . = ..() affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick) affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()) /datum/reagent/consumable/wellcheers @@ -680,7 +680,7 @@ affected_mob.set_jitter_if_lower(80 SECONDS * REM * seconds_per_tick) affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick) affected_mob.remove_status_effect(/datum/status_effect/drowsiness) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()) /datum/reagent/consumable/monkey_energy/on_mob_metabolize(mob/living/affected_mob) @@ -1257,7 +1257,7 @@ return affected_mob.set_silence_if_lower(MIMEDRINK_SILENCE_DURATION) affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick) - affected_mob.AdjustSleeping(-40 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick) if(affected_mob.getToxLoss() && SPT_PROB(25, seconds_per_tick)) if(affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) return UPDATE_MOB_HEALTH diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 61836a49163e0..4a4bf137b3c4d 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -832,7 +832,7 @@ if(kronkaine_fiend.adjustOrganLoss(ORGAN_SLOT_HEART, 0.4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)) . = UPDATE_MOB_HEALTH kronkaine_fiend.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick) - kronkaine_fiend.AdjustSleeping(-20 * REM * seconds_per_tick) + kronkaine_fiend.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick) kronkaine_fiend.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick) if(volume < 10) return @@ -865,3 +865,54 @@ ) new /obj/structure/bouncy_castle(gored.loc, gored) gored.gib() + +/datum/reagent/drug/syndol + name = "Syndol" + description = "A potent and addictive hallucinogen used by syndicate agents disorient certain targets. \ + It is said that the hallucinations it causes are tailored to the user's fears, but tests have been inconclusive, \ + with subjects in security and assistants reporting wildly different experiences." + color = "#c90000" + taste_description = "metallic" + ph = 7 + overdose_threshold = 10 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + addiction_types = list(/datum/addiction/hallucinogens = 20) + /// Track the active hallucination we're giving out so we don't replace it by accident + VAR_PRIVATE/datum/weakref/active_hallucination_weakref + +/datum/reagent/drug/syndol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + var/obj/item/organ/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER) + if(isnull(liver) || !(liver.organ_flags & affected_organ_flags)) + return + // non-trivial but not immediately dangerous liver damage + liver.apply_organ_damage(0.5 * REM * seconds_per_tick) + // anti-hallucinogens can counteract the effects + if(HAS_TRAIT(affected_mob, TRAIT_HALLUCINATION_IMMUNE) || affected_mob.reagents.has_reagent(/datum/reagent/medicine/haloperidol, amount = 3, needs_metabolizing = TRUE)) + QDEL_NULL(active_hallucination_weakref) + return + + // and the main event, funny hallucinations + if(active_hallucination_weakref?.resolve()) + return + var/greatest_fear + if(HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM)) + greatest_fear = /datum/hallucination/delusion/preset/syndies + else if(HAS_TRAIT(liver, TRAIT_MAINTENANCE_METABOLISM) || HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) + greatest_fear = /datum/hallucination/delusion/preset/seccies + + if(greatest_fear) + // 5 minutes = 15 units, roughly. we cancel the hallucination early when we exit the mob, anyway + active_hallucination_weakref = WEAKREF(affected_mob.cause_hallucination(greatest_fear, name, duration = 5 MINUTES, skip_nearby = !overdosed)) + else + // if they're just some random schmuck, give them random hallucinations + affected_mob.adjust_hallucinations_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS) + +/datum/reagent/drug/syndol/on_mob_end_metabolize(mob/living/affected_mob) + . = ..() + affected_mob.adjust_hallucinations(-16 SECONDS) + QDEL_NULL(active_hallucination_weakref) + +/datum/reagent/drug/syndol/overdose_start(mob/living/affected_mob) + // no message, just refresh the hallucination + QDEL_NULL(active_hallucination_weakref) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index b33153e9480ff..f930e3e4ff594 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -13,7 +13,7 @@ inverse_chem_val = 0.1 inverse_chem = null creation_purity = CONSUMABLE_STANDARD_PURITY - /// How much nutrition this reagent supplies + /// How much nutrition this reagent supplies. Look at get_nutriment_factor() for an understanding. var/nutriment_factor = 1 /// affects mood, typically higher for mixed drinks with more complex recipes' var/quality = 0 @@ -58,7 +58,7 @@ exposed_mob.add_mood_event("quality_drink", /datum/mood_event/race_drink) // DOPPLER EDIT ADDITION END -/// Gets just how much nutrition this reagent is worth for the passed mob +/// Gets just how much nutrition this reagent supplies per server tick to the eater /datum/reagent/consumable/proc/get_nutriment_factor(mob/living/carbon/eater) return nutriment_factor * REAGENTS_METABOLISM * purity * 2 @@ -163,7 +163,7 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED var/fry_temperature = 450 //Around ~350 F (117 C) which deep fryers operate around in the real world -/datum/reagent/consumable/nutriment/fat/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/consumable/nutriment/fat/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() if(!holder || (holder.chem_temp <= fry_temperature)) return @@ -865,6 +865,27 @@ taste_description = "rancid fungus" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED +/datum/reagent/consumable/moltobeso + name = "Molt'Obeso" //pardon my Italian + description = "Concentrated gluttony." + color = "#f8fc36" + taste_description = "gluttony" + taste_mult = 0.3 + nutriment_factor = 0 //the essence of this sauce is to stimulate hunger and improve the absorption of calories from food eaten + metabolization_rate = 0.025 * REAGENTS_METABOLISM + metabolized_traits = list(TRAIT_GLUTTON) + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +/datum/reagent/consumable/moltobeso/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + for(var/datum/reagent/consumable/food in affected_mob.reagents.reagent_list) + if(food == src) + continue + var/food_factor = food.get_nutriment_factor(affected_mob) + if(food_factor <= 0) + continue + affected_mob.adjust_nutrition(food_factor * REM * seconds_per_tick) + /datum/reagent/consumable/eggrot name = "Rotten Eggyolk" description = "It smells absolutely dreadful." diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm index b8a2250722534..ebd392f536892 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm @@ -480,6 +480,7 @@ Basically, we fill the time between now and 2s from now with hands based off the overdose_threshold = 20 self_consuming = TRUE //No pesky liver shenanigans chemical_flags = REAGENT_DONOTSPLIT | REAGENT_DEAD_PROCESS + affected_organ_flags = NONE ///If we brought someone back from the dead var/back_from_the_dead = FALSE /// List of trait buffs to give to the affected mob, and remove as needed. diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d6fef868831d7..a60b4c171b703 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -43,7 +43,7 @@ chemical_flags = REAGENT_DEAD_PROCESS metabolized_traits = list(TRAIT_ANALGESIA) /// Flags to fullheal every metabolism tick - var/full_heal_flags = ~(HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_REFRESH_ORGANS) + var/full_heal_flags = ~(HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_ORGANS) // The best stuff there is. For testing/debugging. /datum/reagent/medicine/adminordrazine/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user) @@ -76,7 +76,7 @@ name = "Quantum Medicine" description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy." taste_description = "science" - full_heal_flags = ~(HEAL_ADMIN|HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_ALL_REAGENTS|HEAL_REFRESH_ORGANS) + full_heal_flags = ~(HEAL_ADMIN|HEAL_BRUTE|HEAL_BURN|HEAL_TOX|HEAL_RESTRAINTS|HEAL_ALL_REAGENTS|HEAL_ORGANS) /datum/reagent/medicine/synaptizine name = "Synaptizine" @@ -646,7 +646,7 @@ overdose_threshold = 30 ph = 8.96 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED - addiction_types = list(/datum/addiction/opioids = 10) + addiction_types = list(/datum/addiction/opioids = 20) // 30 units of morphine may cause addition metabolized_traits = list(TRAIT_ANALGESIA) /datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/affected_mob) @@ -661,13 +661,28 @@ . = ..() if(current_cycle > 5) affected_mob.add_mood_event("numb", /datum/mood_event/narcotic_medium, name) + if(affected_mob.disgust < DISGUST_LEVEL_VERYGROSS && SPT_PROB(50 * (2 - creation_purity), seconds_per_tick)) + affected_mob.adjust_disgust(1.5 * REM * seconds_per_tick) + switch(current_cycle) - if(12) - to_chat(affected_mob, span_warning("You start to feel tired...") ) - if(13 to 25) - affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick) - if(25 to INFINITY) - affected_mob.Sleeping(40 * REM * seconds_per_tick) + if(16) //~3u + to_chat(affected_mob, span_warning("You start to feel tired...")) + affected_mob.adjust_eye_blur(2 SECONDS * REM * seconds_per_tick) + if(SPT_PROB(66, seconds_per_tick)) + affected_mob.emote("yawn") + + if(24 to 36) // 5u to 7.5u + if(SPT_PROB(66 * (2 - creation_purity), seconds_per_tick)) + affected_mob.adjust_drowsiness_up_to(2 SECONDS * REM * seconds_per_tick, 12 SECONDS) + + if(36 to 48) // 7.5u to 10u + affected_mob.adjust_drowsiness_up_to(2 SECONDS * REM * seconds_per_tick, 12 SECONDS) + + if(48 to INFINITY) //10u onward + affected_mob.adjust_drowsiness_up_to(3 SECONDS * REM * seconds_per_tick, 20 SECONDS) + // doesn't scale from purity - at this point it tries to guarantee sleep + if(SPT_PROB(30 * (48 - current_cycle), seconds_per_tick)) + affected_mob.Sleeping(4 SECONDS * REM * seconds_per_tick) /datum/reagent/medicine/morphine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -906,6 +921,10 @@ /// The maximum amount of damage we can revive from, as a ratio of max health var/max_revive_damage_ratio = 2 +// To override for subtypes. +/datum/reagent/medicine/strange_reagent/proc/pre_rez_check(atom/thing_to_rez) + return TRUE + /datum/reagent/medicine/strange_reagent/instant name = "Stranger Reagent" instant = TRUE @@ -965,6 +984,11 @@ exposed_mob.do_jitter_animation(10) return + if(!pre_rez_check(exposed_mob)) + exposed_mob.visible_message(span_warning("[exposed_mob]'s body twitches slightly.")) + exposed_mob.do_jitter_animation(1) + return + exposed_mob.visible_message(span_warning("[exposed_mob]'s body starts convulsing!")) exposed_mob.notify_revival("Your body is being revived with Strange Reagent!") exposed_mob.do_jitter_animation(10) @@ -995,6 +1019,27 @@ if(need_mob_update) return UPDATE_MOB_HEALTH +/datum/reagent/medicine/strange_reagent/fishy_reagent + name = "Fishy Reagent" + description = "This reagent has a chemical composition very similar to that of Strange Reagent, however, it seems to work purely and only on... fish. Or at least, aquatic creatures." + reagent_state = LIQUID + color = "#5ee8b3" + metabolization_rate = 1.25 * REAGENTS_METABOLISM + taste_description = "magnetic scales" + ph = 0.5 + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + +// only revives fish. +/datum/reagent/medicine/strange_reagent/fishy_reagent/pre_rez_check(atom/thing_to_rez) + if(ismob(thing_to_rez)) + var/mob/living/mob_to_rez = thing_to_rez + if(mob_to_rez.mob_biotypes & MOB_AQUATIC) + return TRUE + return FALSE + if(isfish(thing_to_rez)) + return TRUE + return FALSE + /datum/reagent/medicine/mannitol name = "Mannitol" description = "Efficiently restores brain damage." @@ -1184,7 +1229,7 @@ /datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() - affected_mob.AdjustSleeping(-20 * REM * seconds_per_tick) + affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick) holder.remove_reagent(/datum/reagent/consumable/sugar, 3 * REM * seconds_per_tick) //Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient. diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 2941e5ecd7d08..4444ef843c8cf 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -67,6 +67,12 @@ exposed_carbon.reagents.remove_reagent(type, reac_volume) // Because we don't want blood to just lie around in the patient's blood, makes no sense. + // covers them and their worn equipment in blood + if((methods & (TOUCH|VAPOR)) && reac_volume > 3) + if(data["blood_DNA"] && data["blood_type"]) + exposed_carbon.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + else + exposed_carbon.add_blood_DNA(list("Non-human DNA" = random_blood_type())) /datum/reagent/blood/on_new(list/data) . = ..() @@ -126,6 +132,28 @@ if(data["blood_DNA"]) bloodsplatter.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) +/datum/reagent/blood/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) + . = ..() + if(!istype(exposed_obj)) + return + if(reac_volume < 3) + return + + if(!(methods & (VAPOR|TOUCH))) + return + + if(LAZYLEN(data["viruses"])) + var/list/viruses_to_add = list() + for(var/datum/disease/virus in data["viruses"]) + if(virus.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS) + viruses_to_add += virus + if(length(viruses_to_add)) + exposed_obj.AddComponent(/datum/component/infective, viruses_to_add) + if(data["blood_DNA"] && data["blood_type"]) + exposed_obj.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) + else + exposed_obj.add_blood_DNA(list("Non-human DNA" = random_blood_type())) + /datum/reagent/blood/get_taste_description(mob/living/taster) if(isnull(taster)) return ..() @@ -238,7 +266,7 @@ * Water reaction to an object */ -/datum/reagent/water/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/water/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() exposed_obj.extinguish() exposed_obj.wash(CLEAN_TYPE_ACID) @@ -282,6 +310,16 @@ exposed_mob.incapacitate(1) // startles the felinid, canceling any do_after exposed_mob.add_mood_event("watersprayed", /datum/mood_event/watersprayed) + if(methods & (TOUCH|VAPOR)) // wakey wakey eggs and bakey + exposed_mob.adjust_dizzy(-2 SECONDS) + exposed_mob.adjust_confusion(-2 SECONDS) + exposed_mob.adjust_drowsiness(-4 SECONDS) + exposed_mob.adjust_jitter(-4 SECONDS) + exposed_mob.AdjustSleeping(-15 SECONDS) + exposed_mob.AdjustUnconscious(-8 SECONDS) + var/drunkness_restored = HAS_TRAIT(exposed_mob, TRAIT_WATER_ADAPTATION) ? -0.5 : -0.25 + exposed_mob.adjust_drunk_effect(drunkness_restored) + if((methods & INGEST) && HAS_TRAIT(exposed_mob, TRAIT_WATER_ADAPTATION) && reac_volume >= 4) exposed_mob.adjust_wet_stacks(0.15 * reac_volume) @@ -973,7 +1011,7 @@ ph = 5.5 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/copper/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/copper/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() if(!istype(exposed_obj, /obj/item/stack/sheet/iron)) return @@ -1342,7 +1380,7 @@ ph = 5.5 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_CLEANS|REAGENT_AFFECTS_WOUNDS -/datum/reagent/space_cleaner/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/space_cleaner/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() exposed_obj?.wash(clean_types) @@ -1369,9 +1407,9 @@ /datum/reagent/space_cleaner/on_burn_wound_processing(datum/wound/burn/flesh/burn_wound) burn_wound.sanitization += 0.3 if(prob(5)) - to_chat(burn_wound.victim, span_notice("Your [burn_wound] stings and burns from the [src] covering it! It does look pretty clean though.")) - burn_wound.victim.adjustToxLoss(0.5) - burn_wound.limb.receive_damage(burn = 0.5, wound_bonus = CANT_WOUND) + to_chat(burn_wound.victim, span_notice("Your [burn_wound] stings and burns from [src] covering it! It does look pretty clean though.")) + burn_wound.victim.apply_damage(0.5, TOX) + burn_wound.victim.apply_damage(0.5, BURN, burn_wound.limb, wound_bonus = CANT_WOUND) /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" @@ -2189,13 +2227,13 @@ /datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() if(can_colour_mobs) - affected_mob.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY) + affected_mob.add_atom_colour(color_transition_filter(pick(random_color_list), SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY) /// Colors anything it touches a random color. /datum/reagent/colorful_reagent/expose_atom(atom/exposed_atom, reac_volume) . = ..() if(!isliving(exposed_atom) || can_colour_mobs) - exposed_atom.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY) + exposed_atom.add_atom_colour(color_transition_filter(pick(random_color_list), SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY) /datum/reagent/hair_dye name = "Quantum Hair Dye" @@ -2344,7 +2382,7 @@ // We want one spray of this stuff (5u) to take out a wet floor. Feels better that way exposed_turf.MakeDry(ALL, TRUE, reac_volume * 10 SECONDS) -/datum/reagent/drying_agent/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/drying_agent/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() if(exposed_obj.type != /obj/item/clothing/shoes/galoshes) return @@ -2725,7 +2763,7 @@ /// The amount of materials to apply to the transmuted objects if they don't contain materials var/default_material_amount = 100 -/datum/reagent/metalgen/expose_obj(obj/exposed_obj, volume) +/datum/reagent/metalgen/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() metal_morph(exposed_obj) @@ -2764,7 +2802,7 @@ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED self_consuming = TRUE //this works on objects, so it should work on skeletons and robots too -/datum/reagent/gravitum/expose_obj(obj/exposed_obj, volume) +/datum/reagent/gravitum/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() exposed_obj.AddElement(/datum/element/forced_gravity, 0) addtimer(CALLBACK(exposed_obj, PROC_REF(_RemoveElement), list(/datum/element/forced_gravity, 0)), volume * time_multiplier, TIMER_UNIQUE|TIMER_OVERRIDE) @@ -2941,7 +2979,7 @@ amount_left = round(reac_volume,0.1) exposed_mob.apply_status_effect(status_effect, amount_left) -/datum/reagent/ants/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/ants/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() var/turf/open/my_turf = exposed_obj.loc // No dumping ants on an object in a storage slot if(!istype(my_turf)) //Are we actually in an open turf? @@ -3077,7 +3115,8 @@ ph = 10 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED -/datum/reagent/hauntium/expose_obj(obj/exposed_obj, volume) //gives 15 seconds of haunting effect for every unit of it that touches an object +//gives 15 seconds of haunting effect for every unit of it that touches an object +/datum/reagent/hauntium/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() if(HAS_TRAIT_FROM(exposed_obj, TRAIT_HAUNTED, HAUNTIUM_REAGENT_TRAIT)) return @@ -3096,11 +3135,11 @@ . = ..() if(affected_mob.mob_biotypes & MOB_UNDEAD || HAS_MIND_TRAIT(affected_mob, TRAIT_MORBID)) //if morbid or undead,acts like an addiction-less drug affected_mob.remove_status_effect(/datum/status_effect/jitter) - affected_mob.AdjustStun(-50 * REM * seconds_per_tick) - affected_mob.AdjustKnockdown(-50 * REM * seconds_per_tick) - affected_mob.AdjustUnconscious(-50 * REM * seconds_per_tick) - affected_mob.AdjustParalyzed(-50 * REM * seconds_per_tick) - affected_mob.AdjustImmobilized(-50 * REM * seconds_per_tick) + affected_mob.AdjustStun(-5 SECONDS * REM * seconds_per_tick) + affected_mob.AdjustKnockdown(-5 SECONDS * REM * seconds_per_tick) + affected_mob.AdjustUnconscious(-5 SECONDS * REM * seconds_per_tick) + affected_mob.AdjustParalyzed(-5 SECONDS * REM * seconds_per_tick) + affected_mob.AdjustImmobilized(-5 SECONDS * REM * seconds_per_tick) else if(affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, REM * seconds_per_tick)) //1 heart damage per tick . = UPDATE_MOB_HEALTH diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index c81eb5e1fb6a5..c401d39f020ed 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -379,7 +379,7 @@ air.react(src) qdel(hotspot) -/datum/reagent/firefighting_foam/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/firefighting_foam/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() exposed_obj.extinguish() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index a5d8fdaae18c2..22c5902ad4136 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -362,7 +362,7 @@ mytray.adjust_toxic(round(volume * 6)) mytray.adjust_weedlevel(-rand(4,8)) -/datum/reagent/toxin/plantbgone/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/toxin/plantbgone/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() if(istype(exposed_obj, /obj/structure/alien/weeds)) var/obj/structure/alien/weeds/alien_weeds = exposed_obj @@ -1097,7 +1097,7 @@ return exposed_carbon.acid_act(acidpwr, reac_volume) -/datum/reagent/toxin/acid/expose_obj(obj/exposed_obj, reac_volume) +/datum/reagent/toxin/acid/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE) . = ..() if(ismob(exposed_obj.loc)) //handled in human acid_act() return @@ -1223,12 +1223,12 @@ if(BP) playsound(affected_mob, SFX_DESECRATION, 50, TRUE, -1) affected_mob.visible_message(span_warning("[affected_mob]'s bones hurt too much!!"), span_danger("Your bones hurt too much!!")) - affected_mob.say("OOF!!", forced = /datum/reagent/toxin/bonehurtingjuice) - if(BP.receive_damage(brute = 20 * REM * seconds_per_tick, burn = 0, blocked = 200, updating_health = FALSE, wound_bonus = rand(30, 130))) - . = UPDATE_MOB_HEALTH + affected_mob.say("OOF!!", forced = type) + affected_mob.apply_damage(20, BRUTE, BP, wound_bonus = rand(30, 130)) + else //SUCH A LUST FOR REVENGE!!! to_chat(affected_mob, span_warning("A phantom limb hurts!")) - affected_mob.say("Why are we still here, just to suffer?", forced = /datum/reagent/toxin/bonehurtingjuice) + affected_mob.say("Why are we still here, just to suffer?", forced = type) /datum/reagent/toxin/bonehurtingjuice/used_on_fish(obj/item/fish/fish) if(HAS_TRAIT(fish, TRAIT_FISH_MADE_OF_BONE)) @@ -1435,3 +1435,9 @@ SIGNAL_HANDLER if(current_cycle > 28 && !HAS_TRAIT(source, TRAIT_TETRODOTOXIN_HEALING)) return COMSIG_CARBON_BLOCK_BREATH + +/datum/reagent/toxin/gatfruit + name = "Phytotoxin" + description = "A poison produced by the rare and elusive gatfruit plant." + liver_damage_multiplier = 0 + toxpwr = 1 diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 868917893c90c..84f251b759fad 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -208,6 +208,16 @@ required_reagents = list(/datum/reagent/medicine/omnizine/protozine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_PLANT | REACTION_TAG_OTHER +/datum/chemical_reaction/medicine/fishy_reagent + results = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 3) + required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/salt = 1, /datum/reagent/toxin/carpotoxin = 1) + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER + +/datum/chemical_reaction/medicine/fishy_reagent/alt + results = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 6) + required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/salt = 1, /datum/reagent/toxin/tetrodotoxin = 1) + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER + /datum/chemical_reaction/medicine/mannitol results = list(/datum/reagent/medicine/mannitol = 3) required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 542850ac9beae..6219fc964575b 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -575,6 +575,29 @@ new /mob/living/basic/pet/dog/corgi(location) ..() +/datum/chemical_reaction/lifish + required_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 1, /datum/reagent/medicine/c2/synthflesh = 1, /datum/reagent/blood = 1) + required_temp = 374 + reaction_flags = REACTION_INSTANT + reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE + +/datum/chemical_reaction/lifish/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) + var/location = get_turf(holder.my_atom) + + // create fish possibles + var/list/fish_types = list() + for(var/path in subtypesof(/obj/item/fish)) + var/obj/item/fish/fake_fish = path + if(initial(fake_fish.random_case_rarity) == FISH_RARITY_NOPE) // means they aren't mean to be randomly available + continue + fish_types |= path + + // spawn from popssible fishes + for(var/i in 1 to rand(1, created_volume)) // More flop. + var/obj/item/fish/spawned_fish = pick(fish_types) + new spawned_fish(location) + return ..() + //monkey powder heehoo /datum/chemical_reaction/monkey_powder results = list(/datum/reagent/monkey_powder = 5) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 0814834b25a51..f331dcfbab740 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -578,7 +578,7 @@ required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1) strengthdiv = 100 modifier = -100 - mix_message = span_boldannounce("The teslium starts to spark as electricity arcs away from it!") + mix_message = span_bolddanger("The teslium starts to spark as electricity arcs away from it!") mix_sound = 'sound/machines/defib/defib_zap.ogg' var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS @@ -640,4 +640,4 @@ /datum/chemical_reaction/reagent_explosion/patriotism_overload required_reagents = list(/datum/reagent/consumable/ethanol/planet_cracker = 1, /datum/reagent/consumable/ethanol/triumphal_arch = 1) strengthdiv = 20 - mix_message = span_boldannounce("The two patriotic drinks instantly reject each other!") + mix_message = span_bolddanger("The two patriotic drinks instantly reject each other!") diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 3f83bc122282e..08ef730011f64 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -28,7 +28,7 @@ . = ..() if(drink_type) var/list/types = bitfield_to_list(drink_type, FOOD_FLAGS) - . += span_notice("It is [LOWER_TEXT(english_list(types))].") + . += span_notice("The label says it contains [LOWER_TEXT(english_list(types))] ingredients.") /** * Checks if the mob actually liked drinking this cup. diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index 0b1acf8aa5508..dbf88ff7e4302 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -37,6 +37,11 @@ desc = "A small bottle of spewium." list_reagents = list(/datum/reagent/toxin/spewium = 30) +/obj/item/reagent_containers/cup/bottle/syndol + name = "syndol bottle" + desc = "A small bottle of syndol." + list_reagents = list(/datum/reagent/drug/syndol = 30) + /obj/item/reagent_containers/cup/bottle/morphine name = "morphine bottle" desc = "A small bottle of morphine." @@ -134,6 +139,11 @@ desc = "A small bottle. May be used to revive people." list_reagents = list(/datum/reagent/medicine/strange_reagent = 30) +/obj/item/reagent_containers/cup/bottle/fishy_reagent + name = "Fishy Reagent Bottle" + desc = "A small bottle. May be used to revive fish." + list_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 30) + /obj/item/reagent_containers/cup/bottle/traitor name = "syndicate bottle" desc = "A small bottle. Contains a random nasty chemical." @@ -255,6 +265,12 @@ desc = "A small bottle of Romerol. The REAL zombie powder." list_reagents = list(/datum/reagent/romerol = 30) +/obj/item/reagent_containers/cup/bottle/moltobeso + name = "Molt'Obeso bottle" + desc = "The revolutionary new sauce from Syndicate's culinary experts, designed to instantly reshape your figure! \ + The key to the effectiveness of this product lies in its unique formulation, which combines carefully selected ingredients to stimulate appetite and enhance the absorption of calories." + list_reagents = list(/datum/reagent/consumable/moltobeso = 50) + /obj/item/reagent_containers/cup/bottle/random_virus name = "Experimental disease culture bottle" desc = "A small bottle. Contains an untested viral culture in synthblood medium." diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index 241dfd7c6f89f..841539fa0cc55 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -31,11 +31,11 @@ qdel(src) target.Bumped(B) -/obj/item/reagent_containers/cup/glass/bullet_act(obj/projectile/P) +/obj/item/reagent_containers/cup/glass/bullet_act(obj/projectile/proj) . = ..() if(QDELETED(src)) return - if(P.damage > 0 && P.damage_type == BRUTE) + if(proj.damage > 0 && proj.damage_type == BRUTE) var/atom/T = get_turf(src) smash(T) diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index 5712d383f0b57..90cc93e54111f 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -21,7 +21,6 @@ var/broken_inhand_icon_state = "broken_beer" lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi' - drink_type = ALCOHOL age_restricted = TRUE // wrryy can't set an init value to see if drink_type contains ALCOHOL so here we go ///Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets) var/bottle_knockdown_duration = BOTTLE_KNOCKDOWN_DEFAULT_DURATION @@ -308,6 +307,7 @@ desc = "Brewed with \"Pure Ice Asteroid Spring Water\"." icon_state = "litebeer" list_reagents = list(/datum/reagent/consumable/ethanol/beer/light = 30) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/rootbeer name = "Two-Time root beer" @@ -333,47 +333,53 @@ desc = "A bottle of high quality gin, produced in the New London Space Station." icon_state = "ginbottle" list_reagents = list(/datum/reagent/consumable/ethanol/gin = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/whiskey name = "Uncle Git's special reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/kong name = "Kong" desc = "Makes You Go Ape!®" list_reagents = list(/datum/reagent/consumable/ethanol/whiskey/kong = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/candycornliquor name = "candy corn liquor" desc = "Like they drank in 2D speakeasies." list_reagents = list(/datum/reagent/consumable/ethanol/whiskey/candycorn = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/vodka name = "Tunguska triple distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/vodka/badminka name = "Badminka vodka" desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." icon_state = "badminka" list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/tequila name = "Caccavo guaranteed quality tequila" desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" icon_state = "tequilabottle" list_reagents = list(/datum/reagent/consumable/ethanol/tequila = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/bottleofnothing name = "bottle of nothing" desc = "A bottle filled with nothing." icon_state = "bottleofnothing" list_reagents = list(/datum/reagent/consumable/nothing = 100) - drink_type = NONE age_restricted = FALSE /obj/item/reagent_containers/cup/glass/bottle/patron @@ -381,18 +387,21 @@ desc = "Silver laced tequila, served in space night clubs across the galaxy." icon_state = "patronbottle" list_reagents = list(/datum/reagent/consumable/ethanol/patron = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/rum name = "Captain Pete's Cuban spiced rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" list_reagents = list(/datum/reagent/consumable/ethanol/rum = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/rum/aged name = "Captain Pete's Vintage spiced rum" desc = "Shiver me timbers, a vintage edition of Captain Pete's rum. It's pratically GRIFF in a bottle from over 50 years ago." icon_state = "rumbottle_gold" list_reagents = list(/datum/reagent/consumable/ethanol/rum/aged = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/maltliquor name = "\improper Rabid Bear malt liquor" @@ -400,6 +409,7 @@ icon_state = "maltliquorbottle" list_reagents = list(/datum/reagent/consumable/ethanol/beer/maltliquor = 100) custom_price = PAYCHECK_CREW + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/holywater name = "flask of holy water" @@ -409,7 +419,6 @@ inhand_icon_state = "holyflask" broken_inhand_icon_state = "broken_holyflask" list_reagents = list(/datum/reagent/water/holywater = 100) - drink_type = NONE /obj/item/reagent_containers/cup/glass/bottle/holywater/add_message_overlay() return //looks too weird... @@ -424,6 +433,7 @@ desc = "Sweet, sweet dryness~" icon_state = "vermouthbottle" list_reagents = list(/datum/reagent/consumable/ethanol/vermouth = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/kahlua name = "Robert Robust's coffee liqueur" @@ -437,12 +447,14 @@ desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" list_reagents = list(/datum/reagent/consumable/ethanol/goldschlager = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/cognac name = "Chateau de Baton premium cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" list_reagents = list(/datum/reagent/consumable/ethanol/cognac = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/wine name = "Doublebeard's bearded special wine" @@ -490,6 +502,7 @@ desc = "A strong alcoholic drink brewed and distributed by" icon_state = "absinthebottle" list_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/absinthe/Initialize(mapload) . = ..() @@ -539,6 +552,7 @@ name = "Gwyn's premium absinthe" desc = "A potent alcoholic beverage, almost makes you forget the ash in your lungs." icon_state = "absinthepremium" + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/absinthe/premium/redact() return @@ -556,24 +570,28 @@ icon_state = "hcider" volume = 50 list_reagents = list(/datum/reagent/consumable/ethanol/hcider = 50) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/amaretto name = "Luini Amaretto" desc = "A gentle, syrupy drink that tastes of almonds and apricots." icon_state = "disaronno" list_reagents = list(/datum/reagent/consumable/ethanol/amaretto = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/grappa name = "Phillipes well-aged Grappa" desc = "Bottle of Grappa." icon_state = "grappabottle" list_reagents = list(/datum/reagent/consumable/ethanol/grappa = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/sake name = "Ryo's traditional sake" desc = "Sweet as can be, and burns like fire going down." icon_state = "sakebottle" list_reagents = list(/datum/reagent/consumable/ethanol/sake = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/sake/Initialize(mapload) if(prob(10)) @@ -596,6 +614,7 @@ desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" icon_state = "fernetbottle" list_reagents = list(/datum/reagent/consumable/ethanol/fernet = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/bitters name = "Andromeda Bitters" @@ -603,12 +622,14 @@ icon_state = "bitters_bottle" volume = 30 list_reagents = list(/datum/reagent/consumable/ethanol/bitters = 30) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/curacao name = "Beekhof Blauw Curaçao" desc = "Still produced on the island of Curaçao, after all these years." icon_state = "curacao_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/curacao = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/curacao/add_message_overlay() return //doesn't fit the sprite @@ -618,6 +639,7 @@ desc = "Ironically named, given it's made in Bermuda." icon_state = "navy_rum_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/grenadine name = "Jester Grenadine" @@ -652,6 +674,7 @@ reagent_flags = TRANSPARENT spillable = FALSE list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100) + drink_type = ALCOHOL ///Used for sabrage; increases the chance of success per 1 force of the attacking sharp item var/sabrage_success_percentile = 5 ///Whether this bottle was a victim of a successful sabrage attempt @@ -805,6 +828,7 @@ desc = "You feel like you should give the bottle a good rub before opening." icon_state = "blazaambottle" list_reagents = list(/datum/reagent/consumable/ethanol/blazaam = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/trappist name = "Mont de Requin Trappistes Bleu" @@ -812,12 +836,14 @@ icon_state = "trappistbottle" volume = 50 list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/hooch name = "hooch bottle" desc = "A bottle of rotgut. Its owner has applied some street wisdom to cleverly disguise it as a brown paper bag." icon_state = "hoochbottle" list_reagents = list(/datum/reagent/consumable/ethanol/hooch = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/hooch/add_message_overlay() return //doesn't fit the sprite @@ -827,6 +853,7 @@ desc = "It is said that the ancient Applalacians used these stoneware jugs to capture lightning in a bottle." icon_state = "moonshinebottle" list_reagents = list(/datum/reagent/consumable/ethanol/moonshine = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/moonshine/add_message_overlay() return //doesn't fit the sprite @@ -838,6 +865,7 @@ volume = 30 list_reagents = list(/datum/reagent/consumable/ethanol/mushi_kombucha = 30) isGlass = FALSE + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/hakka_mate name = "Hakka-Mate" @@ -850,18 +878,21 @@ desc = "A boozier form of shochu designed for mixing. Comes straight from Mars' Dusty City itself, Shu-Kouba." icon_state = "shochu_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/shochu = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/yuyake name = "Moonlabor Yūyake" desc = "The distilled essence of disco and flared pants, captured like lightning in a bottle." icon_state = "yuyake_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/yuyake = 100) + drink_type = ALCOHOL /obj/item/reagent_containers/cup/glass/bottle/coconut_rum name = "Breezy Shoals Coconut Rum" desc = "Live the breezy life with Breezy Shoals, made with only the *finest Caribbean rum." icon_state = "coconut_rum_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 100) + drink_type = ALCOHOL ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/cup/glass/bottle/molotov diff --git a/code/modules/reagents/reagent_containers/cups/soda.dm b/code/modules/reagents/reagent_containers/cups/soda.dm index a23e9c323545b..c9380d2b9b9c1 100644 --- a/code/modules/reagents/reagent_containers/cups/soda.dm +++ b/code/modules/reagents/reagent_containers/cups/soda.dm @@ -76,17 +76,17 @@ return TRUE return ..() -/obj/item/reagent_containers/cup/soda_cans/bullet_act(obj/projectile/P) +/obj/item/reagent_containers/cup/soda_cans/bullet_act(obj/projectile/proj) . = ..() if(QDELETED(src)) return - if(P.damage > 0 && P.damage_type == BRUTE) - var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc) - crushed_can.icon_state = icon_state - var/atom/throw_target = get_edge_target_turf(crushed_can, pick(GLOB.alldirs)) - crushed_can.throw_at(throw_target, rand(1,2), 7) - qdel(src) + if(!proj.damage || proj.damage_type != BRUTE) return + var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(loc) + crushed_can.icon_state = icon_state + var/atom/throw_target = get_edge_target_turf(crushed_can, pick(GLOB.alldirs)) + crushed_can.throw_at(throw_target, rand(1,2), 7) + qdel(src) /obj/item/reagent_containers/cup/soda_cans/proc/open_soda(mob/user) if(prob(fizziness)) @@ -138,7 +138,7 @@ burst_soda(hit_atom, hide_message = TRUE) visible_message(span_danger("[src]'s impact with [hit_atom] causes it to rupture, spilling everywhere!")) - var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(src.loc) + var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(loc) crushed_can.icon_state = icon_state moveToNullspace() QDEL_IN(src, 1 SECONDS) // give it a second so it can still be logged for the throw impact diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 40e203dcb3456..29cfadd745b3e 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -11,20 +11,21 @@ self_delay = 30 // three seconds dissolvable = FALSE -/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user) - if(ishuman(L)) - var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected)) - if(!affecting) - to_chat(user, span_warning("The limb is missing!")) - return - if(!IS_ORGANIC_LIMB(affecting)) - to_chat(user, span_notice("Medicine won't work on an inorganic limb!")) - return - ..() - /obj/item/reagent_containers/pill/patch/canconsume(mob/eater, mob/user) if(!iscarbon(eater)) return FALSE + if(!ishuman(eater)) + return TRUE + var/mob/living/carbon/human/human_eater = eater + var/obj/item/bodypart/affecting = human_eater.get_bodypart(check_zone(user.zone_selected)) + if(!affecting) + to_chat(user, span_warning("The limb is missing!")) + return FALSE + + if(!IS_ORGANIC_LIMB(affecting)) + to_chat(user, span_notice("Medicine won't work on an inorganic limb!")) + return FALSE + return TRUE // Masks were stopping people from "eating" patches. Thanks, inheritance. /obj/item/reagent_containers/pill/patch/libital diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 629e0e96937db..f407a75030a65 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -25,27 +25,6 @@ if(apply_type == INGEST) AddComponent(/datum/component/germ_sensitive, mapload) -/obj/item/reagent_containers/pill/attack(mob/M, mob/user, def_zone) - if(!canconsume(M, user)) - return FALSE - - if(M == user) - M.visible_message(span_notice("[user] attempts to [apply_method] [src].")) - if(self_delay) - if(!do_after(user, self_delay, M)) - return FALSE - to_chat(M, span_notice("You [apply_method] [src].")) - - else - M.visible_message(span_danger("[user] attempts to force [M] to [apply_method] [src]."), \ - span_userdanger("[user] attempts to force you to [apply_method] [src].")) - if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), M)) - return FALSE - M.visible_message(span_danger("[user] forces [M] to [apply_method] [src]."), \ - span_userdanger("[user] forces you to [apply_method] [src].")) - - return on_consumption(M, user) - ///Runs the consumption code, can be overriden for special effects /obj/item/reagent_containers/pill/proc/on_consumption(mob/consumer, mob/giver) if(icon_state == "pill4" && prob(5)) //you take the red pill - you stay in Wonderland, and I show you how deep the rabbit hole goes @@ -56,15 +35,35 @@ if(reagents.total_volume) reagents.trans_to(consumer, reagents.total_volume, transferred_by = giver, methods = apply_type) qdel(src) - return TRUE - /obj/item/reagent_containers/pill/interact_with_atom(atom/target, mob/living/user, list/modifiers) + if (ismob(target)) + var/mob/target_mob = target + if(!canconsume(target_mob, user)) + return ITEM_INTERACT_BLOCKING + if(target_mob == user) + target_mob.visible_message(span_notice("[user] attempts to [apply_method] [src].")) + if(self_delay) + if(!do_after(user, self_delay, target_mob)) + return ITEM_INTERACT_BLOCKING + to_chat(target_mob, span_notice("You [apply_method] [src].")) + else + target_mob.visible_message(span_danger("[user] attempts to force [target_mob] to [apply_method] [src]."), \ + span_userdanger("[user] attempts to force you to [apply_method] [src].")) + if(!do_after(user, CHEM_INTERACT_DELAY(3 SECONDS, user), target_mob)) + return ITEM_INTERACT_BLOCKING + target_mob.visible_message(span_danger("[user] forces [target_mob] to [apply_method] [src]."), \ + span_userdanger("[user] forces you to [apply_method] [src].")) + on_consumption(target_mob, user) + return ITEM_INTERACT_SUCCESS + if(!dissolvable || !target.is_refillable()) return NONE + if(target.is_drainable() && !target.reagents.total_volume) to_chat(user, span_warning("[target] is empty! There's nothing to dissolve [src] in.")) return ITEM_INTERACT_BLOCKING + if(target.reagents.holder_full()) to_chat(user, span_warning("[target] is full.")) return ITEM_INTERACT_BLOCKING @@ -277,10 +276,9 @@ if(prob(30)) desc = pick(descs) -/obj/item/reagent_containers/pill/maintenance/achievement/on_consumption(mob/M, mob/user) +/obj/item/reagent_containers/pill/maintenance/achievement/on_consumption(mob/consumer, mob/user) . = ..() - - M.client?.give_award(/datum/award/score/maintenance_pill, M) + consumer.client?.give_award(/datum/award/score/maintenance_pill, consumer) /obj/item/reagent_containers/pill/potassiodide name = "potassium iodide pill" diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 17ce2fea149f4..04ff332a9ea31 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -402,6 +402,7 @@ spray_range = 2 spray_sound = 'sound/effects/snap.ogg' possible_transfer_amounts = list(5) + reagent_container_liquid_sound = null /obj/item/reagent_containers/spray/chemsprayer/party/spray(atom/A, mob/user) . = ..() diff --git a/code/modules/religion/burdened/psyker.dm b/code/modules/religion/burdened/psyker.dm index 77cfcdaac2494..b2e5724778c1b 100644 --- a/code/modules/religion/burdened/psyker.dm +++ b/code/modules/religion/burdened/psyker.dm @@ -63,8 +63,7 @@ if(!psykerize()) to_chat(src, span_warning("The transformation subsides...")) return - var/obj/item/bodypart/head/psyker_head = get_bodypart(BODY_ZONE_HEAD) - psyker_head.receive_damage(brute = 50) + apply_damage(50, BRUTE, BODY_ZONE_HEAD) to_chat(src, span_userdanger("Your head splits open! Your brain mutates!")) new /obj/effect/gibspawner/generic(drop_location(), src) emote("scream") diff --git a/code/modules/religion/honorbound/honorbound_trauma.dm b/code/modules/religion/honorbound/honorbound_trauma.dm index ed4ecde1592ba..6087a4b7951c8 100644 --- a/code/modules/religion/honorbound/honorbound_trauma.dm +++ b/code/modules/religion/honorbound/honorbound_trauma.dm @@ -135,7 +135,7 @@ var/datum/job/job = target_human.mind?.assigned_role var/is_holy = target_human.mind?.holy_role if(is_holy || (job?.departments_bitflags & DEPARTMENT_BITFLAG_SECURITY)) - to_chat(honorbound_human, span_warning("There is nothing righteous in attacking the just.")) + to_chat(honorbound_human, span_warning("The just and fair guards? If you truly think they are not innocent, declare them guilty.")) //DOPPLER EDIT CHANGE - ORIGINAL: to_chat(honorbound_human, span_warning("There is nothing righteous in attacking the just.")) return FALSE if(job?.departments_bitflags & DEPARTMENT_BITFLAG_MEDICAL && !is_guilty) to_chat(honorbound_human, span_warning("If you truly think this healer is not innocent, declare them guilty.")) @@ -274,10 +274,11 @@ return FALSE // cannot declare security as evil + /* //DOPPLER EDIT CHANGE START - Commented out. You can, but they're good on a normal basis. if(living_cast_on.mind.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_SECURITY) to_chat(owner, span_warning("Members of security are uncorruptable! You cannot declare one evil!")) return FALSE - + */ //DOPPLER EDIT CHANGE END return TRUE /datum/action/cooldown/spell/pointed/declare_evil/before_cast(mob/living/cast_on) diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm index cd0fabba84974..67526918167a7 100644 --- a/code/modules/religion/rites.dm +++ b/code/modules/religion/rites.dm @@ -20,9 +20,8 @@ LAZYADD(GLOB.religious_sect.active_rites, src) /datum/religion_rites/Destroy() - if(!GLOB?.religious_sect) - return - LAZYREMOVE(GLOB.religious_sect.active_rites, src) + if(GLOB?.religious_sect) + LAZYREMOVE(GLOB.religious_sect.active_rites, src) return ..() /datum/religion_rites/proc/can_afford(mob/living/user) diff --git a/code/modules/religion/sparring/sparring_datum.dm b/code/modules/religion/sparring/sparring_datum.dm index 8e01403e5a64c..fc128a401cc31 100644 --- a/code/modules/religion/sparring/sparring_datum.dm +++ b/code/modules/religion/sparring/sparring_datum.dm @@ -227,9 +227,9 @@ cleanup_sparring_match() if(chaplain) //flubing means we don't know who is still standing - to_chat(chaplain, span_boldannounce("The match was flub'd! No winners, no losers. You may restart the match with another contract.")) + to_chat(chaplain, span_bolddanger("The match was flub'd! No winners, no losers. You may restart the match with another contract.")) if(opponent) - to_chat(opponent, span_boldannounce("The match was flub'd! No winners, no losers.")) + to_chat(opponent, span_bolddanger("The match was flub'd! No winners, no losers.")) qdel(src) ///helper to remove all the effects after a match ends @@ -243,8 +243,8 @@ /datum/sparring_match/proc/end_match(mob/living/carbon/human/winner, mob/living/carbon/human/loser, violation_victory = FALSE) cleanup_sparring_match() - to_chat(chaplain, span_boldannounce("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!")) - to_chat(opponent, span_boldannounce("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!")) + to_chat(chaplain, span_bolddanger("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!")) + to_chat(opponent, span_bolddanger("[violation_victory ? "[loser] DISQUALIFIED!" : ""] [winner] HAS WON!")) win(winner, loser, violation_victory) lose(loser, winner) if(stakes_condition != STAKES_YOUR_SOUL) diff --git a/code/modules/research/designs/autolathe/security_designs.dm b/code/modules/research/designs/autolathe/security_designs.dm index b3bc0d8101d0a..7fbf06e122f09 100644 --- a/code/modules/research/designs/autolathe/security_designs.dm +++ b/code/modules/research/designs/autolathe/security_designs.dm @@ -179,7 +179,7 @@ id = "a357" build_type = AUTOLATHE materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2) - build_path = /obj/item/ammo_casing/a357 + build_path = /obj/item/ammo_casing/c357 category = list( RND_CATEGORY_HACKED, RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO, diff --git a/code/modules/research/designs/autolathe/service_designs.dm b/code/modules/research/designs/autolathe/service_designs.dm index 21fda49fc1bdc..38e36d269149d 100644 --- a/code/modules/research/designs/autolathe/service_designs.dm +++ b/code/modules/research/designs/autolathe/service_designs.dm @@ -562,6 +562,18 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE +/datum/design/aquarium_kit + name = "Aquarium Kit" + id = "aquarium_kit" + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/aquarium_kit + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE + /datum/design/ticket_machine name = "Ticket Machine Frame" id = "ticket_machine" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 15a5fed08eb08..74e00231035cf 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -1347,3 +1347,13 @@ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_CARGO + +/datum/design/board/mailsorter + name = "Mail Sorter" + desc = "The circuit board for a mail sorting unit." + id = "mailsorter" + build_path = /obj/item/circuitboard/machine/mailsorter + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 21deb54280cd3..2f43fe5813323 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -750,7 +750,7 @@ desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves." id = "mech_sleeper" build_type = MECHFAB - build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper + build_path = /obj/item/mecha_parts/mecha_equipment/sleeper/medical materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*5) construction_time = 10 SECONDS category = list( diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 14a36843e3297..c06eb40204e96 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -2798,3 +2798,14 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE +/datum/design/module/mister_janitor + name = "Cleaning Mister Module" + id = "mod_mister_janitor" + materials = list( + /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/titanium =HALF_SHEET_MATERIAL_AMOUNT * 1, + ) + build_path = /obj/item/mod/module/mister/cleaner + category = list( + RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE + ) diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 90b8acee031a9..56764318f1b85 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -1046,6 +1046,18 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE +/datum/design/bluespace_fish_tank + name = "Bluespace Fish Tank Kit" + desc = "The required components to upgrade the capacity of a fish tank." + id = "bluespace_fish_tank_kit" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3) + build_path = /obj/item/aquarium_upgrade/bluespace_tank + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE + // Coffeemaker Stuff /datum/design/coffeepot @@ -1121,3 +1133,21 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE + +/datum/design/perceptomatrix + name = "Perceptomatrix Helm" + id = "perceptomatrix" + desc = "This helm harnesses hallucinative energies to shield its owner from perceptual anomalies. It requires a Hallucination Anomaly Core in order to function." + build_type = PROTOLATHE | AWAY_LATHE + build_path = /obj/item/clothing/head/helmet/perceptomatrix + materials = list( + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.5, + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/uranium = SHEET_MATERIAL_AMOUNT, + ) + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index deb2256ff10f0..38edc5b5593a7 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -167,10 +167,12 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING -/datum/design/board/bioelec_gen +/datum/design/bioelec_gen name = "Aquarium Bioelectricity Kit" desc = "The required components to convert an aquarium into a bioelectricity generator." id = "bioelec_gen" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT) build_path = /obj/item/aquarium_upgrade/bioelec_gen category = list( RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING, diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index ebda0f1e3b464..872821e9827b0 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -3,7 +3,7 @@ ///////////////////////////////////////// /datum/design/c38/sec - id = "sec_38" + id = "c38_sec" build_type = PROTOLATHE | AWAY_LATHE category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO @@ -16,7 +16,11 @@ desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body. The implant's signal is incompatible with teleporters." id = "c38_trac" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT) + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) build_path = /obj/item/ammo_box/c38/trac category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO @@ -28,7 +32,10 @@ desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload." id = "c38_hotshot" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5) + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5, + ) build_path = /obj/item/ammo_box/c38/hotshot category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO @@ -40,7 +47,10 @@ desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload." id = "c38_iceblox" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5) + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5, + ) build_path = /obj/item/ammo_box/c38/iceblox category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO @@ -52,13 +62,125 @@ desc = "Designed to quickly reload revolvers. Rubber bullets are bouncy and less-than-lethal." id = "c38_rubber" build_type = PROTOLATHE | AWAY_LATHE - materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10) + materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10) build_path = /obj/item/ammo_box/c38/match/bouncy category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) departmental_flags = DEPARTMENT_BITFLAG_SECURITY +/datum/design/c38_true + name = "Speedloader (.38 True Strike) (Lethal)" + desc = "Designed to quickly reload revolvers. Bullets bounce towards new targets with surprising accuracy." + id = "c38_true_strike" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/ammo_box/magazine/m38/true + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/c38_mag + name = "Magazine (.38) (Lethal)" + desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Less powerful by design, guns chambered in .38 caliber rounds are still quite popular for use by police forces, \ + private security firms and organizations unable to access energy-based nonlethal weaponry. The lower (relative) penetrative power is useful for preventing potential hull damage \ + aboard space stations and shuttles." + id = "c38_mag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/ammo_box/magazine/m38 + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/c38_trac_mag + name = "Magazine (.38 TRAC) (Less Lethal)" + desc = "Designed to tactically reload a NT BR-38 Battle Rifle. TRAC bullets embed a tracking implant within the target's body. The implant's signal is incompatible with teleporters." + id = "c38_trac_mag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/ammo_box/magazine/m38/trac + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/c38_hotshot_mag + name = "Magazine (.38 Hot Shot) (Very Lethal)" + desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Hot Shot bullets contain an incendiary payload." + id = "c38_hotshot_mag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/ammo_box/magazine/m38/hotshot + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/c38_iceblox_mag + name = "Magazine (.38 Iceblox) (Lethal/Very Lethal (Lizardpeople))" + desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Iceblox bullets contain a cryogenic payload." + id = "c38_iceblox_mag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 2.5, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/ammo_box/magazine/m38/iceblox + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/c38_rubber_mag + name = "Magazine (.38 Rubber) (Less Lethal)" + desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Rubber bullets are bouncy and less-than-lethal." + id = "c38_rubber_mag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/ammo_box/magazine/m38/match/bouncy + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + +/datum/design/c38_true_mag + name = "Magazine (.38 Truee Strike) (Lethal)" + desc = "Designed to tactically reload a NT BR-38 Battle Rifle. Bullets bounce towards new targets with surprising accuracy." + id = "c38_true_strike_mag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30, + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/ammo_box/magazine/m38/true + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + /datum/design/rubbershot/sec id = "sec_rshot" desc = "Rubbershot shotgun shells. Fires a cloud of pellets. Rubber bullets are bouncy and less-than-lethal." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 998995436ad52..75ad0146fd4b9 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -363,7 +363,7 @@ visible_message(span_danger("[src] dangerously overheats, launching a flaming fuel orb!")) investigate_log("Experimentor has launched a fireball at [M]!", INVESTIGATE_EXPERIMENTOR) var/obj/projectile/magic/fireball/FB = new /obj/projectile/magic/fireball(start) - FB.preparePixelProjectile(MT, start) + FB.aim_projectile(MT, start) FB.fire() else if(prob(EFFECT_PROB_LOW * (100 - malfunction_probability_coeff) * 0.01)) visible_message(span_danger("[src] malfunctions, melting [exp_on] and releasing a burst of flame!")) @@ -828,7 +828,6 @@ var/datum/dimension_theme/shifter = SSmaterials.dimensional_themes[new_theme_path] for(var/turf/shiftee in range(1, user)) shifter.apply_theme(shiftee, show_effect = TRUE) - qdel(shifter) // prevent *total* spam conversion min_cooldown += 2 SECONDS max_cooldown += 2 SECONDS diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm index b6d3bd74d6979..79b8b27986c9f 100644 --- a/code/modules/research/techweb/_techweb_node.dm +++ b/code/modules/research/techweb/_techweb_node.dm @@ -34,7 +34,7 @@ var/category = "Misc" /// The list of experiments required to research the node var/list/required_experiments = list() - /// If completed, these experiments give a specific point amount discount to the node.area + /// If completed, these experiments give a specific point amount discount to the node. var/list/discount_experiments = list() /// When this node is completed, allows these experiments to be performed. var/list/experiments_to_unlock = list() diff --git a/code/modules/research/techweb/nodes/alien_nodes.dm b/code/modules/research/techweb/nodes/alien_nodes.dm index 331b91bae61ff..78fd3791e5cd5 100644 --- a/code/modules/research/techweb/nodes/alien_nodes.dm +++ b/code/modules/research/techweb/nodes/alien_nodes.dm @@ -1,3 +1,11 @@ +// Simple define to avoid copy-pasting the same code 3 times +#define ABDUCTOR_SUBTYPE_UNLOCKS(X) \ + ##X/New() { \ + . = ..(); \ + required_items_to_unlock += subtypesof(/obj/item/abductor); \ + required_items_to_unlock += subtypesof(/obj/item/circuitboard/machine/abductor); \ + } + /datum/techweb_node/alientech //AYYYYYYYYLMAOO tech id = TECHWEB_NODE_ALIENTECH display_name = "Alien Technology" @@ -5,9 +13,7 @@ prereq_ids = list(TECHWEB_NODE_BLUESPACE_TRAVEL) required_items_to_unlock = list( /obj/item/stack/sheet/mineral/abductor, - /obj/item/abductor, /obj/item/cautery/alien, - /obj/item/circuitboard/machine/abductor, /obj/item/circular_saw/alien, /obj/item/crowbar/abductor, /obj/item/gun/energy/alien, @@ -29,6 +35,8 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) hidden = TRUE +ABDUCTOR_SUBTYPE_UNLOCKS(/datum/techweb_node/alientech) + /datum/techweb_node/alientech/on_station_research() . = ..() SSshuttle.shuttle_purchase_requirements_met[SHUTTLE_UNLOCK_ALIENTECH] = TRUE @@ -47,8 +55,6 @@ "alien_wrench", ) required_items_to_unlock = list( - /obj/item/abductor, - /obj/item/circuitboard/machine/abductor, /obj/item/crowbar/abductor, /obj/item/gun/energy/shrink_ray, /obj/item/melee/baton/abductor, @@ -62,6 +68,8 @@ hidden = TRUE announce_channels = list(RADIO_CHANNEL_ENGINEERING) +ABDUCTOR_SUBTYPE_UNLOCKS(/datum/techweb_node/alien_engi) + /datum/techweb_node/alien_surgery id = TECHWEB_NODE_ALIEN_SURGERY display_name = "Alien Surgery" @@ -80,9 +88,7 @@ "surgery_zombie", ) required_items_to_unlock = list( - /obj/item/abductor, /obj/item/cautery/alien, - /obj/item/circuitboard/machine/abductor, /obj/item/circular_saw/alien, /obj/item/crowbar/abductor, /obj/item/gun/energy/alien, @@ -102,3 +108,7 @@ discount_experiments = list(/datum/experiment/scanning/points/slime/hard = TECHWEB_TIER_5_POINTS) hidden = TRUE announce_channels = list(RADIO_CHANNEL_MEDICAL) + +ABDUCTOR_SUBTYPE_UNLOCKS(/datum/techweb_node/alien_surgery) + +#undef ABDUCTOR_SUBTYPE_UNLOCKS diff --git a/code/modules/research/techweb/nodes/atmos_nodes.dm b/code/modules/research/techweb/nodes/atmos_nodes.dm index b0e2f1598d1e5..86992d5919611 100644 --- a/code/modules/research/techweb/nodes/atmos_nodes.dm +++ b/code/modules/research/techweb/nodes/atmos_nodes.dm @@ -65,7 +65,7 @@ "plasmacutter", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) - required_experiments = list(/datum/experiment/ordnance/gaseous/plasma) + discount_experiments = list(/datum/experiment/ordnance/gaseous/plasma = TECHWEB_TIER_2_POINTS) announce_channels = list(RADIO_CHANNEL_ENGINEERING) /datum/techweb_node/fusion diff --git a/code/modules/research/techweb/nodes/cyborg_nodes.dm b/code/modules/research/techweb/nodes/cyborg_nodes.dm index 13725f62a4335..173c47fcc8324 100644 --- a/code/modules/research/techweb/nodes/cyborg_nodes.dm +++ b/code/modules/research/techweb/nodes/cyborg_nodes.dm @@ -156,7 +156,6 @@ "implantcase", "implanter", "locator", - "c38_trac", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(RADIO_CHANNEL_SECURITY, RADIO_CHANNEL_MEDICAL) diff --git a/code/modules/research/techweb/nodes/engi_nodes.dm b/code/modules/research/techweb/nodes/engi_nodes.dm index 4ef55e21bc97a..75c9459771c26 100644 --- a/code/modules/research/techweb/nodes/engi_nodes.dm +++ b/code/modules/research/techweb/nodes/engi_nodes.dm @@ -155,6 +155,7 @@ "manulathe", "manusorter", "manurouter", + "mailsorter", ) /datum/techweb_node/energy_manipulation diff --git a/code/modules/research/techweb/nodes/mech_nodes.dm b/code/modules/research/techweb/nodes/mech_nodes.dm index 82d6484bf0225..bf520b2fc3d72 100644 --- a/code/modules/research/techweb/nodes/mech_nodes.dm +++ b/code/modules/research/techweb/nodes/mech_nodes.dm @@ -96,6 +96,7 @@ "clarke_right_arm", "clarke_main", "clarke_peri", + "mecha_kineticgun", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_SUPPLY) diff --git a/code/modules/research/techweb/nodes/mining_nodes.dm b/code/modules/research/techweb/nodes/mining_nodes.dm index 1bfa3a9284ad5..9c0ab9d879d1b 100644 --- a/code/modules/research/techweb/nodes/mining_nodes.dm +++ b/code/modules/research/techweb/nodes/mining_nodes.dm @@ -56,7 +56,6 @@ description = "Research of Proto-Kinetic Accelerators (PKAs), pneumatic guns renowned for their exceptional performance in low-pressure environments." prereq_ids = list(TECHWEB_NODE_MINING, TECHWEB_NODE_GAS_COMPRESSION) design_ids = list( - "mecha_kineticgun", "damagemod", "rangemod", "cooldownmod", diff --git a/code/modules/research/techweb/nodes/modsuit_nodes.dm b/code/modules/research/techweb/nodes/modsuit_nodes.dm index cc31a1fc1ef77..0ce6eb4b229ae 100644 --- a/code/modules/research/techweb/nodes/modsuit_nodes.dm +++ b/code/modules/research/techweb/nodes/modsuit_nodes.dm @@ -34,6 +34,7 @@ "mod_longfall", "mod_thermal_regulator", "mod_sign_radio", + "mod_mister_janitor", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) announce_channels = list(RADIO_CHANNEL_SCIENCE) diff --git a/code/modules/research/techweb/nodes/research_nodes.dm b/code/modules/research/techweb/nodes/research_nodes.dm index f05199ab65e68..3b58551ec9cb3 100644 --- a/code/modules/research/techweb/nodes/research_nodes.dm +++ b/code/modules/research/techweb/nodes/research_nodes.dm @@ -49,7 +49,7 @@ "gigabeacon", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) - required_experiments = list(/datum/experiment/scanning/points/bluespace_crystal) + discount_experiments = list(/datum/experiment/scanning/points/bluespace_crystal) announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL, RADIO_CHANNEL_SERVICE, RADIO_CHANNEL_SUPPLY) /datum/techweb_node/bluespace_travel @@ -94,7 +94,8 @@ "cybernetic_heart_anomalock", "wormholeprojector", "gravitygun", - "polymorph_belt" + "polymorph_belt", + "perceptomatrix", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) discount_experiments = list(/datum/experiment/scanning/points/anomalies = TECHWEB_TIER_5_POINTS) diff --git a/code/modules/research/techweb/nodes/security_nodes.dm b/code/modules/research/techweb/nodes/security_nodes.dm index 97d2036207c56..02679b4280ee4 100644 --- a/code/modules/research/techweb/nodes/security_nodes.dm +++ b/code/modules/research/techweb/nodes/security_nodes.dm @@ -7,7 +7,9 @@ "toy_armblade", "toygun", "c38_rubber", - "sec_38", + "c38_rubber_mag", + "c38_sec", + "c38_mag", "capbox", "foam_dart", "sec_beanbag_slug", @@ -80,7 +82,13 @@ prereq_ids = list(TECHWEB_NODE_EXPLOSIVES) design_ids = list( "c38_hotshot", + "c38_hotshot_mag", "c38_iceblox", + "c38_iceblox_mag", + "c38_trac", + "c38_trac_mag", + "c38_true_strike", + "c38_true_strike_mag", "techshotshell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) diff --git a/code/modules/research/techweb/nodes/service_nodes.dm b/code/modules/research/techweb/nodes/service_nodes.dm index a2f6b03007109..6786c2f9e1ec1 100644 --- a/code/modules/research/techweb/nodes/service_nodes.dm +++ b/code/modules/research/techweb/nodes/service_nodes.dm @@ -159,6 +159,7 @@ "fishing_portal_generator", "fishing_rod", "fish_case", + "aquarium_kit", ) /datum/techweb_node/fishing_equip_adv @@ -174,6 +175,7 @@ "auto_reel", "fish_analyzer", "bluespace_fish_case", + "bluespace_fish_tank_kit", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) required_experiments = list(/datum/experiment/scanning/fish) diff --git a/code/modules/research/xenobiology/crossbreeding/_potions.dm b/code/modules/research/xenobiology/crossbreeding/_potions.dm index c33868e079711..2f82396168e7a 100644 --- a/code/modules/research/xenobiology/crossbreeding/_potions.dm +++ b/code/modules/research/xenobiology/crossbreeding/_potions.dm @@ -9,7 +9,7 @@ Slimecrossing Potions name = "extract cloning potion" desc = "A more powerful version of the extract enhancer potion, capable of cloning regular slime extracts." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potpurple" + icon_state = "potgold" /obj/item/slimepotion/extract_cloner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) . = ..() @@ -102,7 +102,7 @@ Slimecrossing Potions name = "slime pressurization potion" desc = "A potent chemical sealant that will render any article of clothing airtight. Has two uses." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potblue" + icon_state = "potblack" var/uses = 2 /obj/item/slimepotion/spaceproof/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) @@ -125,7 +125,7 @@ Slimecrossing Potions to_chat(user, span_notice("You slather the blue gunk over the [clothing], making it airtight.")) clothing.name = "pressure-resistant [clothing.name]" clothing.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - clothing.add_atom_colour(COLOR_NAVY, FIXED_COLOUR_PRIORITY) + clothing.add_atom_colour(color_transition_filter(COLOR_NAVY, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY) clothing.min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT clothing.cold_protection = clothing.body_parts_covered clothing.clothing_flags |= STOPSPRESSUREDAMAGE @@ -139,14 +139,14 @@ Slimecrossing Potions name = "extract maximizer" desc = "An extremely potent chemical mix that will maximize a slime extract's uses." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potpurple" + icon_state = "potcerulean" //Lavaproofing potion - Charged Red /obj/item/slimepotion/lavaproof name = "slime lavaproofing potion" desc = "A strange, reddish goo said to repel lava as if it were water, without reducing flammability. Has two uses." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potred" + icon_state = "potyellow" resistance_flags = LAVA_PROOF | FIRE_PROOF var/uses = 2 @@ -165,7 +165,7 @@ Slimecrossing Potions to_chat(user, span_notice("You slather the red gunk over the [clothing], making it lavaproof.")) clothing.name = "lavaproof [clothing.name]" clothing.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - clothing.add_atom_colour(COLOR_MAROON, FIXED_COLOUR_PRIORITY) + clothing.add_atom_colour(color_transition_filter(COLOR_MAROON, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY) clothing.resistance_flags |= LAVA_PROOF if (isclothing(clothing)) var/obj/item/clothing/clothing_real = clothing @@ -181,7 +181,7 @@ Slimecrossing Potions name = "slime revival potion" desc = "Infused with plasma and compressed gel, this brings dead slimes back to life." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potsilver" + icon_state = "potgrey" /obj/item/slimepotion/slime_reviver/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) . = ..() diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index c3eb811fa4270..f114d3ad55da4 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -211,9 +211,6 @@ Burning extracts: effect_desc = "The user gets a dull arm blade in the hand it is used in." /obj/item/slimecross/burning/green/do_effect(mob/user) - var/which_hand = "l_hand" - if(!(user.active_hand_index % 2)) - which_hand = "r_hand" var/mob/living/L = user if(!istype(user)) return @@ -226,7 +223,7 @@ Burning extracts: else user.visible_message(span_danger("[src] sublimates the flesh around [user]'s arm, transforming the bone into a gruesome blade!")) user.emote("scream") - L.apply_damage(30,BURN,which_hand) + L.apply_damage(30, BURN, L.get_active_hand()) ..() /obj/item/slimecross/burning/pink diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index 0a22cd0380f5e..c1c599da345c2 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -252,9 +252,6 @@ Chilling extracts: effect_desc = "Creates a bone gun in the hand it is used in, which uses blood as ammo." /obj/item/slimecross/chilling/green/do_effect(mob/user) - var/which_hand = "l_hand" - if(!(user.active_hand_index % 2)) - which_hand = "r_hand" var/mob/living/L = user if(!istype(user)) return @@ -267,7 +264,7 @@ Chilling extracts: else user.visible_message(span_danger("[src] chills and snaps off the front of the bone on [user]'s arm, leaving behind a strange, gun-like structure!")) user.emote("scream") - L.apply_damage(30,BURN,which_hand) + L.apply_damage(30, BURN, L.get_active_hand()) ..() /obj/item/slimecross/chilling/pink diff --git a/code/modules/research/xenobiology/crossbreeding/prismatic.dm b/code/modules/research/xenobiology/crossbreeding/prismatic.dm index 947323b0e47f4..647711192afed 100644 --- a/code/modules/research/xenobiology/crossbreeding/prismatic.dm +++ b/code/modules/research/xenobiology/crossbreeding/prismatic.dm @@ -14,7 +14,7 @@ Prismatic extracts: if(!isturf(interacting_with) || isspaceturf(interacting_with)) return NONE user.do_attack_animation(interacting_with) - interacting_with.add_atom_colour(paintcolor, WASHABLE_COLOUR_PRIORITY) + interacting_with.add_atom_colour(color_transition_filter(paintcolor, SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY) playsound(interacting_with, 'sound/effects/slosh.ogg', 20, TRUE) return ITEM_INTERACT_SUCCESS diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index a2c5698fbb192..a0d9a1e89eff5 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -30,7 +30,7 @@ Regenerative extracts: span_notice("You squeeze [src], and it bursts in your hand, splashing you with milky goo which quickly regenerates your injuries!")) core_effect_before(H, user) user.do_attack_animation(interacting_with) - H.revive(HEAL_ALL) + H.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS) core_effect(H, user) playsound(H, 'sound/effects/splat.ogg', 40, TRUE) qdel(src) @@ -128,13 +128,13 @@ Regenerative extracts: if(fireproofed) target.visible_message(span_notice("Some of [target]'s clothing gets coated in the goo, and turns blue!")) -/obj/item/slimecross/regenerative/darkblue/proc/fireproof(obj/item/clothing/C) - C.name = "fireproofed [C.name]" - C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - C.add_atom_colour(COLOR_NAVY, FIXED_COLOUR_PRIORITY) - C.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - C.heat_protection = C.body_parts_covered - C.resistance_flags |= FIRE_PROOF +/obj/item/slimecross/regenerative/darkblue/proc/fireproof(obj/item/clothing/clothing_piece) + clothing_piece.name = "fireproofed [clothing_piece.name]" + clothing_piece.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) + clothing_piece.add_atom_colour(color_transition_filter(COLOR_NAVY, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY) + clothing_piece.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + clothing_piece.heat_protection = clothing_piece.body_parts_covered + clothing_piece.resistance_flags |= FIRE_PROOF /obj/item/slimecross/regenerative/silver colour = SLIME_TYPE_SILVER @@ -188,7 +188,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/pyrite/core_effect(mob/living/target, mob/user) target.visible_message(span_warning("The milky goo coating [target] leaves [target.p_them()] a different color!")) - target.add_atom_colour(rgb(rand(0,255),rand(0,255),rand(0,255)),WASHABLE_COLOUR_PRIORITY) + target.add_atom_colour(color_transition_filter(rgb(rand(0,255), rand(0,255), rand(0,255)), SATURATION_OVERRIDE), WASHABLE_COLOUR_PRIORITY) /obj/item/slimecross/regenerative/red colour = SLIME_TYPE_RED @@ -270,7 +270,7 @@ Regenerative extracts: if(target == user) return var/mob/living/U = user - U.revive(HEAL_ALL) + U.revive(HEAL_ALL & ~HEAL_REFRESH_ORGANS) to_chat(U, span_notice("Some of the milky goo sprays onto you, as well!")) /obj/item/slimecross/regenerative/adamantine diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index fc6d236f96a25..66cbd4b93de5b 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -1,22 +1,20 @@ //Xenobio control console -/mob/eye/ai_eye/remote/xenobio - visible_icon = TRUE - icon = 'icons/mob/eyemob.dmi' - icon_state = "generic_camera" +/mob/eye/camera/remote/xenobio + visible_to_user = TRUE var/allowed_area = null -/mob/eye/ai_eye/remote/xenobio/Initialize(mapload) +/mob/eye/camera/remote/xenobio/Initialize(mapload) var/area/our_area = get_area(loc) allowed_area = our_area.name . = ..() -/mob/eye/ai_eye/remote/xenobio/setLoc(turf/destination, force_update = FALSE) +/mob/eye/camera/remote/xenobio/setLoc(turf/destination, force_update = FALSE) var/area/new_area = get_area(destination) if(new_area && new_area.name == allowed_area || new_area && (new_area.area_flags & XENOBIOLOGY_COMPATIBLE)) return ..() -/mob/eye/ai_eye/remote/xenobio/can_z_move(direction, turf/start, turf/destination, z_move_flags = NONE, mob/living/rider) +/mob/eye/camera/remote/xenobio/can_z_move(direction, turf/start, turf/destination, z_move_flags = NONE, mob/living/rider) . = ..() if(!.) return @@ -84,11 +82,9 @@ stored_slimes -= gone /obj/machinery/computer/camera_advanced/xenobio/CreateEye() - eyeobj = new /mob/eye/ai_eye/remote/xenobio(get_turf(src)) - eyeobj.origin = src - eyeobj.visible_icon = TRUE - eyeobj.icon = 'icons/mob/eyemob.dmi' - eyeobj.icon_state = "generic_camera" + eyeobj = new /mob/eye/camera/remote/xenobio(get_turf(src), src) + + return TRUE /obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/user) . = ..() @@ -151,7 +147,7 @@ Boilerplate check for a valid area to perform a camera action in. Checks if the AI eye is on a valid turf and then checks if the target turf is xenobiology compatible Due to keyboard shortcuts, the second one is not necessarily the remote eye's location. */ -/obj/machinery/computer/camera_advanced/xenobio/proc/validate_area(mob/living/user, mob/eye/ai_eye/remote/xenobio/remote_eye, turf/open/target_turf) +/obj/machinery/computer/camera_advanced/xenobio/proc/validate_area(mob/living/user, mob/eye/camera/remote/xenobio/remote_eye, turf/open/target_turf) if(!GLOB.cameranet.checkTurfVis(remote_eye.loc)) to_chat(user, span_warning("Target is not near a camera. Cannot proceed.")) return FALSE @@ -228,7 +224,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!target || !isliving(owner)) return var/mob/living/owner_mob = owner - var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control + var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc)) @@ -245,7 +241,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!target || !isliving(owner)) return var/mob/living/owner_mob = owner - var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control + var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc)) @@ -264,7 +260,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!target || !isliving(owner)) return var/mob/living/living_owner = owner - var/mob/eye/ai_eye/remote/xenobio/remote_eye = living_owner.remote_control + var/mob/eye/camera/remote/xenobio/remote_eye = living_owner.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc)) @@ -282,7 +278,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!target || !isliving(owner)) return var/mob/living/owner_mob = owner - var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control + var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target var/obj/machinery/monkey_recycler/recycler = xeno_console.connected_recycler @@ -305,7 +301,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!target || !isliving(owner)) return var/mob/living/owner_mob = owner - var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control + var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc)) @@ -324,7 +320,7 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo return var/mob/living/owner_mob = owner - var/mob/eye/ai_eye/remote/xenobio/remote_eye = owner_mob.remote_control + var/mob/eye/camera/remote/xenobio/remote_eye = owner_mob.remote_control var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = target if(!xeno_console.validate_area(owner, remote_eye, remote_eye.loc)) @@ -375,8 +371,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!isslime(target_slime)) return - var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin + var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve() if(!xeno_console.validate_area(user, remote_eye, target_slime.loc)) return @@ -391,8 +387,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo /obj/machinery/computer/camera_advanced/xenobio/proc/XenoSlimeClickShift(mob/living/user, mob/living/basic/slime/target_slime) SIGNAL_HANDLER - var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin + var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve() if(!xeno_console.validate_area(user, remote_eye, target_slime.loc)) return @@ -404,8 +400,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo SIGNAL_HANDLER var/mob/living/user_mob = user - var/mob/eye/ai_eye/remote/xenobio/remote_eye = user_mob.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin + var/mob/eye/camera/remote/xenobio/remote_eye = user_mob.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve() if(!xeno_console.validate_area(user, remote_eye, target_turf)) return @@ -430,8 +426,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo return var/cleanup = FALSE - var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin + var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve() if(!xeno_console.validate_area(user, remote_eye, target_turf)) return @@ -449,8 +445,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!ismonkey(target_mob)) return - var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin + var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve() if(!xeno_console.connected_recycler) to_chat(user, span_warning("There is no connected monkey recycler. Use a multitool to link one.")) @@ -466,8 +462,8 @@ Due to keyboard shortcuts, the second one is not necessarily the remote eye's lo if(!isslime(target_slime)) return - var/mob/eye/ai_eye/remote/xenobio/remote_eye = user.remote_control - var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin + var/mob/eye/camera/remote/xenobio/remote_eye = user.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/xeno_console = remote_eye.origin_ref.resolve() if(!xeno_console.validate_area(user, remote_eye, target_slime.loc)) return diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 594163d153bcc..f63ee0f088076 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -896,7 +896,7 @@ name = "slime speed potion" desc = "A potent chemical mix that will remove the slowdown from any item." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potyellow" + icon_state = "potred" /obj/item/slimepotion/speed/interact_with_atom(obj/interacting_with, mob/living/user, list/modifiers) . = ..() @@ -921,7 +921,7 @@ to_chat(user, span_notice("You slather the red gunk over the [interacting_with], making it faster.")) interacting_with.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - interacting_with.add_atom_colour(COLOR_RED, FIXED_COLOUR_PRIORITY) + interacting_with.add_atom_colour(color_transition_filter(COLOR_RED, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY) interacting_with.drag_slowdown = 0 ADD_TRAIT(interacting_with, TRAIT_SPEED_POTIONED, SLIME_POTION_TRAIT) qdel(src) @@ -952,7 +952,7 @@ to_chat(user, span_notice("You slather the blue gunk over the [clothing], fireproofing it.")) clothing.name = "fireproofed [clothing.name]" clothing.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - clothing.add_atom_colour(COLOR_NAVY, FIXED_COLOUR_PRIORITY) + clothing.add_atom_colour(color_transition_filter(COLOR_NAVY, SATURATION_OVERRIDE), FIXED_COLOUR_PRIORITY) clothing.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT clothing.heat_protection = clothing.body_parts_covered clothing.resistance_flags |= FIRE_PROOF @@ -965,7 +965,7 @@ name = "gender change potion" desc = "An interesting chemical mix that changes the biological gender of what its applied to. Cannot be used on things that lack gender entirely." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potlightpink" + icon_state = "potrainbow" /obj/item/slimepotion/genderchange/attack(mob/living/L, mob/user) if(!istype(L) || L.stat == DEAD) @@ -989,7 +989,7 @@ name = "renaming potion" desc = "A potion that allows a self-aware being to change what name it subconciously presents to the world." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potgreen" + icon_state = "potbrown" var/being_used = FALSE @@ -1023,7 +1023,7 @@ name = "bluespace radio potion" desc = "A strange chemical that grants those who ingest it the ability to broadcast and receive subscape radio waves." icon = 'icons/obj/medical/chemical.dmi' - icon_state = "potgrey" + icon_state = "potbluespace" /obj/item/slimepotion/slime/slimeradio/attack(mob/living/radio_head, mob/user) if(!isanimal_or_basicmob(radio_head)) diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm deleted file mode 100644 index 735b0f641a91c..0000000000000 --- a/code/modules/shuttle/emergency.dm +++ /dev/null @@ -1,891 +0,0 @@ -#define TIME_LEFT (SSshuttle.emergency.timeLeft()) -#define ENGINES_START_TIME 100 -#define ENGINES_STARTED (SSshuttle.emergency.mode == SHUTTLE_IGNITING) -#define IS_DOCKED (SSshuttle.emergency.mode == SHUTTLE_DOCKED || (ENGINES_STARTED)) -#define SHUTTLE_CONSOLE_ACTION_DELAY (5 SECONDS) - -#define NOT_BEGUN 0 -#define STAGE_1 1 -#define STAGE_2 2 -#define STAGE_3 3 -#define STAGE_4 4 -#define HIJACKED 5 - -/obj/machinery/computer/emergency_shuttle - name = "emergency shuttle console" - desc = "For shuttle control." - icon_screen = "shuttle" - icon_keyboard = "tech_key" - resistance_flags = INDESTRUCTIBLE - var/auth_need = 3 - var/list/authorized = list() - var/list/acted_recently = list() - var/hijack_last_stage_increase = 0 SECONDS - var/hijack_stage_time = 5 SECONDS - var/hijack_stage_cooldown = 5 SECONDS - var/hijack_flight_time_increase = 30 SECONDS - var/hijack_completion_flight_time_set = 10 SECONDS //How long in deciseconds to set shuttle's timer after hijack is done. - var/hijack_hacking = FALSE - var/hijack_announce = TRUE - -/obj/machinery/computer/emergency_shuttle/examine(mob/user) - . = ..() - if(hijack_announce) - . += span_danger("Security systems present on console. Any unauthorized tampering will result in an emergency announcement.") - if(user?.mind?.get_hijack_speed()) - . += span_danger("Alt click on this to attempt to hijack the shuttle. This will take multiple tries (current: stage [SSshuttle.emergency.hijack_status]/[HIJACKED]).") - . += span_notice("It will take you [(hijack_stage_time * user.mind.get_hijack_speed()) / 10] seconds to reprogram a stage of the shuttle's navigational firmware, and the console will undergo automated timed lockout for [hijack_stage_cooldown/10] seconds after each stage.") - if(hijack_announce) - . += span_warning("It is probably best to fortify your position as to be uninterrupted during the attempt, given the automatic announcements..") - -/obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user,params) - if(isidcard(I)) - say("Please equip your ID card into your ID slot to authenticate.") - . = ..() - -/obj/machinery/computer/emergency_shuttle/ui_state(mob/user) - return GLOB.human_adjacent_state - -/obj/machinery/computer/emergency_shuttle/ui_interact(mob/user, datum/tgui/ui) - . = ..() - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "EmergencyShuttleConsole", name) - ui.open() - -/obj/machinery/computer/emergency_shuttle/ui_data(user) - var/list/data = list() - - data["timer_str"] = SSshuttle.emergency.getTimerStr() - data["engines_started"] = ENGINES_STARTED - data["authorizations_remaining"] = max((auth_need - authorized.len), 0) - var/list/A = list() - for(var/i in authorized) - var/obj/item/card/id/ID = i - var/name = ID.registered_name - var/job = ID.assignment - - if(obj_flags & EMAGGED) - name = Gibberish(name) - job = Gibberish(job) - A += list(list("name" = name, "job" = job)) - data["authorizations"] = A - - data["enabled"] = (IS_DOCKED && !ENGINES_STARTED) && !(user in acted_recently) - data["emagged"] = obj_flags & EMAGGED ? 1 : 0 - return data - -/obj/machinery/computer/emergency_shuttle/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return - if(ENGINES_STARTED) // past the point of no return - return - if(!IS_DOCKED) // shuttle computer only has uses when onstation - return - if(SSshuttle.emergency.mode == SHUTTLE_DISABLED) // admins have disabled the shuttle. - return - if(!isliving(usr)) - return - - var/area/my_area = get_area(src) - if(!istype(my_area, /area/shuttle/escape)) - say("Error - Network connectivity: Console has lost connection to the shuttle.") - return - - var/mob/living/user = usr - . = FALSE - - var/obj/item/card/id/ID = user.get_idcard(TRUE) - - if(!ID) - to_chat(user, span_warning("You don't have an ID.")) - return - - if(!(ACCESS_COMMAND in ID.access)) - to_chat(user, span_warning("The access level of your card is not high enough.")) - return - - if (user in acted_recently) - return - - var/old_len = authorized.len - addtimer(CALLBACK(src, PROC_REF(clear_recent_action), user), SHUTTLE_CONSOLE_ACTION_DELAY) - - switch(action) - if("authorize") - . = authorize(user) - - if("repeal") - authorized -= ID - - if("abort") - if(authorized.len) - // Abort. The action for when heads are fighting over whether - // to launch early. - authorized.Cut() - . = TRUE - - if((old_len != authorized.len) && !ENGINES_STARTED) - var/alert = (authorized.len > old_len) - var/repeal = (authorized.len < old_len) - var/remaining = max(0, auth_need - authorized.len) - if(authorized.len && remaining) - minor_announce("[remaining] authorizations needed until shuttle is launched early", null, alert) - if(repeal) - minor_announce("Early launch authorization revoked, [remaining] authorizations needed") - - acted_recently += user - SStgui.update_user_uis(user, src) - -/obj/machinery/computer/emergency_shuttle/proc/authorize(mob/living/user, source) - var/obj/item/card/id/ID = user.get_idcard(TRUE) - - if(ID in authorized) - return FALSE - for(var/i in authorized) - var/obj/item/card/id/other = i - if(other.registered_name == ID.registered_name) - return FALSE // No using IDs with the same name - - authorized += ID - - message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch") - log_shuttle("[key_name(user)] has authorized early shuttle launch in [COORD(src)]") - // Now check if we're on our way - . = TRUE - process(SSMACHINES_DT) - -/obj/machinery/computer/emergency_shuttle/proc/clear_recent_action(mob/user) - acted_recently -= user - if (!QDELETED(user)) - SStgui.update_user_uis(user, src) - -/obj/machinery/computer/emergency_shuttle/process() - // Launch check is in process in case auth_need changes for some reason - // probably external. - . = FALSE - if(!SSshuttle.emergency) - return - - if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) - authorized.Cut() - obj_flags &= ~(EMAGGED) - - if(ENGINES_STARTED || (!IS_DOCKED)) - return . - - // Check to see if we've reached criteria for early launch - if((authorized.len >= auth_need) || (obj_flags & EMAGGED)) - // shuttle timers use 1/10th seconds internally - SSshuttle.emergency.setTimer(ENGINES_START_TIME) - var/system_error = obj_flags & EMAGGED ? "SYSTEM ERROR:" : null - minor_announce("The emergency shuttle will launch in \ - [TIME_LEFT] seconds", system_error, alert=TRUE) - . = TRUE - -/obj/machinery/computer/emergency_shuttle/proc/increase_hijack_stage() - var/obj/docking_port/mobile/emergency/shuttle = SSshuttle.emergency - // Begin loading this early, prevents a delay when the shuttle goes to land - INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, lazy_load_template), LAZY_TEMPLATE_KEY_NUKIEBASE) - - shuttle.hijack_status++ - if(hijack_announce) - announce_hijack_stage() - hijack_last_stage_increase = world.time - say("Navigational protocol error! Rebooting systems.") - if(shuttle.mode == SHUTTLE_ESCAPE) - if(shuttle.hijack_status == HIJACKED) - shuttle.setTimer(hijack_completion_flight_time_set) - else - shuttle.setTimer(shuttle.timeLeft(1) + hijack_flight_time_increase) //give the guy more time to hijack if it's already in flight. - return shuttle.hijack_status - -/obj/machinery/computer/emergency_shuttle/click_alt(mob/living/user) - if(!isliving(user)) - return NONE - attempt_hijack_stage(user) - return CLICK_ACTION_SUCCESS - -/obj/machinery/computer/emergency_shuttle/proc/attempt_hijack_stage(mob/living/user) - if(!user.CanReach(src)) - return - if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - to_chat(user, span_warning("You need your hands free before you can manipulate [src].")) - return - var/area/my_area = get_area(src) - if(!istype(my_area, /area/shuttle/escape)) - say("Error - Network connectivity: Console has lost connection to the shuttle.") - return - if(!user?.mind?.get_hijack_speed()) - to_chat(user, span_warning("You manage to open a user-mode shell on [src], and hundreds of lines of debugging output fly through your vision. It is probably best to leave this alone.")) - return - if(!EMERGENCY_AT_LEAST_DOCKED) // prevent advancing hijack stages on BYOS shuttles until the shuttle has "docked" - to_chat(user, span_warning("The flight plans for the shuttle haven't been loaded yet, you can't hack this right now.")) - return - if(hijack_hacking == TRUE) - return - if(SSshuttle.emergency.hijack_status >= HIJACKED) - to_chat(user, span_warning("The emergency shuttle is already loaded with a corrupt navigational payload. What more do you want from it?")) - return - if(hijack_last_stage_increase >= world.time - hijack_stage_cooldown) - say("Error - Catastrophic software error detected. Input is currently on timeout.") - return - hijack_hacking = TRUE - to_chat(user, span_boldwarning("You [SSshuttle.emergency.hijack_status == NOT_BEGUN? "begin" : "continue"] to override [src]'s navigational protocols.")) - say("Software override initiated.") - var/turf/console_hijack_turf = get_turf(src) - message_admins("[src] is being overriden for hijack by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(console_hijack_turf)]") - user.log_message("is hijacking [src].", LOG_GAME) - . = FALSE - if(do_after(user, hijack_stage_time * (1 / user.mind.get_hijack_speed()), target = src)) - increase_hijack_stage() - console_hijack_turf = get_turf(src) - message_admins("[ADMIN_LOOKUPFLW(user)] has hijacked [src] in [ADMIN_VERBOSEJMP(console_hijack_turf)]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACKED].") - user.log_message("has hijacked [src]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACKED].", LOG_GAME) - . = TRUE - to_chat(user, span_notice("You reprogram some of [src]'s programming, putting it on timeout for [hijack_stage_cooldown/10] seconds.")) - visible_message( - span_warning("[user.name] appears to be tampering with [src]."), - blind_message = span_hear("You hear someone tapping computer keys."), - vision_distance = COMBAT_MESSAGE_RANGE, - ignored_mobs = user - ) - hijack_hacking = FALSE - -/obj/machinery/computer/emergency_shuttle/proc/announce_hijack_stage() - var/msg - switch(SSshuttle.emergency.hijack_status) - if(NOT_BEGUN) - return - if(STAGE_1) - msg = "AUTHENTICATING - FAIL. AUTHENTICATING - FAIL. AUTHENTICATING - FAI###### Welcome, technician JOHN DOE." - if(STAGE_2) - msg = "Warning: Navigational route fails \"IS_AUTHORIZED\". Please try againNN[scramble_message_replace_chars("againagainagainagainagain", 70)]." - if(STAGE_3) - msg = "CRC mismatch at ~h~ in calculated route buffer. Full reset initiated of FTL_NAVIGATION_SERVICES. Memory decrypted for automatic repair." - if(STAGE_4) - msg = "~ACS_directive module_load(cyberdyne.exploit.nanotrasen.shuttlenav)... NT key mismatch. Confirm load? Y...###Reboot complete. $SET transponder_state = 0; System link initiated with connected engines..." - if(HIJACKED) - msg = "SYSTEM OVERRIDE - Resetting course to \[[scramble_message_replace_chars("###########", 100)]\] \ - ([scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]) \ - {AUTH - ROOT (uid: 0)}.\ - [SSshuttle.emergency.mode == SHUTTLE_ESCAPE ? "Diverting from existing route - Bluespace exit in \ - [hijack_completion_flight_time_set >= INFINITY ? "[scramble_message_replace_chars("\[ERROR\]")]" : hijack_completion_flight_time_set/10] seconds." : ""]" - minor_announce(scramble_message_replace_chars(msg, replaceprob = 10), "Emergency Shuttle", TRUE) - -/obj/machinery/computer/emergency_shuttle/emag_act(mob/user, obj/item/card/emag/emag_card) - // How did you even get on the shuttle before it go to the station? - if(!IS_DOCKED) - return FALSE - - if((obj_flags & EMAGGED) || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS - balloon_alert(user, "shuttle already about to launch!") - return FALSE - - var/time = TIME_LEFT - if (user) - message_admins("[ADMIN_LOOKUPFLW(user)] has emagged the emergency shuttle [time] seconds before launch.") - log_shuttle("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.") - else - message_admins("The emergency shuttle was emagged [time] seconds before launch, with no emagger.") - log_shuttle("The emergency shuttle was emagged in [COORD(src)] [time] seconds before launch, with no emagger.") - - obj_flags |= EMAGGED - SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL - for(var/i in 1 to 10) - // the shuttle system doesn't know who these people are, but they - // must be important, surely - var/obj/item/card/id/ID = new(src) - var/datum/job/J = pick(SSjob.joinable_occupations) - ID.registered_name = generate_random_name_species_based(species_type = /datum/species/human) - ID.assignment = J.title - - authorized += ID - - process(SSMACHINES_DT) - return TRUE - -/obj/machinery/computer/emergency_shuttle/Destroy() - // Our fake IDs that the emag generated are just there for colour - // They're not supposed to be accessible - - for(var/obj/item/card/id/ID in src) - qdel(ID) - if(authorized?.len) - authorized.Cut() - authorized = null - - . = ..() - -/obj/docking_port/mobile/emergency - name = "emergency shuttle" - shuttle_id = "emergency" - dir = EAST - port_direction = WEST - var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself - var/hijack_status = NOT_BEGUN - -/obj/docking_port/mobile/emergency/Initialize(mapload) - . = ..() - - setup_shuttle_events() - -/obj/docking_port/mobile/emergency/canDock(obj/docking_port/stationary/S) - return SHUTTLE_CAN_DOCK //If the emergency shuttle can't move, the whole game breaks, so it will force itself to land even if it has to crush a few departments in the process - -/obj/docking_port/mobile/emergency/register() - . = ..() - SSshuttle.emergency = src - -/obj/docking_port/mobile/emergency/Destroy(force) - if(force) - // This'll make the shuttle subsystem use the backup shuttle. - if(src == SSshuttle.emergency) - // If we're the selected emergency shuttle - SSshuttle.emergencyDeregister() - - . = ..() - -/// DOPPLER EDIT ADDITION: add silent mode support -/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signal_origin, reason, red_alert, set_coefficient=null, silent=FALSE) - if(!isnum(set_coefficient)) - set_coefficient = SSsecurity_level.current_security_level.shuttle_call_time_mod - alert_coeff = set_coefficient - var/call_time = SSshuttle.emergency_call_time * alert_coeff * engine_coeff - switch(mode) - // The shuttle can not normally be called while "recalling", so - // if this proc is called, it's via admin fiat - if(SHUTTLE_RECALL, SHUTTLE_IDLE, SHUTTLE_CALL) - mode = SHUTTLE_CALL - setTimer(call_time) - else - return - - SSshuttle.emergencyCallAmount++ - - if(prob(70)) - SSshuttle.emergency_last_call_loc = signal_origin - else - SSshuttle.emergency_last_call_loc = null - - if(!silent) /// DOPPLER ADDITION BEGIN - priority_announce( - text = "The emergency shuttle has been called. [red_alert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [(timeLeft(60 SECONDS))] minutes.[reason][SSshuttle.emergency_last_call_loc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ][SSshuttle.admin_emergency_no_recall ? "\n\nWarning: Shuttle recall subroutines disabled; Recall not possible." : ""]", - title = "Emergency Shuttle Dispatched", - sound = ANNOUNCER_SHUTTLECALLED, - sender_override = "Emergency Shuttle Uplink Alert", - color_override = "orange", - ) - /// DOPPLER EDIT END - -/obj/docking_port/mobile/emergency/cancel(area/signalOrigin) - if(mode != SHUTTLE_CALL) - return - if(SSshuttle.emergency_no_recall) - return - - invertTimer() - mode = SHUTTLE_RECALL - - if(prob(70)) - SSshuttle.emergency_last_call_loc = signalOrigin - else - SSshuttle.emergency_last_call_loc = null - priority_announce( - text = "The emergency shuttle has been recalled.[SSshuttle.emergency_last_call_loc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", - title = "Emergency Shuttle Recalled", - sound = ANNOUNCER_SHUTTLERECALLED, - sender_override = "Emergency Shuttle Uplink Alert", - color_override = "orange", - ) - - SSticker.emergency_reason = null - -/** - * Proc that handles checking if the emergency shuttle was successfully hijacked via being the only people present on the shuttle for the elimination hijack or highlander objective - * - * Checks for all mobs on the shuttle, checks their status, and checks if they're - * borgs or simple animals. Depending on the args, certain mobs may be ignored, - * and the presence of other antags may or may not invalidate a hijack. - * Args: - * filter_by_human, default TRUE, tells the proc that only humans should block a hijack. Borgs and animals are ignored and will not block if this is TRUE. - * solo_hijack, default FALSE, tells the proc to fail with multiple hijackers, such as for Highlander mode. - */ -/obj/docking_port/mobile/emergency/proc/elimination_hijack(filter_by_human = TRUE, solo_hijack = FALSE) - var/has_people = FALSE - var/hijacker_count = 0 - for(var/mob/living/player in GLOB.player_list) - if(player.mind) - if(player.stat != DEAD) - if(issilicon(player) && filter_by_human) //Borgs are technically dead anyways - continue - if(isanimal_or_basicmob(player) && filter_by_human) //animals don't count - continue - if(isbrain(player)) //also technically dead - continue - if(shuttle_areas[get_area(player)]) - has_people = TRUE - var/location = get_area(player.mind.current) - //Non-antag present. Can't hijack. - if(!(player.mind.has_antag_datum(/datum/antagonist)) && !istype(location, /area/shuttle/escape/brig)) - return FALSE - //Antag present, doesn't stop but let's see if we actually want to hijack - var/prevent = FALSE - for(var/datum/antagonist/A in player.mind.antag_datums) - if(A.can_elimination_hijack == ELIMINATION_ENABLED) - hijacker_count += 1 - prevent = FALSE - break //If we have both prevent and hijacker antags assume we want to hijack. - else if(A.can_elimination_hijack == ELIMINATION_PREVENT) - prevent = TRUE - if(prevent) - return FALSE - - //has people AND either there's only one hijacker or there's any but solo_hijack is disabled - return has_people && ((hijacker_count == 1) || (hijacker_count && !solo_hijack)) - -/obj/docking_port/mobile/emergency/proc/is_hijacked() - return hijack_status == HIJACKED - -/obj/docking_port/mobile/emergency/proc/ShuttleDBStuff() - set waitfor = FALSE - if(!SSdbcore.Connect()) - return - var/datum/db_query/query_round_shuttle_name = SSdbcore.NewQuery({" - UPDATE [format_table_name("round")] SET shuttle_name = :name WHERE id = :round_id - "}, list("name" = name, "round_id" = GLOB.round_id)) - query_round_shuttle_name.Execute() - qdel(query_round_shuttle_name) - -/obj/docking_port/mobile/emergency/check() - if(!timer) - return - var/time_left = timeLeft(1) - - // The emergency shuttle doesn't work like others so this - // ripple check is slightly different - if(!ripples.len && (time_left <= SHUTTLE_RIPPLE_TIME) && ((mode == SHUTTLE_CALL) || (mode == SHUTTLE_ESCAPE))) - var/destination - if(mode == SHUTTLE_CALL) - destination = SSshuttle.getDock("emergency_home") - else if(mode == SHUTTLE_ESCAPE) - destination = SSshuttle.getDock("emergency_away") - create_ripples(destination) - - switch(mode) - if(SHUTTLE_RECALL) - if(time_left <= 0) - mode = SHUTTLE_IDLE - timer = 0 - if(SHUTTLE_CALL) - if(time_left <= 0) - //move emergency shuttle to station - if(initiate_docking(SSshuttle.getDock("emergency_home")) != DOCKING_SUCCESS) - setTimer(20) - return - mode = SHUTTLE_DOCKED - setTimer(SSshuttle.emergency_dock_time) - send2adminchat("Server", "The Emergency Shuttle has docked with the station.") - priority_announce( - text = "[SSshuttle.emergency] has docked with the station. You have [DisplayTimeText(SSshuttle.emergency_dock_time)] to board the emergency shuttle.", - title = "Emergency Shuttle Arrival", - sound = ANNOUNCER_SHUTTLEDOCK, - sender_override = "Emergency Shuttle Uplink Alert", - color_override = "orange", - ) - ShuttleDBStuff() - addtimer(CALLBACK(src, PROC_REF(announce_shuttle_events)), 20 SECONDS) - - - if(SHUTTLE_DOCKED) - if(time_left <= ENGINES_START_TIME) - mode = SHUTTLE_IGNITING - SSshuttle.checkHostileEnvironment() - if(mode == SHUTTLE_STRANDED) - return - for(var/A in SSshuttle.mobile_docking_ports) - var/obj/docking_port/mobile/M = A - if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to. - M.check_transit_zone() - - if(SHUTTLE_IGNITING) - var/success = TRUE - SSshuttle.checkHostileEnvironment() - if(mode == SHUTTLE_STRANDED) - return - - success &= (check_transit_zone() == TRANSIT_READY) - for(var/A in SSshuttle.mobile_docking_ports) - var/obj/docking_port/mobile/M = A - if(M.launch_status == UNLAUNCHED) - success &= (M.check_transit_zone() == TRANSIT_READY) - if(!success) - setTimer(ENGINES_START_TIME) - - if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch - sound_played = 1 //Only rev them up once. - var/list/areas = list() - for(var/area/shuttle/escape/E in GLOB.areas) - areas += E - hyperspace_sound(HYPERSPACE_WARMUP, areas) - - if(time_left <= 0 && !SSshuttle.emergency_no_escape) - //move each escape pod (or applicable spaceship) to its corresponding transit dock - for(var/A in SSshuttle.mobile_docking_ports) - var/obj/docking_port/mobile/M = A - M.on_emergency_launch() - - //now move the actual emergency shuttle to its transit dock - var/list/areas = list() - for(var/area/shuttle/escape/E in GLOB.areas) - areas += E - hyperspace_sound(HYPERSPACE_LAUNCH, areas) - enterTransit() - - //Tell the events we're starting, so they can time their spawns or do some other stuff - for(var/datum/shuttle_event/event as anything in event_list) - event.start_up_event(SSshuttle.emergency_escape_time * engine_coeff) - - mode = SHUTTLE_ESCAPE - launch_status = ENDGAME_LAUNCHED - setTimer(SSshuttle.emergency_escape_time * engine_coeff) - priority_announce( - text = "The emergency shuttle has left the station. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].", - title = "Emergency Shuttle Departure", - sender_override = "Emergency Shuttle Uplink Alert", - color_override = "orange", - ) - INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts)) - INVOKE_ASYNC(SSvote, TYPE_PROC_REF(/datum/controller/subsystem/vote, initiate_vote), /datum/vote/map_vote, vote_initiator_name = "Map Rotation", forced = TRUE) - - if(!is_reserved_level(z)) - CRASH("Emergency shuttle did not move to transit z-level!") - - if(SHUTTLE_STRANDED, SHUTTLE_DISABLED) - SSshuttle.checkHostileEnvironment() - - - if(SHUTTLE_ESCAPE) - if(sound_played && time_left <= HYPERSPACE_END_TIME) - var/list/areas = list() - for(var/area/shuttle/escape/E in GLOB.areas) - areas += E - hyperspace_sound(HYPERSPACE_END, areas) - if(time_left <= PARALLAX_LOOP_TIME) - var/area_parallax = FALSE - for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place - if(shuttle_area.parallax_movedir) - area_parallax = TRUE - break - if(area_parallax) - parallax_slowdown() - for(var/A in SSshuttle.mobile_docking_ports) - var/obj/docking_port/mobile/M = A - if(M.launch_status == ENDGAME_LAUNCHED) - if(istype(M, /obj/docking_port/mobile/pod)) - M.parallax_slowdown() - - process_events() - - if(time_left <= 0) - //move each escape pod to its corresponding escape dock - for(var/obj/docking_port/mobile/port as anything in SSshuttle.mobile_docking_ports) - port.on_emergency_dock() - - // now move the actual emergency shuttle to centcom - // unless the shuttle is "hijacked" - var/destination_dock = "emergency_away" - if(is_hijacked() || elimination_hijack()) - // just double check - SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_NUKIEBASE) - destination_dock = "emergency_syndicate" - minor_announce("Corruption detected in \ - shuttle navigation protocols. Please contact your \ - supervisor.", "SYSTEM ERROR:", sound_override = 'sound/announcer/announcement/announce_syndi.ogg') - - dock_id(destination_dock) - mode = SHUTTLE_ENDGAME - timer = 0 - -/obj/docking_port/mobile/emergency/transit_failure() - ..() - message_admins("Moving emergency shuttle directly to centcom dock to prevent deadlock.") - - mode = SHUTTLE_ESCAPE - launch_status = ENDGAME_LAUNCHED - setTimer(SSshuttle.emergency_escape_time) - priority_announce( - text = "The emergency shuttle is preparing for direct jump. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].", - title = "Emergency Shuttle Transit Failure", - sender_override = "Emergency Shuttle Uplink Alert", - color_override = "orange", - ) - -///Generate a list of events to run during the departure -/obj/docking_port/mobile/emergency/proc/setup_shuttle_events() - var/list/names = list() - for(var/datum/shuttle_event/event as anything in subtypesof(/datum/shuttle_event)) - if(prob(initial(event.event_probability))) - add_shuttle_event(event) - names += initial(event.name) - if(LAZYLEN(names)) - log_game("[capitalize(name)] has selected the following shuttle events: [english_list(names)].") - -/obj/docking_port/mobile/monastery - name = "monastery pod" - shuttle_id = "mining_common" //set so mining can call it down - launch_status = UNLAUNCHED //required for it to launch as a pod. - -/obj/docking_port/mobile/monastery/on_emergency_dock() - if(launch_status == ENDGAME_LAUNCHED) - initiate_docking(SSshuttle.getDock("pod_away")) //docks our shuttle as any pod would - mode = SHUTTLE_ENDGAME - -/obj/docking_port/mobile/pod - name = "escape pod" - shuttle_id = "pod" - launch_status = UNLAUNCHED - -/obj/docking_port/mobile/pod/request(obj/docking_port/stationary/S) - var/obj/machinery/computer/shuttle/connected_computer = get_control_console() - if(!istype(connected_computer, /obj/machinery/computer/shuttle/pod)) - return FALSE - if(!(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) && !(connected_computer.obj_flags & EMAGGED)) - to_chat(usr, span_warning("Escape pods will only launch during \"Code Red\" security alert.")) - return FALSE - if(launch_status == UNLAUNCHED) - launch_status = EARLY_LAUNCHED - return ..() - -/obj/docking_port/mobile/pod/cancel() - return - -/obj/machinery/computer/shuttle/pod - name = "pod control computer" - locked = TRUE - possible_destinations = "pod_asteroid" - icon = 'icons/obj/machines/wallmounts.dmi' - icon_state = "pod_off" - circuit = /obj/item/circuitboard/computer/emergency_pod - light_color = LIGHT_COLOR_BLUE - density = FALSE - icon_keyboard = null - icon_screen = "pod_on" - -/obj/machinery/computer/shuttle/pod/Initialize(mapload) - . = ..() - RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, PROC_REF(check_lock)) - -/obj/machinery/computer/shuttle/pod/emag_act(mob/user, obj/item/card/emag/emag_card) - if(obj_flags & EMAGGED) - return FALSE - obj_flags |= EMAGGED - locked = FALSE - balloon_alert(user, "alert level checking disabled") - icon_screen = "emagged_general" - update_appearance() - return TRUE - -/obj/machinery/computer/shuttle/pod/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) - . = ..() - if(port) - //Checks if the computer has already added the shuttle destination with the initial id - //This has to be done because connect_to_shuttle is called again after its ID is updated - //due to conflicting id names - var/base_shuttle_destination = ";[initial(port.shuttle_id)]_lavaland" - var/shuttle_destination = ";[port.shuttle_id]_lavaland" - - var/position = findtext(possible_destinations, base_shuttle_destination) - if(position) - if(base_shuttle_destination == shuttle_destination) - return - possible_destinations = splicetext(possible_destinations, position, position + length(base_shuttle_destination), shuttle_destination) - return - - possible_destinations += shuttle_destination - -/** - * Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level - * - * Arguments: - * * source The datum source of the signal - * * new_level The new security level that is in effect - */ -/obj/machinery/computer/shuttle/pod/proc/check_lock(datum/source, new_level) - SIGNAL_HANDLER - - if(obj_flags & EMAGGED) - return - locked = (new_level < SEC_LEVEL_RED) - -/obj/docking_port/stationary/random - name = "escape pod" - shuttle_id = "pod" - hidden = TRUE - override_can_dock_checks = TRUE - /// The area the pod tries to land at - var/target_area = /area/lavaland/surface/outdoors - /// Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced" - var/edge_distance = 16 - -/obj/docking_port/stationary/random/Initialize(mapload) - . = ..() - if(!mapload) - return - - var/list/turfs = get_area_turfs(target_area) - var/original_len = turfs.len - while(turfs.len) - var/turf/picked_turf = pick(turfs) - if(picked_turf.x stationary_dock.dwidth) + return SHUTTLE_DWIDTH_TOO_LARGE + + if(width-dwidth > stationary_dock.width-stationary_dock.dwidth) + return SHUTTLE_WIDTH_TOO_LARGE + + if(dheight > stationary_dock.dheight) + return SHUTTLE_DHEIGHT_TOO_LARGE + + if(height-dheight > stationary_dock.height-stationary_dock.dheight) + return SHUTTLE_HEIGHT_TOO_LARGE + + //check the dock isn't occupied + var/currently_docked = stationary_dock.get_docked() + if(currently_docked) + // by someone other than us + if(currently_docked != src) + return SHUTTLE_SOMEONE_ELSE_DOCKED + else + // This isn't an error, per se, but we can't let the shuttle code + // attempt to move us where we currently are, it will get weird. + return SHUTTLE_ALREADY_DOCKED + + return SHUTTLE_CAN_DOCK + +/obj/docking_port/mobile/proc/check_dock(obj/docking_port/stationary/S, silent = FALSE) + var/status = canDock(S) + if(status == SHUTTLE_CAN_DOCK) + return TRUE + else + if(status != SHUTTLE_ALREADY_DOCKED && !silent) // SHUTTLE_ALREADY_DOCKED is no cause for error + message_admins("Shuttle [src] cannot dock at [S], error: [status]") + // We're already docked there, don't need to do anything. + // Triggering shuttle movement code in place is weird + return FALSE + +/obj/docking_port/mobile/proc/transit_failure() + message_admins("Shuttle [src] repeatedly failed to create transit zone.") + +/** + * Calls the shuttle to the destination port, respecting its ignition and call timers + * + * Arguments: + * * destination_port - Stationary docking port to move the shuttle to + */ +/obj/docking_port/mobile/proc/request(obj/docking_port/stationary/destination_port) + if(!check_dock(destination_port)) + testing("check_dock failed on request for [src]") + return + + if(mode == SHUTTLE_IGNITING && destination == destination_port) + return + + switch(mode) + if(SHUTTLE_CALL) + if(destination_port == destination) + if(timeLeft(1) < callTime * engine_coeff) + setTimer(callTime * engine_coeff) + else + destination = destination_port + setTimer(callTime * engine_coeff) + if(SHUTTLE_RECALL) + if(destination_port == destination) + setTimer(callTime * engine_coeff - timeLeft(1)) + else + destination = destination_port + setTimer(callTime * engine_coeff) + mode = SHUTTLE_CALL + if(SHUTTLE_IDLE, SHUTTLE_IGNITING) + destination = destination_port + mode = SHUTTLE_IGNITING + setTimer(ignitionTime) + +//recall the shuttle to where it was previously +/obj/docking_port/mobile/proc/cancel() + if(mode != SHUTTLE_CALL) + return + + remove_ripples() + + invertTimer() + mode = SHUTTLE_RECALL + +/obj/docking_port/mobile/proc/enterTransit() + if((SSshuttle.lockdown && is_station_level(z)) || !canMove()) //emp went off, no escape + mode = SHUTTLE_IDLE + return + previous = null + if(!destination) + // sent to transit with no destination -> unlimited timer + timer = INFINITY + var/obj/docking_port/stationary/S0 = get_docked() + var/obj/docking_port/stationary/S1 = assigned_transit + if(S1) + if(initiate_docking(S1) != DOCKING_SUCCESS) + WARNING("shuttle \"[shuttle_id]\" could not enter transit space. Docked at [S0 ? S0.shuttle_id : "null"]. Transit dock [S1 ? S1.shuttle_id : "null"].") + else if(S0) + if(S0.delete_after) + qdel(S0, TRUE) + else + previous = S0 + else + WARNING("shuttle \"[shuttle_id]\" could not enter transit space. S0=[S0 ? S0.shuttle_id : "null"] S1=[S1 ? S1.shuttle_id : "null"]") + + +/obj/docking_port/mobile/proc/jumpToNullSpace() + // Destroys the docking port and the shuttle contents. + // Not in a fancy way, it just ceases. + var/obj/docking_port/stationary/current_dock = get_docked() + + 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?.area_type) + underlying_area_type = current_dock.area_type + + var/list/old_turfs = return_ordered_turfs(x, y, z, dir) + + var/area/underlying_area = GLOB.areas_by_type[underlying_area_type] + if(!underlying_area) + underlying_area = new underlying_area_type(null) + + for(var/i in 1 to old_turfs.len) + var/turf/oldT = old_turfs[i] + if(!oldT || !istype(oldT.loc, area_type)) + continue + oldT.change_area(oldT.loc, underlying_area) + oldT.empty(FALSE) + + // Here we locate the bottommost shuttle boundary and remove all turfs above it + var/shuttle_tile_depth = oldT.depth_to_find_baseturf(/turf/baseturf_skipover/shuttle) + if (!isnull(shuttle_tile_depth)) + oldT.ScrapeAway(shuttle_tile_depth) + + qdel(src, force=TRUE) + +/** + * Ghosts and marks as escaped (for greentext purposes) all mobs, then deletes the shuttle. + * Used by the Shuttle Manipulator + */ +/obj/docking_port/mobile/proc/intoTheSunset() + // Loop over mobs + for(var/turf/turfs as anything in return_turfs()) + for(var/mob/living/sunset_mobs in turfs.get_all_contents()) + // If they have a mind and they're not in the brig, they escaped + if(sunset_mobs.mind && !istype(get_area(sunset_mobs), /area/shuttle/escape/brig)) + sunset_mobs.mind.force_escaped = TRUE + // Ghostize them and put them in nullspace stasis (for stat & possession checks) + ADD_TRAIT(sunset_mobs, TRAIT_NO_TRANSFORM, REF(src)) + sunset_mobs.ghostize(FALSE) + sunset_mobs.moveToNullspace() + + // Now that mobs are stowed, delete the shuttle + jumpToNullSpace() + +/obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time) + var/list/turfs = ripple_area(S1) + for(var/t in turfs) + ripples += new /obj/effect/abstract/ripple(t, animate_time) + +/obj/docking_port/mobile/proc/remove_ripples() + QDEL_LIST(ripples) + +/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1) + var/list/L0 = return_ordered_turfs(x, y, z, dir) + var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir) + + var/list/ripple_turfs = list() + var/stop = min(L0.len, L1.len) + for(var/i in 1 to stop) + var/turf/T0 = L0[i] + var/turf/T1 = L1[i] + if(!istype(T0.loc, area_type) || istype(T0.loc, /area/shuttle/transit)) + continue // not part of the shuttle + ripple_turfs += T1 + + return ripple_turfs + +/obj/docking_port/mobile/proc/check_poddoors() + for(var/obj/machinery/door/poddoor/shuttledock/pod as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/poddoor/shuttledock)) + pod.check() + +/obj/docking_port/mobile/proc/dock_id(id) + var/port = SSshuttle.getDock(id) + if(port) + . = initiate_docking(port) + else + . = null + +//used by shuttle subsystem to check timers +/obj/docking_port/mobile/proc/check() + check_effects() + //process_events() if you were to add events to non-escape shuttles, uncomment this + + if(mode == SHUTTLE_IGNITING) + check_transit_zone() + + if(timeLeft(1) > 0) + return + // If we can't dock or we don't have a transit slot, wait for 20 ds, + // then try again + switch(mode) + if(SHUTTLE_CALL, SHUTTLE_PREARRIVAL) + if(prearrivalTime && mode != SHUTTLE_PREARRIVAL) + mode = SHUTTLE_PREARRIVAL + setTimer(prearrivalTime) + return + var/error = initiate_docking(destination, preferred_direction) + if(error && error & (DOCKING_NULL_DESTINATION | DOCKING_NULL_SOURCE)) + var/msg = "A mobile dock in transit exited initiate_docking() with an error. This is most likely a mapping problem: Error: [error], ([src]) ([previous][ADMIN_JMP(previous)] -> [destination][ADMIN_JMP(destination)])" + WARNING(msg) + message_admins(msg) + mode = SHUTTLE_IDLE + return + else if(error) + setTimer(20) + return + if(rechargeTime) + mode = SHUTTLE_RECHARGING + setTimer(rechargeTime) + return + if(SHUTTLE_RECALL) + if(initiate_docking(previous) != DOCKING_SUCCESS) + setTimer(20) + return + if(SHUTTLE_IGNITING) + if(check_transit_zone() != TRANSIT_READY) + setTimer(20) + return + else + mode = SHUTTLE_CALL + setTimer(callTime * engine_coeff) + enterTransit() + return + + mode = SHUTTLE_IDLE + timer = 0 + destination = null + +/obj/docking_port/mobile/proc/check_effects() + if(!ripples.len) + if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL)) + var/tl = timeLeft(1) + if(tl <= SHUTTLE_RIPPLE_TIME) + create_ripples(destination, tl) + + var/obj/docking_port/stationary/S0 = get_docked() + if(istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME) + for(var/place in shuttle_areas) + var/area/shuttle/shuttle_area = place + if(shuttle_area.parallax_movedir) + parallax_slowdown() + +/obj/docking_port/mobile/proc/parallax_slowdown() + for(var/place in shuttle_areas) + var/area/shuttle/shuttle_area = place + shuttle_area.parallax_movedir = FALSE + if(assigned_transit?.assigned_area) + assigned_transit.assigned_area.parallax_movedir = FALSE + var/list/L0 = return_ordered_turfs(x, y, z, dir) + for (var/thing in L0) + var/turf/T = thing + if(!T || !istype(T.loc, area_type)) + continue + for (var/atom/movable/movable as anything in T) + if (movable.client_mobs_in_contents) + movable.update_parallax_contents() + +/obj/docking_port/mobile/proc/check_transit_zone() + if(assigned_transit) + return TRANSIT_READY + else + SSshuttle.request_transit_dock(src) + +/obj/docking_port/mobile/proc/setTimer(wait) + timer = world.time + wait + last_timer_length = wait + +/obj/docking_port/mobile/proc/modTimer(multiple) + var/time_remaining = timer - world.time + if(time_remaining < 0 || !last_timer_length) + return + time_remaining *= multiple + last_timer_length *= multiple + setTimer(time_remaining) + +/obj/docking_port/mobile/proc/alert_coeff_change(new_coeff) + if(isnull(new_coeff)) + return + + var/time_multiplier = new_coeff / alert_coeff + var/time_remaining = timer - world.time + if(time_remaining < 0 || !last_timer_length) + return + + time_remaining *= time_multiplier + last_timer_length *= time_multiplier + alert_coeff = new_coeff + setTimer(time_remaining) + +/obj/docking_port/mobile/proc/invertTimer() + if(!last_timer_length) + return + var/time_remaining = timer - world.time + if(time_remaining > 0) + var/time_passed = last_timer_length - time_remaining + setTimer(time_passed) + +//returns timeLeft +/obj/docking_port/mobile/proc/timeLeft(divisor) + if(divisor <= 0) + divisor = 10 + + var/ds_remaining + if(!timer) + ds_remaining = callTime * engine_coeff + else + ds_remaining = max(0, timer - world.time) + + . = round(ds_remaining / divisor, 1) + +// returns 3-letter mode string, used by status screens and mob status panel +/obj/docking_port/mobile/proc/getModeStr() + switch(mode) + if(SHUTTLE_IGNITING) + return "IGN" + if(SHUTTLE_RECALL) + return "RCL" + if(SHUTTLE_CALL) + return "ETA" + if(SHUTTLE_DOCKED) + return "ETD" + if(SHUTTLE_ESCAPE) + return "ESC" + if(SHUTTLE_STRANDED) + return "ERR" + if(SHUTTLE_RECHARGING) + return "RCH" + if(SHUTTLE_PREARRIVAL) + return "LDN" + if(SHUTTLE_DISABLED) + return "DIS" + return "" + +// returns 5-letter timer string, used by status screens and mob status panel +/obj/docking_port/mobile/proc/getTimerStr() + if(mode == SHUTTLE_STRANDED || mode == SHUTTLE_DISABLED) + return "--:--" + + var/timeleft = timeLeft() + if(timeleft > 1 HOURS) + return "--:--" + else if(timeleft > 0) + return "[add_leading(num2text((timeleft / 60) % 60), 2, "0")]:[add_leading(num2text(timeleft % 60), 2, "0")]" + else + return "00:00" + +/** + * Gets shuttle location status in a form of string for tgui interfaces + */ +/obj/docking_port/mobile/proc/get_status_text_tgui() + var/obj/docking_port/stationary/dockedAt = get_docked() + var/docked_at = dockedAt?.name || "Unknown" + if(!istype(dockedAt, /obj/docking_port/stationary/transit)) + return docked_at + if(timeLeft() > 1 HOURS) + return "Hyperspace" + else + var/obj/docking_port/stationary/dst = (mode == SHUTTLE_RECALL) ? previous : destination + return "In transit to [dst?.name || "unknown location"]" + +/obj/docking_port/mobile/proc/getStatusText() + var/obj/docking_port/stationary/dockedAt = get_docked() + var/docked_at = dockedAt?.name || "unknown" + if(istype(dockedAt, /obj/docking_port/stationary/transit)) + if (timeLeft() > 1 HOURS) + return "hyperspace" + else + var/obj/docking_port/stationary/dst + if(mode == SHUTTLE_RECALL) + dst = previous + else + dst = destination + . = "transit towards [dst?.name || "unknown location"] ([getTimerStr()])" + else if(mode == SHUTTLE_RECHARGING) + return "[docked_at], recharging [getTimerStr()]" + else + return docked_at + +/obj/docking_port/mobile/proc/getDbgStatusText() + var/obj/docking_port/stationary/dockedAt = get_docked() + . = (dockedAt?.name) ? dockedAt.name : "unknown" + if(istype(dockedAt, /obj/docking_port/stationary/transit)) + var/obj/docking_port/stationary/dst + if(mode == SHUTTLE_RECALL) + dst = previous + else + dst = destination + if(dst) + . = "(transit to) [dst.name || dst.shuttle_id]" + else + . = "(transit to) nowhere" + else if(dockedAt) + . = dockedAt.name || dockedAt.shuttle_id + else + . = "unknown" + + +// attempts to locate /obj/machinery/computer/shuttle with matching ID inside the shuttle +/obj/docking_port/mobile/proc/get_control_console() + for(var/area/shuttle/shuttle_area as anything in shuttle_areas) + var/obj/machinery/computer/shuttle/shuttle_computer = locate(/obj/machinery/computer/shuttle) in shuttle_area + if(!shuttle_computer) + continue + if(shuttle_computer.shuttleId == shuttle_id) + return shuttle_computer + return null + +/obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas) + var/selected_sound + switch(phase) + if(HYPERSPACE_WARMUP) + selected_sound = "hyperspace_begin" + if(HYPERSPACE_LAUNCH) + selected_sound = "hyperspace_progress" + if(HYPERSPACE_END) + selected_sound = "hyperspace_end" + else + CRASH("Invalid hyperspace sound phase: [phase]") + // This previously was played from each door at max volume, and was one of the worst things I had ever seen. + // Now it's instead played from the nearest engine if close, or the first engine in the list if far since it doesn't really matter. + // Or a door if for some reason the shuttle has no engine, fuck oh hi daniel fuck it + var/range = (engine_coeff * max(width, height)) + var/long_range = range * 2.5 + var/atom/distant_source + + if(engine_list.len) + distant_source = engine_list[1] + else + for(var/our_area in areas) + distant_source = locate(/obj/machinery/door) in our_area + if(distant_source) + break + + if(!distant_source) + return + for(var/mob/zlevel_mobs as anything in SSmobs.clients_by_zlevel[z]) + var/dist_far = get_dist(zlevel_mobs, distant_source) + if(dist_far <= long_range && dist_far > range) + zlevel_mobs.playsound_local(distant_source, "sound/runtime/hyperspace/[selected_sound]_distance.ogg", 100) + else if(dist_far <= range) + var/source + if(!engine_list.len) + source = distant_source + else + var/closest_dist = 10000 + for(var/obj/machinery/power/shuttle_engine/engines as anything in engine_list) + var/dist_near = get_dist(zlevel_mobs, engines) + if(dist_near < closest_dist) + source = engines + closest_dist = dist_near + zlevel_mobs.playsound_local(source, "sound/runtime/hyperspace/[selected_sound].ogg", 100) + +// Losing all initial engines should get you 2 +// Adding another set of engines at 0.5 time +/obj/docking_port/mobile/proc/alter_engines(mod) + if(!mod) + return + var/old_coeff = engine_coeff + engine_coeff = get_engine_coeff(mod) + current_engine_power = max(0, current_engine_power + mod) + if(in_flight()) + var/delta_coeff = engine_coeff / old_coeff + modTimer(delta_coeff) + +// Double initial engines to get to 0.5 minimum +// Lose all initial engines to get to 2 +//For 0 engine shuttles like BYOS 5 engines to get to doublespeed +/obj/docking_port/mobile/proc/get_engine_coeff(engine_mod) + var/new_value = max(0, current_engine_power + engine_mod) + if(new_value == initial_engine_power) + return 1 + if(new_value > initial_engine_power) + var/delta = new_value - initial_engine_power + var/change_per_engine = (1 - ENGINE_COEFF_MIN) / ENGINE_DEFAULT_MAXSPEED_ENGINES // 5 by default + if(initial_engine_power > 0) + change_per_engine = (1 - ENGINE_COEFF_MIN) / initial_engine_power // or however many it had + return clamp(1 - delta * change_per_engine,ENGINE_COEFF_MIN, ENGINE_COEFF_MAX) + if(new_value < initial_engine_power) + var/delta = initial_engine_power - new_value + var/change_per_engine = 1 //doesn't really matter should not be happening for 0 engine shuttles + if(initial_engine_power > 0) + change_per_engine = (ENGINE_COEFF_MAX - 1) / initial_engine_power //just linear drop to max delay + return clamp(1 + delta * change_per_engine, ENGINE_COEFF_MIN, ENGINE_COEFF_MAX) + + +/obj/docking_port/mobile/proc/in_flight() + switch(mode) + if(SHUTTLE_CALL,SHUTTLE_RECALL,SHUTTLE_PREARRIVAL) + return TRUE + if(SHUTTLE_IDLE,SHUTTLE_IGNITING) + return FALSE + return FALSE // hmm + +/obj/docking_port/mobile/emergency/in_flight() + switch(mode) + if(SHUTTLE_ESCAPE) + return TRUE + if(SHUTTLE_STRANDED,SHUTTLE_ENDGAME) + return FALSE + return ..() + +//Called when emergency shuttle leaves the station +/obj/docking_port/mobile/proc/on_emergency_launch() + if(launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to. + launch_status = ENDGAME_LAUNCHED + enterTransit() + +///Let people know shits about to go down +/obj/docking_port/mobile/proc/announce_shuttle_events() + for(var/datum/shuttle_event/event as anything in event_list) + notify_ghosts("The [name] has selected: [event.name]") + +/obj/docking_port/mobile/emergency/on_emergency_launch() + return + +//Called when emergency shuttle docks at centcom +/obj/docking_port/mobile/proc/on_emergency_dock() + // Mapping a new docking point for each ship mappers could potentially want docking with centcom would take up lots of space, + // just let them keep flying off "into the sunset" for their greentext. + if(launch_status == ENDGAME_LAUNCHED) + launch_status = ENDGAME_TRANSIT + +/obj/docking_port/mobile/pod/on_emergency_dock() + if(launch_status == ENDGAME_LAUNCHED) + initiate_docking(SSshuttle.getDock("[shuttle_id]_away")) //Escape pods dock at centcom + mode = SHUTTLE_ENDGAME + +/obj/docking_port/mobile/emergency/on_emergency_dock() + return + +///Process all the shuttle events for every shuttle tick we get +/obj/docking_port/mobile/proc/process_events() + var/list/removees + for(var/datum/shuttle_event/event as anything in event_list) + if(event.event_process() == SHUTTLE_EVENT_CLEAR) //if we return SHUTTLE_EVENT_CLEAR, we clean them up + LAZYADD(removees, event) + for(var/item in removees) + event_list.Remove(item) + +/// Give a typepath of a shuttle event to add to the shuttle. If added during endgame transit, will insta start the event +/obj/docking_port/mobile/proc/add_shuttle_event(typepath) + var/datum/shuttle_event/event = new typepath (src) + event_list.Add(event) + if(launch_status == ENDGAME_LAUNCHED) + event.start_up_event(0) + return event diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/mobile_port/shuttle_move.dm similarity index 98% rename from code/modules/shuttle/docking.dm rename to code/modules/shuttle/mobile_port/shuttle_move.dm index 32a1ca4950afa..b7e125826dce2 100644 --- a/code/modules/shuttle/docking.dm +++ b/code/modules/shuttle/mobile_port/shuttle_move.dm @@ -1,4 +1,5 @@ -/// This is the main proc. It instantly moves our mobile port to stationary port `new_dock`. +/// This is the main proc. Despite what the name suggests, +/// it instantly moves our mobile port to stationary port `new_dock`. /obj/docking_port/mobile/proc/initiate_docking(obj/docking_port/stationary/new_dock, movement_direction, force=FALSE) // Crashing this ship with NO SURVIVORS diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/mobile_port/shuttle_move_callbacks.dm similarity index 99% rename from code/modules/shuttle/on_move.dm rename to code/modules/shuttle/mobile_port/shuttle_move_callbacks.dm index d4f7c3ddfcd09..1aac6e4c1aec8 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/mobile_port/shuttle_move_callbacks.dm @@ -230,11 +230,6 @@ All ShuttleMove procs go here . = ..() recharging_turf = get_step(loc, dir) -/obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - if(pipe_vision_img) - pipe_vision_img.loc = loc - /obj/machinery/computer/auxiliary_base/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() if(is_mining_level(z)) //Avoids double logging and landing on other Z-levels due to badminnery @@ -242,6 +237,9 @@ All ShuttleMove procs go here /obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() + if(pipe_vision_img) + pipe_vision_img.loc = loc + var/missing_nodes = FALSE for(var/i in 1 to device_type) if(nodes[i]) diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/mobile_port/shuttle_rotate_callbacks.dm similarity index 94% rename from code/modules/shuttle/shuttle_rotate.dm rename to code/modules/shuttle/mobile_port/shuttle_rotate_callbacks.dm index 15af6db6a4f6d..7afd43a0d3540 100644 --- a/code/modules/shuttle/shuttle_rotate.dm +++ b/code/modules/shuttle/mobile_port/shuttle_rotate_callbacks.dm @@ -82,7 +82,11 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate /obj/machinery/atmospherics/shuttleRotate(rotation, params) var/list/real_node_connect = get_node_connects() for(var/i in 1 to device_type) - real_node_connect[i] = angle2dir(rotation+dir2angle(real_node_connect[i])) + var/node_dir = real_node_connect[i] + if(isnull(node_dir)) + continue + + real_node_connect[i] = turn(node_dir, -rotation) . = ..() set_init_directions() @@ -90,7 +94,11 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate var/list/nodes_copy = nodes.Copy() for(var/i in 1 to device_type) - var/new_pos = supposed_node_connect.Find(real_node_connect[i]) + var/node_dir = real_node_connect[i] + if(isnull(node_dir)) + continue + + var/new_pos = supposed_node_connect.Find(node_dir) nodes[new_pos] = nodes_copy[i] //prevents shuttles attempting to rotate this since it messes up sprites diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/mobile_port/variants/arrivals.dm similarity index 100% rename from code/modules/shuttle/arrivals.dm rename to code/modules/shuttle/mobile_port/variants/arrivals.dm diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/mobile_port/variants/assault_pod.dm similarity index 100% rename from code/modules/shuttle/assault_pod.dm rename to code/modules/shuttle/mobile_port/variants/assault_pod.dm diff --git a/code/modules/shuttle/battlecruiser_starfury.dm b/code/modules/shuttle/mobile_port/variants/battlecruiser_starfury.dm similarity index 100% rename from code/modules/shuttle/battlecruiser_starfury.dm rename to code/modules/shuttle/mobile_port/variants/battlecruiser_starfury.dm diff --git a/code/modules/shuttle/elevator.dm b/code/modules/shuttle/mobile_port/variants/elevator.dm similarity index 100% rename from code/modules/shuttle/elevator.dm rename to code/modules/shuttle/mobile_port/variants/elevator.dm diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency.dm new file mode 100644 index 0000000000000..58fe035fe8586 --- /dev/null +++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency.dm @@ -0,0 +1,313 @@ +/obj/docking_port/mobile/emergency + name = "emergency shuttle" + shuttle_id = "emergency" + dir = EAST + port_direction = WEST + var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself + var/hijack_status = HIJACK_NOT_BEGUN + +/obj/docking_port/mobile/emergency/Initialize(mapload) + . = ..() + + setup_shuttle_events() + +/obj/docking_port/mobile/emergency/canDock(obj/docking_port/stationary/S) + return SHUTTLE_CAN_DOCK //If the emergency shuttle can't move, the whole game breaks, so it will force itself to land even if it has to crush a few departments in the process + +/obj/docking_port/mobile/emergency/register() + . = ..() + SSshuttle.emergency = src + +/obj/docking_port/mobile/emergency/Destroy(force) + if(force) + // This'll make the shuttle subsystem use the backup shuttle. + if(src == SSshuttle.emergency) + // If we're the selected emergency shuttle + SSshuttle.emergencyDeregister() + + . = ..() + +/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signal_origin, reason, red_alert, set_coefficient=null, silent = FALSE) // DOPPLER EDIT - ORIGINAL - /obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, area/signal_origin, reason, red_alert, set_coefficient=null) + if(!isnum(set_coefficient)) + set_coefficient = SSsecurity_level.current_security_level.shuttle_call_time_mod + alert_coeff = set_coefficient + var/call_time = SSshuttle.emergency_call_time * alert_coeff * engine_coeff + switch(mode) + // The shuttle can not normally be called while "recalling", so + // if this proc is called, it's via admin fiat + if(SHUTTLE_RECALL, SHUTTLE_IDLE, SHUTTLE_CALL) + mode = SHUTTLE_CALL + setTimer(call_time) + else + return + + SSshuttle.emergencyCallAmount++ + + if(prob(70)) + SSshuttle.emergency_last_call_loc = signal_origin + else + SSshuttle.emergency_last_call_loc = null + + if(silent) // DOPPLER EDIT ADDITION - SEE modular_doppler/autotransfer/shuttle.dm + return // DOPPLER EDIT ADDITION + priority_announce( + text = "The emergency shuttle has been called. [red_alert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [(timeLeft(60 SECONDS))] minutes.[reason][SSshuttle.emergency_last_call_loc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ][SSshuttle.admin_emergency_no_recall ? "\n\nWarning: Shuttle recall subroutines disabled; Recall not possible." : ""]", + title = "Emergency Shuttle Dispatched", + sound = ANNOUNCER_SHUTTLECALLED, + sender_override = "Emergency Shuttle Uplink Alert", + color_override = "orange", + ) + +/obj/docking_port/mobile/emergency/cancel(area/signalOrigin) + if(mode != SHUTTLE_CALL) + return + if(SSshuttle.emergency_no_recall) + return + + invertTimer() + mode = SHUTTLE_RECALL + + if(prob(70)) + SSshuttle.emergency_last_call_loc = signalOrigin + else + SSshuttle.emergency_last_call_loc = null + priority_announce( + text = "The emergency shuttle has been recalled.[SSshuttle.emergency_last_call_loc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", + title = "Emergency Shuttle Recalled", + sound = ANNOUNCER_SHUTTLERECALLED, + sender_override = "Emergency Shuttle Uplink Alert", + color_override = "orange", + ) + + SSticker.emergency_reason = null + +/** + * Proc that handles checking if the emergency shuttle was successfully hijacked via being the only people present on the shuttle for the elimination hijack or highlander objective + * + * Checks for all mobs on the shuttle, checks their status, and checks if they're + * borgs or simple animals. Depending on the args, certain mobs may be ignored, + * and the presence of other antags may or may not invalidate a hijack. + * Args: + * filter_by_human, default TRUE, tells the proc that only humans should block a hijack. Borgs and animals are ignored and will not block if this is TRUE. + * solo_hijack, default FALSE, tells the proc to fail with multiple hijackers, such as for Highlander mode. + */ +/obj/docking_port/mobile/emergency/proc/elimination_hijack(filter_by_human = TRUE, solo_hijack = FALSE) + var/has_people = FALSE + var/hijacker_count = 0 + for(var/mob/living/player in GLOB.player_list) + if(player.mind) + if(player.stat != DEAD) + if(issilicon(player) && filter_by_human) //Borgs are technically dead anyways + continue + if(isanimal_or_basicmob(player) && filter_by_human) //animals don't count + continue + if(isbrain(player)) //also technically dead + continue + if(shuttle_areas[get_area(player)]) + has_people = TRUE + var/location = get_area(player.mind.current) + //Non-antag present. Can't hijack. + if(!(player.mind.has_antag_datum(/datum/antagonist)) && !istype(location, /area/shuttle/escape/brig)) + return FALSE + //Antag present, doesn't stop but let's see if we actually want to hijack + var/prevent = FALSE + for(var/datum/antagonist/A in player.mind.antag_datums) + if(A.can_elimination_hijack == ELIMINATION_ENABLED) + hijacker_count += 1 + prevent = FALSE + break //If we have both prevent and hijacker antags assume we want to hijack. + else if(A.can_elimination_hijack == ELIMINATION_PREVENT) + prevent = TRUE + if(prevent) + return FALSE + + //has people AND either there's only one hijacker or there's any but solo_hijack is disabled + return has_people && ((hijacker_count == 1) || (hijacker_count && !solo_hijack)) + +/obj/docking_port/mobile/emergency/proc/is_hijacked() + return hijack_status == HIJACK_COMPLETED + +/obj/docking_port/mobile/emergency/proc/ShuttleDBStuff() + set waitfor = FALSE + if(!SSdbcore.Connect()) + return + var/datum/db_query/query_round_shuttle_name = SSdbcore.NewQuery({" + UPDATE [format_table_name("round")] SET shuttle_name = :name WHERE id = :round_id + "}, list("name" = name, "round_id" = GLOB.round_id)) + query_round_shuttle_name.Execute() + qdel(query_round_shuttle_name) + +/obj/docking_port/mobile/emergency/check() + if(!timer) + return + var/time_left = timeLeft(1) + + // The emergency shuttle doesn't work like others so this + // ripple check is slightly different + if(!ripples.len && (time_left <= SHUTTLE_RIPPLE_TIME) && ((mode == SHUTTLE_CALL) || (mode == SHUTTLE_ESCAPE))) + var/destination + if(mode == SHUTTLE_CALL) + destination = SSshuttle.getDock("emergency_home") + else if(mode == SHUTTLE_ESCAPE) + destination = SSshuttle.getDock("emergency_away") + create_ripples(destination) + + switch(mode) + if(SHUTTLE_RECALL) + if(time_left <= 0) + mode = SHUTTLE_IDLE + timer = 0 + if(SHUTTLE_CALL) + if(time_left <= 0) + //move emergency shuttle to station + if(initiate_docking(SSshuttle.getDock("emergency_home")) != DOCKING_SUCCESS) + setTimer(20) + return + mode = SHUTTLE_DOCKED + setTimer(SSshuttle.emergency_dock_time) + send2adminchat("Server", "The Emergency Shuttle has docked with the station.") + priority_announce( + text = "[SSshuttle.emergency] has docked with the station. You have [DisplayTimeText(SSshuttle.emergency_dock_time)] to board the emergency shuttle.", + title = "Emergency Shuttle Arrival", + sound = ANNOUNCER_SHUTTLEDOCK, + sender_override = "Emergency Shuttle Uplink Alert", + color_override = "orange", + ) + ShuttleDBStuff() + addtimer(CALLBACK(src, PROC_REF(announce_shuttle_events)), 20 SECONDS) + + + if(SHUTTLE_DOCKED) + if(time_left <= ENGINE_START_TIME) + mode = SHUTTLE_IGNITING + SSshuttle.checkHostileEnvironment() + if(mode == SHUTTLE_STRANDED) + return + for(var/A in SSshuttle.mobile_docking_ports) + var/obj/docking_port/mobile/M = A + if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to. + M.check_transit_zone() + + if(SHUTTLE_IGNITING) + var/success = TRUE + SSshuttle.checkHostileEnvironment() + if(mode == SHUTTLE_STRANDED) + return + + success &= (check_transit_zone() == TRANSIT_READY) + for(var/A in SSshuttle.mobile_docking_ports) + var/obj/docking_port/mobile/M = A + if(M.launch_status == UNLAUNCHED) + success &= (M.check_transit_zone() == TRANSIT_READY) + if(!success) + setTimer(ENGINE_START_TIME) + + if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch + sound_played = 1 //Only rev them up once. + var/list/areas = list() + for(var/area/shuttle/escape/E in GLOB.areas) + areas += E + hyperspace_sound(HYPERSPACE_WARMUP, areas) + + if(time_left <= 0 && !SSshuttle.emergency_no_escape) + //move each escape pod (or applicable spaceship) to its corresponding transit dock + for(var/A in SSshuttle.mobile_docking_ports) + var/obj/docking_port/mobile/M = A + M.on_emergency_launch() + + //now move the actual emergency shuttle to its transit dock + var/list/areas = list() + for(var/area/shuttle/escape/E in GLOB.areas) + areas += E + hyperspace_sound(HYPERSPACE_LAUNCH, areas) + enterTransit() + + //Tell the events we're starting, so they can time their spawns or do some other stuff + for(var/datum/shuttle_event/event as anything in event_list) + event.start_up_event(SSshuttle.emergency_escape_time * engine_coeff) + + mode = SHUTTLE_ESCAPE + launch_status = ENDGAME_LAUNCHED + setTimer(SSshuttle.emergency_escape_time * engine_coeff) + priority_announce( + text = "The emergency shuttle has left the station. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].", + title = "Emergency Shuttle Departure", + sender_override = "Emergency Shuttle Uplink Alert", + color_override = "orange", + ) + INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts)) + INVOKE_ASYNC(SSvote, TYPE_PROC_REF(/datum/controller/subsystem/vote, initiate_vote), /datum/vote/map_vote, vote_initiator_name = "Map Rotation", forced = TRUE) + + if(!is_reserved_level(z)) + CRASH("Emergency shuttle did not move to transit z-level!") + + if(SHUTTLE_STRANDED, SHUTTLE_DISABLED) + SSshuttle.checkHostileEnvironment() + + + if(SHUTTLE_ESCAPE) + if(sound_played && time_left <= HYPERSPACE_END_TIME) + var/list/areas = list() + for(var/area/shuttle/escape/E in GLOB.areas) + areas += E + hyperspace_sound(HYPERSPACE_END, areas) + if(time_left <= PARALLAX_LOOP_TIME) + var/area_parallax = FALSE + for(var/place in shuttle_areas) + var/area/shuttle/shuttle_area = place + if(shuttle_area.parallax_movedir) + area_parallax = TRUE + break + if(area_parallax) + parallax_slowdown() + for(var/A in SSshuttle.mobile_docking_ports) + var/obj/docking_port/mobile/M = A + if(M.launch_status == ENDGAME_LAUNCHED) + if(istype(M, /obj/docking_port/mobile/pod)) + M.parallax_slowdown() + + process_events() + + if(time_left <= 0) + //move each escape pod to its corresponding escape dock + for(var/obj/docking_port/mobile/port as anything in SSshuttle.mobile_docking_ports) + port.on_emergency_dock() + + // now move the actual emergency shuttle to centcom + // unless the shuttle is "hijacked" + var/destination_dock = "emergency_away" + if(is_hijacked() || elimination_hijack()) + // just double check + SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_NUKIEBASE) + destination_dock = "emergency_syndicate" + minor_announce("Corruption detected in \ + shuttle navigation protocols. Please contact your \ + supervisor.", "SYSTEM ERROR:", sound_override = 'sound/announcer/announcement/announce_syndi.ogg') + + dock_id(destination_dock) + mode = SHUTTLE_ENDGAME + timer = 0 + +/obj/docking_port/mobile/emergency/transit_failure() + ..() + message_admins("Moving emergency shuttle directly to centcom dock to prevent deadlock.") + + mode = SHUTTLE_ESCAPE + launch_status = ENDGAME_LAUNCHED + setTimer(SSshuttle.emergency_escape_time) + priority_announce( + text = "The emergency shuttle is preparing for direct jump. Estimate [timeLeft(60 SECONDS)] minutes until the shuttle docks at [command_name()].", + title = "Emergency Shuttle Transit Failure", + sender_override = "Emergency Shuttle Uplink Alert", + color_override = "orange", + ) + +///Generate a list of events to run during the departure +/obj/docking_port/mobile/emergency/proc/setup_shuttle_events() + var/list/names = list() + for(var/datum/shuttle_event/event as anything in subtypesof(/datum/shuttle_event)) + if(prob(initial(event.event_probability))) + add_shuttle_event(event) + names += initial(event.name) + if(LAZYLEN(names)) + log_game("[capitalize(name)] has selected the following shuttle events: [english_list(names)].") diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm new file mode 100644 index 0000000000000..b46bfff274307 --- /dev/null +++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency_console.dm @@ -0,0 +1,316 @@ +#define ENGINES_STARTED (SSshuttle.emergency.mode == SHUTTLE_IGNITING) +#define IS_DOCKED (SSshuttle.emergency.mode == SHUTTLE_DOCKED || (ENGINES_STARTED)) +#define SHUTTLE_CONSOLE_ACTION_DELAY (5 SECONDS) +#define TIME_LEFT (SSshuttle.emergency.timeLeft()) + +/obj/machinery/computer/emergency_shuttle + name = "emergency shuttle console" + desc = "For shuttle control." + icon_screen = "shuttle" + icon_keyboard = "tech_key" + resistance_flags = INDESTRUCTIBLE + var/auth_need = 3 + var/list/authorized = list() + var/list/acted_recently = list() + var/hijack_last_stage_increase = 0 SECONDS + var/hijack_stage_time = 5 SECONDS + var/hijack_stage_cooldown = 5 SECONDS + var/hijack_flight_time_increase = 30 SECONDS + var/hijack_completion_flight_time_set = 10 SECONDS //How long in deciseconds to set shuttle's timer after hijack is done. + var/hijack_hacking = FALSE + var/hijack_announce = TRUE + +/obj/machinery/computer/emergency_shuttle/Destroy() + // Our fake IDs that the emag generated are just there for colour + // They're not supposed to be accessible + + for(var/obj/item/card/id/ID in src) + qdel(ID) + if(authorized?.len) + authorized.Cut() + authorized = null + + . = ..() + +/obj/machinery/computer/emergency_shuttle/examine(mob/user) + . = ..() + if(hijack_announce) + . += span_danger("Security systems present on console. Any unauthorized tampering will result in an emergency announcement.") + if(user?.mind?.get_hijack_speed()) + . += span_danger("Alt click on this to attempt to hijack the shuttle. This will take multiple tries (current: stage [SSshuttle.emergency.hijack_status]/[HIJACK_COMPLETED]).") + . += span_notice("It will take you [(hijack_stage_time * user.mind.get_hijack_speed()) / 10] seconds to reprogram a stage of the shuttle's navigational firmware, and the console will undergo automated timed lockout for [hijack_stage_cooldown/10] seconds after each stage.") + if(hijack_announce) + . += span_warning("It is probably best to fortify your position as to be uninterrupted during the attempt, given the automatic announcements..") + +/obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user,params) + if(isidcard(I)) + say("Please equip your ID card into your ID slot to authenticate.") + . = ..() + +/obj/machinery/computer/emergency_shuttle/ui_state(mob/user) + return GLOB.human_adjacent_state + +/obj/machinery/computer/emergency_shuttle/ui_interact(mob/user, datum/tgui/ui) + . = ..() + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "EmergencyShuttleConsole", name) + ui.open() + +/obj/machinery/computer/emergency_shuttle/ui_data(user) + var/list/data = list() + + data["timer_str"] = SSshuttle.emergency.getTimerStr() + data["engines_started"] = ENGINES_STARTED + data["authorizations_remaining"] = max((auth_need - authorized.len), 0) + var/list/A = list() + for(var/i in authorized) + var/obj/item/card/id/ID = i + var/name = ID.registered_name + var/job = ID.assignment + + if(obj_flags & EMAGGED) + name = Gibberish(name) + job = Gibberish(job) + A += list(list("name" = name, "job" = job)) + data["authorizations"] = A + + data["enabled"] = (IS_DOCKED && !ENGINES_STARTED) && !(user in acted_recently) + data["emagged"] = obj_flags & EMAGGED ? 1 : 0 + return data + +/obj/machinery/computer/emergency_shuttle/ui_act(action, params, datum/tgui/ui) + . = ..() + if(.) + return + if(ENGINES_STARTED) // past the point of no return + return + if(!IS_DOCKED) // shuttle computer only has uses when onstation + return + if(SSshuttle.emergency.mode == SHUTTLE_DISABLED) // admins have disabled the shuttle. + return + if(!isliving(usr)) + return + + var/area/my_area = get_area(src) + if(!istype(my_area, /area/shuttle/escape)) + say("Error - Network connectivity: Console has lost connection to the shuttle.") + return + + var/mob/living/user = usr + . = FALSE + + var/obj/item/card/id/ID = user.get_idcard(TRUE) + + if(!ID) + to_chat(user, span_warning("You don't have an ID.")) + return + + if(!(ACCESS_COMMAND in ID.access)) + to_chat(user, span_warning("The access level of your card is not high enough.")) + return + + if (user in acted_recently) + return + + var/old_len = authorized.len + addtimer(CALLBACK(src, PROC_REF(clear_recent_action), user), SHUTTLE_CONSOLE_ACTION_DELAY) + + switch(action) + if("authorize") + . = authorize(user) + + if("repeal") + authorized -= ID + + if("abort") + if(authorized.len) + // Abort. The action for when heads are fighting over whether + // to launch early. + authorized.Cut() + . = TRUE + + if((old_len != authorized.len) && !ENGINES_STARTED) + var/alert = (authorized.len > old_len) + var/repeal = (authorized.len < old_len) + var/remaining = max(0, auth_need - authorized.len) + if(authorized.len && remaining) + minor_announce("[remaining] authorizations needed until shuttle is launched early", null, alert) + if(repeal) + minor_announce("Early launch authorization revoked, [remaining] authorizations needed") + + acted_recently += user + SStgui.update_user_uis(user, src) + +/obj/machinery/computer/emergency_shuttle/proc/authorize(mob/living/user, source) + var/obj/item/card/id/ID = user.get_idcard(TRUE) + + if(ID in authorized) + return FALSE + for(var/i in authorized) + var/obj/item/card/id/other = i + if(other.registered_name == ID.registered_name) + return FALSE // No using IDs with the same name + + authorized += ID + + message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch") + log_shuttle("[key_name(user)] has authorized early shuttle launch in [COORD(src)]") + // Now check if we're on our way + . = TRUE + process(SSMACHINES_DT) + +/obj/machinery/computer/emergency_shuttle/proc/clear_recent_action(mob/user) + acted_recently -= user + if (!QDELETED(user)) + SStgui.update_user_uis(user, src) + +/obj/machinery/computer/emergency_shuttle/process() + // Launch check is in process in case auth_need changes for some reason + // probably external. + . = FALSE + if(!SSshuttle.emergency) + return + + if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) + authorized.Cut() + obj_flags &= ~(EMAGGED) + + if(ENGINES_STARTED || (!IS_DOCKED)) + return . + + // Check to see if we've reached criteria for early launch + if((authorized.len >= auth_need) || (obj_flags & EMAGGED)) + // shuttle timers use 1/10th seconds internally + SSshuttle.emergency.setTimer(ENGINE_START_TIME) + var/system_error = obj_flags & EMAGGED ? "SYSTEM ERROR:" : null + minor_announce("The emergency shuttle will launch in \ + [TIME_LEFT] seconds", system_error, alert=TRUE) + . = TRUE + +/obj/machinery/computer/emergency_shuttle/proc/increase_hijack_stage() + var/obj/docking_port/mobile/emergency/shuttle = SSshuttle.emergency + // Begin loading this early, prevents a delay when the shuttle goes to land + INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, lazy_load_template), LAZY_TEMPLATE_KEY_NUKIEBASE) + + shuttle.hijack_status++ + if(hijack_announce) + announce_hijack_stage() + hijack_last_stage_increase = world.time + say("Navigational protocol error! Rebooting systems.") + if(shuttle.mode == SHUTTLE_ESCAPE) + if(shuttle.hijack_status == HIJACK_COMPLETED) + shuttle.setTimer(hijack_completion_flight_time_set) + else + shuttle.setTimer(shuttle.timeLeft(1) + hijack_flight_time_increase) //give the guy more time to hijack if it's already in flight. + return shuttle.hijack_status + +/obj/machinery/computer/emergency_shuttle/click_alt(mob/living/user) + if(!isliving(user)) + return NONE + attempt_hijack_stage(user) + return CLICK_ACTION_SUCCESS + +/obj/machinery/computer/emergency_shuttle/proc/attempt_hijack_stage(mob/living/user) + if(!user.CanReach(src)) + return + if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + to_chat(user, span_warning("You need your hands free before you can manipulate [src].")) + return + var/area/my_area = get_area(src) + if(!istype(my_area, /area/shuttle/escape)) + say("Error - Network connectivity: Console has lost connection to the shuttle.") + return + if(!user?.mind?.get_hijack_speed()) + to_chat(user, span_warning("You manage to open a user-mode shell on [src], and hundreds of lines of debugging output fly through your vision. It is probably best to leave this alone.")) + return + if(!EMERGENCY_AT_LEAST_DOCKED) // prevent advancing hijack stages on BYOS shuttles until the shuttle has "docked" + to_chat(user, span_warning("The flight plans for the shuttle haven't been loaded yet, you can't hack this right now.")) + return + if(hijack_hacking == TRUE) + return + if(SSshuttle.emergency.hijack_status >= HIJACK_COMPLETED) + to_chat(user, span_warning("The emergency shuttle is already loaded with a corrupt navigational payload. What more do you want from it?")) + return + if(hijack_last_stage_increase >= world.time - hijack_stage_cooldown) + say("Error - Catastrophic software error detected. Input is currently on timeout.") + return + hijack_hacking = TRUE + to_chat(user, span_boldwarning("You [SSshuttle.emergency.hijack_status == HIJACK_NOT_BEGUN? "begin" : "continue"] to override [src]'s navigational protocols.")) + say("Software override initiated.") + var/turf/console_hijack_turf = get_turf(src) + message_admins("[src] is being overriden for hijack by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(console_hijack_turf)]") + user.log_message("is hijacking [src].", LOG_GAME) + . = FALSE + if(do_after(user, hijack_stage_time * (1 / user.mind.get_hijack_speed()), target = src)) + increase_hijack_stage() + console_hijack_turf = get_turf(src) + message_admins("[ADMIN_LOOKUPFLW(user)] has hijacked [src] in [ADMIN_VERBOSEJMP(console_hijack_turf)]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACK_COMPLETED].") + user.log_message("has hijacked [src]. Hijack stage increased to stage [SSshuttle.emergency.hijack_status] out of [HIJACK_COMPLETED].", LOG_GAME) + . = TRUE + to_chat(user, span_notice("You reprogram some of [src]'s programming, putting it on timeout for [hijack_stage_cooldown/10] seconds.")) + visible_message( + span_warning("[user.name] appears to be tampering with [src]."), + blind_message = span_hear("You hear someone tapping computer keys."), + vision_distance = COMBAT_MESSAGE_RANGE, + ignored_mobs = user + ) + hijack_hacking = FALSE + +/obj/machinery/computer/emergency_shuttle/proc/announce_hijack_stage() + var/msg + switch(SSshuttle.emergency.hijack_status) + if(HIJACK_NOT_BEGUN) + return + if(HIJACK_STAGE_1) + msg = "AUTHENTICATING - FAIL. AUTHENTICATING - FAIL. AUTHENTICATING - FAI###### Welcome, technician JOHN DOE." + if(HIJACK_STAGE_2) + msg = "Warning: Navigational route fails \"IS_AUTHORIZED\". Please try againNN[scramble_message_replace_chars("againagainagainagainagain", 70)]." + if(HIJACK_STAGE_3) + msg = "CRC mismatch at ~h~ in calculated route buffer. Full reset initiated of FTL_NAVIGATION_SERVICES. Memory decrypted for automatic repair." + if(HIJACK_STAGE_4) + msg = "~ACS_directive module_load(cyberdyne.exploit.nanotrasen.shuttlenav)... NT key mismatch. Confirm load? Y...###Reboot complete. $SET transponder_state = 0; System link initiated with connected engines..." + if(HIJACK_COMPLETED) + msg = "SYSTEM OVERRIDE - Resetting course to \[[scramble_message_replace_chars("###########", 100)]\] \ + ([scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]/[scramble_message_replace_chars("#######", 100)]) \ + {AUTH - ROOT (uid: 0)}.\ + [SSshuttle.emergency.mode == SHUTTLE_ESCAPE ? "Diverting from existing route - Bluespace exit in \ + [hijack_completion_flight_time_set >= INFINITY ? "[scramble_message_replace_chars("\[ERROR\]")]" : hijack_completion_flight_time_set/10] seconds." : ""]" + minor_announce(scramble_message_replace_chars(msg, replaceprob = 10), "Emergency Shuttle", TRUE) + +/obj/machinery/computer/emergency_shuttle/emag_act(mob/user, obj/item/card/emag/emag_card) + // How did you even get on the shuttle before it go to the station? + if(!IS_DOCKED) + return FALSE + + if((obj_flags & EMAGGED) || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS + balloon_alert(user, "shuttle already about to launch!") + return FALSE + + var/time = TIME_LEFT + if (user) + message_admins("[ADMIN_LOOKUPFLW(user)] has emagged the emergency shuttle [time] seconds before launch.") + log_shuttle("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.") + else + message_admins("The emergency shuttle was emagged [time] seconds before launch, with no emagger.") + log_shuttle("The emergency shuttle was emagged in [COORD(src)] [time] seconds before launch, with no emagger.") + + obj_flags |= EMAGGED + SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL + for(var/i in 1 to 10) + // the shuttle system doesn't know who these people are, but they + // must be important, surely + var/obj/item/card/id/ID = new(src) + var/datum/job/J = pick(SSjob.joinable_occupations) + ID.registered_name = generate_random_name_species_based(species_type = /datum/species/human) + ID.assignment = J.title + + authorized += ID + + process(SSMACHINES_DT) + return TRUE + +#undef TIME_LEFT +#undef ENGINES_STARTED +#undef IS_DOCKED +#undef SHUTTLE_CONSOLE_ACTION_DELAY diff --git a/code/modules/shuttle/mobile_port/variants/emergency/emergency_types.dm b/code/modules/shuttle/mobile_port/variants/emergency/emergency_types.dm new file mode 100644 index 0000000000000..6030999698b00 --- /dev/null +++ b/code/modules/shuttle/mobile_port/variants/emergency/emergency_types.dm @@ -0,0 +1,39 @@ +/// Fallback shuttle +/obj/docking_port/mobile/emergency/backup + name = "backup shuttle" + shuttle_id = "backup" + dir = EAST + +/obj/docking_port/mobile/emergency/backup/Initialize(mapload) + // We want to be a valid emergency shuttle + // but not be the main one, keep whatever's set + // valid. + // backup shuttle ignores `timid` because THERE SHOULD BE NO TOUCHING IT + var/current_emergency = SSshuttle.emergency + . = ..() + SSshuttle.emergency = current_emergency + SSshuttle.backup_shuttle = src + +/obj/docking_port/mobile/emergency/backup/Destroy(force) + if(SSshuttle.backup_shuttle == src) + SSshuttle.backup_shuttle = null + return ..() + +/// Monastery shuttle +/obj/docking_port/mobile/monastery + name = "monastery pod" + shuttle_id = "mining_common" //set so mining can call it down + launch_status = UNLAUNCHED //required for it to launch as a pod. + +/obj/docking_port/mobile/monastery/on_emergency_dock() + if(launch_status == ENDGAME_LAUNCHED) + initiate_docking(SSshuttle.getDock("pod_away")) //docks our shuttle as any pod would + mode = SHUTTLE_ENDGAME + +/// Build Your Own Shuttle (BYOS) kit +/obj/docking_port/mobile/emergency/shuttle_build + +/obj/docking_port/mobile/emergency/shuttle_build/postregister() + . = ..() + initiate_docking(SSshuttle.getDock("emergency_home")) + diff --git a/code/modules/shuttle/mobile_port/variants/emergency/pods.dm b/code/modules/shuttle/mobile_port/variants/emergency/pods.dm new file mode 100644 index 0000000000000..1d8e1bae6bc03 --- /dev/null +++ b/code/modules/shuttle/mobile_port/variants/emergency/pods.dm @@ -0,0 +1,211 @@ +// THIS FILE CONTAINS: Pod mobile/stationary docking port, pod control console, pod storage and pod items + +/obj/docking_port/mobile/pod + name = "escape pod" + shuttle_id = "pod" + launch_status = UNLAUNCHED + +/obj/docking_port/mobile/pod/request(obj/docking_port/stationary/S) + var/obj/machinery/computer/shuttle/connected_computer = get_control_console() + if(!istype(connected_computer, /obj/machinery/computer/shuttle/pod)) + return FALSE + if(!(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) && !(connected_computer.obj_flags & EMAGGED)) + to_chat(usr, span_warning("Escape pods will only launch during \"Code Red\" security alert.")) + return FALSE + if(launch_status == UNLAUNCHED) + launch_status = EARLY_LAUNCHED + return ..() + +/obj/docking_port/mobile/pod/cancel() + return + +/obj/machinery/computer/shuttle/pod + name = "pod control computer" + locked = TRUE + possible_destinations = "pod_asteroid" + icon = 'icons/obj/machines/wallmounts.dmi' + icon_state = "pod_off" + circuit = /obj/item/circuitboard/computer/emergency_pod + light_color = LIGHT_COLOR_BLUE + density = FALSE + icon_keyboard = null + icon_screen = "pod_on" + +/obj/machinery/computer/shuttle/pod/Initialize(mapload) + . = ..() + RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, PROC_REF(check_lock)) + +/obj/machinery/computer/shuttle/pod/emag_act(mob/user, obj/item/card/emag/emag_card) + if(obj_flags & EMAGGED) + return FALSE + obj_flags |= EMAGGED + locked = FALSE + balloon_alert(user, "alert level checking disabled") + icon_screen = "emagged_general" + update_appearance() + return TRUE + +/obj/machinery/computer/shuttle/pod/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock) + . = ..() + if(port) + //Checks if the computer has already added the shuttle destination with the initial id + //This has to be done because connect_to_shuttle is called again after its ID is updated + //due to conflicting id names + var/base_shuttle_destination = ";[initial(port.shuttle_id)]_lavaland" + var/shuttle_destination = ";[port.shuttle_id]_lavaland" + + var/position = findtext(possible_destinations, base_shuttle_destination) + if(position) + if(base_shuttle_destination == shuttle_destination) + return + possible_destinations = splicetext(possible_destinations, position, position + length(base_shuttle_destination), shuttle_destination) + return + + possible_destinations += shuttle_destination + +/** + * Signal handler for checking if we should lock or unlock escape pods accordingly to a newly set security level + * + * Arguments: + * * source The datum source of the signal + * * new_level The new security level that is in effect + */ +/obj/machinery/computer/shuttle/pod/proc/check_lock(datum/source, new_level) + SIGNAL_HANDLER + + if(obj_flags & EMAGGED) + return + locked = (new_level < SEC_LEVEL_RED) + +/obj/docking_port/stationary/random + name = "escape pod" + shuttle_id = "pod" + hidden = TRUE + override_can_dock_checks = TRUE + /// The area the pod tries to land at + var/target_area = /area/lavaland/surface/outdoors + /// Minimal distance from the map edge, setting this too low can result in shuttle landing on the edge and getting "sliced" + var/edge_distance = 16 + +/obj/docking_port/stationary/random/Initialize(mapload) + . = ..() + if(!mapload) + return + + var/list/turfs = get_area_turfs(target_area) + var/original_len = turfs.len + while(turfs.len) + var/turf/picked_turf = pick(turfs) + if(picked_turf.x stationary_dock.dwidth) - return SHUTTLE_DWIDTH_TOO_LARGE - - if(width-dwidth > stationary_dock.width-stationary_dock.dwidth) - return SHUTTLE_WIDTH_TOO_LARGE - - if(dheight > stationary_dock.dheight) - return SHUTTLE_DHEIGHT_TOO_LARGE - - if(height-dheight > stationary_dock.height-stationary_dock.dheight) - return SHUTTLE_HEIGHT_TOO_LARGE - - //check the dock isn't occupied - var/currently_docked = stationary_dock.get_docked() - if(currently_docked) - // by someone other than us - if(currently_docked != src) - return SHUTTLE_SOMEONE_ELSE_DOCKED - else - // This isn't an error, per se, but we can't let the shuttle code - // attempt to move us where we currently are, it will get weird. - return SHUTTLE_ALREADY_DOCKED - - return SHUTTLE_CAN_DOCK - -/obj/docking_port/mobile/proc/check_dock(obj/docking_port/stationary/S, silent = FALSE) - var/status = canDock(S) - if(status == SHUTTLE_CAN_DOCK) - return TRUE - else - if(status != SHUTTLE_ALREADY_DOCKED && !silent) // SHUTTLE_ALREADY_DOCKED is no cause for error - message_admins("Shuttle [src] cannot dock at [S], error: [status]") - // We're already docked there, don't need to do anything. - // Triggering shuttle movement code in place is weird - return FALSE - -/obj/docking_port/mobile/proc/transit_failure() - message_admins("Shuttle [src] repeatedly failed to create transit zone.") - -/** - * Calls the shuttle to the destination port, respecting its ignition and call timers - * - * Arguments: - * * destination_port - Stationary docking port to move the shuttle to - */ -/obj/docking_port/mobile/proc/request(obj/docking_port/stationary/destination_port) - if(!check_dock(destination_port)) - testing("check_dock failed on request for [src]") - return - - if(mode == SHUTTLE_IGNITING && destination == destination_port) - return - - switch(mode) - if(SHUTTLE_CALL) - if(destination_port == destination) - if(timeLeft(1) < callTime * engine_coeff) - setTimer(callTime * engine_coeff) - else - destination = destination_port - setTimer(callTime * engine_coeff) - if(SHUTTLE_RECALL) - if(destination_port == destination) - setTimer(callTime * engine_coeff - timeLeft(1)) - else - destination = destination_port - setTimer(callTime * engine_coeff) - mode = SHUTTLE_CALL - if(SHUTTLE_IDLE, SHUTTLE_IGNITING) - destination = destination_port - mode = SHUTTLE_IGNITING - setTimer(ignitionTime) - -//recall the shuttle to where it was previously -/obj/docking_port/mobile/proc/cancel() - if(mode != SHUTTLE_CALL) - return - - remove_ripples() - - invertTimer() - mode = SHUTTLE_RECALL - -/obj/docking_port/mobile/proc/enterTransit() - if((SSshuttle.lockdown && is_station_level(z)) || !canMove()) //emp went off, no escape - mode = SHUTTLE_IDLE - return - previous = null - if(!destination) - // sent to transit with no destination -> unlimited timer - timer = INFINITY - var/obj/docking_port/stationary/S0 = get_docked() - var/obj/docking_port/stationary/S1 = assigned_transit - if(S1) - if(initiate_docking(S1) != DOCKING_SUCCESS) - WARNING("shuttle \"[shuttle_id]\" could not enter transit space. Docked at [S0 ? S0.shuttle_id : "null"]. Transit dock [S1 ? S1.shuttle_id : "null"].") - else if(S0) - if(S0.delete_after) - qdel(S0, TRUE) - else - previous = S0 - else - WARNING("shuttle \"[shuttle_id]\" could not enter transit space. S0=[S0 ? S0.shuttle_id : "null"] S1=[S1 ? S1.shuttle_id : "null"]") - - -/obj/docking_port/mobile/proc/jumpToNullSpace() - // Destroys the docking port and the shuttle contents. - // Not in a fancy way, it just ceases. - var/obj/docking_port/stationary/current_dock = get_docked() - - 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?.area_type) - underlying_area_type = current_dock.area_type - - var/list/old_turfs = return_ordered_turfs(x, y, z, dir) - - var/area/underlying_area = GLOB.areas_by_type[underlying_area_type] - if(!underlying_area) - underlying_area = new underlying_area_type(null) - - for(var/i in 1 to old_turfs.len) - var/turf/oldT = old_turfs[i] - if(!oldT || !istype(oldT.loc, area_type)) - continue - oldT.change_area(oldT.loc, underlying_area) - oldT.empty(FALSE) - - // Here we locate the bottommost shuttle boundary and remove all turfs above it - var/shuttle_tile_depth = oldT.depth_to_find_baseturf(/turf/baseturf_skipover/shuttle) - if (!isnull(shuttle_tile_depth)) - oldT.ScrapeAway(shuttle_tile_depth) - - qdel(src, force=TRUE) - -/** - * Ghosts and marks as escaped (for greentext purposes) all mobs, then deletes the shuttle. - * Used by the Shuttle Manipulator - */ -/obj/docking_port/mobile/proc/intoTheSunset() - // Loop over mobs - for(var/turf/turfs as anything in return_turfs()) - for(var/mob/living/sunset_mobs in turfs.get_all_contents()) - // If they have a mind and they're not in the brig, they escaped - if(sunset_mobs.mind && !istype(get_area(sunset_mobs), /area/shuttle/escape/brig)) - sunset_mobs.mind.force_escaped = TRUE - // Ghostize them and put them in nullspace stasis (for stat & possession checks) - ADD_TRAIT(sunset_mobs, TRAIT_NO_TRANSFORM, REF(src)) - sunset_mobs.ghostize(FALSE) - sunset_mobs.moveToNullspace() - - // Now that mobs are stowed, delete the shuttle - jumpToNullSpace() - -/obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time) - var/list/turfs = ripple_area(S1) - for(var/t in turfs) - ripples += new /obj/effect/abstract/ripple(t, animate_time) - -/obj/docking_port/mobile/proc/remove_ripples() - QDEL_LIST(ripples) - -/obj/docking_port/mobile/proc/ripple_area(obj/docking_port/stationary/S1) - var/list/L0 = return_ordered_turfs(x, y, z, dir) - var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir) - - var/list/ripple_turfs = list() - var/stop = min(L0.len, L1.len) - for(var/i in 1 to stop) - var/turf/T0 = L0[i] - var/turf/T1 = L1[i] - if(!istype(T0.loc, area_type) || istype(T0.loc, /area/shuttle/transit)) - continue // not part of the shuttle - ripple_turfs += T1 - - return ripple_turfs - -/obj/docking_port/mobile/proc/check_poddoors() - for(var/obj/machinery/door/poddoor/shuttledock/pod as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/poddoor/shuttledock)) - pod.check() - -/obj/docking_port/mobile/proc/dock_id(id) - var/port = SSshuttle.getDock(id) - if(port) - . = initiate_docking(port) - else - . = null - -//used by shuttle subsystem to check timers -/obj/docking_port/mobile/proc/check() - check_effects() - //process_events() if you were to add events to non-escape shuttles, uncomment this - - if(mode == SHUTTLE_IGNITING) - check_transit_zone() - - if(timeLeft(1) > 0) - return - // If we can't dock or we don't have a transit slot, wait for 20 ds, - // then try again - switch(mode) - if(SHUTTLE_CALL, SHUTTLE_PREARRIVAL) - if(prearrivalTime && mode != SHUTTLE_PREARRIVAL) - mode = SHUTTLE_PREARRIVAL - setTimer(prearrivalTime) - return - var/error = initiate_docking(destination, preferred_direction) - if(error && error & (DOCKING_NULL_DESTINATION | DOCKING_NULL_SOURCE)) - var/msg = "A mobile dock in transit exited initiate_docking() with an error. This is most likely a mapping problem: Error: [error], ([src]) ([previous][ADMIN_JMP(previous)] -> [destination][ADMIN_JMP(destination)])" - WARNING(msg) - message_admins(msg) - mode = SHUTTLE_IDLE - return - else if(error) - setTimer(20) - return - if(rechargeTime) - mode = SHUTTLE_RECHARGING - setTimer(rechargeTime) - return - if(SHUTTLE_RECALL) - if(initiate_docking(previous) != DOCKING_SUCCESS) - setTimer(20) - return - if(SHUTTLE_IGNITING) - if(check_transit_zone() != TRANSIT_READY) - setTimer(20) - return - else - mode = SHUTTLE_CALL - setTimer(callTime * engine_coeff) - enterTransit() - return - - mode = SHUTTLE_IDLE - timer = 0 - destination = null - -/obj/docking_port/mobile/proc/check_effects() - if(!ripples.len) - if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL)) - var/tl = timeLeft(1) - if(tl <= SHUTTLE_RIPPLE_TIME) - create_ripples(destination, tl) - - var/obj/docking_port/stationary/S0 = get_docked() - if(istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME) - for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place - if(shuttle_area.parallax_movedir) - parallax_slowdown() - -/obj/docking_port/mobile/proc/parallax_slowdown() - for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place - shuttle_area.parallax_movedir = FALSE - if(assigned_transit?.assigned_area) - assigned_transit.assigned_area.parallax_movedir = FALSE - var/list/L0 = return_ordered_turfs(x, y, z, dir) - for (var/thing in L0) - var/turf/T = thing - if(!T || !istype(T.loc, area_type)) - continue - for (var/atom/movable/movable as anything in T) - if (movable.client_mobs_in_contents) - movable.update_parallax_contents() - -/obj/docking_port/mobile/proc/check_transit_zone() - if(assigned_transit) - return TRANSIT_READY - else - SSshuttle.request_transit_dock(src) - -/obj/docking_port/mobile/proc/setTimer(wait) - timer = world.time + wait - last_timer_length = wait - -/obj/docking_port/mobile/proc/modTimer(multiple) - var/time_remaining = timer - world.time - if(time_remaining < 0 || !last_timer_length) - return - time_remaining *= multiple - last_timer_length *= multiple - setTimer(time_remaining) - -/obj/docking_port/mobile/proc/alert_coeff_change(new_coeff) - if(isnull(new_coeff)) - return - - var/time_multiplier = new_coeff / alert_coeff - var/time_remaining = timer - world.time - if(time_remaining < 0 || !last_timer_length) - return - - time_remaining *= time_multiplier - last_timer_length *= time_multiplier - alert_coeff = new_coeff - setTimer(time_remaining) - -/obj/docking_port/mobile/proc/invertTimer() - if(!last_timer_length) - return - var/time_remaining = timer - world.time - if(time_remaining > 0) - var/time_passed = last_timer_length - time_remaining - setTimer(time_passed) - -//returns timeLeft -/obj/docking_port/mobile/proc/timeLeft(divisor) - if(divisor <= 0) - divisor = 10 - - var/ds_remaining - if(!timer) - ds_remaining = callTime * engine_coeff - else - ds_remaining = max(0, timer - world.time) - - . = round(ds_remaining / divisor, 1) - -// returns 3-letter mode string, used by status screens and mob status panel -/obj/docking_port/mobile/proc/getModeStr() - switch(mode) - if(SHUTTLE_IGNITING) - return "IGN" - if(SHUTTLE_RECALL) - return "RCL" - if(SHUTTLE_CALL) - return "ETA" - if(SHUTTLE_DOCKED) - return "ETD" - if(SHUTTLE_ESCAPE) - return "ESC" - if(SHUTTLE_STRANDED) - return "ERR" - if(SHUTTLE_RECHARGING) - return "RCH" - if(SHUTTLE_PREARRIVAL) - return "LDN" - if(SHUTTLE_DISABLED) - return "DIS" - return "" - -// returns 5-letter timer string, used by status screens and mob status panel -/obj/docking_port/mobile/proc/getTimerStr() - if(mode == SHUTTLE_STRANDED || mode == SHUTTLE_DISABLED) - return "--:--" - - var/timeleft = timeLeft() - if(timeleft > 1 HOURS) - return "--:--" - else if(timeleft > 0) - return "[add_leading(num2text((timeleft / 60) % 60), 2, "0")]:[add_leading(num2text(timeleft % 60), 2, "0")]" - else - return "00:00" - -/** - * Gets shuttle location status in a form of string for tgui interfaces - */ -/obj/docking_port/mobile/proc/get_status_text_tgui() - var/obj/docking_port/stationary/dockedAt = get_docked() - var/docked_at = dockedAt?.name || "Unknown" - if(!istype(dockedAt, /obj/docking_port/stationary/transit)) - return docked_at - if(timeLeft() > 1 HOURS) - return "Hyperspace" - else - var/obj/docking_port/stationary/dst = (mode == SHUTTLE_RECALL) ? previous : destination - return "In transit to [dst?.name || "unknown location"]" - -/obj/docking_port/mobile/proc/getStatusText() - var/obj/docking_port/stationary/dockedAt = get_docked() - var/docked_at = dockedAt?.name || "unknown" - if(istype(dockedAt, /obj/docking_port/stationary/transit)) - if (timeLeft() > 1 HOURS) - return "hyperspace" - else - var/obj/docking_port/stationary/dst - if(mode == SHUTTLE_RECALL) - dst = previous - else - dst = destination - . = "transit towards [dst?.name || "unknown location"] ([getTimerStr()])" - else if(mode == SHUTTLE_RECHARGING) - return "[docked_at], recharging [getTimerStr()]" - else - return docked_at - -/obj/docking_port/mobile/proc/getDbgStatusText() - var/obj/docking_port/stationary/dockedAt = get_docked() - . = (dockedAt?.name) ? dockedAt.name : "unknown" - if(istype(dockedAt, /obj/docking_port/stationary/transit)) - var/obj/docking_port/stationary/dst - if(mode == SHUTTLE_RECALL) - dst = previous - else - dst = destination - if(dst) - . = "(transit to) [dst.name || dst.shuttle_id]" - else - . = "(transit to) nowhere" - else if(dockedAt) - . = dockedAt.name || dockedAt.shuttle_id - else - . = "unknown" - - -// attempts to locate /obj/machinery/computer/shuttle with matching ID inside the shuttle -/obj/docking_port/mobile/proc/get_control_console() - for(var/area/shuttle/shuttle_area as anything in shuttle_areas) - var/obj/machinery/computer/shuttle/shuttle_computer = locate(/obj/machinery/computer/shuttle) in shuttle_area - if(!shuttle_computer) - continue - if(shuttle_computer.shuttleId == shuttle_id) - return shuttle_computer - return null - -/obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas) - var/selected_sound - switch(phase) - if(HYPERSPACE_WARMUP) - selected_sound = "hyperspace_begin" - if(HYPERSPACE_LAUNCH) - selected_sound = "hyperspace_progress" - if(HYPERSPACE_END) - selected_sound = "hyperspace_end" - else - CRASH("Invalid hyperspace sound phase: [phase]") - // This previously was played from each door at max volume, and was one of the worst things I had ever seen. - // Now it's instead played from the nearest engine if close, or the first engine in the list if far since it doesn't really matter. - // Or a door if for some reason the shuttle has no engine, fuck oh hi daniel fuck it - var/range = (engine_coeff * max(width, height)) - var/long_range = range * 2.5 - var/atom/distant_source - - if(engine_list.len) - distant_source = engine_list[1] - else - for(var/our_area in areas) - distant_source = locate(/obj/machinery/door) in our_area - if(distant_source) - break - - if(!distant_source) - return - for(var/mob/zlevel_mobs as anything in SSmobs.clients_by_zlevel[z]) - var/dist_far = get_dist(zlevel_mobs, distant_source) - if(dist_far <= long_range && dist_far > range) - zlevel_mobs.playsound_local(distant_source, "sound/runtime/hyperspace/[selected_sound]_distance.ogg", 100) - else if(dist_far <= range) - var/source - if(!engine_list.len) - source = distant_source - else - var/closest_dist = 10000 - for(var/obj/machinery/power/shuttle_engine/engines as anything in engine_list) - var/dist_near = get_dist(zlevel_mobs, engines) - if(dist_near < closest_dist) - source = engines - closest_dist = dist_near - zlevel_mobs.playsound_local(source, "sound/runtime/hyperspace/[selected_sound].ogg", 100) - -// Losing all initial engines should get you 2 -// Adding another set of engines at 0.5 time -/obj/docking_port/mobile/proc/alter_engines(mod) - if(!mod) - return - var/old_coeff = engine_coeff - engine_coeff = get_engine_coeff(mod) - current_engine_power = max(0, current_engine_power + mod) - if(in_flight()) - var/delta_coeff = engine_coeff / old_coeff - modTimer(delta_coeff) - -// Double initial engines to get to 0.5 minimum -// Lose all initial engines to get to 2 -//For 0 engine shuttles like BYOS 5 engines to get to doublespeed -/obj/docking_port/mobile/proc/get_engine_coeff(engine_mod) - var/new_value = max(0, current_engine_power + engine_mod) - if(new_value == initial_engine_power) - return 1 - if(new_value > initial_engine_power) - var/delta = new_value - initial_engine_power - var/change_per_engine = (1 - ENGINE_COEFF_MIN) / ENGINE_DEFAULT_MAXSPEED_ENGINES // 5 by default - if(initial_engine_power > 0) - change_per_engine = (1 - ENGINE_COEFF_MIN) / initial_engine_power // or however many it had - return clamp(1 - delta * change_per_engine,ENGINE_COEFF_MIN, ENGINE_COEFF_MAX) - if(new_value < initial_engine_power) - var/delta = initial_engine_power - new_value - var/change_per_engine = 1 //doesn't really matter should not be happening for 0 engine shuttles - if(initial_engine_power > 0) - change_per_engine = (ENGINE_COEFF_MAX - 1) / initial_engine_power //just linear drop to max delay - return clamp(1 + delta * change_per_engine, ENGINE_COEFF_MIN, ENGINE_COEFF_MAX) - - -/obj/docking_port/mobile/proc/in_flight() - switch(mode) - if(SHUTTLE_CALL,SHUTTLE_RECALL,SHUTTLE_PREARRIVAL) - return TRUE - if(SHUTTLE_IDLE,SHUTTLE_IGNITING) - return FALSE - return FALSE // hmm - -/obj/docking_port/mobile/emergency/in_flight() - switch(mode) - if(SHUTTLE_ESCAPE) - return TRUE - if(SHUTTLE_STRANDED,SHUTTLE_ENDGAME) - return FALSE - return ..() - -//Called when emergency shuttle leaves the station -/obj/docking_port/mobile/proc/on_emergency_launch() - if(launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to. - launch_status = ENDGAME_LAUNCHED - enterTransit() - -///Let people know shits about to go down -/obj/docking_port/mobile/proc/announce_shuttle_events() - for(var/datum/shuttle_event/event as anything in event_list) - notify_ghosts("The [name] has selected: [event.name]") - -/obj/docking_port/mobile/emergency/on_emergency_launch() - return - -//Called when emergency shuttle docks at centcom -/obj/docking_port/mobile/proc/on_emergency_dock() - // Mapping a new docking point for each ship mappers could potentially want docking with centcom would take up lots of space, - // just let them keep flying off "into the sunset" for their greentext. - if(launch_status == ENDGAME_LAUNCHED) - launch_status = ENDGAME_TRANSIT - -/obj/docking_port/mobile/pod/on_emergency_dock() - if(launch_status == ENDGAME_LAUNCHED) - initiate_docking(SSshuttle.getDock("[shuttle_id]_away")) //Escape pods dock at centcom - mode = SHUTTLE_ENDGAME - -/obj/docking_port/mobile/emergency/on_emergency_dock() - return - -///Process all the shuttle events for every shuttle tick we get -/obj/docking_port/mobile/proc/process_events() - var/list/removees - for(var/datum/shuttle_event/event as anything in event_list) - if(event.event_process() == SHUTTLE_EVENT_CLEAR) //if we return SHUTTLE_EVENT_CLEAR, we clean them up - LAZYADD(removees, event) - for(var/item in removees) - event_list.Remove(item) - -/// Give a typepath of a shuttle event to add to the shuttle. If added during endgame transit, will insta start the event -/obj/docking_port/mobile/proc/add_shuttle_event(typepath) - var/datum/shuttle_event/event = new typepath (src) - event_list.Add(event) - if(launch_status == ENDGAME_LAUNCHED) - event.start_up_event(0) - return event - -#ifdef TESTING -#undef DOCKING_PORT_HIGHLIGHT -#endif diff --git a/code/modules/shuttle/monastery.dm b/code/modules/shuttle/shuttle_consoles/monastery.dm similarity index 100% rename from code/modules/shuttle/monastery.dm rename to code/modules/shuttle/shuttle_consoles/monastery.dm diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/shuttle_consoles/navigation_computer.dm similarity index 93% rename from code/modules/shuttle/navigation_computer.dm rename to code/modules/shuttle/shuttle_consoles/navigation_computer.dm index fbe528b870380..7c588e06dc005 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/shuttle_consoles/navigation_computer.dm @@ -107,8 +107,8 @@ shuttle_port = null return - eyeobj = new /mob/eye/ai_eye/remote/shuttle_docker(null, src) - var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj + eyeobj = new /mob/eye/camera/remote/shuttle_docker(null, src) + var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj the_eye.setDir(shuttle_port.dir) var/turf/origin = locate(shuttle_port.x + x_offset, shuttle_port.y + y_offset, shuttle_port.z) for(var/area/shuttle_area as anything in shuttle_port.shuttle_areas) @@ -125,10 +125,12 @@ I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT the_eye.placement_images[I] = list(x_off, y_off) + return TRUE + /obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user) ..() if(!QDELETED(user) && user.client) - var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj + var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj var/list/to_add = list() to_add += the_eye.placement_images to_add += the_eye.placed_images @@ -141,7 +143,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user) ..() if(!QDELETED(user) && user.client) - var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj + var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj var/list/to_remove = list() to_remove += the_eye.placement_images to_remove += the_eye.placed_images @@ -155,7 +157,7 @@ if(designating_target_loc || !current_user) return - var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj + var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj var/landing_clear = checkLandingSpot() if(designate_time && (landing_clear != SHUTTLE_DOCKER_BLOCKED)) to_chat(current_user, span_warning("Targeting transit location, please wait [DisplayTimeText(designate_time)]...")) @@ -223,7 +225,7 @@ return TRUE /obj/machinery/computer/camera_advanced/shuttle_docker/proc/rotateLandingSpot() - var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj + var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj var/list/image_cache = the_eye.placement_images the_eye.setDir(turn(the_eye.dir, -90)) for(var/i in 1 to image_cache.len) @@ -239,7 +241,7 @@ checkLandingSpot() /obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingSpot() - var/mob/eye/ai_eye/remote/shuttle_docker/the_eye = eyeobj + var/mob/eye/camera/remote/shuttle_docker/the_eye = eyeobj var/turf/eyeturf = get_turf(the_eye) if(!eyeturf) return SHUTTLE_DOCKER_BLOCKED @@ -316,22 +318,17 @@ add_jumpable_port(dock.shuttle_id) return TRUE -/mob/eye/ai_eye/remote/shuttle_docker - visible_icon = FALSE - use_static = FALSE +/mob/eye/camera/remote/shuttle_docker + use_visibility = FALSE var/list/image/placement_images = list() var/list/image/placed_images = list() -/mob/eye/ai_eye/remote/shuttle_docker/Initialize(mapload, obj/machinery/computer/camera_advanced/origin) - src.origin = origin - return ..() - -/mob/eye/ai_eye/remote/shuttle_docker/setLoc(turf/destination, force_update = FALSE) +/mob/eye/camera/remote/shuttle_docker/setLoc(turf/destination, force_update = FALSE) . = ..() - var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin + var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin_ref?.resolve() console.checkLandingSpot() -/mob/eye/ai_eye/remote/shuttle_docker/update_remote_sight(mob/living/user) +/mob/eye/camera/remote/shuttle_docker/update_remote_sight(mob/living/user) user.set_sight(BLIND|SEE_TURFS) // Pale blue, should look nice I think user.lighting_color_cutoffs = list(30, 40, 50) @@ -346,8 +343,8 @@ /datum/action/innate/shuttledocker_rotate/Activate() if(QDELETED(owner) || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control - var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin + var/mob/eye/camera/remote/remote_eye = owner.remote_control + var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin_ref.resolve() origin.rotateLandingSpot() /datum/action/innate/shuttledocker_place @@ -358,8 +355,8 @@ /datum/action/innate/shuttledocker_place/Activate() if(QDELETED(owner) || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control - var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin + var/mob/eye/camera/remote/remote_eye = owner.remote_control + var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin_ref.resolve() origin.placeLandingSpot(owner) /datum/action/innate/camera_jump/shuttle_docker @@ -369,8 +366,8 @@ /datum/action/innate/camera_jump/shuttle_docker/Activate() if(QDELETED(owner) || !isliving(owner)) return - var/mob/eye/ai_eye/remote/remote_eye = owner.remote_control - var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin + var/mob/eye/camera/remote/remote_eye = owner.remote_control + var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin_ref.resolve() playsound(console, 'sound/machines/terminal/terminal_prompt_deny.ogg', 25, FALSE) diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/shuttle_consoles/shuttle_console.dm similarity index 100% rename from code/modules/shuttle/computer.dm rename to code/modules/shuttle/shuttle_consoles/shuttle_console.dm diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/shuttle_consoles/syndicate.dm similarity index 100% rename from code/modules/shuttle/syndicate.dm rename to code/modules/shuttle/shuttle_consoles/syndicate.dm diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/shuttle_consoles/white_ship.dm similarity index 100% rename from code/modules/shuttle/white_ship.dm rename to code/modules/shuttle/shuttle_consoles/white_ship.dm diff --git a/code/modules/shuttle/stationary_port/port_types.dm b/code/modules/shuttle/stationary_port/port_types.dm new file mode 100644 index 0000000000000..047856566c2db --- /dev/null +++ b/code/modules/shuttle/stationary_port/port_types.dm @@ -0,0 +1,100 @@ +/// Subtype for escape pod ports so that we can give them trait behaviour +/obj/docking_port/stationary/escape_pod + name = "escape pod loader" + height = 5 + width = 3 + dwidth = 1 + roundstart_template = /datum/map_template/shuttle/escape_pod/default + /// Set to true if you have a snowflake escape pod dock which needs to always have the normal pod or some other one + var/enforce_specific_pod = FALSE + +/obj/docking_port/stationary/escape_pod/Initialize(mapload) + . = ..() + if (enforce_specific_pod) + return + + if (HAS_TRAIT(SSstation, STATION_TRAIT_SMALLER_PODS)) + roundstart_template = /datum/map_template/shuttle/escape_pod/cramped + return + if (HAS_TRAIT(SSstation, STATION_TRAIT_BIGGER_PODS)) + roundstart_template = /datum/map_template/shuttle/escape_pod/luxury + +// should fit the syndicate infiltrator, and smaller ships like the battlecruiser corvettes and fighters +/obj/docking_port/stationary/syndicate + name = "near the station" + dheight = 1 + dwidth = 12 + height = 17 + width = 23 + shuttle_id = "syndicate_nearby" + +/obj/docking_port/stationary/syndicate/northwest + name = "northwest of station" + shuttle_id = "syndicate_nw" + +/obj/docking_port/stationary/syndicate/northeast + name = "northeast of station" + shuttle_id = "syndicate_ne" + +/obj/docking_port/stationary/transit + name = "In Transit" + override_can_dock_checks = TRUE + /// The turf reservation returned by the transit area request + var/datum/turf_reservation/reserved_area + /// The area created during the transit area reservation + var/area/shuttle/transit/assigned_area + /// The mobile port that owns this transit port + var/obj/docking_port/mobile/owner + +/obj/docking_port/stationary/transit/Initialize(mapload) + . = ..() + SSshuttle.transit_docking_ports += src + +/obj/docking_port/stationary/transit/Destroy(force=FALSE) + if(force) + if(get_docked()) + log_world("A transit dock was destroyed while something was docked to it.") + SSshuttle.transit_docking_ports -= src + if(owner) + if(owner.assigned_transit == src) + owner.assigned_transit = null + owner = null + if(!QDELETED(reserved_area)) + qdel(reserved_area) + reserved_area = null + return ..() + +/obj/docking_port/stationary/picked + ///Holds a list of map name strings for the port to pick from + var/list/shuttlekeys + +/obj/docking_port/stationary/picked/Initialize(mapload) + . = ..() + if(!LAZYLEN(shuttlekeys)) + WARNING("Random docking port [shuttle_id] loaded with no shuttle keys") + return + var/selectedid = pick(shuttlekeys) + roundstart_template = SSmapping.shuttle_templates[selectedid] + +/obj/docking_port/stationary/picked/whiteship + name = "Deep Space" + shuttle_id = "whiteship_away" + height = 45 //Width and height need to remain in sync with the size of whiteshipdock.dmm, otherwise we'll get overflow + width = 44 + dheight = 18 + dwidth = 18 + dir = 2 + shuttlekeys = list( + "whiteship_meta", + "whiteship_pubby", + "whiteship_box", + "whiteship_cere", + "whiteship_kilo", + "whiteship_donut", + "whiteship_delta", + "whiteship_tram", + "whiteship_personalshuttle", + "whiteship_obelisk", + "whiteship_birdshot", + ) + diff --git a/code/modules/shuttle/stationary_port/stationary_port.dm b/code/modules/shuttle/stationary_port/stationary_port.dm new file mode 100644 index 0000000000000..49437730cb071 --- /dev/null +++ b/code/modules/shuttle/stationary_port/stationary_port.dm @@ -0,0 +1,91 @@ + +/obj/docking_port/stationary + name = "dock" + + var/last_dock_time + + /// Map template to load when the dock is loaded + var/datum/map_template/shuttle/roundstart_template + /// Used to check if the shuttle template is enabled in the config file + var/json_key + ///If true, the shuttle can always dock at this docking port, despite its area checks, or if something is already docked + var/override_can_dock_checks = FALSE + +/obj/docking_port/stationary/Initialize(mapload) + . = ..() + register() + if(!area_type) + var/area/place = get_area(src) + area_type = place?.type // We might be created in nullspace + + if(mapload) + for(var/turf/T in return_turfs()) + T.turf_flags |= NO_RUINS + + if(SSshuttle.initialized) + INVOKE_ASYNC(SSshuttle, TYPE_PROC_REF(/datum/controller/subsystem/shuttle, setup_shuttles), list(src)) + +#ifdef TESTING + highlight("#f00") +#endif + +/obj/docking_port/stationary/Destroy(force) + if(force) + unregister() + return ..() + +/obj/docking_port/stationary/register(replace = FALSE) + . = ..() + if(!shuttle_id) + shuttle_id = "dock" + else + port_destinations = shuttle_id + + if(!name) + name = "dock" + + var/counter = SSshuttle.assoc_stationary[shuttle_id] + if(!replace || !counter) + if(counter) + counter++ + SSshuttle.assoc_stationary[shuttle_id] = counter + shuttle_id = "[shuttle_id]_[counter]" + name = "[name] [counter]" + else + SSshuttle.assoc_stationary[shuttle_id] = 1 + + if(!port_destinations) + port_destinations = shuttle_id + + SSshuttle.stationary_docking_ports += src + +/obj/docking_port/stationary/unregister() + . = ..() + SSshuttle.stationary_docking_ports -= src + +/obj/docking_port/stationary/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) + . = ..() + if(area_type) // We already have one + return + var/area/newarea = get_area(src) + area_type = newarea?.type + +/obj/docking_port/stationary/proc/load_roundstart() + if(json_key) + var/sid = SSmapping.current_map.shuttles[json_key] + roundstart_template = SSmapping.shuttle_templates[sid] + if(!roundstart_template) + CRASH("json_key:[json_key] value \[[sid]\] resulted in a null shuttle template for [src]") + else if(roundstart_template) // passed a PATH + var/sid = "[initial(roundstart_template.port_id)]_[initial(roundstart_template.suffix)]" + + roundstart_template = SSmapping.shuttle_templates[sid] + if(!roundstart_template) + CRASH("Invalid path ([sid]/[roundstart_template]) passed to docking port.") + + if(roundstart_template) + SSshuttle.action_load(roundstart_template, src) + +//returns first-found touching shuttleport +/obj/docking_port/stationary/get_docked() + . = locate(/obj/docking_port/mobile) in loc diff --git a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm index 02f19f45323c2..743ea8b23d880 100644 --- a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm +++ b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm @@ -31,7 +31,7 @@ /datum/action/cooldown/spell/aoe/magic_missile/proc/fire_projectile(atom/victim, mob/caster) var/obj/projectile/to_fire = new projectile_type() - to_fire.preparePixelProjectile(victim, caster) + to_fire.aim_projectile(victim, caster) SEND_SIGNAL(caster, COMSIG_MOB_SPELL_PROJECTILE, src, victim, to_fire) to_fire.fire() diff --git a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm index 2795efc2b201b..aa6a58b1341be 100644 --- a/code/modules/spells/spell_types/jaunt/bloodcrawl.dm +++ b/code/modules/spells/spell_types/jaunt/bloodcrawl.dm @@ -5,7 +5,7 @@ */ /datum/action/cooldown/spell/jaunt/bloodcrawl name = "Blood Crawl" - desc = "Allows you to phase in and out of existance via pools of blood." + desc = "Allows you to phase in and out of existence via pools of blood." background_icon_state = "bg_demon" overlay_icon_state = "bg_demon_border" @@ -158,7 +158,7 @@ */ /datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon name = "Voracious Blood Crawl" - desc = "Allows you to phase in and out of existance via pools of blood. If you are dragging someone in critical or dead, \ + desc = "Allows you to phase in and out of existence via pools of blood. If you are dragging someone in critical or dead, \ they will be consumed by you, fully healing you." /// The sound played when someone's consumed. var/consume_sound = 'sound/effects/magic/demon_consume.ogg' @@ -285,7 +285,7 @@ */ /datum/action/cooldown/spell/jaunt/bloodcrawl/slaughter_demon/funny name = "Friendly Blood Crawl" - desc = "Allows you to phase in and out of existance via pools of blood. If you are dragging someone in critical or dead - I mean, \ + desc = "Allows you to phase in and out of existence via pools of blood. If you are dragging someone in critical or dead - I mean, \ sleeping, when entering a blood pool, they will be invited to a party and fully heal you!" consume_sound = 'sound/misc/scary_horn.ogg' @@ -332,7 +332,7 @@ // Heals them back to state one if(!friend.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE)) continue - playsound(release_turf, consumed_mobs, 50, TRUE, -1) + friend.playsound_local(release_turf, 'sound/effects/magic/exit_blood.ogg', 50, TRUE, -1) to_chat(friend, span_clown("You leave [source]'s warm embrace, and feel ready to take on the world.")) diff --git a/code/modules/spells/spell_types/pointed/_pointed.dm b/code/modules/spells/spell_types/pointed/_pointed.dm index 9189106d87424..39d6fb9d6736f 100644 --- a/code/modules/spells/spell_types/pointed/_pointed.dm +++ b/code/modules/spells/spell_types/pointed/_pointed.dm @@ -101,7 +101,7 @@ */ /datum/action/cooldown/spell/pointed/projectile /// What projectile we create when we shoot our spell. - var/obj/projectile/magic/projectile_type = /obj/projectile/magic/teleport + var/obj/projectile/projectile_type = /obj/projectile/magic/teleport /// How many projectiles we can fire per cast. Not all at once, per click, kinda like charges var/projectile_amount = 1 /// How many projectiles we have yet to fire, based on projectile_amount @@ -168,7 +168,7 @@ /datum/action/cooldown/spell/pointed/projectile/proc/ready_projectile(obj/projectile/to_fire, atom/target, mob/user, iteration) to_fire.firer = owner to_fire.fired_from = src - to_fire.preparePixelProjectile(target, owner) + to_fire.aim_projectile(target, owner) RegisterSignal(to_fire, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(on_cast_hit)) if(istype(to_fire, /obj/projectile/magic)) diff --git a/code/modules/spells/spell_types/pointed/spell_cards.dm b/code/modules/spells/spell_types/pointed/spell_cards.dm index 65f9561658b7b..bbaed5ad66d64 100644 --- a/code/modules/spells/spell_types/pointed/spell_cards.dm +++ b/code/modules/spells/spell_types/pointed/spell_cards.dm @@ -81,4 +81,4 @@ to_fire.pixel_x = rand(-projectile_location_spread_amount, projectile_location_spread_amount) to_fire.pixel_y = rand(-projectile_location_spread_amount, projectile_location_spread_amount) - to_fire.preparePixelProjectile(target, user, null, current_angle) + to_fire.aim_projectile(target, user, null, current_angle) diff --git a/code/modules/spells/spell_types/projectile/_basic_projectile.dm b/code/modules/spells/spell_types/projectile/_basic_projectile.dm index 343de438cd669..bcab5633eccb7 100644 --- a/code/modules/spells/spell_types/projectile/_basic_projectile.dm +++ b/code/modules/spells/spell_types/projectile/_basic_projectile.dm @@ -25,6 +25,6 @@ /datum/action/cooldown/spell/basic_projectile/proc/fire_projectile(atom/target, atom/caster) var/obj/projectile/to_fire = new projectile_type() - to_fire.preparePixelProjectile(target, caster) + to_fire.aim_projectile(target, caster) SEND_SIGNAL(caster, COMSIG_MOB_SPELL_PROJECTILE, src, target, to_fire) to_fire.fire() diff --git a/code/modules/spells/spell_types/self/splattercasting_spell.dm b/code/modules/spells/spell_types/self/splattercasting_spell.dm index 184a2afab7ca2..e76f8e3c1b9bf 100644 --- a/code/modules/spells/spell_types/self/splattercasting_spell.dm +++ b/code/modules/spells/spell_types/self/splattercasting_spell.dm @@ -28,7 +28,7 @@ brings unimaginable momentary torment as your heart stops, and your skin grows cold. You are now \ merely a vessel for the arcane flow. Soon, all that is left is not pain, but hunger.")) - cast_on.set_species(/datum/species/vampire) + cast_on.set_species(/datum/species/human/vampire) cast_on.blood_volume = BLOOD_VOLUME_NORMAL ///for predictable blood total amounts when the spell is first cast. cast_on.AddComponent(/datum/component/splattercasting) diff --git a/code/modules/spells/spell_types/shapeshift/_shape_status.dm b/code/modules/spells/spell_types/shapeshift/_shape_status.dm index f8f44817a5932..9e1284d27f60c 100644 --- a/code/modules/spells/spell_types/shapeshift/_shape_status.dm +++ b/code/modules/spells/spell_types/shapeshift/_shape_status.dm @@ -243,6 +243,7 @@ desc = "Your form is not your own... you're shapeshifted into another creature! \ A wizard could turn you back - or maybe you're stuck like this for good?" icon_state = "shapeshifted" + clickable_glow = TRUE /atom/movable/screen/alert/status_effect/shapeshifted/Click(location, control, params) . = ..() diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 683afe605c983..7467f85d79e93 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -212,7 +212,7 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) var/turf/point = get_front_turf() var/turf/target = get_target_turf() - var/atom/movable/blocker + var/atom/blocker for(var/T in get_line(get_step(point, dir), target)) var/turf/tile = T if(SEND_SIGNAL(tile, COMSIG_ATOM_BSA_BEAM) & COMSIG_ATOM_BLOCKS_BSA_BEAM) diff --git a/code/modules/station_goals/meteor_shield.dm b/code/modules/station_goals/meteor_shield.dm index 84a61395a4b9c..e4b76f600ca80 100644 --- a/code/modules/station_goals/meteor_shield.dm +++ b/code/modules/station_goals/meteor_shield.dm @@ -61,13 +61,14 @@ name = "\improper Meteor Shield Satellite" desc = "A meteor point-defense satellite." mode = "M-SHIELD" - processing_flags = START_PROCESSING_MANUALLY - subsystem_type = /datum/controller/subsystem/processing/fastprocess /// the range a meteor shield sat can destroy meteors var/kill_range = 14 //emag behavior dark matt-eor stuff + /// Proximity monitor associated with this atom, needed for it to work. + var/datum/proximity_monitor/proximity_monitor + /// amount of emagged active meteor shields var/static/emagged_active_meteor_shields = 0 /// the highest amount of shields you've ever emagged @@ -94,34 +95,43 @@ return FALSE return TRUE -/obj/machinery/satellite/meteor_shield/process() - if(obj_flags & EMAGGED) - //kills the processing because emagged meteor shields no longer stop meteors in any way - return PROCESS_KILL - if(!active) +/obj/machinery/satellite/meteor_shield/Initialize(mapload) + . = ..() + proximity_monitor = new(src, /* range = */ 0) + +/obj/machinery/satellite/meteor_shield/HasProximity(atom/movable/proximity_check_mob) + . = ..() + if(!istype(proximity_check_mob, /obj/effect/meteor)) return - for(var/obj/effect/meteor/meteor_to_destroy in GLOB.meteor_list) - if(meteor_to_destroy.z != z) - continue - if(get_dist(meteor_to_destroy, src) > kill_range) - continue - if(space_los(meteor_to_destroy)) - var/turf/beam_from = get_turf(src) - beam_from.Beam(get_turf(meteor_to_destroy), icon_state="sat_beam", time = 5) - if(meteor_to_destroy.shield_defense(src)) - qdel(meteor_to_destroy) + var/obj/effect/meteor/meteor_to_destroy = proximity_check_mob + if(space_los(meteor_to_destroy)) + var/turf/beam_from = get_turf(src) + beam_from.Beam(get_turf(meteor_to_destroy), icon_state="sat_beam", time = 5) + if(meteor_to_destroy.shield_defense(src)) + qdel(meteor_to_destroy) /obj/machinery/satellite/meteor_shield/toggle(user) + if(user) + balloon_alert(user, "looking for [active ? "off" : "on"] button") + if(user && !do_after(user, 2 SECONDS, src, IGNORE_HELD_ITEM)) + return FALSE if(!..(user)) return FALSE if(obj_flags & EMAGGED) update_emagged_meteor_sat(user) + if(active) + proximity_monitor.set_range(kill_range) + else + proximity_monitor.set_range(0) + + var/datum/station_goal/station_shield/goal = SSstation.get_station_goal(/datum/station_goal/station_shield) goal?.update_coverage() /obj/machinery/satellite/meteor_shield/Destroy() . = ..() + QDEL_NULL(proximity_monitor) if(obj_flags & EMAGGED) //satellites that are destroying are not active, this will count down the number of emagged sats update_emagged_meteor_sat() @@ -181,6 +191,7 @@ for(var/datum/round_event_control/stray_meteor/stray_meteor in SSevents.control) stray_meteor.weight *= mod + #undef EMAGGED_METEOR_SHIELD_THRESHOLD_ONE #undef EMAGGED_METEOR_SHIELD_THRESHOLD_TWO #undef EMAGGED_METEOR_SHIELD_THRESHOLD_THREE diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index df574e8b3be9e..d6e6e101c6e39 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -372,10 +372,13 @@ if(ishuman(victim)) var/mob/living/carbon/human/human_victim = victim - if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH) || HAS_TRAIT(victim, TRAIT_GOLEM_LIMBATTACHMENT)) // DOPPLER EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH)) - // DOPPLER EDIT ADDITION START - golems lol + if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH) || HAS_TRAIT(victim, TRAIT_GOLEM_LIMBATTACHMENT) || HAS_TRAIT(victim, TRAIT_ROBOTIC_LIMBATTACHMENT)) // DOPPLER EDIT CHANGE - ORIGINAL: if(HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) || HAS_TRAIT(src, TRAIT_EASY_ATTACH)) + // DOPPLER EDIT ADDITION START - golems lol && cybernetic limb mount quirk if(HAS_TRAIT(victim, TRAIT_GOLEM_LIMBATTACHMENT) && !(bodytype & BODYTYPE_GOLEM)) //if we're trying to attach something that isn't a fuggin rock, end out return + if (!(HAS_TRAIT(src, TRAIT_EASY_ATTACH)) && !HAS_TRAIT(victim, TRAIT_LIMBATTACHMENT) && HAS_TRAIT(victim, TRAIT_ROBOTIC_LIMBATTACHMENT) && !(bodytype & BODYTYPE_ROBOTIC)) //if we're trying to attach something that's not robotic, end out - but ONLY if we have this quirk + to_chat(user, span_warning("[human_victim]'s body rejects [src]! It can only accept robotic limbs.")) + return // DOPPLER EDIT ADDITION END if(!human_victim.get_bodypart(body_zone)) user.temporarilyRemoveItemFromInventory(src, TRUE) @@ -1268,14 +1271,11 @@ * * gauze- Just the gauze stack we're taking a sheet from to apply here */ /obj/item/bodypart/proc/apply_gauze(obj/item/stack/medical/gauze/new_gauze) - if(!istype(new_gauze) || !new_gauze.absorption_capacity) + if(!istype(new_gauze) || !new_gauze.absorption_capacity || !new_gauze.use(1)) return - var/newly_gauzed = FALSE - if(!current_gauze) - newly_gauzed = TRUE + var/newly_gauzed = !current_gauze QDEL_NULL(current_gauze) current_gauze = new new_gauze.type(src, 1) - new_gauze.use(1) current_gauze.gauzed_bodypart = src if(newly_gauzed) SEND_SIGNAL(src, COMSIG_BODYPART_GAUZED, current_gauze, new_gauze) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index dec8efb154eae..2f9a42e0d1f9c 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -40,11 +40,12 @@ ///Get the bodypart for whatever hand we have active, Only relevant for carbons /mob/proc/get_active_hand() + RETURN_TYPE(/obj/item/bodypart) return FALSE /mob/living/carbon/get_active_hand() var/which_hand = BODY_ZONE_PRECISE_L_HAND - if(!(active_hand_index % RIGHT_HANDS)) + if(IS_RIGHT_INDEX(active_hand_index)) which_hand = BODY_ZONE_PRECISE_R_HAND return get_bodypart(check_zone(which_hand)) @@ -54,7 +55,7 @@ /mob/living/carbon/get_inactive_hand() var/which_hand = BODY_ZONE_PRECISE_R_HAND - if(!(active_hand_index % RIGHT_HANDS)) + if(IS_RIGHT_INDEX(active_hand_index)) which_hand = BODY_ZONE_PRECISE_L_HAND return get_bodypart(check_zone(which_hand)) @@ -64,7 +65,7 @@ /mob/living/carbon/has_left_hand(check_disabled = TRUE) for(var/obj/item/bodypart/hand_instance in hand_bodyparts) - if(!(hand_instance.held_index % RIGHT_HANDS) || (check_disabled && hand_instance.bodypart_disabled)) + if(IS_RIGHT_INDEX(hand_instance.held_index) || (check_disabled && hand_instance.bodypart_disabled)) continue return TRUE return FALSE @@ -80,7 +81,7 @@ /mob/living/carbon/has_right_hand(check_disabled = TRUE) for(var/obj/item/bodypart/hand_instance in hand_bodyparts) - if(hand_instance.held_index % RIGHT_HANDS || (check_disabled && hand_instance.bodypart_disabled)) + if(IS_LEFT_INDEX(hand_instance.held_index) || (check_disabled && hand_instance.bodypart_disabled)) continue return TRUE return FALSE diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 25f66f40af9a8..c7e1f7f7846da 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -106,7 +106,7 @@ bodypart_flags = BODYPART_UNREMOVABLE max_damage = LIMB_MAX_HP_ALIEN_CORE acceptable_bodyshape = BODYSHAPE_HUMANOID - wing_types = NONE + wing_types = null /obj/item/bodypart/chest/larva icon = 'icons/mob/human/species/alien/bodyparts.dmi' @@ -119,7 +119,7 @@ max_damage = LIMB_MAX_HP_ALIEN_LARVA bodytype = BODYTYPE_LARVA_PLACEHOLDER | BODYTYPE_ORGANIC acceptable_bodytype = BODYTYPE_LARVA_PLACEHOLDER - wing_types = NONE + wing_types = null /// Parent Type for arms, should not appear in game. /obj/item/bodypart/arm diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index d9e25302ad7c1..3e42535ab101f 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -574,7 +574,7 @@ body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED /obj/item/bodypart/leg/right/robot/advanced - name = "heavy robotic right leg" + name = "advanced robotic right leg" desc = "An advanced cybernetic leg, capable of greater feats of strength and durability." icon_static = 'icons/mob/augmentation/advanced_augments.dmi' icon = 'icons/mob/augmentation/advanced_augments.dmi' diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm index 016a80682cf53..33e07b09fcdf7 100644 --- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm @@ -22,7 +22,7 @@ is_dimorphic = FALSE dmg_overlay_type = null brute_modifier = 1.25 //ethereal are weak to brute damages - wing_types = NONE + wing_types = null //bodypart_traits = list(TRAIT_NO_UNDERWEAR) //DOPPLER EDIT REMOVAL /obj/item/bodypart/chest/ethereal/update_limb(dropping_limb, is_creating) diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index d5d44b1f1f1b8..5bd2ac2e3c943 100644 --- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -12,7 +12,7 @@ is_dimorphic = FALSE burn_modifier = 2 biological_state = (BIO_FLESH|BIO_BLOODED) - wing_types = NONE + wing_types = null /obj/item/bodypart/arm/left/snail limb_id = SPECIES_SNAIL @@ -58,7 +58,7 @@ limb_id = SPECIES_ABDUCTOR is_dimorphic = FALSE should_draw_greyscale = FALSE - wing_types = NONE + wing_types = null /obj/item/bodypart/chest/abductor/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_GREY) @@ -177,7 +177,7 @@ limb_id = SPECIES_ZOMBIE is_dimorphic = FALSE should_draw_greyscale = FALSE - wing_types = NONE + wing_types = null /obj/item/bodypart/arm/left/zombie limb_id = SPECIES_ZOMBIE @@ -216,7 +216,7 @@ limb_id = SPECIES_PODPERSON is_dimorphic = TRUE burn_modifier = 1.25 - wing_types = NONE + wing_types = null /obj/item/bodypart/chest/pod/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_FLOWERPOT) @@ -292,7 +292,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE burn_modifier = 1.5 - wing_types = NONE + wing_types = null /obj/item/bodypart/arm/left/shadow limb_id = SPECIES_SHADOW @@ -380,7 +380,7 @@ is_dimorphic = TRUE bodypart_traits = list(TRAIT_NO_JUMPSUIT) burn_modifier = 1.25 - wing_types = NONE + wing_types = null /obj/item/bodypart/arm/left/mushroom limb_id = SPECIES_MUSHROOM @@ -483,7 +483,7 @@ should_draw_greyscale = FALSE dmg_overlay_type = null bodypart_traits = list(TRAIT_NO_JUMPSUIT) - wing_types = NONE + wing_types = null /obj/item/bodypart/chest/golem/Initialize(mapload) worn_belt_offset = new( diff --git a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm index 0125601bda5a7..b668008e44c05 100644 --- a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm @@ -28,7 +28,7 @@ brute_modifier = 1.5 //Plasmemes are weak burn_modifier = 1.5 //Plasmemes are weak bodypart_flags = BODYPART_UNHUSKABLE - wing_types = NONE + wing_types = null /obj/item/bodypart/chest/plasmaman/get_butt_sprite() return icon('icons/mob/butts.dmi', BUTT_SPRITE_PLASMA) diff --git a/code/modules/surgery/burn_dressing.dm b/code/modules/surgery/burn_dressing.dm index 9ffeaef089553..54aa82f43b434 100644 --- a/code/modules/surgery/burn_dressing.dm +++ b/code/modules/surgery/burn_dressing.dm @@ -100,7 +100,7 @@ span_notice("[user] successfully excises some of the infected flesh from [target]'s [target.parse_zone_with_bodypart(target_zone)]!"), ) log_combat(user, target, "excised infected flesh in", addition="COMBAT MODE: [uppertext(user.combat_mode)]") - surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND) + target.apply_damage(3, BRUTE, surgery.operated_bodypart, wound_bonus = CANT_WOUND, sharpness = SHARP_EDGED, attacking_item = tool) burn_wound.infestation -= infestation_removed burn_wound.sanitization += sanitization_added if(burn_wound.infestation <= 0) @@ -118,7 +118,7 @@ span_notice("[user] carves away some of the healthy flesh from [target]'s [target.parse_zone_with_bodypart(target_zone)] with [tool]!"), span_notice("[user] carves away some of the healthy flesh from [target]'s [target.parse_zone_with_bodypart(target_zone)]!"), ) - surgery.operated_bodypart.receive_damage(brute=rand(4,8), sharpness=TRUE) + target.apply_damage(rand(4, 8), BRUTE, surgery.operated_bodypart, sharpness = SHARP_EDGED, attacking_item = tool) /datum/surgery_step/debride/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) if(!..()) diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index a5f4a0505f6fd..712c3a2901c07 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -12,6 +12,47 @@ /datum/surgery_step/close, ) +//So far, this surgery type should be the only way carbon mobs can be fishing spots, also because the comp doesn't allow dupes. +/datum/surgery/organ_manipulation/next_step(mob/living/user, modifiers) + . = ..() + if(!.) + return + + // We've completed the surgery + if(status > length(steps)) + return + + if(!ispath(steps[status], /datum/surgery_step/manipulate_organs)) + //The manipulate_organs step either hasn't been reached yet or we're already past it. + if(!HAS_TRAIT(target, TRAIT_FISHING_SPOT)) + return + remove_fishing_spot() + return + + if(HAS_TRAIT(target, TRAIT_FISHING_SPOT)) + return + + target.AddComponent(/datum/component/fishing_spot, /datum/fish_source/surgery) + +/datum/surgery/organ_manipulation/Destroy() + if(QDELETED(target) || !HAS_TRAIT(target, TRAIT_FISHING_SPOT)) + return ..() + // The surgery is not finished yet and we're currently on manipulate organs step + if(status <= length(steps) && ispath(steps[status], /datum/surgery_step/manipulate_organs)) + remove_fishing_spot() + return ..() + +/** + * The target is a fishing spot, but we're past the step that allows us to fish organs from him, so we need + * to check if there are other organ manipulation surgeries that still meet this criteria before we remove + * the component + */ +/datum/surgery/organ_manipulation/proc/remove_fishing_spot() + for(var/datum/surgery/organ_manipulation/manipulation in target.surgeries) + if(manipulation != src && ispath(manipulation.steps[manipulation.status], /datum/surgery_step/manipulate_organs)) + return + qdel(target.GetComponent(/datum/component/fishing_spot)) + /datum/surgery/organ_manipulation/soft possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) steps = list( @@ -57,7 +98,7 @@ /datum/surgery/organ_manipulation/mechanic name = "Hardware Manipulation" requires_bodypart_type = BODYTYPE_ROBOTIC - surgery_flags = SURGERY_SELF_OPERABLE | SURGERY_REQUIRE_LIMB + surgery_flags = SURGERY_SELF_OPERABLE | SURGERY_REQUIRE_LIMB | SURGERY_CHECK_TOOL_BEHAVIOUR possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD) steps = list( /datum/surgery_step/mechanic_open, @@ -69,32 +110,6 @@ /datum/surgery_step/mechanic_close, ) -/datum/surgery/organ_manipulation/mechanic/next_step(mob/living/user, modifiers) - if(location != user.zone_selected) - return FALSE - if(user.combat_mode) - return FALSE - if(step_in_progress) - return TRUE - - var/try_to_fail = FALSE - if(LAZYACCESS(modifiers, RIGHT_CLICK)) - try_to_fail = TRUE - - var/datum/surgery_step/step = get_surgery_step() - if(isnull(step)) - return FALSE - var/obj/item/tool = user.get_active_held_item() - if(tool) - tool = tool.get_proxy_attacker_for(target, user) - if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) - return TRUE - if(tool && tool.tool_behaviour) //Mechanic organ manipulation isn't done with just surgery tools - to_chat(user, span_warning("This step requires a different tool!")) - return TRUE - - return FALSE - /datum/surgery/organ_manipulation/mechanic/soft possible_locs = list( BODY_ZONE_PRECISE_GROIN, @@ -176,7 +191,7 @@ to_chat(user, span_warning("[target_organ] seems to have been chewed on, you can't use this!")) return SURGERY_STEP_FAIL - if(!can_use_organ(user, meatslab)) + if(!can_use_organ(meatslab)) return SURGERY_STEP_FAIL if (target_zone == BODY_ZONE_PRECISE_EYES) @@ -196,7 +211,7 @@ var/list/unfiltered_organs = target.get_organs_for_zone(target_zone) var/list/organs = list() for(var/organ in unfiltered_organs) - if(can_use_organ(user, organ)) + if(can_use_organ(organ)) organs.Add(organ) if (target_zone == BODY_ZONE_PRECISE_EYES) target_zone = check_zone(target_zone) @@ -295,7 +310,7 @@ return ..() ///You can never use this MUHAHAHAHAHAHAH (because its the byond version of abstract) -/datum/surgery_step/manipulate_organs/proc/can_use_organ(mob/user, obj/item/organ/organ) +/datum/surgery_step/manipulate_organs/proc/can_use_organ(obj/item/organ/organ) return FALSE ///Surgery step for internal organs, like hearts and brains @@ -304,7 +319,7 @@ name = "manipulate organs (hemostat/organ)" ///only operate on internal organs -/datum/surgery_step/manipulate_organs/internal/can_use_organ(mob/user, obj/item/organ/organ) +/datum/surgery_step/manipulate_organs/internal/can_use_organ(obj/item/organ/organ) return !(organ.organ_flags & ORGAN_EXTERNAL) ///prosthetic surgery gives full effectiveness to crowbars (and hemostats) @@ -318,7 +333,7 @@ name = "manipulate features (hemostat/feature)" ///Only operate on external organs -/datum/surgery_step/manipulate_organs/external/can_use_organ(mob/user, obj/item/organ/organ) +/datum/surgery_step/manipulate_organs/external/can_use_organ(obj/item/organ/organ) return (organ.organ_flags & ORGAN_EXTERNAL) ///prosthetic surgery gives full effectiveness to crowbars (and hemostats) diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index e2f05a9ed5610..1f036ad3be9bb 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -85,6 +85,7 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) if(bodypart_overlay) setup_bodypart_overlay() + START_PROCESSING(SSobj, src) /obj/item/organ/Destroy() if(bodypart_owner && !owner && !QDELETED(bodypart_owner)) @@ -126,10 +127,6 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) return owner.remove_status_effect(status, type) -/obj/item/organ/proc/on_owner_examine(datum/source, mob/user, list/examine_list) - SIGNAL_HANDLER - return - /obj/item/organ/proc/on_find(mob/living/finder) return @@ -140,14 +137,43 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) if(!IS_ROBOTIC_ORGAN(src) && (clean_types & CLEAN_TYPE_BLOOD)) add_blood_DNA(blood_dna_info) -/obj/item/organ/process(seconds_per_tick, times_fired) - return +/obj/item/organ/proc/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person + if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN)) + return -/obj/item/organ/proc/on_death(seconds_per_tick, times_fired) - return + if(owner) + if(owner.bodytemperature > T0C) + var/air_temperature_factor = min((owner.bodytemperature - T0C) / 20, 1) + apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor) + else + var/datum/gas_mixture/exposed_air = return_air() + if(exposed_air && exposed_air.temperature > T0C) + var/air_temperature_factor = min((exposed_air.temperature - T0C) / 20, 1) + apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor) -/obj/item/organ/proc/on_life(seconds_per_tick, times_fired) - return +/obj/item/organ/proc/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing + if(organ_flags & ORGAN_FAILING) + handle_failing_organs(seconds_per_tick) + return + + if(failure_time > 0) + failure_time-- + + if(organ_flags & ORGAN_EMP) //Synthetic organ has been emped, is now failing. + apply_organ_damage(decay_factor * maxHealth * seconds_per_tick) + return + + if(!damage) // No sense healing if you're not even hurt bro + return + + if(IS_ROBOTIC_ORGAN(src)) // Robotic organs don't naturally heal + return + + ///Damage decrements by a percent of its maxhealth + var/healing_amount = healing_factor + ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's health + healing_amount += (owner.satiety > 0) ? (4 * healing_factor * owner.satiety / MAX_SATIETY) : 0 + apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap /obj/item/organ/examine(mob/user) . = ..() @@ -166,11 +192,14 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) ///Used as callbacks by object pooling /obj/item/organ/proc/exit_wardrobe() - return + START_PROCESSING(SSobj, src) //See above /obj/item/organ/proc/enter_wardrobe() - return + STOP_PROCESSING(SSobj, src) + +/obj/item/organ/process(seconds_per_tick, times_fired) + on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly. /obj/item/organ/proc/OnEatFrom(eater, feeder) useable = FALSE //You can't use it anymore after eating it you spaztic @@ -288,8 +317,14 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) ears.Insert(src) ears.adjustEarDamage(-INFINITY, -INFINITY) // actually do: set_organ_damage(0) and deaf = 0 +///Organs don't die instantly, and neither should you when you get fucked up /obj/item/organ/proc/handle_failing_organs(seconds_per_tick) - return + if(owner.stat == DEAD) + return + + failure_time += seconds_per_tick + organ_failure(seconds_per_tick) + /** organ_failure * generic proc for handling dying organs diff --git a/code/modules/surgery/organs/external/_visual_organs.dm b/code/modules/surgery/organs/external/_visual_organs.dm index 52ed3e031cb93..682326fa26f05 100644 --- a/code/modules/surgery/organs/external/_visual_organs.dm +++ b/code/modules/surgery/organs/external/_visual_organs.dm @@ -213,13 +213,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times ///Store our old datum here for if our antennae are healed var/original_sprite_datum -/obj/item/organ/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/antennae/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_antennae)) RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_antennae)) -/obj/item/organ/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/antennae/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL)) diff --git a/code/modules/surgery/organs/external/spines.dm b/code/modules/surgery/organs/external/spines.dm index 23c29358a0dfc..77e0f63e6b0e9 100644 --- a/code/modules/surgery/organs/external/spines.dm +++ b/code/modules/surgery/organs/external/spines.dm @@ -16,13 +16,13 @@ organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL -/obj/item/organ/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/spines/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) // If we have a tail, attempt to add a tail spines overlay var/obj/item/organ/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) our_tail?.try_insert_tail_spines(our_tail.bodypart_owner) return ..() -/obj/item/organ/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/spines/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) // If we have a tail, remove any tail spines overlay var/obj/item/organ/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) our_tail?.remove_tail_spines(our_tail.bodypart_owner) diff --git a/code/modules/surgery/organs/external/tails.dm b/code/modules/surgery/organs/external/tails.dm index 8b77159308c2a..2717711e45ca1 100644 --- a/code/modules/surgery/organs/external/tails.dm +++ b/code/modules/surgery/organs/external/tails.dm @@ -23,11 +23,10 @@ ///The overlay for tail spines, if any var/datum/bodypart_overlay/mutant/tail_spines/tail_spines_overlay -/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/tail/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() - if(.) - receiver.clear_mood_event("tail_lost") - receiver.clear_mood_event("tail_balance_lost") + receiver.clear_mood_event("tail_lost") + receiver.clear_mood_event("tail_balance_lost") if(!special) // if some admin wants to give someone tail moodles for tail shenanigans, they can spawn it and do it by hand original_owner ||= WEAKREF(receiver) @@ -85,7 +84,7 @@ bodypart.remove_bodypart_overlay(tail_spines_overlay) QDEL_NULL(tail_spines_overlay) -/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(wag_flags & WAG_WAGGING) diff --git a/code/modules/surgery/organs/external/wings/functional_wings.dm b/code/modules/surgery/organs/external/wings/functional_wings.dm index f773630f8bf1d..0d445cb031428 100644 --- a/code/modules/surgery/organs/external/wings/functional_wings.dm +++ b/code/modules/surgery/organs/external/wings/functional_wings.dm @@ -11,7 +11,7 @@ /datum/action/innate/flight/Activate() var/mob/living/carbon/human/human = owner var/obj/item/organ/wings/functional/wings = human.get_organ_slot(ORGAN_SLOT_EXTERNAL_WINGS) - if(wings?.can_fly(human)) + if(wings?.can_fly()) wings.toggle_flight(human) ///The true wings that you can use to fly and shit (you cant actually shit with them) @@ -29,18 +29,35 @@ // grind_results = list(/datum/reagent/flightpotion = 5) food_reagents = list(/datum/reagent/flightpotion = 5) + var/drift_force = FUNCTIONAL_WING_FORCE + var/stabilizer_force = FUNCTIONAL_WING_STABILIZATION + +/obj/item/organ/wings/functional/Initialize(mapload) + . = ..() + AddComponent( \ + /datum/component/jetpack, \ + TRUE, \ + drift_force, \ + stabilizer_force, \ + COMSIG_WINGS_OPENED, \ + COMSIG_WINGS_CLOSED, \ + null, \ + CALLBACK(src, PROC_REF(can_fly)), \ + CALLBACK(src, PROC_REF(can_fly)), \ + ) + /obj/item/organ/wings/functional/Destroy() QDEL_NULL(fly) return ..() -/obj/item/organ/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/wings/functional/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(QDELETED(fly)) fly = new fly.Grant(receiver) -/obj/item/organ/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/wings/functional/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() fly?.Remove(organ_owner) if(wings_open) @@ -54,14 +71,14 @@ /obj/item/organ/wings/functional/proc/handle_flight(mob/living/carbon/human/human) if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT)) return FALSE - if(!can_fly(human)) + if(!can_fly()) toggle_flight(human) return FALSE return TRUE - ///Check if we're still eligible for flight (wings covered, atmosphere too thin, etc) -/obj/item/organ/wings/functional/proc/can_fly(mob/living/carbon/human/human) +/obj/item/organ/wings/functional/proc/can_fly() + var/mob/living/carbon/human/human = owner if(human.stat || human.body_position == LYING_DOWN || isnull(human.client)) return FALSE //Jumpsuits have tail holes, so it makes sense they have wing holes too @@ -105,13 +122,10 @@ /obj/item/organ/wings/functional/proc/toggle_flight(mob/living/carbon/human/human) if(!HAS_TRAIT_FROM(human, TRAIT_MOVE_FLOATING, SPECIES_FLIGHT_TRAIT)) human.physiology.stun_mod *= 2 - human.add_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) + human.add_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) human.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings) human.AddElement(/datum/element/forced_gravity, 0) passtable_on(human, SPECIES_FLIGHT_TRAIT) - RegisterSignal(human, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move)) - RegisterSignal(human, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff)) - START_PROCESSING(SSnewtonian_movement, src) open_wings() to_chat(human, span_notice("You beat your wings and begin to hover gently above the ground...")) human.set_resting(FALSE, TRUE) @@ -119,50 +133,21 @@ return human.physiology.stun_mod *= 0.5 - human.remove_traits(list(TRAIT_NO_FLOATING_ANIM, TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) + human.remove_traits(list(TRAIT_MOVE_FLOATING, TRAIT_IGNORING_GRAVITY, TRAIT_NOGRAV_ALWAYS_DRIFT), SPECIES_FLIGHT_TRAIT) human.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/wings) human.RemoveElement(/datum/element/forced_gravity, 0) passtable_off(human, SPECIES_FLIGHT_TRAIT) - UnregisterSignal(human, list(COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE)) - STOP_PROCESSING(SSnewtonian_movement, src) to_chat(human, span_notice("You settle gently back onto the ground...")) close_wings() human.refresh_gravity() -/obj/item/organ/wings/functional/proc/on_client_move(mob/source, list/move_args) - SIGNAL_HANDLER - - if (!can_fly(source)) - return - - var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 - source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = FUNCTIONAL_WING_FORCE, controlled_cap = max_drift_force) - source.setDir(source.client.intended_direction) - -/obj/item/organ/wings/functional/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) - SIGNAL_HANDLER - - if (get_dir(source, backup) == movement_dir || source.loc == backup.loc) - return - - if (!can_fly(source) || !source.client.intended_direction || (source.client.intended_direction & get_dir(source, backup))) - return - - return COMPONENT_PREVENT_SPACEMOVE_HALT - -/obj/item/organ/wings/functional/process(seconds_per_tick) - if (!owner || !can_fly(owner) || isnull(owner.drift_handler)) - return - - var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 - owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, FUNCTIONAL_WING_STABILIZATION * (seconds_per_tick * 1 SECONDS)) - ///SPREAD OUR WINGS AND FLLLLLYYYYYY /obj/item/organ/wings/functional/proc/open_wings() var/datum/bodypart_overlay/mutant/wings/functional/overlay = bodypart_overlay overlay.open_wings() wings_open = TRUE owner.update_body_parts() + SEND_SIGNAL(src, COMSIG_WINGS_OPENED, owner) ///close our wings /obj/item/organ/wings/functional/proc/close_wings() @@ -175,6 +160,8 @@ var/turf/location = loc location.Entered(src, NONE) + SEND_SIGNAL(src, COMSIG_WINGS_CLOSED, owner) + ///Bodypart overlay of function wings, including open and close functionality! /datum/bodypart_overlay/mutant/wings/functional ///Are our wings currently open? Change through open_wings or close_wings() diff --git a/code/modules/surgery/organs/external/wings/moth_wings.dm b/code/modules/surgery/organs/external/wings/moth_wings.dm index 265a9ee751226..da35ea25d50e8 100644 --- a/code/modules/surgery/organs/external/wings/moth_wings.dm +++ b/code/modules/surgery/organs/external/wings/moth_wings.dm @@ -16,18 +16,31 @@ ///Store our old datum here for if our burned wings are healed var/original_sprite_datum + var/drift_force = MOTH_WING_FORCE + var/stabilizer_force = MOTH_WING_FORCE + +/obj/item/organ/wings/moth/Initialize(mapload) + . = ..() + AddComponent( \ + /datum/component/jetpack, \ + TRUE, \ + drift_force, \ + stabilizer_force, \ + COMSIG_ORGAN_IMPLANTED, \ + COMSIG_ORGAN_REMOVED, \ + null, \ + CALLBACK(src, PROC_REF(allow_flight)), \ + null, \ + ) + /obj/item/organ/wings/moth/on_mob_insert(mob/living/carbon/receiver) . = ..() RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_wings)) RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_wings)) - RegisterSignal(receiver, COMSIG_MOB_CLIENT_MOVE_NOGRAV, PROC_REF(on_client_move)) - RegisterSignal(receiver, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE, PROC_REF(on_pushoff)) - START_PROCESSING(SSnewtonian_movement, src) /obj/item/organ/wings/moth/on_mob_remove(mob/living/carbon/organ_owner) . = ..() - UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_MOB_CLIENT_MOVE_NOGRAV, COMSIG_MOB_ATTEMPT_HALT_SPACEMOVE)) - STOP_PROCESSING(SSnewtonian_movement, src) + UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL)) /obj/item/organ/wings/moth/make_flap_sound(mob/living/carbon/wing_owner) playsound(wing_owner, 'sound/mobs/humanoids/moth/moth_flutter.ogg', 50, TRUE) @@ -38,14 +51,6 @@ /obj/item/organ/wings/moth/proc/allow_flight() if(!owner || !owner.client) return FALSE - if(!isturf(owner.loc)) - return FALSE - if(!(owner.movement_type & FLOATING) || owner.buckled) - return FALSE - if(owner.pulledby) - return FALSE - if(owner.throwing) - return FALSE if(owner.has_gravity()) return FALSE if(ishuman(owner)) @@ -59,34 +64,6 @@ return TRUE return FALSE -/obj/item/organ/wings/moth/process(seconds_per_tick) - if (!owner || !allow_flight() || isnull(owner.drift_handler)) - return - - var/max_drift_force = (DEFAULT_INERTIA_SPEED / owner.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 - owner.drift_handler.stabilize_drift(owner.client.intended_direction ? dir2angle(owner.client.intended_direction) : null, owner.client.intended_direction ? max_drift_force : 0, MOTH_WING_FORCE * (seconds_per_tick * 1 SECONDS)) - -/obj/item/organ/wings/moth/proc/on_client_move(mob/source, list/move_args) - SIGNAL_HANDLER - - if (!allow_flight()) - return - - var/max_drift_force = (DEFAULT_INERTIA_SPEED / source.cached_multiplicative_slowdown - 1) / INERTIA_SPEED_COEF + 1 - source.newtonian_move(dir2angle(source.client.intended_direction), instant = TRUE, drift_force = MOTH_WING_FORCE, controlled_cap = max_drift_force) - source.setDir(source.client.intended_direction) - -/obj/item/organ/wings/moth/proc/on_pushoff(mob/source, movement_dir, continuous_move, atom/backup) - SIGNAL_HANDLER - - if (get_dir(source, backup) == movement_dir || source.loc == backup.loc) - return - - if (!allow_flight() || !source.client.intended_direction || (source.client.intended_direction & get_dir(source, backup))) - return - - return COMPONENT_PREVENT_SPACEMOVE_HALT - ///check if our wings can burn off ;_; /obj/item/organ/wings/moth/proc/try_burn_wings(mob/living/carbon/human/human) SIGNAL_HANDLER diff --git a/code/modules/surgery/organs/internal/_internal_organ.dm b/code/modules/surgery/organs/internal/_internal_organ.dm deleted file mode 100644 index 0527e6d79808f..0000000000000 --- a/code/modules/surgery/organs/internal/_internal_organ.dm +++ /dev/null @@ -1,86 +0,0 @@ -/obj/item/organ - name = "organ" - -/obj/item/organ/Initialize(mapload) - . = ..() - START_PROCESSING(SSobj, src) - -/obj/item/organ/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) - . = ..() - - // organs_slot must ALWAYS be ordered in the same way as organ_process_order - // Otherwise life processing breaks down - sortTim(owner.organs_slot, GLOBAL_PROC_REF(cmp_organ_slot_asc)) - - STOP_PROCESSING(SSobj, src) - -/obj/item/organ/on_mob_remove(mob/living/carbon/organ_owner, special = FALSE) - . = ..() - - if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE)) - if(organ_owner.stat != DEAD) - organ_owner.investigate_log("has been killed by losing a vital organ ([src]).", INVESTIGATE_DEATHS) - organ_owner.death() - - START_PROCESSING(SSobj, src) - -/obj/item/organ/process(seconds_per_tick, times_fired) - on_death(seconds_per_tick, times_fired) //Kinda hate doing it like this, but I really don't want to call process directly. - -/obj/item/organ/on_death(seconds_per_tick, times_fired) //runs decay when outside of a person - if(organ_flags & (ORGAN_ROBOTIC | ORGAN_FROZEN)) - return - - if(owner) - if(owner.bodytemperature > T0C) - var/air_temperature_factor = min((owner.bodytemperature - T0C) / 20, 1) - apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor) - else - var/datum/gas_mixture/exposed_air = return_air() - if(exposed_air && exposed_air.temperature > T0C) - var/air_temperature_factor = min((exposed_air.temperature - T0C) / 20, 1) - apply_organ_damage(decay_factor * maxHealth * seconds_per_tick * air_temperature_factor) - -/// Called once every life tick on every organ in a carbon's body -/// NOTE: THIS IS VERY HOT. Be careful what you put in here -/// To give you some scale, if there's 100 carbons in the game, they each have maybe 9 organs -/// So that's 900 calls to this proc every life process. Please don't be dumb -/obj/item/organ/on_life(seconds_per_tick, times_fired) //repair organ damage if the organ is not failing - if(organ_flags & ORGAN_FAILING) - handle_failing_organs(seconds_per_tick) - return - - if(failure_time > 0) - failure_time-- - - if(organ_flags & ORGAN_EMP) //Synthetic organ has been emped, is now failing. - apply_organ_damage(decay_factor * maxHealth * seconds_per_tick) - return - - if(!damage) // No sense healing if you're not even hurt bro - return - - if(IS_ROBOTIC_ORGAN(src)) // Robotic organs don't naturally heal - return - - ///Damage decrements by a percent of its maxhealth - var/healing_amount = healing_factor - ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's health - healing_amount += (owner.satiety > 0) ? (4 * healing_factor * owner.satiety / MAX_SATIETY) : 0 - apply_organ_damage(-healing_amount * maxHealth * seconds_per_tick, damage) // pass curent damage incase we are over cap - -///Used as callbacks by object pooling -/obj/item/organ/exit_wardrobe() - START_PROCESSING(SSobj, src) - -//See above -/obj/item/organ/enter_wardrobe() - STOP_PROCESSING(SSobj, src) - -///Organs don't die instantly, and neither should you when you get fucked up -/obj/item/organ/handle_failing_organs(seconds_per_tick) - if(owner.stat == DEAD) - return - - failure_time += seconds_per_tick - organ_failure(seconds_per_tick) diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index a07b8caed6c9f..7d0b249bdbcbc 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -278,6 +278,35 @@ /obj/item/organ/cyberimp/arm/toolset/l zone = BODY_ZONE_L_ARM +//The order of the item list for this implant is not alphabetized due to it actually affecting how it shows up playerside when opening the implant +/obj/item/organ/cyberimp/arm/paperwork + name = "integrated paperwork implant" + desc = "A highly sought out implant among heads of personnel, and other high up command staff in Nanotrasen. This implant allows the user to always have the tools necesarry for paperwork handy" + icon_state = "toolkit_engineering" + actions_types = list(/datum/action/item_action/organ_action/toggle/toolkit) + items_to_create = list( + /obj/item/pen/fountain, + /obj/item/clipboard, + /obj/item/taperecorder, + /obj/item/lighter, + /obj/item/laser_pointer, + /obj/item/stamp, + /obj/item/stamp/denied, + ) + +/obj/item/organ/cyberimp/arm/paperwork/l + zone = BODY_ZONE_L_ARM + +/obj/item/organ/cyberimp/arm/paperwork/emag_act(mob/user, obj/item/card/emag/emag_card) + for(var/datum/weakref/created_item in items_list) + var/obj/potential_tool = created_item.resolve() + if(istype(/obj/item/stamp/chameleon, potential_tool)) + return FALSE + + balloon_alert(user, "experimental stamp unlocked") + items_list += WEAKREF(new /obj/item/stamp/chameleon(src)) + return TRUE + /obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user, obj/item/card/emag/emag_card) for(var/datum/weakref/created_item in items_list) var/obj/potential_knife = created_item.resolve() diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm index 6a1e4272cd567..603acc0eae9d5 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm @@ -175,6 +175,7 @@ COMSIG_THRUSTER_DEACTIVATED, \ THRUSTER_ACTIVATION_FAILED, \ CALLBACK(src, PROC_REF(allow_thrust), 0.01), \ + CALLBACK(src, PROC_REF(allow_thrust), 0.01), \ /datum/effect_system/trail_follow/ion, \ ) @@ -292,7 +293,7 @@ organ_owner.AddElement(/datum/element/forced_gravity, 1) add_organ_trait(TRAIT_STURDY_FRAME) -/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/cyberimp/chest/spine/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() remove_organ_trait(TRAIT_BOULDER_BREAKER) if(stone_overlay) diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm index d720953a24ca5..204247e4de822 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm @@ -27,13 +27,13 @@ eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT) balloon_alert(eye_owner, "hud enabled") -/obj/item/organ/cyberimp/eyes/hud/mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags) +/obj/item/organ/cyberimp/eyes/hud/on_mob_insert(mob/living/carbon/eye_owner, special = FALSE, movement_flags) . = ..() eye_owner.add_traits(HUD_traits, ORGAN_TRAIT) toggled_on = TRUE -/obj/item/organ/cyberimp/eyes/hud/mob_remove(mob/living/carbon/eye_owner, special, movement_flags) +/obj/item/organ/cyberimp/eyes/hud/on_mob_remove(mob/living/carbon/eye_owner, special, movement_flags) . = ..() eye_owner.remove_traits(HUD_traits, ORGAN_TRAIT) toggled_on = FALSE diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm index 42f0e5ac7b237..ffd3f022e7e2a 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm @@ -6,16 +6,6 @@ organ_flags = ORGAN_ROBOTIC failing_desc = "seems to be broken." var/implant_color = COLOR_WHITE - var/implant_overlay - -/obj/item/organ/cyberimp/New(mob/implanted_mob = null) - if(iscarbon(implanted_mob)) - src.Insert(implanted_mob) - if(implant_overlay) - var/mutable_appearance/overlay = mutable_appearance(icon, implant_overlay) - overlay.color = implant_color - add_overlay(overlay) - return ..() //[[[[BRAIN]]]] diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm index 850d45df016db..3443cf9249e33 100644 --- a/code/modules/surgery/organs/internal/ears/_ears.dm +++ b/code/modules/surgery/organs/internal/ears/_ears.dm @@ -52,7 +52,7 @@ . = ..() update_temp_deafness() -/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/ears/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_MOB_SAY) REMOVE_TRAIT(organ_owner, TRAIT_DEAF, EAR_DAMAGE) diff --git a/code/modules/surgery/organs/internal/eyes/_eyes.dm b/code/modules/surgery/organs/internal/eyes/_eyes.dm index 2f88f2e5dea03..a0d6e1e8f2801 100644 --- a/code/modules/surgery/organs/internal/eyes/_eyes.dm +++ b/code/modules/surgery/organs/internal/eyes/_eyes.dm @@ -50,12 +50,14 @@ /// Scarring on this organ var/scarring = NONE -/obj/item/organ/eyes/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() receiver.cure_blind(NO_EYES) apply_damaged_eye_effects() - refresh(receiver, call_update = TRUE) + refresh(receiver, call_update = !special) RegisterSignal(receiver, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act)) + if (scarring) + apply_scarring_effects() /// Refreshes the visuals of the eyes /// If call_update is TRUE, we also will call update_body @@ -85,7 +87,7 @@ if(call_update) affected_human.update_body() -/obj/item/organ/eyes/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/eyes/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(ishuman(organ_owner)) @@ -110,13 +112,17 @@ organ_owner.update_sight() UnregisterSignal(organ_owner, COMSIG_ATOM_BULLET_ACT) -/obj/item/organ/eyes/proc/on_bullet_act(datum/source, obj/projectile/proj, def_zone) +/obj/item/organ/eyes/proc/on_bullet_act(mob/living/carbon/source, obj/projectile/proj, def_zone, piercing_hit, blocked) SIGNAL_HANDLER // Once-a-dozen-rounds level of rare if (def_zone != BODY_ZONE_HEAD || !prob(proj.damage * 0.1) || !(proj.damage_type == BRUTE || proj.damage_type == BURN)) return + if (blocked && source.is_eyes_covered()) + if (!proj.armour_penetration || prob(blocked - proj.armour_penetration)) + return + var/valid_sides = list() if (!(scarring & RIGHT_EYE_SCAR)) valid_sides += RIGHT_EYE_SCAR @@ -270,11 +276,6 @@ owner.cure_blind(EYE_SCARRING_TRAIT) owner.update_body() -/obj/item/organ/eyes/on_mob_insert(mob/living/carbon/eye_owner) - . = ..() - if (scarring) - apply_scarring_effects() - /obj/item/organ/eyes/on_mob_remove(mob/living/carbon/eye_owner) . = ..() if (scarring) @@ -454,7 +455,7 @@ owner.emote("scream") /obj/item/organ/eyes/robotic/xray - name = "\improper X-ray eyes" + name = "x-ray eyes" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." eye_color_left = "000" eye_color_right = "000" @@ -526,7 +527,7 @@ #define UPDATE_EYES_RIGHT 2 /obj/item/organ/eyes/robotic/glow - name = "High Luminosity Eyes" + name = "high luminosity eyes" desc = "Special glowing eyes, used by snowflakes who want to be special." eye_color_left = "000" eye_color_right = "000" @@ -560,14 +561,11 @@ deactivate(close_ui = TRUE) /// Set the initial color of the eyes on insert to be the mob's previous eye color. -/obj/item/organ/eyes/robotic/glow/mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags = DELETE_IF_REPLACED) +/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient, special = FALSE, movement_flags) . = ..() left_eye_color_string = eye_color_left right_eye_color_string = eye_color_right update_mob_eye_color(eye_recipient) - -/obj/item/organ/eyes/robotic/glow/on_mob_insert(mob/living/carbon/eye_recipient) - . = ..() deactivate(close_ui = TRUE) eye.forceMove(eye_recipient) @@ -808,7 +806,7 @@ flash_protect = FLASH_PROTECTION_SENSITIVE /obj/item/organ/eyes/robotic/xray/moth - name = "robotic eyes" + name = "moth x-ray eyes" eye_icon_state = "motheyes" icon_state = "eyeballs-cybermoth" desc = "These cybernetic imitation moth eyes will give you X-ray vision. Blinking is futile. Much like actual moth eyes, very sensitive to bright lights." @@ -820,7 +818,7 @@ icon_state = "eyeballs-cybermoth" /obj/item/organ/eyes/robotic/glow/moth - name = "High Luminosity Moth Eyes" + name = "high luminosity moth eyes" eye_icon_state = "motheyes" base_eye_state = "eyes_mothglow" icon_state = "eyeballs-cybermoth" @@ -871,6 +869,6 @@ apply_organ_damage(-10) //heal quickly . = ..() -/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE) +/obj/item/organ/eyes/night_vision/maintenance_adapted/on_mob_remove(mob/living/carbon/unadapted, special = FALSE, movement_flags) REMOVE_TRAIT(unadapted, TRAIT_UNNATURAL_RED_GLOWY_EYES, ORGAN_TRAIT) return ..() diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm index 20ad378529ff3..c1ebed9afbf17 100644 --- a/code/modules/surgery/organs/internal/heart/_heart.dm +++ b/code/modules/surgery/organs/internal/heart/_heart.dm @@ -163,7 +163,7 @@ accursed.AddComponent(/datum/component/manual_heart, pump_delay = pump_delay, blood_loss = blood_loss, heal_brute = heal_brute, heal_burn = heal_burn, heal_oxy = heal_oxy) -/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE) +/obj/item/organ/heart/cursed/on_mob_remove(mob/living/carbon/accursed, special = FALSE, movement_flags) . = ..() qdel(accursed.GetComponent(/datum/component/manual_heart)) @@ -247,7 +247,7 @@ addtimer(VARSET_CALLBACK(src, stabilization_available, TRUE), 5 MINUTES, TIMER_DELETE_ME) // Largely a sanity check -/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE) +/obj/item/organ/heart/cybernetic/on_mob_remove(mob/living/carbon/heart_owner, special = FALSE, movement_flags) . = ..() if(HAS_TRAIT_FROM(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT)) REMOVE_TRAIT(heart_owner, TRAIT_NOSOFTCRIT, ORGAN_TRAIT) diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm index df60b8243ef72..19f0aef7a5227 100644 --- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm +++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm @@ -28,6 +28,10 @@ ///If the core is removable once socketed. var/core_removable = TRUE +/obj/item/organ/heart/cybernetic/anomalock/Destroy() + QDEL_NULL(core) + return ..() + /obj/item/organ/heart/cybernetic/anomalock/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!core) @@ -39,7 +43,7 @@ RegisterSignal(organ_owner, SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), PROC_REF(activate_survival)) RegisterSignal(organ_owner, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act)) -/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/heart/cybernetic/anomalock/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() if(!core) return diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm index 5c6602834cb07..0e34fc581c3fb 100644 --- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm +++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm @@ -21,14 +21,14 @@ add_atom_colour(ethereal_color, FIXED_COLOUR_PRIORITY) update_appearance() -/obj/item/organ/heart/ethereal/mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags) +/obj/item/organ/heart/ethereal/on_mob_insert(mob/living/carbon/heart_owner, special = FALSE, movement_flags) . = ..() RegisterSignal(heart_owner, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change)) RegisterSignal(heart_owner, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(on_owner_fully_heal)) RegisterSignal(heart_owner, COMSIG_QDELETING, PROC_REF(owner_deleted)) -/obj/item/organ/heart/ethereal/mob_remove(mob/living/carbon/heart_owner, special, movement_flags) +/obj/item/organ/heart/ethereal/on_mob_remove(mob/living/carbon/heart_owner, special, movement_flags) UnregisterSignal(heart_owner, list(COMSIG_MOB_STATCHANGE, COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_QDELETING)) REMOVE_TRAIT(heart_owner, TRAIT_CORPSELOCKED, SPECIES_TRAIT) stop_crystalization_process(heart_owner) diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index 866813d02aa13..e3d6d51704458 100755 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -60,14 +60,15 @@ qdel(GetComponent(/datum/component/squeak)) /// Registers COMSIG_SPECIES_HANDLE_CHEMICAL from owner -/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() RegisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL, PROC_REF(handle_chemical)) + RegisterSignal(organ_owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_owner_examine)) /// Unregisters COMSIG_SPECIES_HANDLE_CHEMICAL from owner -/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/liver/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() - UnregisterSignal(organ_owner, COMSIG_SPECIES_HANDLE_CHEMICAL) + UnregisterSignal(organ_owner, list(COMSIG_SPECIES_HANDLE_CHEMICAL, COMSIG_ATOM_EXAMINE)) /** * This proc can be overriden by liver subtypes so they can handle certain chemicals in special ways. @@ -188,7 +189,7 @@ if(SPT_PROB(3, seconds_per_tick)) owner.emote("drool") -/obj/item/organ/liver/on_owner_examine(datum/source, mob/user, list/examine_list) +/obj/item/organ/liver/proc/on_owner_examine(datum/source, mob/user, list/examine_list) if(!ishuman(owner) || !(organ_flags & ORGAN_FAILING)) return diff --git a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm index 8ff1f0c3cf327..6ed49b8f1137d 100644 --- a/code/modules/surgery/organs/internal/liver/liver_skeleton.dm +++ b/code/modules/surgery/organs/internal/liver/liver_skeleton.dm @@ -37,7 +37,7 @@ playsound(organ_owner, SFX_DESECRATION, 50, vary = TRUE) //You just want to socialize organ_owner.visible_message(span_warning("[organ_owner] rattles loudly and flails around!!"), span_danger("Your bones hurt so much that your missing muscles spasm!!")) INVOKE_ASYNC(organ_owner, TYPE_PROC_REF(/atom/movable, say), "OOF!!", forced = chem.type) - bodypart.receive_damage(brute = 200) //But I don't think we should + organ_owner.apply_damage(200, BRUTE, bodypart) else to_chat(organ_owner, span_warning("Your missing [parse_zone(selected_part)] aches from wherever you left it.")) INVOKE_ASYNC(organ_owner, TYPE_PROC_REF(/mob, emote), "sigh") diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm index 60332123a8c4e..2026458a35949 100644 --- a/code/modules/surgery/organs/internal/lungs/_lungs.dm +++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm @@ -157,7 +157,7 @@ add_gas_reaction(/datum/gas/zauker, while_present = PROC_REF(too_much_zauker)) ///Simply exists so that you don't keep any alerts from your previous lack of lungs. -/obj/item/organ/lungs/mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags) +/obj/item/organ/lungs/on_mob_insert(mob/living/carbon/receiver, special = FALSE, movement_flags) . = ..() receiver.clear_alert(ALERT_NOT_ENOUGH_OXYGEN) @@ -166,7 +166,7 @@ receiver.clear_alert(ALERT_NOT_ENOUGH_PLASMA) receiver.clear_alert(ALERT_NOT_ENOUGH_N2O) -/obj/item/organ/lungs/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/lungs/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() // This is very "manual" I realize, but it's useful to ensure cleanup for gases we're removing happens // Avoids stuck alerts and such diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm index 768f3483c030f..40d3265684d13 100644 --- a/code/modules/surgery/organs/internal/stomach/_stomach.dm +++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm @@ -246,13 +246,13 @@ disgusted.throw_alert(ALERT_DISGUST, /atom/movable/screen/alert/disgusted) disgusted.add_mood_event("disgust", /datum/mood_event/disgusted) -/obj/item/organ/stomach/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/stomach/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() receiver.hud_used?.hunger?.update_appearance() -/obj/item/organ/stomach/mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) +/obj/item/organ/stomach/on_mob_remove(mob/living/carbon/stomach_owner, special, movement_flags) if(ishuman(stomach_owner)) - var/mob/living/carbon/human/human_owner = owner + var/mob/living/carbon/human/human_owner = stomach_owner human_owner.clear_alert(ALERT_DISGUST) human_owner.clear_mood_event("disgust") stomach_owner.hud_used?.hunger?.update_appearance() diff --git a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm index 3921cdc64e59c..0f817b5230745 100644 --- a/code/modules/surgery/organs/internal/stomach/stomach_golem.dm +++ b/code/modules/surgery/organs/internal/stomach/stomach_golem.dm @@ -11,11 +11,11 @@ /// How slow are you if you have absolutely nothing in the tank? var/max_hunger_slowdown = 4 -/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/golem/on_mob_insert(mob/living/carbon/organ_owner, special, movement_flags) . = ..() RegisterSignal(owner, COMSIG_CARBON_ATTEMPT_EAT, PROC_REF(try_eating)) -/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special) +/obj/item/organ/stomach/golem/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() UnregisterSignal(organ_owner, COMSIG_CARBON_ATTEMPT_EAT) organ_owner.remove_movespeed_modifier(/datum/movespeed_modifier/golem_hunger) diff --git a/code/modules/surgery/organs/internal/tongue/_tongue.dm b/code/modules/surgery/organs/internal/tongue/_tongue.dm index 7b5cecb34115a..abf74a03bdf11 100644 --- a/code/modules/surgery/organs/internal/tongue/_tongue.dm +++ b/code/modules/surgery/organs/internal/tongue/_tongue.dm @@ -124,7 +124,7 @@ food_taste_reaction = FOOD_LIKED return food_taste_reaction -/obj/item/organ/tongue/mob_insert(mob/living/carbon/receiver, special, movement_flags) +/obj/item/organ/tongue/on_mob_insert(mob/living/carbon/receiver, special, movement_flags) . = ..() if(modifies_speech) @@ -138,7 +138,7 @@ REMOVE_TRAIT(receiver, TRAIT_AGEUSIA, NO_TONGUE_TRAIT) apply_tongue_effects() -/obj/item/organ/tongue/mob_remove(mob/living/carbon/organ_owner, special, movement_flags) +/obj/item/organ/tongue/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags) . = ..() temp_say_mod = "" @@ -197,7 +197,7 @@ new /regex(@"\bX([\-|r|R]|\b)", "g") = "ECKS$1", ) -/obj/item/organ/tongue/lizard/New(class, timer, datum/mutation/human/copymut) +/obj/item/organ/tongue/lizard/Initialize(mapload) . = ..() AddComponent(/datum/component/speechmod, replacements = speech_replacements, should_modify_speech = CALLBACK(src, PROC_REF(should_modify_speech))) diff --git a/code/modules/surgery/organs/organ_movement.dm b/code/modules/surgery/organs/organ_movement.dm index 16889ec0588a3..de2ac86c9de3a 100644 --- a/code/modules/surgery/organs/organ_movement.dm +++ b/code/modules/surgery/organs/organ_movement.dm @@ -15,12 +15,15 @@ /obj/item/organ/proc/Insert(mob/living/carbon/receiver, special = FALSE, movement_flags) SHOULD_CALL_PARENT(TRUE) - mob_insert(receiver, special, movement_flags) + if(!mob_insert(receiver, special, movement_flags)) + return FALSE bodypart_insert(limb_owner = receiver, movement_flags = movement_flags) if(!special && !(receiver.living_flags & STOP_OVERLAY_UPDATE_BODY_PARTS)) receiver.update_body_parts() + return TRUE + /* * Remove the organ from the select mob. * @@ -44,15 +47,17 @@ * movement_flags - Flags for how we behave in movement. See DEFINES/organ_movement for flags */ /obj/item/organ/proc/mob_insert(mob/living/carbon/receiver, special, movement_flags) - SHOULD_CALL_PARENT(TRUE) + SHOULD_NOT_OVERRIDE(TRUE) if(!iscarbon(receiver)) - stack_trace("Tried to insert organ into non-carbon: [receiver.type]") - return + //We try to insert the organ in a corgi when running the test, expecting it to return FALSE. + if(!PERFORM_ALL_TESTS(organ_sanity)) + stack_trace("Tried to insert organ into non-carbon: [receiver.type]") + return FALSE if(owner == receiver) stack_trace("Organ receiver is already organ owner") - return + return FALSE var/obj/item/organ/replaced = receiver.get_organ_slot(slot) if(replaced) @@ -78,7 +83,7 @@ receiver.organs_slot[slot] = src owner = receiver - on_mob_insert(receiver, special) + on_mob_insert(receiver, special, movement_flags) return TRUE @@ -99,10 +104,15 @@ if(!special) organ_owner.hud_used?.update_locked_slots() - RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_owner_examine)) SEND_SIGNAL(src, COMSIG_ORGAN_IMPLANTED, organ_owner) SEND_SIGNAL(organ_owner, COMSIG_CARBON_GAIN_ORGAN, src, special) + // organs_slot must ALWAYS be ordered in the same way as organ_process_order + // Otherwise life processing breaks down + sortTim(owner.organs_slot, GLOBAL_PROC_REF(cmp_organ_slot_asc)) + + STOP_PROCESSING(SSobj, src) + /// Insert an organ into a limb, assume the limb as always detached and include no owner operations here (except the get_bodypart helper here I guess) /// Give EITHER a limb OR a limb owner /obj/item/organ/proc/bodypart_insert(obj/item/bodypart/bodypart, mob/living/carbon/limb_owner, movement_flags) @@ -148,7 +158,7 @@ * * special - "quick swapping" an organ out - when TRUE, the mob will be unaffected by not having that organ for the moment */ /obj/item/organ/proc/mob_remove(mob/living/carbon/organ_owner, special = FALSE, movement_flags) - SHOULD_CALL_PARENT(TRUE) + SHOULD_NOT_OVERRIDE(TRUE) if(organ_owner) if(organ_owner.organs_slot[slot] == src) @@ -156,9 +166,7 @@ organ_owner.organs -= src owner = null - - on_mob_remove(organ_owner, special) - + on_mob_remove(organ_owner, special, movement_flags) return TRUE /// Called after the organ is removed from a mob. @@ -179,7 +187,6 @@ for(var/datum/status_effect/effect as anything in organ_effects) organ_owner.remove_status_effect(effect, type) - UnregisterSignal(organ_owner, COMSIG_ATOM_EXAMINE) SEND_SIGNAL(src, COMSIG_ORGAN_REMOVED, organ_owner) SEND_SIGNAL(organ_owner, COMSIG_CARBON_LOSE_ORGAN, src, special) ADD_TRAIT(src, TRAIT_USED_ORGAN, ORGAN_TRAIT) @@ -189,6 +196,13 @@ if(!special) organ_owner.hud_used?.update_locked_slots() + if((organ_flags & ORGAN_VITAL) && !special && !HAS_TRAIT(organ_owner, TRAIT_GODMODE)) + if(organ_owner.stat != DEAD) + organ_owner.investigate_log("has been killed by losing a vital organ ([src]).", INVESTIGATE_DEATHS) + organ_owner.death() + + START_PROCESSING(SSobj, src) + var/list/diseases = organ_owner.get_static_viruses() if(!LAZYLEN(diseases)) return diff --git a/code/modules/surgery/repair_puncture.dm b/code/modules/surgery/repair_puncture.dm index b916668433f08..77b36d264cdff 100644 --- a/code/modules/surgery/repair_puncture.dm +++ b/code/modules/surgery/repair_puncture.dm @@ -81,8 +81,8 @@ span_notice("[user] successfully realigns some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)] with [tool]!"), span_notice("[user] successfully realigns some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)]!"), ) - log_combat(user, target, "excised infected flesh in", addition="COMBAT MODE: [uppertext(user.combat_mode)]") - surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND) + log_combat(user, target, "realigned blood vessels in", addition="COMBAT MODE: [uppertext(user.combat_mode)]") + target.apply_damage(3, BRUTE, surgery.operated_bodypart, wound_bonus = CANT_WOUND, sharpness = SHARP_EDGED, attacking_item = tool) pierce_wound.adjust_blood_flow(-0.25) return ..() @@ -95,7 +95,7 @@ span_notice("[user] jerks apart some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)] with [tool]!"), span_notice("[user] jerk apart some of the blood vessels in [target]'s [target.parse_zone_with_bodypart(target_zone)]!"), ) - surgery.operated_bodypart.receive_damage(brute=rand(4,8), sharpness=SHARP_EDGED, wound_bonus = 10) + target.apply_damage(rand(4, 8), BRUTE, surgery.operated_bodypart, wound_bonus = 10, sharpness = SHARP_EDGED, attacking_item = tool) ///// Sealing the vessels back together /datum/surgery_step/seal_veins @@ -144,7 +144,7 @@ ) log_combat(user, target, "dressed burns in", addition="COMBAT MODE: [uppertext(user.combat_mode)]") pierce_wound.adjust_blood_flow(-0.5) - if(pierce_wound.blood_flow > 0) + if(!QDELETED(pierce_wound) && pierce_wound.blood_flow > 0) surgery.status = REALIGN_INNARDS to_chat(user, span_notice("There still seems to be misaligned blood vessels to finish...")) else diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index d23267fa326bd..c8ca5ba8fb517 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -4,8 +4,7 @@ ///The description of the surgery, what it does. var/desc - ///From __DEFINES/surgery.dm - ///Selection: SURGERY_IGNORE_CLOTHES | SURGERY_SELF_OPERABLE | SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_REQUIRES_REAL_LIMB | SURGERY_MORBID_CURIOSITY + ///Bitfield for flags that determine different behaviors and requirement for the surgery. See __DEFINES/surgery.dm var/surgery_flags = SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB ///The surgery step we're currently on, increases each time we do a step. var/status = 1 @@ -120,24 +119,23 @@ if(LAZYACCESS(modifiers, RIGHT_CLICK)) try_to_fail = TRUE - var/datum/surgery_step/step = get_surgery_step() - if(isnull(step)) + var/datum/surgery_step/surgery_step = GLOB.surgery_steps[steps[status]] + if(isnull(surgery_step)) return FALSE var/obj/item/tool = user.get_active_held_item() if(tool) tool = tool.get_proxy_attacker_for(target, user) - if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) + if(surgery_step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) return TRUE - if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it + if(!tool) + return FALSE + //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it + if((surgery_flags & SURGERY_CHECK_TOOL_BEHAVIOUR) ? tool.tool_behaviour : (tool.item_flags & SURGICAL_TOOL)) to_chat(user, span_warning("This step requires a different tool!")) return TRUE return FALSE -/datum/surgery/proc/get_surgery_step() - var/step_type = steps[status] - return new step_type - /datum/surgery/proc/get_surgery_next_step() if(status < steps.len) var/step_type = steps[status + 1] diff --git a/code/modules/transport/elevator/elev_panel.dm b/code/modules/transport/elevator/elev_panel.dm index 659049a7448ca..162c70f390cee 100644 --- a/code/modules/transport/elevator/elev_panel.dm +++ b/code/modules/transport/elevator/elev_panel.dm @@ -19,6 +19,7 @@ icon_state = "elevpanel0" base_icon_state = "elevpanel" + mouse_over_pointer = MOUSE_HAND_POINTER power_channel = AREA_USAGE_ENVIRON // Indestructible until someone wants to make these constructible, with all the chaos that implies resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/transport/tram/tram_controller.dm b/code/modules/transport/tram/tram_controller.dm index 5ac6d5bc748bc..1eeed96375f08 100644 --- a/code/modules/transport/tram/tram_controller.dm +++ b/code/modules/transport/tram/tram_controller.dm @@ -54,7 +54,7 @@ var/recovery_clear_count = 0 ///if the tram's next stop will be the tram malfunction event sequence - var/malf_active = FALSE + var/malf_active = TRANSPORT_SYSTEM_NORMAL ///fluff information of the tram, such as ongoing kill count and age var/datum/tram_mfg_info/tram_registration @@ -144,7 +144,7 @@ tram_registration.active = FALSE SSblackbox.record_feedback("amount", "tram_destroyed", 1) SSpersistence.save_tram_history(specific_transport_id) - ..() + return ..() /** * Register transport modules to the controller @@ -259,14 +259,16 @@ playsound(paired_cabinet, 'sound/machines/synth/synth_yes.ogg', 40, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) paired_cabinet.say("Controller reset.") - if(malf_active) - addtimer(CALLBACK(src, PROC_REF(announce_malf_event)), 1 SECONDS) - SEND_SIGNAL(src, COMSIG_TRAM_TRAVEL, idle_platform, destination_platform) for(var/obj/structure/transport/linear/tram/transport_module as anything in transport_modules) //only thing everyone needs to know is the new location. if(transport_module.travelling) //wee woo wee woo there was a double action queued. damn multi tile structs return //we don't care to undo cover_locked controls, though, as that will resolve itself + if(malf_active == TRANSPORT_LOCAL_WARNING) + if(transport_module.check_for_humans()) + throw_chance *= 1.75 + malf_active = TRANSPORT_LOCAL_FAULT + addtimer(CALLBACK(src, PROC_REF(announce_malf_event)), 1 SECONDS) transport_module.verify_transport_contents() transport_module.glide_size_override = DELAY_TO_GLIDE_SIZE(speed_limiter) transport_module.set_travelling(TRUE) @@ -296,7 +298,7 @@ return PROCESS_KILL if(!travel_remaining) - if(!controller_operational || malf_active) + if(!controller_operational || malf_active == TRANSPORT_LOCAL_FAULT) degraded_stop() else normal_stop() @@ -370,10 +372,10 @@ paired_cabinet.say("Controller reset.") log_transport("TC: [specific_transport_id] position data successfully reset. ") speed_limiter = initial(speed_limiter) - if(malf_active) + if(malf_active == TRANSPORT_LOCAL_FAULT) set_status_code(SYSTEM_FAULT, TRUE) addtimer(CALLBACK(src, PROC_REF(cycle_doors), CYCLE_OPEN), 2 SECONDS) - malf_active = FALSE + malf_active = TRANSPORT_SYSTEM_NORMAL throw_chance = initial(throw_chance) playsound(paired_cabinet, 'sound/machines/buzz/buzz-sigh.ogg', 60, vary = FALSE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) paired_cabinet.say("Controller error. Please contact your engineering department.") @@ -417,6 +419,7 @@ * Performs a reset of the tram's position data by finding a predetermined reference landmark, then driving to it. */ /datum/transport_controller/linear/tram/proc/reset_position() + malf_active = TRANSPORT_SYSTEM_NORMAL if(idle_platform) if(get_turf(idle_platform) == get_turf(nav_beacon)) set_status_code(SYSTEM_FAULT, FALSE) @@ -602,7 +605,8 @@ * Tram malfunction random event. Set comm error, requiring engineering or AI intervention. */ /datum/transport_controller/linear/tram/proc/start_malf_event() - malf_active = TRUE + malf_active = TRANSPORT_LOCAL_WARNING + paired_cabinet.update_appearance() throw_chance *= 1.25 log_transport("TC: [specific_transport_id] starting Tram Malfunction event.") @@ -615,7 +619,8 @@ /datum/transport_controller/linear/tram/proc/end_malf_event() if(!(malf_active)) return - malf_active = FALSE + malf_active = TRANSPORT_SYSTEM_NORMAL + paired_cabinet.update_appearance() throw_chance = initial(throw_chance) log_transport("TC: [specific_transport_id] ending Tram Malfunction event.") @@ -978,7 +983,7 @@ . += emissive_appearance(icon, "[base_icon_state]-estop", src, alpha = src.alpha) return - if(controller_datum.controller_status & SYSTEM_FAULT || controller_datum.malf_active) + if(controller_datum.controller_status & SYSTEM_FAULT || controller_datum.malf_active != TRANSPORT_SYSTEM_NORMAL) . += mutable_appearance(icon, "[base_icon_state]-fault") . += emissive_appearance(icon, "[base_icon_state]-fault", src, alpha = src.alpha) return @@ -1079,7 +1084,7 @@ "recoveryMode" = controller_datum.recovery_mode, "currentSpeed" = controller_datum.current_speed, "currentLoad" = controller_datum.current_load, - "statusSF" = controller_datum.controller_status & SYSTEM_FAULT, + "statusSF" = controller_datum.controller_status & SYSTEM_FAULT || controller_datum.malf_active != TRANSPORT_SYSTEM_NORMAL, "statusCE" = controller_datum.controller_status & COMM_ERROR, "statusES" = controller_datum.controller_status & EMERGENCY_STOP, "statusPD" = controller_datum.controller_status & PRE_DEPARTURE, diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm index 346cb5e680283..9b04bba6ce7e3 100644 --- a/code/modules/transport/tram/tram_structures.dm +++ b/code/modules/transport/tram/tram_structures.dm @@ -474,8 +474,8 @@ canSmoothWith = null /// Position of the spoiler var/deployed = FALSE - /// Malfunctioning due to tampering or emag - var/malfunctioning = FALSE + /// Locked in position + var/locked = FALSE /// Weakref to the tram piece we control var/datum/weakref/tram_ref /// The tram we're attached to @@ -494,7 +494,7 @@ context[SCREENTIP_CONTEXT_LMB] = "repair" if(held_item?.tool_behaviour == TOOL_WELDER && atom_integrity >= max_integrity) - context[SCREENTIP_CONTEXT_LMB] = "[malfunctioning ? "repair" : "lock"]" + context[SCREENTIP_CONTEXT_LMB] = "[locked ? "repair" : "sabotage"]" return CONTEXTUAL_SCREENTIP_SET @@ -503,22 +503,19 @@ if(obj_flags & EMAGGED) . += span_warning("The electronics panel is sparking occasionally. It can be reset with a [EXAMINE_HINT("multitool.")]") - if(malfunctioning) + if(locked) . += span_warning("The spoiler is [EXAMINE_HINT("welded")] in place!") else - . += span_notice("The spoiler can be locked in to place with a [EXAMINE_HINT("welder.")]") + . += span_notice("The spoiler can be locked in place with a [EXAMINE_HINT("welder.")]") /obj/structure/tram/spoiler/proc/set_spoiler(source, controller, controller_active, controller_status, travel_direction) SIGNAL_HANDLER var/spoiler_direction = travel_direction - if(obj_flags & EMAGGED && !malfunctioning) - malfunctioning = TRUE - - if(malfunctioning || controller_status & COMM_ERROR) + if(locked || controller_status & COMM_ERROR || obj_flags & EMAGGED) if(!deployed) // Bring out the blades - if(malfunctioning) + if(locked) visible_message(span_danger("\the [src] locks up due to its servo overheating!")) do_sparks(3, cardinal_only = FALSE, source = src) deploy_spoiler() @@ -583,14 +580,14 @@ return FALSE if(atom_integrity >= max_integrity) - to_chat(user, span_warning("You begin to weld \the [src], [malfunctioning ? "repairing damage" : "preventing retraction"].")) + to_chat(user, span_warning("You begin to weld \the [src], [locked ? "repairing damage" : "preventing retraction"].")) if(!tool.use_tool(src, user, 4 SECONDS, volume = 50)) return - malfunctioning = !malfunctioning - user.visible_message(span_warning("[user] [malfunctioning ? "welds \the [src] in place" : "repairs \the [src]"] with [tool]."), \ - span_warning("You finish welding \the [src], [malfunctioning ? "locking it in place." : "it can move freely again!"]"), null, COMBAT_MESSAGE_RANGE) + locked = !locked + user.visible_message(span_warning("[user] [locked ? "welds \the [src] in place" : "repairs \the [src]"] with [tool]."), \ + span_warning("You finish welding \the [src], [locked ? "locking it in place." : "it can move freely again!"]"), null, COMBAT_MESSAGE_RANGE) - if(malfunctioning) + if(locked) deploy_spoiler() update_appearance() @@ -606,7 +603,7 @@ /obj/structure/tram/spoiler/update_overlays() . = ..() - if(deployed && malfunctioning) + if(deployed && locked) . += mutable_appearance(icon, "tram-spoiler-welded") /obj/structure/chair/sofa/bench/tram diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm index b0497ed3b2e9c..d1384067a0d1a 100644 --- a/code/modules/transport/transport_module.dm +++ b/code/modules/transport/transport_module.dm @@ -171,6 +171,13 @@ if(!(movable_contents.loc in locs)) remove_item_from_transport(movable_contents) +/obj/structure/transport/linear/proc/check_for_humans() + for(var/atom/movable/movable_contents as anything in transport_contents) + if(ishuman(movable_contents)) + return TRUE + + return FALSE + ///signal handler for COMSIG_MOVABLE_UPDATE_GLIDE_SIZE: when a movable in transport_contents changes its glide_size independently. ///adds that movable to a lazy list, movables in that list have their glide_size updated when the tram next moves /obj/structure/transport/linear/proc/on_changed_glide_size(atom/movable/moving_contents, new_glide_size) diff --git a/code/modules/tutorials/tutorial_skip.dm b/code/modules/tutorials/tutorial_skip.dm index 803aebc865054..48c4a9550dbc1 100644 --- a/code/modules/tutorials/tutorial_skip.dm +++ b/code/modules/tutorials/tutorial_skip.dm @@ -6,6 +6,7 @@ alpha = 0 mouse_opacity = MOUSE_OPACITY_OPAQUE layer = TUTORIAL_INSTRUCTIONS_LAYER + mouse_over_pointer = MOUSE_HAND_POINTER var/atom/movable/screen/tutorial_skip_text/skip_text /atom/movable/screen/tutorial_skip/Initialize(mapload, datum/hud/hud_owner) diff --git a/code/modules/tutorials/tutorials/switch_hands.dm b/code/modules/tutorials/tutorials/switch_hands.dm index f1bcbbb3b7117..1d8fbd72f3c90 100644 --- a/code/modules/tutorials/tutorials/switch_hands.dm +++ b/code/modules/tutorials/tutorials/switch_hands.dm @@ -38,7 +38,7 @@ /datum/tutorial/switch_hands/proc/create_hand_preview(initial_screen_loc) hand_preview = animate_ui_element( - "hand_[hand_to_watch % 2 == 0 ? "r" : "l"]", + "hand_[user.held_index_to_dir(hand_to_watch)]", initial_screen_loc, ui_hand_position(hand_to_watch), TIME_TO_START_MOVING_HAND_ICON, @@ -50,7 +50,7 @@ switch (stage) if (STAGE_SHOULD_SWAP_HAND) - var/hand_name = hand_to_watch % 2 == 0 ? "right" : "left" + var/hand_name = IS_RIGHT_INDEX(hand_to_watch) ? "right" : "left" show_instruction(keybinding_message( /datum/keybinding/mob/swap_hands, "Press '%KEY%' to use your [hand_name] hand", diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 86d29d4bef327..3ce6acdac0266 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -83,6 +83,8 @@ #endif /// A trait source when adding traits through unit tests #define TRAIT_SOURCE_UNIT_TESTS "unit_tests" +/// Helper to allocate a new object with the implied type (the type of the variable it's assigned to) in the corner of the test room +#define EASY_ALLOCATE(arguments...) allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left, ##arguments) // BEGIN_INCLUDE #include "abductor_baton_spell.dm" @@ -122,6 +124,12 @@ #include "clothing_drops_items.dm" #include "clothing_under_armor_subtype_check.dm" #include "combat.dm" +#include "combat_blocking.dm" +#include "combat_cuffs.dm" +#include "combat_eyestab.dm" +#include "combat_flash.dm" +#include "combat_help.dm" +#include "combat_pistol_whip.dm" #include "combat_stamina.dm" #include "combat_welder.dm" #include "component_tests.dm" @@ -130,6 +138,7 @@ #include "container_sanity.dm" #include "crayons.dm" #include "create_and_destroy.dm" +#include "damp_rag.dm" #include "dcs_check_list_arguments.dm" #include "dcs_get_id_from_elements.dm" #include "designs.dm" @@ -138,11 +147,13 @@ #include "door_access.dm" #include "dragon_expiration.dm" #include "drink_icons.dm" +#include "dropper.dm" #include "dummy_spawn.dm" #include "dynamic_ruleset_sanity.dm" #include "egg_glands.dm" #include "embedding.dm" #include "emoting.dm" +#include "emp_flashlight.dm" #include "ensure_subtree_operational_datum.dm" #include "explosion_action.dm" #include "fish_unit_tests.dm" @@ -161,6 +172,7 @@ #include "high_five.dm" #include "holder_loving.dm" #include "holidays.dm" +#include "holofan_placement.dm" #include "hulk.dm" #include "human_through_recycler.dm" #include "hunger_curse.dm" @@ -169,8 +181,12 @@ #include "hydroponics_self_mutations.dm" #include "hydroponics_validate_genes.dm" #include "inhands.dm" +#include "interaction_door.dm" +#include "interaction_silicon.dm" +#include "interaction_structures.dm" #include "json_savefile_importing.dm" #include "keybinding_init.dm" +#include "kinetic_crusher.dm" #include "knockoff_component.dm" #include "language_transfer.dm" #include "leash.dm" @@ -268,10 +284,11 @@ #include "spell_shapeshift.dm" #include "spell_timestop.dm" #include "spies.dm" +#include "spraycan.dm" #include "spritesheets.dm" #include "stack_singular_name.dm" #include "station_trait_tests.dm" -#include "status_effect_ticks.dm" +#include "status_effect_validity.dm" #include "stomach.dm" #include "storage.dm" #include "strange_reagent.dm" @@ -280,6 +297,7 @@ #include "subsystem_init.dm" #include "suit_storage_icons.dm" #include "surgeries.dm" +#include "syringe_gun.dm" #include "tail_wag.dm" #include "teleporters.dm" #include "tgui_create_message.dm" diff --git a/code/modules/unit_tests/bake_a_cake.dm b/code/modules/unit_tests/bake_a_cake.dm index d0838b69cfd8c..a4013d1c13794 100644 --- a/code/modules/unit_tests/bake_a_cake.dm +++ b/code/modules/unit_tests/bake_a_cake.dm @@ -10,9 +10,6 @@ var/obj/structure/table/the_table = allocate(/obj/structure/table, table_loc) var/obj/item/knife/kitchen/a_knife = allocate(/obj/item/knife/kitchen, table_loc) var/obj/item/reagent_containers/cup/beaker/beaker = allocate(/obj/item/reagent_containers/cup/beaker, table_loc) - /// DOPPLER SHIFT ADDITION BEGIN - beaker.set_cap_status(FALSE) - /// DOPPLER SHIFT ADDITION END var/obj/item/reagent_containers/condiment/flour/flour_bag = allocate(/obj/item/reagent_containers/condiment/flour, table_loc) var/obj/item/reagent_containers/condiment/sugar/sugar_bag = allocate(/obj/item/reagent_containers/condiment/sugar, table_loc) var/obj/item/storage/fancy/egg_box/egg_box = allocate(/obj/item/storage/fancy/egg_box, table_loc) diff --git a/code/modules/unit_tests/combat_blocking.dm b/code/modules/unit_tests/combat_blocking.dm new file mode 100644 index 0000000000000..45c1450708509 --- /dev/null +++ b/code/modules/unit_tests/combat_blocking.dm @@ -0,0 +1,35 @@ +/// Test that items can block unarmed attacks +/datum/unit_test/unarmed_blocking + +/datum/unit_test/unarmed_blocking/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/chair/chair = EASY_ALLOCATE() + chair.hit_reaction_chance = 100 + victim.put_in_active_hand(chair, forced = TRUE) + attacker.set_combat_mode(TRUE) + ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) + + click_wrapper(attacker, victim) + TEST_ASSERT_EQUAL(victim.getBruteLoss(), 0, "Victim took damage from being punched despite having a 100% block chance chair in their hands.") + +/// Test that items can block weapon attacks +/datum/unit_test/armed_blocking + +/datum/unit_test/armed_blocking/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/shield/riot/shield = EASY_ALLOCATE() + shield.block_chance = INFINITY + victim.put_in_active_hand(shield, forced = TRUE) + attacker.set_combat_mode(TRUE) + ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) + + click_wrapper(attacker, victim) + TEST_ASSERT_EQUAL(victim.getBruteLoss(), 0, "Victim took damage from being punched despite having a 100% block chance shield in their hands.") + + var/obj/item/storage/toolbox/weapon = EASY_ALLOCATE() + attacker.put_in_active_hand(weapon, forced = TRUE) + + click_wrapper(attacker, victim) + TEST_ASSERT_EQUAL(victim.getBruteLoss(), 0, "Victim took damage from being hit with a weapon despite having a 100% block chance shield in their hands.") diff --git a/code/modules/unit_tests/combat_cuffs.dm b/code/modules/unit_tests/combat_cuffs.dm new file mode 100644 index 0000000000000..18505966a4486 --- /dev/null +++ b/code/modules/unit_tests/combat_cuffs.dm @@ -0,0 +1,18 @@ +/// Tests that handcuffs can be applied. +/datum/unit_test/apply_cuffs + priority = TEST_LONGER + +/datum/unit_test/apply_cuffs/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/restraints/handcuffs/cuffs = EASY_ALLOCATE() + cuffs.handcuff_time = 0.2 SECONDS + attacker.put_in_active_hand(cuffs, forced = TRUE) + click_wrapper(attacker, victim) + TEST_ASSERT_EQUAL(victim.handcuffed, cuffs, "Handcuff attempt (non-combat-mode) failed in an otherwise valid setup.") + + victim.clear_cuffs(cuffs) + attacker.put_in_active_hand(cuffs, forced = TRUE) + attacker.set_combat_mode(TRUE) + click_wrapper(attacker, victim) + TEST_ASSERT_EQUAL(victim.handcuffed, cuffs, "Handcuff attempt (combat-mode) failed in an otherwise valid setup.") diff --git a/code/modules/unit_tests/combat_eyestab.dm b/code/modules/unit_tests/combat_eyestab.dm new file mode 100644 index 0000000000000..bb1126ae40dbf --- /dev/null +++ b/code/modules/unit_tests/combat_eyestab.dm @@ -0,0 +1,17 @@ +/// Tests that eyestabbing with combat mode on does damage to the eyes. +/datum/unit_test/eyestab + +/datum/unit_test/eyestab/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/screwdriver/stabber = EASY_ALLOCATE() + + attacker.zone_selected = BODY_ZONE_PRECISE_EYES + attacker.put_in_active_hand(stabber, forced = TRUE) + + attacker.set_combat_mode(TRUE) + click_wrapper(attacker, victim) + TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim should have taken some brute damage from an eyestab with combat mode on") + + var/obj/item/organ/eyes/eyes = victim.get_organ_slot(ORGAN_SLOT_EYES) + TEST_ASSERT_NOTEQUAL(eyes.damage, 0, "Victim's eyes should have taken some damage from an eyestab with combat mode on") diff --git a/code/modules/unit_tests/combat_flash.dm b/code/modules/unit_tests/combat_flash.dm new file mode 100644 index 0000000000000..815be27f486d0 --- /dev/null +++ b/code/modules/unit_tests/combat_flash.dm @@ -0,0 +1,41 @@ +/// Tests that flashes, well, flash. +/datum/unit_test/flash_click + var/apply_verb = "while Attacker was not on combat mode" + +/datum/unit_test/flash_click/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/assembly/flash/handheld/flash = EASY_ALLOCATE() + + attacker.put_in_active_hand(flash, forced = TRUE) + ready_subjects(attacker, victim) + click_wrapper(attacker, victim) + check_results(attacker, victim) + +/datum/unit_test/flash_click/proc/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim) + victim.forceMove(locate(attacker.x + 1, attacker.y, attacker.z)) + attacker.face_atom(victim) + victim.face_atom(attacker) + +/datum/unit_test/flash_click/proc/check_results(mob/living/carbon/human/attacker, mob/living/carbon/human/victim) + TEST_ASSERT_NOTEQUAL(victim.getStaminaLoss(), 0, "Victim should have sustained stamina loss from being flashed head-on [apply_verb].") + +/// Tests that flashes flash on combat mode. +/datum/unit_test/flash_click/combat_mode + apply_verb = "while Attacker was on combat mode" + +/datum/unit_test/flash_click/combat_mode/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim) + . = ..() + attacker.set_combat_mode(TRUE) + +/// Tests that flashes do not flash if wearing protection. +/datum/unit_test/flash_click/flash_protection + apply_verb = "while wearing flash protection" + +/datum/unit_test/flash_click/flash_protection/ready_subjects(mob/living/carbon/human/attacker, mob/living/carbon/human/victim) + . = ..() + var/obj/item/clothing/glasses/sunglasses/glasses = EASY_ALLOCATE() + victim.equip_to_appropriate_slot(glasses) + +/datum/unit_test/flash_click/flash_protection/check_results(mob/living/carbon/human/attacker, mob/living/carbon/human/victim) + TEST_ASSERT_EQUAL(victim.getStaminaLoss(), 0, "Victim should not have sustained stamina loss from being flashed head-on [apply_verb].") diff --git a/code/modules/unit_tests/combat_help.dm b/code/modules/unit_tests/combat_help.dm new file mode 100644 index 0000000000000..cfa32609e249b --- /dev/null +++ b/code/modules/unit_tests/combat_help.dm @@ -0,0 +1,33 @@ +/// Tests help intent clicking on people, particularly ensuring it results in a help_shake (check self or hug) +/datum/unit_test/help_click + var/helper_times_helped = 0 + var/helpee_times_helped = 0 + +/datum/unit_test/help_click/Run() + var/mob/living/carbon/human/consistent/helps_the_guy = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/gets_the_help = EASY_ALLOCATE() + + gets_the_help.forceMove(locate(helps_the_guy.x + 1, helps_the_guy.y, helps_the_guy.z)) + + RegisterSignal(helps_the_guy, COMSIG_CARBON_PRE_MISC_HELP, PROC_REF(helper_help_received)) + RegisterSignal(gets_the_help, COMSIG_CARBON_PRE_MISC_HELP, PROC_REF(helpee_help_received)) + + // Click on self + click_wrapper(helps_the_guy, helps_the_guy) + + TEST_ASSERT_EQUAL(helper_times_helped, 1, "Helper should have been helped once - clicking on themselves should check self.") + TEST_ASSERT_EQUAL(helpee_times_helped, 0, "Helpee should not have been helped - helper clicked on themselves.") + + // Click on the other guy + click_wrapper(helps_the_guy, gets_the_help) + + TEST_ASSERT_EQUAL(helper_times_helped, 1, "Helper should not have been helped - helper clicked on helpee.") + TEST_ASSERT_EQUAL(helpee_times_helped, 1, "Helpee should have been helped once - helper clicked on helpee.") + +/datum/unit_test/help_click/proc/helper_help_received() + SIGNAL_HANDLER + helper_times_helped += 1 + +/datum/unit_test/help_click/proc/helpee_help_received() + SIGNAL_HANDLER + helpee_times_helped += 1 diff --git a/code/modules/unit_tests/combat_pistol_whip.dm b/code/modules/unit_tests/combat_pistol_whip.dm new file mode 100644 index 0000000000000..4a3a45b9e3f9b --- /dev/null +++ b/code/modules/unit_tests/combat_pistol_whip.dm @@ -0,0 +1,60 @@ +/// Tests that guns (bayonetted or otherwise) are able to be used as melee weapons in close range +/datum/unit_test/pistol_whip + +/datum/unit_test/pistol_whip/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/gun/ballistic/automatic/pistol/gun = EASY_ALLOCATE() + + attacker.put_in_active_hand(gun, forced = TRUE) + victim.forceMove(locate(attacker.x + 1, attacker.y, attacker.z)) + + var/expected_ammo = gun.magazine.max_ammo + 1 + // These assertions are just here because I don't understand gun code + TEST_ASSERT(gun.chambered, "Gun spawned without a chambered round.") + TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo, "Gun spawned without a full magazine, \ + when it should spawn with mag size + 1 (chambered) rounds.") + + // Combat mode in melee range -> pistol whip + attacker.set_combat_mode(TRUE) + click_wrapper(attacker, victim) + TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being pistol-whipped.") + TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo, "The gun fired a shot when it was used for a pistol whip.") + victim.fully_heal() + + // No combat mode -> point blank shot + attacker.set_combat_mode(FALSE) + click_wrapper(attacker, victim) + TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being fired upon point-blank.") + TEST_ASSERT(locate(/obj/item/ammo_casing/c9mm) in attacker.loc, "The gun did not eject a casing when it was used for a point-blank shot.") + TEST_ASSERT_EQUAL(gun.get_ammo(countchambered = TRUE), expected_ammo - 1, "The gun did not fire a shot when it was used for a point-blank shot.") + victim.fully_heal() + + // Combat mode in melee range with bayonet -> bayonet stab + var/obj/item/knife/combat/knife = EASY_ALLOCATE() + gun.AddComponent(/datum/component/bayonet_attachable, starting_bayonet = knife) + + attacker.set_combat_mode(TRUE) + click_wrapper(attacker, victim) + TEST_ASSERT_NOTEQUAL(victim.getBruteLoss(), 0, "Victim did not take brute damage from being bayonet stabbed.") + victim.fully_heal() + +/// Test that bayonetted weapons can be used to butcher +/datum/unit_test/bayonet_butchering + +/datum/unit_test/bayonet_butchering/Run() + var/mob/living/carbon/human/species/monkey/meat = EASY_ALLOCATE() + meat.death() + + var/mob/living/carbon/human/consistent/butcher = EASY_ALLOCATE() + butcher.set_combat_mode(TRUE) + var/obj/item/gun/energy/recharge/kinetic_accelerator/gun = EASY_ALLOCATE() + var/obj/item/knife/combat/knife = EASY_ALLOCATE() + var/datum/component/bayonet_attachable/bayonet = gun.GetComponent(/datum/component/bayonet_attachable) + bayonet.add_bayonet(knife) + var/datum/component/butchering/butcher_comp = knife.GetComponent(/datum/component/butchering) + butcher_comp.speed = 1 SECONDS + + butcher.put_in_active_hand(gun, forced = TRUE) + click_wrapper(butcher, meat) + TEST_ASSERT(DOING_INTERACTION(butcher, meat), "The butcher did not start butchering the monkey when using a bayonetted weapon.") diff --git a/code/modules/unit_tests/combat_welder.dm b/code/modules/unit_tests/combat_welder.dm index 2fa9052d6fba0..b44022fe04993 100644 --- a/code/modules/unit_tests/combat_welder.dm +++ b/code/modules/unit_tests/combat_welder.dm @@ -1,9 +1,9 @@ /datum/unit_test/welder_combat /datum/unit_test/welder_combat/Run() - var/mob/living/carbon/human/tider = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left) - var/mob/living/carbon/human/victim = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left) - var/obj/item/weldingtool/weapon = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left) + var/mob/living/carbon/human/consistent/tider = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/weldingtool/weapon = EASY_ALLOCATE() tider.put_in_active_hand(weapon, forced = TRUE) tider.set_combat_mode(TRUE) @@ -13,7 +13,7 @@ TEST_ASSERT_NOTEQUAL(victim.getFireLoss(), 0, "Victim did not get burned by welder.") TEST_ASSERT_EQUAL(weapon.get_fuel(), weapon.max_fuel - 1, "Welder did not consume fuel on attacking a mob") - var/obj/structure/blob/blobby = allocate(__IMPLIED_TYPE__, run_loc_floor_bottom_left) + var/obj/structure/blob/blobby = EASY_ALLOCATE() weapon.melee_attack_chain(tider, blobby) TEST_ASSERT_NOTEQUAL(blobby.get_integrity(), blobby.max_integrity, "Blob did not get burned by welder.") diff --git a/code/modules/unit_tests/component_tests.dm b/code/modules/unit_tests/component_tests.dm index f609e73c4b729..1fae39825105a 100644 --- a/code/modules/unit_tests/component_tests.dm +++ b/code/modules/unit_tests/component_tests.dm @@ -1,12 +1,7 @@ /datum/unit_test/component_duping/Run() var/list/bad_dms = list() - var/list/bad_dts = list() for(var/t in typesof(/datum/component)) var/datum/component/comp = t if(!isnum(initial(comp.dupe_mode))) bad_dms += t - var/dupe_type = initial(comp.dupe_type) - if(dupe_type && !ispath(dupe_type)) - bad_dts += t - TEST_ASSERT(!length(bad_dms) && !length(bad_dts), - "Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])") + TEST_ASSERT(!length(bad_dms), "Components with invalid dupe modes: ([bad_dms.Join(",")])") diff --git a/code/modules/unit_tests/damp_rag.dm b/code/modules/unit_tests/damp_rag.dm new file mode 100644 index 0000000000000..6a3948036af04 --- /dev/null +++ b/code/modules/unit_tests/damp_rag.dm @@ -0,0 +1,17 @@ +/// Tests that damp rags can smother people. +/// When smothing reagents are ingested (go to the stomach). +/datum/unit_test/damp_rag_smother + +/datum/unit_test/damp_rag_smother/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/organ/stomach/victim_stomach = victim.get_organ_slot(ORGAN_SLOT_STOMACH) + var/obj/item/reagent_containers/cup/rag/rag = EASY_ALLOCATE() + + attacker.put_in_active_hand(rag, forced = TRUE) + attacker.zone_selected = BODY_ZONE_PRECISE_MOUTH + attacker.set_combat_mode(TRUE) + rag.reagents.add_reagent(/datum/reagent/water, rag.reagents.maximum_volume) + click_wrapper(attacker, victim) + TEST_ASSERT_EQUAL(victim_stomach.reagents.get_reagent_amount(/datum/reagent/water), rag.reagents.maximum_volume, \ + "The victim should have been smothered by the rag, gaining water reagent.") diff --git a/code/modules/unit_tests/dropper.dm b/code/modules/unit_tests/dropper.dm new file mode 100644 index 0000000000000..7ada84513a8db --- /dev/null +++ b/code/modules/unit_tests/dropper.dm @@ -0,0 +1,21 @@ +/// Tests the droppper picks up and dispenses reagents correctly. +/datum/unit_test/dropper_use + +/datum/unit_test/dropper_use/Run() + var/mob/living/carbon/human/consistent/chemist = EASY_ALLOCATE() + var/obj/item/reagent_containers/dropper/dropper = EASY_ALLOCATE() + var/obj/item/reagent_containers/cup/beaker/large/beaker = EASY_ALLOCATE() + + var/starting_volume = 50 + beaker.reagents.add_reagent(/datum/reagent/water, starting_volume) + + chemist.put_in_active_hand(dropper, forced = TRUE) + click_wrapper(chemist, beaker) + + TEST_ASSERT_EQUAL(dropper.reagents.total_volume, 5, "Dropper should have taken 5 units of reagents from the beaker.") + TEST_ASSERT_EQUAL(beaker.reagents.total_volume, starting_volume - 5, "Beaker should have transferred reagents to the dropper.") + + click_wrapper(chemist, beaker) + + TEST_ASSERT_EQUAL(dropper.reagents.total_volume, 0, "Dropper should have emptied itself into the beaker.") + TEST_ASSERT_EQUAL(beaker.reagents.total_volume, starting_volume, "Beaker should have received reagents from the dropper.") diff --git a/code/modules/unit_tests/embedding.dm b/code/modules/unit_tests/embedding.dm index 05e8cc8b8aa27..5e6a8a90647ef 100644 --- a/code/modules/unit_tests/embedding.dm +++ b/code/modules/unit_tests/embedding.dm @@ -6,7 +6,7 @@ var/obj/projectile/bullet/c38/bullet = new(get_turf(firer)) bullet.set_embed(bullet.get_embed().generate_with_values(embed_chance = 100)) TEST_ASSERT_EQUAL(bullet.get_embed().embed_chance, 100, "embed_chance failed to modify") - bullet.preparePixelProjectile(victim, firer) + bullet.aim_projectile(victim, firer) bullet.fire(get_angle(firer, victim), victim) var/list/components = victim.GetComponents(/datum/component/embedded) TEST_ASSERT_EQUAL(components.len, 1, "Projectile with 100% embed chance didn't embed, or embedded multiple times") diff --git a/code/modules/unit_tests/emp_flashlight.dm b/code/modules/unit_tests/emp_flashlight.dm new file mode 100644 index 0000000000000..e6e78009fb36a --- /dev/null +++ b/code/modules/unit_tests/emp_flashlight.dm @@ -0,0 +1,18 @@ +/// Test EMP flashlight EMPs people you point it at +/datum/unit_test/emp_flashlight + var/sig_caught = 0 + +/datum/unit_test/emp_flashlight/Run() + var/mob/living/carbon/human/consistent/flashlighter = EASY_ALLOCATE() + var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() + var/obj/item/flashlight/emp/debug/flashlight = EASY_ALLOCATE() + + flashlighter.put_in_active_hand(flashlight, forced = TRUE) + RegisterSignal(victim, COMSIG_ATOM_EMP_ACT, PROC_REF(sig_caught)) + + click_wrapper(flashlighter, victim) + TEST_ASSERT_NOTEQUAL(sig_caught, 0, "EMP flashlight did not EMP the target on click.") + +/datum/unit_test/emp_flashlight/proc/sig_caught() + SIGNAL_HANDLER + sig_caught++ diff --git a/code/modules/unit_tests/fish_unit_tests.dm b/code/modules/unit_tests/fish_unit_tests.dm index 94337ae2cc2fc..7ed7851b86af2 100644 --- a/code/modules/unit_tests/fish_unit_tests.dm +++ b/code/modules/unit_tests/fish_unit_tests.dm @@ -23,8 +23,7 @@ /datum/unit_test/fish_size_weight/Run() var/obj/structure/table/table = allocate(/obj/structure/table) - var/obj/item/fish/testdummy/fish = new /obj/item/fish/testdummy (table.loc) - allocated += fish + var/obj/item/fish/testdummy/fish = allocate(__IMPLIED_TYPE__, table.loc) var/datum/reagent/reagent = fish.reagents?.has_reagent(/datum/reagent/fishdummy) TEST_ASSERT(reagent, "the test fish doesn't have the test reagent.[fish.reagents ? "" : " It doesn't even have a reagent holder."]") var/expected_units = FISH_REAGENT_AMOUNT * fish.weight / FISH_WEIGHT_BITE_DIVISOR @@ -42,14 +41,32 @@ allocated += content TEST_ASSERT_EQUAL(counted_fillets, expected_num_fillets, "the test fish yielded [counted_fillets] fillets when it should have been [expected_num_fillets]") +/// Make sure fish don't stay hungry after being fed +/datum/unit_test/fish_feeding + +/datum/unit_test/fish_feeding/Run() + var/obj/item/fish/testdummy/hungry = allocate(__IMPLIED_TYPE__) + hungry.last_feeding = 0 //the fish should be hungry. + TEST_ASSERT(hungry.get_hunger(), "the fish doesn't seem to be hungry in the slightest") + var/obj/item/reagent_containers/cup/fish_feed/yummy = allocate(__IMPLIED_TYPE__) + hungry.feed(yummy.reagents) + TEST_ASSERT(!hungry.get_hunger(), "the fish is still hungry despite having been just fed") + + ///Try feeding it again, but this time with the right hunger so they actually grow + hungry.last_feeding = world.time - (hungry.feeding_frequency * FISH_GROWTH_PEAK) + var/old_size = hungry.size + var/old_weight = hungry.weight + hungry.feed(yummy.reagents) + TEST_ASSERT(hungry.size > old_size, "the fish size didn't increase after being properly fed") + TEST_ASSERT(hungry.weight > old_weight, "the fish weight didn't increase after being properly fed") + ///Checks that fish breeding works correctly. /datum/unit_test/fish_breeding /datum/unit_test/fish_breeding/Run() - var/obj/item/fish/fish = allocate(/obj/item/fish/testdummy) + var/obj/item/fish_tank/reproduction/fish_tank = allocate(__IMPLIED_TYPE__) ///Check if the fishes can generate offsprings at all. - var/obj/item/fish/fish_two = allocate(/obj/item/fish/testdummy/two) - var/obj/item/fish/new_fish = fish.create_offspring(fish_two.type, fish_two) + var/obj/item/fish/new_fish = fish_tank.fish.try_to_reproduce() TEST_ASSERT(new_fish, "the two test fishes couldn't generate an offspring") var/traits_len = length(new_fish.fish_traits) TEST_ASSERT_NOTEQUAL(traits_len, 2, "the offspring of the test fishes has both parents' traits, which are incompatible with each other") @@ -66,6 +83,20 @@ TEST_ASSERT(cloner_jr, "The test aquarium's cloner fish didn't manage to reproduce when it should have") TEST_ASSERT_NOTEQUAL(cloner_jr.type, aquarium.sterile.type, "The test aquarium's cloner fish mated with the sterile fish") +/obj/item/fish_tank/reproduction + var/obj/item/fish/testdummy/small/fish + var/obj/item/fish/testdummy/small/partner + +/obj/item/fish_tank/reproduction/Initialize(mapload) + . = ..() + fish = new(src) + partner = new(src) + +/obj/item/fish_tank/reproduction/Destroy() + fish = null + partner = null + return ..() + ///Checks that fish evolutions work correctly. /datum/unit_test/fish_evolution @@ -101,8 +132,13 @@ stable_population = INFINITY breeding_timeout = 0 fish_flags = parent_type::fish_flags & ~(FISH_FLAG_SHOW_IN_CATALOG|FISH_FLAG_EXPERIMENT_SCANNABLE) + fish_id_redirect_path = /obj/item/fish/goldfish //Stops SSfishing from complaining var/expected_num_fillets = 0 //used to know how many fillets should be gotten out of this fish +/obj/item/fish/testdummy/small + // The parent type is too big to reproduce inside the more compact fish tank + average_size = /obj/item/fish_tank::max_total_size * 0.2 + /obj/item/fish/testdummy/add_fillet_type() expected_num_fillets = ..() return expected_num_fillets @@ -128,7 +164,6 @@ description = "It smells fishy." /obj/structure/aquarium/traits - reproduction_and_growth = TRUE var/obj/item/fish/testdummy/crossbreeder/crossbreeder var/obj/item/fish/testdummy/cloner/cloner var/obj/item/fish/testdummy/sterile/sterile @@ -155,7 +190,6 @@ fish_traits = list(/datum/fish_trait/no_mating) /obj/structure/aquarium/evolution - reproduction_and_growth = TRUE var/obj/item/fish/testdummy/evolve/evolve var/obj/item/fish/testdummy/evolve_two/evolve_two @@ -195,7 +229,7 @@ ///During the fish_growth unit test, we spawn a fish outside of the aquarium and check that this actually stops it from growing /datum/fish_evolution/dummy/two/growth_checks(obj/item/fish/source, seconds_per_tick, growth) . = ..() - if(!isaquarium(source.loc)) + if(!source.loc || !HAS_TRAIT(source.loc, TRAIT_IS_AQUARIUM)) return COMPONENT_DONT_GROW ///A test that checks that fishing portals can be linked and function as expected @@ -244,7 +278,7 @@ /obj/structure/toilet/unit_test/Initialize(mapload) . = ..() if(!HAS_TRAIT(src, TRAIT_FISHING_SPOT)) //Ensure this toilet has a fishing spot because only maploaded ones have it. - AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/toilet) + AddComponent(/datum/component/fishing_spot, GLOB.preset_fish_sources[/datum/fish_source/toilet]) // we want no default spawns in this unit test /datum/chasm_detritus/restricted/bodies/no_defaults @@ -353,7 +387,6 @@ TEST_ASSERT(dummy_boogaloo, "The new fish type cannot be found inside the aquarium") /obj/structure/aquarium/crab - reproduction_and_growth = TRUE //needed for growing up ///Our test subject var/obj/item/fish/chasm_crab/instant_growth/crabbie @@ -371,6 +404,7 @@ /obj/item/fish/chasm_crab/instant_growth fish_traits = list() //We don't want to end up applying traits twice on the resulting lobstrosity + fish_id_redirect_path = /obj/item/fish/chasm_crab /datum/unit_test/fish_sources @@ -382,7 +416,8 @@ ///From here, we check that the profound_fisher as well as fish source procs for rolling rewards don't fail. source = GLOB.preset_fish_sources[/datum/fish_source/unit_test_profound_fisher] - run_loc_floor_bottom_left.AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/unit_test_profound_fisher) + + run_loc_floor_bottom_left.AddComponent(/datum/component/fishing_spot, source) var/mob/living/basic/fisher = allocate(/mob/living/basic) fisher.AddComponent(/datum/component/profound_fisher) fisher.set_combat_mode(FALSE) @@ -391,7 +426,7 @@ TEST_FAIL("The unit test profound fisher didn't catch the test fish on a lazy fishing spot (element)") ///For good measure, let's try it again, but with the component this time, and a human mob and gloves - run_loc_floor_bottom_left.RemoveElement(/datum/element/lazy_fishing_spot, /datum/fish_source/unit_test_profound_fisher) + qdel(run_loc_floor_bottom_left.GetComponent(/datum/component/fishing_spot)) var/datum/component/comp = run_loc_floor_bottom_left.AddComponent(/datum/component/fishing_spot, source) var/mob/living/carbon/human/consistent/angler = allocate(/mob/living/carbon/human/consistent) var/obj/item/clothing/gloves/noodling = allocate(/obj/item/clothing/gloves) @@ -421,10 +456,10 @@ /datum/fish_source/unit_test_profound_fisher fish_table = list(/obj/item/fish/testdummy = 1) fish_counts = list(/obj/item/fish/testdummy = 2) - fish_source_flags = parent_type::fish_source_flags | FISH_SOURCE_FLAG_SKIP_CATCHABLES + fish_source_flags = parent_type::fish_source_flags /datum/fish_source/unit_test_all_fish - fish_source_flags = parent_type::fish_source_flags | FISH_SOURCE_FLAG_SKIP_CATCHABLES + fish_source_flags = parent_type::fish_source_flags /datum/fish_source/unit_test_all_fish/New() for(var/fish_type as anything in subtypesof(/obj/item/fish)) @@ -489,5 +524,36 @@ for(var/obj/item/fish/fish as anything in box) fish.randomize_size_and_weight() +/datum/unit_test/aquarium_upgrade + +/datum/unit_test/aquarium_upgrade/Run() + var/mob/living/carbon/human/dummy/user = allocate(__IMPLIED_TYPE__) + var/obj/item/aquarium_upgrade/bioelec_gen/upgrade = allocate(__IMPLIED_TYPE__) + var/obj/structure/aquarium/aquarium = allocate(upgrade::upgrade_from_type) + + var/datum/component/aquarium/comp = aquarium.GetComponent(__IMPLIED_TYPE__) + TEST_ASSERT(comp, "[aquarium.type] doesn't have an aquarium component") + comp.set_fluid_type(AQUARIUM_FLUID_AIR) + comp.fluid_temp = MAX_AQUARIUM_TEMP + aquarium.add_traits(list(TRAIT_AQUARIUM_PANEL_OPEN, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH), AQUARIUM_TRAIT) + + var/type_to_check = upgrade::upgrade_to_type + var/turf/aquarium_loc = aquarium.loc + user.put_in_hands(upgrade) + upgrade.melee_attack_chain(user, aquarium) + TEST_ASSERT(QDELETED(aquarium), "Old [aquarium.type] was not deleted after upgrade") + + var/obj/structure/aquarium/upgraded_aquarium = locate(type_to_check) in aquarium_loc + TEST_ASSERT(upgraded_aquarium, "New [upgraded_aquarium.type] was not spawned after upgrade") + comp = upgraded_aquarium.GetComponent(/datum/component/aquarium) + TEST_ASSERT(comp, "New [upgraded_aquarium.type] doesn't have an aquarium component") + + TEST_ASSERT_EQUAL(comp.fluid_type, AQUARIUM_FLUID_AIR, "Inherited aquarium fluid type should be [AQUARIUM_FLUID_AIR]") + TEST_ASSERT_EQUAL(comp.fluid_temp, MAX_AQUARIUM_TEMP, "Inherited aquarium fluid temperature should be [MAX_AQUARIUM_TEMP]") + TEST_ASSERT(HAS_TRAIT(upgraded_aquarium, TRAIT_AQUARIUM_PANEL_OPEN), "The new aquarium should have its panel open") + TEST_ASSERT(HAS_TRAIT(upgraded_aquarium, TRAIT_STOP_FISH_REPRODUCTION_AND_GROWTH), "The 'growth and reproduction' setting for this aquarium should be disabled") + + TEST_ASSERT(QDELETED(upgrade), "Aquarium upgrade wasn't deleted afterward") + #undef FISH_REAGENT_AMOUNT #undef TRAIT_FISH_TESTING diff --git a/code/modules/unit_tests/greyscale_config.dm b/code/modules/unit_tests/greyscale_config.dm index d3d9ce9d4fdd4..9c0484eff7d11 100644 --- a/code/modules/unit_tests/greyscale_config.dm +++ b/code/modules/unit_tests/greyscale_config.dm @@ -21,9 +21,9 @@ TEST_FAIL("[worn.DebugName()] is missing a sprite for the worn overlay for [item_path]. Expected icon state: '[worn_icon_state]'") var/datum/greyscale_config/belt = SSgreyscale.configurations["[initial(item_path.greyscale_config_belt)]"] - var/belt_icon_state = initial(item_path.belt_icon_state) || initial(item_path.icon_state) - if(belt && !belt.icon_states[belt_icon_state]) - TEST_FAIL("[belt.DebugName()] is missing a sprite for the belt overlay for [item_path]. Expected icon state: '[belt_icon_state]'") + var/inside_belt_icon_state = initial(item_path.inside_belt_icon_state) || initial(item_path.icon_state) + if(belt && !belt.icon_states[inside_belt_icon_state]) + TEST_FAIL("[belt.DebugName()] is missing a sprite for the belt overlay for [item_path]. Expected icon state: '[inside_belt_icon_state]'") /// Makes sure objects using greyscale configs have, if any, the correct number of colors /datum/unit_test/greyscale_color_count diff --git a/code/modules/unit_tests/holofan_placement.dm b/code/modules/unit_tests/holofan_placement.dm new file mode 100644 index 0000000000000..532d0c30e939f --- /dev/null +++ b/code/modules/unit_tests/holofan_placement.dm @@ -0,0 +1,14 @@ +/// Tests the ability to place holosigns from a holosign creator. +/datum/unit_test/place_holosign + +/datum/unit_test/place_holosign/Run() + var/mob/living/carbon/human/consistent/jannie = EASY_ALLOCATE() + var/obj/item/holosign_creator/janibarrier/jannie_holosign_creator = EASY_ALLOCATE() + + jannie.put_in_active_hand(jannie_holosign_creator, forced = TRUE) + var/turf/open/next_to_the_jannie = locate(jannie.x + 1, jannie.y, jannie.z) + + click_wrapper(jannie, next_to_the_jannie) + + var/obj/structure/holosign/barrier/wetsign/placed_sign = locate() in next_to_the_jannie + TEST_ASSERT_NOTNULL(placed_sign, "Holosign creator failed to place a holosign in an adjacent tile.") diff --git a/code/modules/unit_tests/interaction_door.dm b/code/modules/unit_tests/interaction_door.dm new file mode 100644 index 0000000000000..418f02213fec2 --- /dev/null +++ b/code/modules/unit_tests/interaction_door.dm @@ -0,0 +1,13 @@ +/// Tests that airlocks can be closed by clicking on the floor, as [/datum/component/redirect_attack_hand_from_turf ] dictates +/datum/unit_test/door_click + +/datum/unit_test/door_click/Run() + var/mob/living/carbon/human/consistent/tider = EASY_ALLOCATE() + var/obj/machinery/door/airlock/public/glass/door = EASY_ALLOCATE() + + tider.forceMove(locate(door.x + 1, door.y, door.z)) + door.open() // this sleeps we just have to cope + TEST_ASSERT(!door.operating, "Airlock was operating after being opened.") + TEST_ASSERT(!door.density, "Airlock was not open after being opened.") + click_wrapper(tider, get_turf(door)) + TEST_ASSERT(door.operating, "Airlock was not closing after clicking the turf below, as per /datum/component/redirect_attack_hand_from_turf.") diff --git a/code/modules/unit_tests/interaction_silicon.dm b/code/modules/unit_tests/interaction_silicon.dm new file mode 100644 index 0000000000000..4b4efe85ee466 --- /dev/null +++ b/code/modules/unit_tests/interaction_silicon.dm @@ -0,0 +1,38 @@ +/// Tests the ability to unlock and crowbar open a silicon +/datum/unit_test/silicon_interacting + +/datum/unit_test/silicon_interacting/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/silicon/robot/borgo = EASY_ALLOCATE() + var/obj/item/card/id/advanced/gold/captains_spare/id = EASY_ALLOCATE() + var/obj/item/crowbar/crowbar = EASY_ALLOCATE() + // unlock + attacker.put_in_active_hand(id, forced = TRUE) + click_wrapper(attacker, borgo) + TEST_ASSERT(!borgo.locked, "Robot was not unlocked when swiped with ID") + // open + id.forceMove(attacker.drop_location()) + attacker.put_in_active_hand(crowbar, forced = TRUE) + click_wrapper(attacker, borgo) + TEST_ASSERT(borgo.opened, "Robot was not opened when crowbarred") + // close + attacker.put_in_active_hand(crowbar, forced = TRUE) + click_wrapper(attacker, borgo) + TEST_ASSERT(!borgo.opened, "Robot was not closed when crowbarred") + // lock + crowbar.forceMove(attacker.drop_location()) + attacker.put_in_active_hand(id, forced = TRUE) + click_wrapper(attacker, borgo) + TEST_ASSERT(borgo.locked, "Robot was not re-locked when swiped with ID") + +/// Tests unarmed clicking a cyborg doesn't cause damage +/datum/unit_test/silicon_punch + +/datum/unit_test/silicon_punch/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/mob/living/silicon/robot/borgo = EASY_ALLOCATE() + borgo.forceMove(locate(attacker.x + 1, attacker.y, attacker.z)) + attacker.set_combat_mode(TRUE) + click_wrapper(attacker, borgo) + TEST_ASSERT_EQUAL(borgo.getBruteLoss(), 0, "Cyborg took damage from an unarmed punched - \ + their unarmed damage threshold should be too high for this to happen.") diff --git a/code/modules/unit_tests/interaction_structures.dm b/code/modules/unit_tests/interaction_structures.dm new file mode 100644 index 0000000000000..d5be4b6d863fe --- /dev/null +++ b/code/modules/unit_tests/interaction_structures.dm @@ -0,0 +1,40 @@ +/// Tests that mobs are able to bash down tables by clicking on them. +/datum/unit_test/structure_table_bash + +/datum/unit_test/structure_table_bash/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/obj/item/storage/toolbox/toolbox = EASY_ALLOCATE() + var/obj/structure/table/to_smack = EASY_ALLOCATE() + attacker.put_in_active_hand(toolbox, forced = TRUE) + click_wrapper(attacker, to_smack) + TEST_ASSERT_EQUAL(toolbox.loc, to_smack.loc, "The toolbox should have been placed on the table. Instead, its loc is [toolbox.loc].") + TEST_ASSERT_EQUAL(to_smack.get_integrity(), to_smack.max_integrity, "Table took damage despite not being smacked.") + + attacker.put_in_active_hand(toolbox, forced = TRUE) + attacker.set_combat_mode(TRUE) + click_wrapper(attacker, to_smack) + TEST_ASSERT_NOTEQUAL(toolbox.loc, to_smack.loc, "The toolbox should not have been placed on the table.") + TEST_ASSERT_NOTEQUAL(to_smack.get_integrity(), to_smack.max_integrity, "Table failed to take damage from being smacked.") + +/// Tests that mobs are able to bash down barricades / structures by clicking on them. +/datum/unit_test/structure_generic_bash + +/datum/unit_test/structure_generic_bash/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/obj/item/storage/toolbox/toolbox = EASY_ALLOCATE() + var/obj/structure/barricade/to_smack = EASY_ALLOCATE() + attacker.put_in_active_hand(toolbox, forced = TRUE) + click_wrapper(attacker, to_smack) + TEST_ASSERT_NOTEQUAL(to_smack.get_integrity(), to_smack.max_integrity, "The barricade should have taken damage a from a non-combat-mode click.") + +/// Tests that common tool interactions are possible still, by attempting to open the panel of an air alarm. +/datum/unit_test/machinery_tool_interaction + +/datum/unit_test/machinery_tool_interaction/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/obj/item/screwdriver/screwdriver = EASY_ALLOCATE() + var/obj/machinery/airalarm/to_smack = EASY_ALLOCATE() + attacker.put_in_active_hand(screwdriver, forced = TRUE) + click_wrapper(attacker, to_smack) + TEST_ASSERT_EQUAL(to_smack.get_integrity(), to_smack.max_integrity, "The air alarm took damage when interacted with a screwdriver.") + TEST_ASSERT(to_smack.panel_open, "The air alarm should have opened its panel after being interacted with a screwdriver.") diff --git a/code/modules/unit_tests/kinetic_crusher.dm b/code/modules/unit_tests/kinetic_crusher.dm new file mode 100644 index 0000000000000..cb15d70e62c6d --- /dev/null +++ b/code/modules/unit_tests/kinetic_crusher.dm @@ -0,0 +1,13 @@ +/// Tests that the Kinetic Crusher fires a projectile on RMB +/datum/unit_test/crusher_projectile + +/datum/unit_test/crusher_projectile/Run() + var/mob/living/carbon/human/consistent/attacker = EASY_ALLOCATE() + var/obj/item/kinetic_crusher/crusher = EASY_ALLOCATE() + + attacker.put_in_active_hand(crusher, forced = TRUE) + crusher.attack_self(attacker) // wields the crusher + + click_wrapper(attacker, run_loc_floor_top_right, list(RIGHT_CLICK = TRUE, BUTTON = RIGHT_CLICK)) + + TEST_ASSERT(!crusher.charged, "Attacker failed to fire the kinetic crusher on right clicking a distant target") diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm index 53bd3277dc485..5397bc13e4fc2 100644 --- a/code/modules/unit_tests/metabolizing.dm +++ b/code/modules/unit_tests/metabolizing.dm @@ -28,7 +28,7 @@ // Give them enough meth to be consumed in 2 metabolizations pill.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT) - pill.attack(user, user) + pill.interact_with_atom(user, user) user.Life(SSMOBS_DT) @@ -77,7 +77,7 @@ // Let's start with stomach metabolism pill.reagents.add_reagent(meth.type, 5) - pill.attack(pill_user, pill_user) + pill.interact_with_atom(pill_user, pill_user) // Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go. var/obj/item/organ/stomach/pill_belly = pill_user.get_organ_slot(ORGAN_SLOT_STOMACH) @@ -105,7 +105,7 @@ // One half pill pill_two.reagents.add_reagent(meth.type, (5 * 0.5) + 1) - pill_two.attack(pill_syringe_user, pill_syringe_user) + pill_two.interact_with_atom(pill_syringe_user, pill_syringe_user) syringe.melee_attack_chain(pill_syringe_user, pill_syringe_user) // Set the metabolism efficiency to 1.0 so it transfers all reagents to the body in one go. diff --git a/code/modules/unit_tests/mob_faction.dm b/code/modules/unit_tests/mob_faction.dm index f5d64918038fd..be667de731db4 100644 --- a/code/modules/unit_tests/mob_faction.dm +++ b/code/modules/unit_tests/mob_faction.dm @@ -10,8 +10,8 @@ ) ignored += typesof(/mob/eye/imaginary_friend) ignored += typesof(/mob/living/silicon/robot/model) - ignored += typesof(/mob/eye/ai_eye/remote/base_construction) - ignored += typesof(/mob/eye/ai_eye/remote/shuttle_docker) + ignored += typesof(/mob/eye/camera/remote/base_construction) + ignored += typesof(/mob/eye/camera/remote/shuttle_docker) for (var/mob_type in typesof(/mob) - ignored) var/mob/mob_instance = allocate(mob_type) if(!islist(mob_instance.faction)) diff --git a/code/modules/unit_tests/orderable_items.dm b/code/modules/unit_tests/orderable_items.dm index 8d3db8c3c751f..e94b2985a5475 100644 --- a/code/modules/unit_tests/orderable_items.dm +++ b/code/modules/unit_tests/orderable_items.dm @@ -6,19 +6,19 @@ /datum/unit_test/orderable_items/Run() var/list/all_paths = list() for (var/datum/orderable_item/orderable_item as anything in subtypesof(/datum/orderable_item)) - if(isnull(initial(orderable_item.item_path))) // don't check if they're not actual orderable items + if(isnull(initial(orderable_item.purchase_path))) // don't check if they're not actual orderable items continue if (!isnull(initial(orderable_item.desc))) //don't check if they have a custom description continue - var/item_path = initial(orderable_item.item_path) + var/purchase_path = initial(orderable_item.purchase_path) - var/obj/item/item_instance = allocate(item_path) + var/obj/item/item_instance = allocate(purchase_path) var/initial_desc = initial(item_instance.desc) - if(item_path in all_paths) + if(purchase_path in all_paths) TEST_FAIL("[orderable_item] is purchasable under two different orderable_item types,") - all_paths += item_path + all_paths += purchase_path if (item_instance.desc != initial_desc) - TEST_FAIL("[orderable_item] has an item ([item_path]) that has a dynamic description. [item_instance.desc] (dynamic description) != [initial_desc] (initial description)") + TEST_FAIL("[orderable_item] has a product ([purchase_path]) that has a dynamic description. [item_instance.desc] (dynamic description) != [initial_desc] (initial description)") diff --git a/code/modules/unit_tests/organs.dm b/code/modules/unit_tests/organs.dm index 8f05a28405898..6162bd43e5b09 100644 --- a/code/modules/unit_tests/organs.dm +++ b/code/modules/unit_tests/organs.dm @@ -10,22 +10,9 @@ var/static/list/species_changing_organs = typecacheof(list( /obj/item/organ/brain/shadow/nightmare, )) - // List of organ typepaths which are not test-able, such as certain class prototypes. - var/static/list/test_organ_blacklist = typecacheof(list( - /obj/item/organ, - /obj/item/organ, - /obj/item/organ/wings, - /obj/item/organ/cyberimp, - /obj/item/organ/cyberimp/brain, - /obj/item/organ/cyberimp/mouth, - /obj/item/organ/cyberimp/arm, - /obj/item/organ/cyberimp/chest, - /obj/item/organ/cyberimp/eyes, - /obj/item/organ/alien, - )) /datum/unit_test/organ_sanity/Run() - for(var/obj/item/organ/organ_type as anything in subtypesof(/obj/item/organ) - test_organ_blacklist) + for(var/obj/item/organ/organ_type as anything in subtypesof(/obj/item/organ) - GLOB.prototype_organs) organ_test_insert(organ_type) /datum/unit_test/organ_sanity/proc/organ_test_insert(obj/item/organ/organ_type) @@ -111,3 +98,23 @@ TEST_ASSERT_EQUAL(dummy.get_organ_loss(slot_to_use), test_organ.maxHealth, \ "Mob level \"apply organ damage\" can exceed the [slot_to_use] organ's damage cap with a large maximum supplied.") dummy.fully_heal(HEAL_ORGANS) + +///Allocate a human mob, give 'em a skillchip and a generic trauma, then see if it throws any error when the brain is removed. +/datum/unit_test/chipped_traumatized_brain_removal + +/datum/unit_test/chipped_traumatized_brain_removal/Run() + var/mob/living/carbon/human/dummy/dummy = allocate(__IMPLIED_TYPE__) + + //add the chip and activate it + var/obj/item/skillchip/basketweaving/chip = new(dummy.loc) + dummy.implant_skillchip(chip, force = TRUE) + TEST_ASSERT(chip.holding_brain, "Skillchip couldn't be implanted successfully, 'holding_brain' is null") + chip.try_activate_skillchip(force = TRUE) + TEST_ASSERT(chip.active, "Skillchip couldn't be activated") + + //add a trauma + dummy.gain_trauma_type(BRAIN_TRAUMA_MILD) + + var/obj/item/organ/brain = locate() in dummy.organs + brain.forceMove(dummy.loc) + allocated += brain diff --git a/code/modules/unit_tests/pills.dm b/code/modules/unit_tests/pills.dm index 234abbfe1c1df..8567bf390eae7 100644 --- a/code/modules/unit_tests/pills.dm +++ b/code/modules/unit_tests/pills.dm @@ -4,7 +4,7 @@ TEST_ASSERT_EQUAL(human.has_reagent(/datum/reagent/iron), FALSE, "Human somehow has iron before taking pill") - pill.attack(human, human) + pill.interact_with_atom(human, human) human.Life(SSMOBS_DT) TEST_ASSERT(human.has_reagent(/datum/reagent/iron), "Human doesn't have iron after taking pill") diff --git a/code/modules/unit_tests/reagent_mob_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm index d6ed81292a97d..bf31291e3654e 100644 --- a/code/modules/unit_tests/reagent_mob_expose.dm +++ b/code/modules/unit_tests/reagent_mob_expose.dm @@ -50,7 +50,7 @@ TEST_ASSERT_EQUAL(human.health, 100, "Human health did not set properly") patch.reagents.add_reagent(/datum/reagent/method_patch_test, 1) patch.self_delay = 0 - patch.attack(human, human) + patch.interact_with_atom(human, human) TEST_ASSERT_EQUAL(human.health, 90, "Human health did not update after patch was applied") // INJECT diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png similarity index 100% rename from code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_vampire.png rename to code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_human_vampire.png diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png index e39d53764434d..5df14e3223eee 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png differ diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 2f4f7a4b70ae7..55161807eb46e 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -6,7 +6,6 @@ // If you are refactoring a simple_animal, REMOVE it from this list var/list/allowed_types = list( /mob/living/simple_animal/bot, - /mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/mulebot, /mob/living/simple_animal/bot/mulebot/paranormal, /mob/living/simple_animal/bot/secbot, diff --git a/code/modules/unit_tests/spraycan.dm b/code/modules/unit_tests/spraycan.dm new file mode 100644 index 0000000000000..2ee4ab14454b1 --- /dev/null +++ b/code/modules/unit_tests/spraycan.dm @@ -0,0 +1,22 @@ +/// Tests spray painting the ground to create graffiti. +/datum/unit_test/spraypainting + +/datum/unit_test/spraypainting/Run() + var/mob/living/carbon/human/consistent/artist = EASY_ALLOCATE() + var/obj/item/toy/crayon/spraycan/can = EASY_ALLOCATE() + var/turf/spray_turf = get_turf(artist) + artist.put_in_active_hand(can, forced = TRUE) + + // Try to spray with a capped spraycan. + click_wrapper(artist, spray_turf) + TEST_ASSERT_EQUAL(can.charges, can.charges_left, "Spraypaint sprayed paint while capped.") + // Uncap it + click_wrapper(artist, can, list(ALT_CLICK = TRUE, BUTTON = ALT_CLICK)) + TEST_ASSERT(!can.is_capped, "Spraypaint did not uncap when alt-clicked.") + // Try to spray with an uncapped spraycan. + click_wrapper(artist, spray_turf) + TEST_ASSERT_NOTEQUAL(can.charges, can.charges_left, "Spraypaint did not spray any paint when clicking on a turf with it.") + + // Cleanup + for(var/obj/effect/decal/cleanable/crayon/made_art in spray_turf) + qdel(made_art) diff --git a/code/modules/unit_tests/status_effect_ticks.dm b/code/modules/unit_tests/status_effect_ticks.dm deleted file mode 100644 index d60ba187abc42..0000000000000 --- a/code/modules/unit_tests/status_effect_ticks.dm +++ /dev/null @@ -1,23 +0,0 @@ -/// Validates status effect tick interval setup -/datum/unit_test/status_effect_ticks - -/datum/unit_test/status_effect_ticks/Run() - for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect)) - var/tick_speed = initial(checking.tick_interval) - if(tick_speed == STATUS_EFFECT_NO_TICK) - continue - if(tick_speed == INFINITY) - TEST_FAIL("Status effect [checking] has tick_interval set to INFINITY, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.") - continue - if(tick_speed == 0) - TEST_FAIL("Status effect [checking] has tick_interval set to 0, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.") - continue - switch(initial(checking.processing_speed)) - if(STATUS_EFFECT_FAST_PROCESS) - if(tick_speed < SSfastprocess.wait) - TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSfastprocess can tick ([SSfastprocess.wait]).") - if(STATUS_EFFECT_NORMAL_PROCESS) - if(tick_speed < SSprocessing.wait) - TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSprocessing can tick ([SSprocessing.wait]).") - else - TEST_FAIL("Invalid processing speed for status effect [checking] : [initial(checking.processing_speed)]") diff --git a/code/modules/unit_tests/status_effect_validity.dm b/code/modules/unit_tests/status_effect_validity.dm new file mode 100644 index 0000000000000..76a367233fd11 --- /dev/null +++ b/code/modules/unit_tests/status_effect_validity.dm @@ -0,0 +1,61 @@ +/// Validates status effect tick interval setup +/datum/unit_test/status_effect_ticks + +/datum/unit_test/status_effect_ticks/Run() + for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect)) + if(initial(checking.id) == STATUS_EFFECT_ID_ABSTRACT) + continue + var/tick_speed = initial(checking.tick_interval) + if(tick_speed == STATUS_EFFECT_NO_TICK) + continue + if(tick_speed == INFINITY) + TEST_FAIL("Status effect [checking] has tick_interval set to INFINITY, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.") + continue + if(tick_speed == 0) + TEST_FAIL("Status effect [checking] has tick_interval set to 0, this is not how you prevent ticks - use tick_interval = STATUS_EFFECT_NO_TICK instead.") + continue + switch(initial(checking.processing_speed)) + if(STATUS_EFFECT_FAST_PROCESS) + if(tick_speed < SSfastprocess.wait) + TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSfastprocess can tick ([SSfastprocess.wait]).") + if(STATUS_EFFECT_NORMAL_PROCESS) + if(tick_speed < SSprocessing.wait) + TEST_FAIL("Status effect [checking] has tick_interval set to [tick_speed], which is faster than SSprocessing can tick ([SSprocessing.wait]).") + else + TEST_FAIL("Invalid processing speed for status effect [checking] : [initial(checking.processing_speed)]") + +/// Validates status effect alert type setup +/datum/unit_test/status_effect_alert + +/datum/unit_test/status_effect_alert/Run() + // The base typepath is used to indicate "I didn't set an alert type" + var/bad_alert_type = /datum/status_effect::alert_type + TEST_ASSERT_NOTNULL(bad_alert_type, "No alert type defined in /datum/status_effect - This test may be redundant now.") + + for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect)) + if(initial(checking.id) == STATUS_EFFECT_ID_ABSTRACT) + continue + if(initial(checking.alert_type) != bad_alert_type) + continue + TEST_FAIL("[checking] has not set alert_type. If you don't want an alert, set alert_type = null - \ + Otherwise, give it an alert subtype.") + +/// Validates status effect id setup +/datum/unit_test/status_effect_ids + +/datum/unit_test/status_effect_ids/Run() + // The base id is used to indicate "I didn't set an id" + var/bad_id = /datum/status_effect::id + TEST_ASSERT_NOTNULL(bad_id, "No id defined in /datum/status_effect - This test may be redundant now.") + + for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect)) + if(initial(checking.id) == STATUS_EFFECT_ID_ABSTRACT) + // we are just assuming that a child of an abstract should not be abstract. + // of course in practice, this may not always be the case - but if you're + // structuring a status effect like this, you can just change the parent id to anything else + var/datum/status_effect/checking_parent = initial(checking.parent_type) + if(initial(checking_parent.id) != STATUS_EFFECT_ID_ABSTRACT) + continue + if(initial(checking.id) != bad_id) + continue + TEST_FAIL("[checking] has not set an id. This is required for status effects.") diff --git a/code/modules/unit_tests/stomach.dm b/code/modules/unit_tests/stomach.dm index 5d2b948e82b36..69ef7c06628b6 100644 --- a/code/modules/unit_tests/stomach.dm +++ b/code/modules/unit_tests/stomach.dm @@ -18,7 +18,7 @@ //Give them meth and let it kick in pill.reagents.add_reagent(meth, 1.9 * initial(meth.metabolization_rate) * SSMOBS_DT) - pill.attack(human, human) + pill.interact_with_atom(human, human) human.Life(SSMOBS_DT) TEST_ASSERT(human.reagents.has_reagent(meth), "Human body does not have meth after life tick") diff --git a/code/modules/unit_tests/syringe_gun.dm b/code/modules/unit_tests/syringe_gun.dm new file mode 100644 index 0000000000000..2d3e56a58089a --- /dev/null +++ b/code/modules/unit_tests/syringe_gun.dm @@ -0,0 +1,14 @@ +/// Tests the ability to load syringe into a syringe gun +/datum/unit_test/load_syringe + +/datum/unit_test/load_syringe/Run() + var/mob/living/carbon/human/consistent/chemist = EASY_ALLOCATE() + var/obj/item/gun/syringe/syringe_gun = EASY_ALLOCATE() + var/obj/item/reagent_containers/syringe/syringe = EASY_ALLOCATE() + + chemist.put_in_active_hand(syringe, forced = TRUE) + chemist.put_in_inactive_hand(syringe_gun, forced = TRUE) + + click_wrapper(chemist, syringe_gun) + + TEST_ASSERT_EQUAL(syringe.loc, syringe_gun, "Syringe was not added to syringe gun when clicking on it to load it.") diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index ce59bd3d61d49..241d7b54c39af 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -166,6 +166,18 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) log_world("::[priority] file=[file],line=[line],title=[map_name]: [type]::[annotation_text]") +/** + * Helper to perform a click + * + * * clicker: The mob that will be clicking + * * clicked_on: The atom that will be clicked + * * passed_params: A list of parameters to pass to the click + */ +/datum/unit_test/proc/click_wrapper(mob/living/clicker, atom/clicked_on, list/passed_params = list(LEFT_CLICK = 1, BUTTON = LEFT_CLICK)) + clicker.next_click = -1 + clicker.next_move = -1 + clicker.ClickOn(clicked_on, list2params(passed_params)) + /proc/RunUnitTest(datum/unit_test/test_path, list/test_results) if(ispath(test_path, /datum/unit_test/focus_only)) return @@ -242,6 +254,8 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) //Yet more templates /obj/machinery/restaurant_portal, //Template type + /obj/machinery/power/turbine, + //Template type /obj/effect/mob_spawn, //Template type /obj/structure/holosign/robot_seat, @@ -289,9 +303,9 @@ GLOBAL_VAR_INIT(focused_tests, focused_tests()) //No heart to give returnable_list += typesof(/obj/structure/ethereal_crystal) //No linked console - returnable_list += typesof(/mob/eye/ai_eye/remote/base_construction) + returnable_list += typesof(/mob/eye/camera/remote/base_construction) //See above - returnable_list += typesof(/mob/eye/ai_eye/remote/shuttle_docker) + returnable_list += typesof(/mob/eye/camera/remote/shuttle_docker) //Hangs a ref post invoke async, which we don't support. Could put a qdeleted check but it feels hacky returnable_list += typesof(/obj/effect/anomaly/grav/high) //See above diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 0d347709536ee..1782f836bea70 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -194,7 +194,8 @@ return QDEL_NULL(gun_reward.pin) - gun_reward.pin = new /obj/item/firing_pin(gun_reward) + var/obj/item/firing_pin/pin = new + pin.gun_insert(new_gun = gun_reward) ///For special overrides if an item can be bought or not. /datum/uplink_item/proc/can_be_bought(datum/uplink_handler/source) @@ -217,9 +218,13 @@ category = /datum/uplink_category/discounts purchasable_from = parent_type::purchasable_from & ~UPLINK_SPY // Probably not necessary but just in case +/datum/uplink_category/objective_special + name = "Objective-Specific Equipment" + weight = -3 + // Special equipment (Dynamically fills in uplink component) /datum/uplink_item/special_equipment - category = "Objective-Specific Equipment" + category = /datum/uplink_category/objective_special name = "Objective-Specific Equipment" desc = "Equipment necessary for accomplishing specific objectives. If you are seeing this, something has gone wrong." limited_stock = 1 diff --git a/code/modules/uplink/uplink_items/device_tools.dm b/code/modules/uplink/uplink_items/device_tools.dm index 714c3133482c4..ef2ab6fd1fddc 100644 --- a/code/modules/uplink/uplink_items/device_tools.dm +++ b/code/modules/uplink/uplink_items/device_tools.dm @@ -242,9 +242,9 @@ active gravitational singularities or tesla balls towards it. This will not work when the engine is still \ in containment. Because of its size, it cannot be carried. Ordering this \ sends you a small beacon that will teleport the larger beacon to your location upon activation." - progression_minimum = 30 MINUTES + progression_minimum = 20 MINUTES item = /obj/item/sbeacondrop - cost = 10 + cost = 4 surplus = 0 // not while there isnt one on any station purchasable_from = ~UPLINK_ALL_SYNDIE_OPS diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index 9c0c92edcbfe7..935461509ab5d 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -142,6 +142,14 @@ cost = 11 restricted_roles = list(JOB_COOK) +/datum/uplink_item/role_restricted/moltobeso + name = "Molt'Obeso Sauce Bottle" + desc = "A branded bottle of Molt'Obeso sauce. This sauce can stimulate hunger in people, leading them to eat more than they intended. \ + It also enhances the absorption of calories from the food consumed." + item = /obj/item/storage/box/syndie_kit/moltobeso + cost = 2 + restricted_roles = list(JOB_COOK) + /datum/uplink_item/role_restricted/turretbox name = "Disposable Sentry Gun" desc = "A disposable sentry gun deployment system cleverly disguised as a toolbox, apply wrench for functionality." @@ -250,7 +258,7 @@ progression_minimum = 15 MINUTES item = /obj/item/gun/chem cost = 12 - restricted_roles = list(JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_BOTANIST) + restricted_roles = list(JOB_CHEMIST, JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_BOTANIST) /datum/uplink_item/role_restricted/pie_cannon name = "Banana Cream Pie Cannon" diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index 9b86a91b0264c..ca017a552fd68 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -52,7 +52,8 @@ Note: This bundle is not at a discount. You can purchase all of these items separately. You do not NEED these items, but most operatives fail WITHOUT at \ least SOME of these items. More experienced operatives can do without." item = /obj/item/storage/box/syndie_kit/core_gear - cost = 22 //freedom 5, doormag 3, c-4 1, stimpack 5, shield modsuit module 8 + //The cost for the core kit is always equivalent to the combined costs of the included items + cost = (/datum/uplink_item/device_tools/doorjack::cost + /datum/uplink_item/implants/freedom::cost + /datum/uplink_item/explosives/c4::cost + /datum/uplink_item/device_tools/stimpack::cost + /datum/uplink_item/suits/energy_shield::cost) limited_stock = 1 cant_discount = TRUE purchasable_from = UPLINK_SERIOUS_OPS @@ -178,7 +179,7 @@ /datum/uplink_item/weapon_kits/medium_cost/sword_and_board name = "Energy Shield and Sword Case (Very Hard)" - desc = "A case containing an energy sword and energy shield. Paired together, it provides considerable defensive power without lethal potency. \ + desc = "A case containing an energy sword and energy shield. Paired together, it provides considerable defensive power without compromising lethal potency. \ Perfect for the enterprising nuclear knight. Comes with a medieval helmet for your MODsuit!" item = /obj/item/storage/toolbox/guncase/sword_and_board @@ -195,13 +196,13 @@ /datum/uplink_item/weapon_kits/medium_cost/revolvercase name = "Syndicate Revolver Case (Moderate)" desc = "Waffle Corp's modernized Syndicate revolver. Fires 7 brutal rounds of .357 Magnum. \ - A classic operative weapon, brought to the modern era. Comes with 3 additional speedloaders of .357." + A classic operative weapon, improved for the modern era. Comes with 3 additional speedloaders of .357." item = /obj/item/storage/toolbox/guncase/revolver /datum/uplink_item/ammo_nuclear/basic/revolver name = ".357 Speed Loader (Revolver)" desc = "A speed loader that contains seven additional .357 Magnum rounds; usable with the Syndicate revolver. \ - For when you really need a lot of things dead. Operatives get a discount from most of our agents!" + For when you really need a lot of things dead. Unlike field agents, operatives get a premium price for their speedloaders!" item = /obj/item/ammo_box/a357 purchasable_from = parent_type::purchasable_from | UPLINK_SPY @@ -228,7 +229,7 @@ /datum/uplink_item/weapon_kits/medium_cost/rawketlawnchair name = "Dardo-RE Rocket Propelled Grenade Launcher (Hard)" desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \ - Guaranteed to send your target out with a bang or your money back! Comes with a bouquet of additional rockets!" + Guaranteed to take your target out with a bang, or your money back! Comes with a bouquet of additional rockets!" item = /obj/item/storage/toolbox/guncase/rocketlauncher /datum/uplink_item/ammo_nuclear/basic/rocket @@ -291,8 +292,8 @@ /datum/uplink_item/weapon_kits/high_cost/carbine name = "M-90gl Carbine Case (Hard)" - desc = "A fully-loaded, specialized three-round burst carbine that fires .223 ammunition from a 30 round magazine \ - with a 40mm underbarrel grenade launcher. Use secondary-fire to fire the grenade launcher. Comes with two spare magazines \ + desc = "A fully-loaded, specialized three-round burst carbine that fires .223 ammunition from a 30 round magazine.\ + Comes with a 40mm underbarrel grenade launcher. Use secondary-fire to fire the grenade launcher. Also comes with two spare magazines \ and a box of 40mm rubber slugs." item = /obj/item/storage/toolbox/guncase/m90gl @@ -320,7 +321,7 @@ /datum/uplink_item/weapon_kits/high_cost/sniper name = "Anti-Materiel Sniper Rifle Briefcase (Hard)" - desc = "An outdated, but still extremely powerful anti-material sniper rifle. Fires .50 BMG cartridges from a 6 round magazine. \ + desc = "An outdated, but still extremely powerful anti-materiel sniper rifle. Fires .50 BMG cartridges from a 6 round magazine. \ Can be fitted with a suppressor. If anyone asks how that even works, tell them it's Nanotrasen's fault. Comes with \ 3 spare magazines; 2 regular magazines and 1 disruptor magazine. Also comes with a suit and tie." item = /obj/item/storage/briefcase/sniper @@ -374,9 +375,11 @@ /datum/uplink_item/weapon_kits/surplus_smg name = "Surplus Smart-SMG (Flukie)" - desc = "An outdated smart-SMG with limited stopping power, however it's bullets will gradually track towards whatever \ - the gun was shot at. This does require you to actually aim at the person you are shooting at before firing, but \ - surely a highly trained operative such as yourself can manage that." + desc = "A failed experimental 'smart gun'. The use of .160 rocket propelled projectiles resulted in reduced stopping power \ + but increased overally accuracy so long as the shooter vaguely aimed towards their target. The relative increase in \ + operator effort from absurd recoil contradicted advertized advantages, resulting in poor market performance. However, \ + there sure are a lots still lying around in poorly secured warehouses. So we took them. And now you can have them. \ + If you REALLY want it. All I'm saying is: good luck." item = /obj/item/gun/ballistic/automatic/smartgun cost = 2 purchasable_from = UPLINK_SERIOUS_OPS diff --git a/code/modules/uplink/uplink_items/suits.dm b/code/modules/uplink/uplink_items/suits.dm index 2839a6d2d1eff..a71e604651879 100644 --- a/code/modules/uplink/uplink_items/suits.dm +++ b/code/modules/uplink/uplink_items/suits.dm @@ -81,8 +81,9 @@ cost = 16 cant_discount = TRUE -/datum/uplink_item/suits/modsuit/Wraith +/datum/uplink_item/suits/modsuit/wraith name = "MODsuit wraith cloaking module" - desc = "A MODsuit module that grants to the user Optical camouflage and the ability to overload light sources to recharge suit power." + desc = "A MODsuit module that grants to the user Optical camouflage and the ability to overload light sources to recharge suit power. \ + Incompatible with armored MODsuits." item = /obj/item/mod/module/stealth/wraith cost = 3 diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index 4aa28d6fe5a47..3840bfe0cd201 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -112,12 +112,12 @@ smoke.set_up(0, holder = src, location = src) smoke.start() -/obj/vehicle/ridden/atv/bullet_act(obj/projectile/P) +/obj/vehicle/ridden/atv/bullet_act(obj/projectile/proj) if(prob(50) || !LAZYLEN(buckled_mobs)) return ..() for(var/mob/buckled_mob as anything in buckled_mobs) - buckled_mob.bullet_act(P) - return BULLET_ACT_HIT + return buckled_mob.projectile_hit(proj) + return ..() /obj/vehicle/ridden/atv/atom_destruction() explosion(src, devastation_range = -1, light_impact_range = 2, flame_range = 3, flash_range = 4) diff --git a/code/modules/vehicles/cars/vim.dm b/code/modules/vehicles/cars/vim.dm index e2d9c50e5d66c..e762aec22bd5e 100644 --- a/code/modules/vehicles/cars/vim.dm +++ b/code/modules/vehicles/cars/vim.dm @@ -46,7 +46,7 @@ /obj/vehicle/sealed/car/vim/atom_destruction(damage_flag) new /obj/effect/decal/cleanable/oil(get_turf(src)) do_sparks(5, TRUE, src) - visible_message(span_boldannounce("[src] blows apart!")) + visible_message(span_bolddanger("[src] blows apart!")) return ..() /obj/vehicle/sealed/car/vim/mob_try_enter(mob/entering) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index ccb211a2a6678..301f3a7115891 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -836,7 +836,7 @@ /obj/vehicle/sealed/mecha/on_saboteur(datum/source, disrupt_duration) . = ..() - if(mecha_flags &= HAS_LIGHTS && light_on) + if((mecha_flags & HAS_LIGHTS) && light_on) set_light_on(FALSE) return TRUE diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index 0e1ab1302db91..6995206942938 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -35,8 +35,6 @@ . = ..() shield = new /obj/durand_shield(loc, src, plane, layer, dir) RegisterSignal(src, COMSIG_MECHA_ACTION_TRIGGER, PROC_REF(relay)) - RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, PROC_REF(prehit)) - /obj/vehicle/sealed/mecha/durand/Destroy() if(shield) @@ -84,10 +82,12 @@ shield.setDir(dir) //Redirects projectiles to the shield if defense_check decides they should be blocked and returns true. -/obj/vehicle/sealed/mecha/durand/proc/prehit(obj/projectile/source, list/signal_args) - SIGNAL_HANDLER +/obj/vehicle/sealed/mecha/durand/bullet_act(obj/projectile/source, def_zone, mode) if(defense_check(source.loc) && shield) - signal_args[2] = shield + return shield.projectile_hit(source, def_zone, mode) + return ..() + + /**Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield. Expects a turf. Returns true if the attack should be blocked, false if not.*/ @@ -274,7 +274,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe flick("shield_impact", src) if(!.) return - if(!chassis.use_energy(. * (STANDARD_CELL_CHARGE / 15))) + if(!chassis.use_energy(. * (STANDARD_CELL_CHARGE / 150))) chassis.cell?.charge = 0 for(var/O in chassis.occupants) var/mob/living/occupant = O diff --git a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm index e1c37a3d13a7f..3c49e18c7552e 100644 --- a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm @@ -15,82 +15,33 @@ if(!chassis) return PROCESS_KILL -/obj/item/mecha_parts/mecha_equipment/medical/sleeper +/obj/item/mecha_parts/mecha_equipment/proc/get_reagent_data(list/datum/reagent/reagent_list) + var/list/contained_reagents = list() + if(length(reagent_list)) + for(var/datum/reagent/reagent as anything in reagent_list) + contained_reagents += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01))) // list in a list because Byond merges the first list... + return contained_reagents + +//---- Mecha sleeper, medical subtype has the chemical functionality +/obj/item/mecha_parts/mecha_equipment/sleeper name = "mounted sleeper" - desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents from a equipped exosuit syringe gun." - icon_state = "mecha_sleeper" + desc = "A mounted sleeper that stabilizes patients." + icon_state = "mecha_sleeper_miner" energy_drain = 20 range = MECHA_MELEE equip_cooldown = 20 /// ref to the patient loaded in the sleeper var/mob/living/carbon/patient - /// amount of chems to inject into patient from other hands syringe gun - var/inject_amount = 10 -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Destroy() +/obj/item/mecha_parts/mecha_equipment/sleeper/Destroy() for(var/atom/movable/content as anything in src) content.forceMove(get_turf(src)) return ..() -/obj/item/mecha_parts/mecha_equipment/medical/proc/get_reagent_data(list/datum/reagent/reagent_list) - var/list/contained_reagents = list() - if(length(reagent_list)) - for(var/datum/reagent/reagent as anything in reagent_list) - contained_reagents += list(list("name" = reagent.name, "volume" = round(reagent.volume, 0.01))) // list in a list because Byond merges the first list... - return contained_reagents - -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/get_snowflake_data() - var/list/data = list("snowflake_id" = MECHA_SNOWFLAKE_ID_SLEEPER) - if(isnull(patient)) - return data - var/patient_state - switch(patient.stat) - if(0) - patient_state = "Conscious" - if(1) - patient_state = "Unconscious" - if(2) - patient_state = "*dead*" - else - patient_state = "Unknown" - var/core_temp = "" - if(ishuman(patient)) - var/mob/living/carbon/human/humi = patient - core_temp = humi.bodytemperature-T0C - data["patient"] = list( - "patient_name" = patient.name, - "patient_health" = patient.health/patient.maxHealth, - "patient_state" = patient_state, - "core_temp" = core_temp, - "brute_loss" = patient.getBruteLoss(), - "burn_loss" = patient.getFireLoss(), - "toxin_loss" = patient.getToxLoss(), - "oxygen_loss" = patient.getOxyLoss(), - ) - data["has_brain_damage"] = patient.get_organ_loss(ORGAN_SLOT_BRAIN) != 0 - data["has_traumas"] = length(patient.get_traumas()) != 0 - data["contained_reagents"] = get_reagent_data(patient.reagents.reagent_list) - - var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate(/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun) in chassis - if(shooter) - data["injectible_reagents"] = get_reagent_data(shooter.reagents.reagent_list) - return data - -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/handle_ui_act(action, list/params) - switch(action) - if("eject") - go_out() - return TRUE - var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate() in chassis - if(shooter) - for(var/datum/reagent/medication in shooter.reagents.reagent_list) - if(action == ("inject_reagent_" + medication.name)) - inject_reagent(medication, shooter) - break // or maybe return TRUE? i'm not certain - - return FALSE +/obj/item/mecha_parts/mecha_equipment/sleeper/container_resist_act(mob/living/user) + go_out() -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/action(mob/source, atom/atomtarget, list/modifiers) +/obj/item/mecha_parts/mecha_equipment/sleeper/action(mob/source, atom/atomtarget, list/modifiers) if(!action_checks(atomtarget)) return if(!iscarbon(atomtarget)) @@ -112,7 +63,7 @@ log_message("[target] loaded. Life support functions engaged.", LOG_MECHA) return ..() -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/patient_insertion_check(mob/living/carbon/target, mob/user) +/obj/item/mecha_parts/mecha_equipment/sleeper/proc/patient_insertion_check(mob/living/carbon/target, mob/user) if(!isnull(target.buckled)) to_chat(user, "[icon2html(src, user)][span_warning("[target] will not fit into the sleeper because [target.p_theyre()] buckled to [target.buckled]!")]") return FALSE @@ -124,7 +75,7 @@ return FALSE return TRUE -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/go_out() +/obj/item/mecha_parts/mecha_equipment/sleeper/proc/go_out() if(!patient) return patient.forceMove(get_turf(src)) @@ -133,31 +84,56 @@ STOP_PROCESSING(SSobj, src) patient = null -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/detach() +/obj/item/mecha_parts/mecha_equipment/sleeper/detach() if(patient) to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_warning("Unable to detach [src] - equipment occupied!")]") return STOP_PROCESSING(SSobj, src) return ..() -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/inject_reagent(datum/reagent/R, obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/SG) - if(!R || !patient || !SG || !(SG in chassis.flat_equipment)) - return - var/to_inject = min(R.volume, inject_amount) - if(to_inject && patient.reagents.get_reagent_amount(R.type) + to_inject <= inject_amount*2) - to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_notice("Injecting [patient] with [to_inject] units of [R.name].")]") - log_message("Injecting [patient] with [to_inject] units of [R.name].", LOG_MECHA) - for(var/driver in chassis.return_drivers()) - log_combat(driver, patient, "injected", "[name] ([R] - [to_inject] units)") - SG.reagents.trans_to(patient, to_inject, target_id = R.type) +/obj/item/mecha_parts/mecha_equipment/sleeper/get_snowflake_data() + var/list/data = list("snowflake_id" = MECHA_SNOWFLAKE_ID_SLEEPER) + if(isnull(patient)) + return data + var/patient_state + switch(patient.stat) + if(CONSCIOUS) + patient_state = "Conscious" + if(UNCONSCIOUS) + patient_state = "Unconscious" + if(DEAD) + patient_state = "*Dead*" + if(SOFT_CRIT, HARD_CRIT) + patient_state = "Critical" + else + patient_state = "Unknown" + var/core_temp = "" + if(ishuman(patient)) + var/mob/living/carbon/human/humi = patient + core_temp = humi.bodytemperature-T0C + data["patient"] = list( + "patient_name" = patient.name, + "patient_health" = patient.health/patient.maxHealth, + "patient_state" = patient_state, + "core_temp" = core_temp, + "brute_loss" = patient.getBruteLoss(), + "burn_loss" = patient.getFireLoss(), + "toxin_loss" = patient.getToxLoss(), + "oxygen_loss" = patient.getOxyLoss(), + ) + data["contained_reagents"] = get_reagent_data(patient.reagents.reagent_list) + data["has_brain_damage"] = patient.get_organ_loss(ORGAN_SLOT_BRAIN) != 0 + data["has_traumas"] = length(patient.get_traumas()) != 0 -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/container_resist_act(mob/living/user) - go_out() + return data -/obj/item/mecha_parts/mecha_equipment/medical/sleeper/process(seconds_per_tick) - . = ..() - if(.) - return +/obj/item/mecha_parts/mecha_equipment/sleeper/handle_ui_act(action, list/params) + if(action == "eject") + go_out() + return TRUE + return FALSE + +/obj/item/mecha_parts/mecha_equipment/sleeper/process(seconds_per_tick) if(!chassis.has_charge(energy_drain)) log_message("Deactivated.", LOG_MECHA) to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_warning("[src] deactivated - no power.")]") @@ -171,17 +147,59 @@ log_message("[patient] no longer detected - Life support functions disabled.", LOG_MECHA) STOP_PROCESSING(SSobj, src) patient = null - if(ex_patient.health > 0) - ex_patient.adjustOxyLoss(-0.5 * seconds_per_tick) - ex_patient.AdjustStun(-40 * seconds_per_tick) - ex_patient.AdjustKnockdown(-40 * seconds_per_tick) - ex_patient.AdjustParalyzed(-40 * seconds_per_tick) - ex_patient.AdjustImmobilized(-40 * seconds_per_tick) - ex_patient.AdjustUnconscious(-40 * seconds_per_tick) - if(ex_patient.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5) + ex_patient.adjustOxyLoss(-2 * seconds_per_tick) + ex_patient.AdjustStun(-4 SECONDS * seconds_per_tick) + ex_patient.AdjustKnockdown(-4 SECONDS * seconds_per_tick) + ex_patient.AdjustParalyzed(-4 SECONDS * seconds_per_tick) + ex_patient.AdjustImmobilized(-4 SECONDS * seconds_per_tick) + ex_patient.AdjustUnconscious(-4 SECONDS * seconds_per_tick) + if(ex_patient.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5 \ + && ex_patient.reagents.get_reagent_amount(/datum/reagent/medicine/c2/penthrite) <= 0 \ + && ex_patient.stat >= SOFT_CRIT) ex_patient.reagents.add_reagent(/datum/reagent/medicine/epinephrine, 5) + if(ex_patient.reagents.get_reagent_amount(/datum/reagent/toxin/formaldehyde) <= 0 && ex_patient.stat == DEAD) + ex_patient.reagents.add_reagent(/datum/reagent/toxin/formaldehyde, 3) chassis.use_energy(energy_drain) +//Medical subtype with the chems +/obj/item/mecha_parts/mecha_equipment/sleeper/medical + name = "mounted sleeper" + desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents from a equipped exosuit syringe gun." + icon_state = "mecha_sleeper" + mech_flags = EXOSUIT_MODULE_MEDICAL + /// amount of chems to inject into patient from other hands syringe gun + var/inject_amount = 10 + +/obj/item/mecha_parts/mecha_equipment/sleeper/medical/get_snowflake_data() + var/list/data = ..() + if(isnull(patient)) + return data + var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate(/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun) in chassis + if(shooter) + data["injectible_reagents"] = get_reagent_data(shooter.reagents.reagent_list) + return data + +/obj/item/mecha_parts/mecha_equipment/sleeper/medical/handle_ui_act(action, list/params) + . = ..() + if(.) + return TRUE + var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/shooter = locate() in chassis + if(shooter) + for(var/datum/reagent/medication as anything in shooter.reagents.reagent_list) + if(action == ("inject_reagent_" + medication.name)) + inject_reagent(medication, shooter) + break // or maybe return TRUE? i'm not certain + +/obj/item/mecha_parts/mecha_equipment/sleeper/medical/proc/inject_reagent(datum/reagent/reagent_to_inject, obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/SG) + if(!reagent_to_inject || !patient || !SG || !(SG in chassis.flat_equipment)) + return + var/to_inject = min(reagent_to_inject.volume, inject_amount) + if(to_inject && patient.reagents.get_reagent_amount(reagent_to_inject.type) + to_inject <= inject_amount*2) + to_chat(chassis.occupants, "[icon2html(src, chassis.occupants)][span_notice("Injecting [patient] with [to_inject] units of [reagent_to_inject.name].")]") + log_message("Injecting [patient] with [to_inject] units of [reagent_to_inject.name].", LOG_MECHA) + for(var/driver in chassis.return_drivers()) + log_combat(driver, patient, "injected", "[name] ([reagent_to_inject] - [to_inject] units)") + SG.reagents.trans_to(patient, to_inject, target_id = reagent_to_inject.type) ///////////////////////////////// Syringe Gun /////////////////////////////////////////////////////////////// diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm index e08020a545f62..b1585f679a22c 100644 --- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm @@ -9,6 +9,8 @@ name = "exosuit drill" desc = "Equipment for engineering and combat exosuits. This is the drill that'll pierce the heavens!" icon_state = "mecha_drill" + equipment_slot = MECHA_UTILITY + can_be_toggled = TRUE equip_cooldown = 15 energy_drain = 0.01 * STANDARD_CELL_CHARGE force = 15 @@ -32,6 +34,17 @@ ADD_TRAIT(src, TRAIT_INSTANTLY_PROCESSES_BOULDERS, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_BOULDER_BREAKER, INNATE_TRAIT) +/obj/item/mecha_parts/mecha_equipment/drill/handle_ui_act(action, list/params) + if(action != "toggle") + return + if(active) + RegisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK, PROC_REF(on_mech_click)) + log_message("Activated.", LOG_MECHA) + else + UnregisterSignal(chassis, COMSIG_MECHA_MELEE_CLICK) + log_message("Deactivated.", LOG_MECHA) + return TRUE + /obj/item/mecha_parts/mecha_equipment/drill/attach(obj/vehicle/sealed/mecha/new_mecha, attach_right) . = ..() RegisterSignal(chassis, COMSIG_MOVABLE_BUMP, PROC_REF(bump_mine)) @@ -64,6 +77,14 @@ return FALSE return ..() +///Redirects clicks to use the drill if possible when enabled +/obj/item/mecha_parts/mecha_equipment/drill/proc/on_mech_click(atom/mech, mob/source, atom/target, on_cooldown, adjacent) + SIGNAL_HANDLER + if(on_cooldown || !adjacent) + return + INVOKE_ASYNC(src, PROC_REF(action), source, target, null, FALSE) + return COMPONENT_CANCEL_MELEE_CLICK + /obj/item/mecha_parts/mecha_equipment/drill/action(mob/source, atom/target, list/modifiers, bumped) //If bumped, only bother drilling mineral turfs if(bumped) @@ -90,6 +111,10 @@ if(target_obj.resistance_flags & (UNACIDABLE | INDESTRUCTIBLE)) return + // Check if we can even use the equipment to begin with. + if(!action_checks(target)) + return + // You can't drill harder by clicking more. if(DOING_INTERACTION_WITH_TARGET(source, target) && do_after_cooldown(target, source, DOAFTER_SOURCE_MECHADRILL)) return @@ -102,10 +127,6 @@ // Drilling a turf is a one-and-done procedure. if(isturf(target)) - // Check if we can even use the equipment to begin with. - if(!action_checks(target)) - return - var/turf/T = target T.drill_act(src, source) diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index 4d3b682b4277b..15cc3e6b8cdb5 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -285,7 +285,7 @@ ///Maximum fuel capacity of the generator, in units var/max_fuel = 75 * SHEET_MATERIAL_AMOUNT ///Energy recharged per second - var/rechargerate = 0.005 * STANDARD_CELL_RATE + var/rechargerate = 0.05 * STANDARD_CELL_RATE /obj/item/mecha_parts/mecha_equipment/generator/Initialize(mapload) . = ..() diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm index b29c5501a7959..c62b2a0d9ce45 100644 --- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm +++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm @@ -68,13 +68,13 @@ var/obj/projectile/projectile_obj = new projectile(get_turf(src)) projectile_obj.log_override = TRUE //we log being fired ourselves a little further down. projectile_obj.firer = chassis - projectile_obj.preparePixelProjectile(target, source, modifiers, spread) + projectile_obj.aim_projectile(target, source, modifiers, spread) if(isliving(source) && source.client) //dont want it to happen from syndie mecha npc mobs, they do direct fire anyways var/mob/living/shooter = source projectile_obj.hit_prone_targets = shooter.combat_mode projectile_obj.fire() if(!projectile_obj.suppressed && firing_effect_type) - new firing_effect_type(get_turf(src), chassis.dir) + new firing_effect_type(chassis || get_turf(src), chassis.dir) playsound(chassis, fire_sound, 50, TRUE) log_combat(source, target, "fired [projectile_obj] at", src, "from [chassis] at [get_area_name(src, TRUE)]") diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm index 54f8cee9ed4c5..ad28886d99f22 100644 --- a/code/modules/vehicles/mecha/mech_fabricator.dm +++ b/code/modules/vehicles/mecha/mech_fabricator.dm @@ -10,6 +10,7 @@ subsystem_type = /datum/controller/subsystem/processing/fastprocess + interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS /// Current items in the build queue. var/list/datum/design/queue = list() @@ -49,12 +50,15 @@ /// All designs in the techweb that can be fabricated by this machine, since the last update. var/list/datum/design/cached_designs - //looping sound for printing items + /// Looping sound for printing items var/datum/looping_sound/lathe_print/print_sound /// Local designs that only this mechfab have(using when mechfab emaged so it's illegal designs). var/list/datum/design/illegal_local_designs + /// Direction the produced items will drop (0 means on top of us) + var/drop_direction = SOUTH + /obj/machinery/mecha_part_fabricator/Initialize(mapload) print_sound = new(src, FALSE) rmat = AddComponent(/datum/component/remote_materials, mapload && link_on_init) @@ -136,15 +140,19 @@ . = ..() if(in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Storing up to [rmat.local_size] material units.
Material consumption at [component_coeff*100]%.
Build time reduced by [100-time_coeff*100]%.") - if(panel_open) - . += span_notice("Alt-click to rotate the output direction.") + . += span_notice("Currently configured to drop printed objects [dir2text(drop_direction)].") -/obj/machinery/mecha_part_fabricator/click_alt(mob/user) - if(!panel_open) - return CLICK_ACTION_BLOCKING - dir = turn(dir, -90) - balloon_alert(user, "rotated to [dir2text(dir)].") - return CLICK_ACTION_SUCCESS +/obj/machinery/mecha_part_fabricator/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params) + if(!can_interact(user) || (!HAS_SILICON_ACCESS(user) && !isAdminGhostAI(user)) && !Adjacent(user)) + return + if(being_built) + balloon_alert(user, "printing started!") + return + var/direction = get_dir(src, over_location) + if(!direction) + return + drop_direction = direction + balloon_alert(user, "dropping [dir2text(drop_direction)]") /obj/machinery/mecha_part_fabricator/emag_act(mob/user, obj/item/card/emag/emag_card) if(obj_flags & EMAGGED) @@ -267,7 +275,7 @@ /obj/machinery/mecha_part_fabricator/process() // If there's a stored part to dispense due to an obstruction, try to dispense it. if(stored_part) - var/turf/exit = get_step(src,(dir)) + var/turf/exit = get_step(src, drop_direction) if(exit.density) return TRUE @@ -305,7 +313,7 @@ being_built = null - var/turf/exit = get_step(src,(dir)) + var/turf/exit = get_step(src, drop_direction) if(exit.density) say("Error! The part outlet is obstructed.") desc = "It's trying to dispense the fabricated [dispensed_design.name], but the part outlet is obstructed." diff --git a/code/modules/vehicles/mecha/mecha_ai_interaction.dm b/code/modules/vehicles/mecha/mecha_ai_interaction.dm index 6dc1e2307dc28..168b2e0ea029d 100644 --- a/code/modules/vehicles/mecha/mecha_ai_interaction.dm +++ b/code/modules/vehicles/mecha/mecha_ai_interaction.dm @@ -99,7 +99,7 @@ mecha_flags |= SILICON_PILOT moved_inside(AI) AI.eyeobj?.forceMove(src) - AI.eyeobj?.RegisterSignal(src, COMSIG_MOVABLE_MOVED, TYPE_PROC_REF(/mob/eye/ai_eye, update_visibility)) + AI.eyeobj?.RegisterSignal(src, COMSIG_MOVABLE_MOVED, TYPE_PROC_REF(/mob/eye/camera/ai, update_visibility)) AI.controlled_equipment = src AI.remote_control = src add_occupant(AI) diff --git a/code/modules/vehicles/mecha/mecha_construction_paths.dm b/code/modules/vehicles/mecha/mecha_construction_paths.dm index 0a305a5db66ae..a8a7c224491a2 100644 --- a/code/modules/vehicles/mecha/mecha_construction_paths.dm +++ b/code/modules/vehicles/mecha/mecha_construction_paths.dm @@ -416,10 +416,10 @@ circuit_control = /obj/item/circuitboard/mecha/clarke/main circuit_periph = /obj/item/circuitboard/mecha/clarke/peripherals - inner_plating = /obj/item/stack/sheet/plasteel + inner_plating = /obj/item/stack/sheet/iron inner_plating_amount = 5 - outer_plating = /obj/item/stack/sheet/mineral/gold + outer_plating = /obj/item/stack/sheet/plasteel outer_plating_amount = 5 /datum/component/construction/mecha/clarke/get_frame_steps() diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm index f0fdc3997a39d..d7f52915a4b2b 100644 --- a/code/modules/vehicles/mecha/mecha_defense.dm +++ b/code/modules/vehicles/mecha/mecha_defense.dm @@ -121,7 +121,7 @@ && !(mecha_flags & SILICON_PILOT) \ && (def_zone == BODY_ZONE_HEAD || def_zone == BODY_ZONE_CHEST)) var/mob/living/hitmob = pick(occupants) - return hitmob.bullet_act(hitting_projectile, def_zone, piercing_hit) //If the sides are open, the occupant can be hit + return hitmob.projectile_hit(hitting_projectile, def_zone, piercing_hit) //If the sides are open, the occupant can be hit . = ..() diff --git a/code/modules/vehicles/mecha/mecha_movement.dm b/code/modules/vehicles/mecha/mecha_movement.dm index a4b21190a1ec3..130e0e807b438 100644 --- a/code/modules/vehicles/mecha/mecha_movement.dm +++ b/code/modules/vehicles/mecha/mecha_movement.dm @@ -139,6 +139,8 @@ // if we're not strafing or if we are forced to rotate or if we are holding down the key if(dir != direction && (!strafe || forcerotate || keyheld)) setDir(direction) + if(!(mecha_flags & QUIET_TURNS)) + playsound(src, turnsound, 40, TRUE) if(keyheld || !pivot_step) //If we pivot step, we don't return here so we don't just come to a stop return TRUE @@ -146,10 +148,6 @@ //Otherwise just walk normally . = try_step_multiz(direction) - //dir and olddir are the current direction of the sprite and the old direction of the sprite respectively - if (dir != olddir && !(mecha_flags & QUIET_TURNS)) - playsound(src, turnsound, 40, TRUE) - if(phasing) use_energy(phasing_energy_drain) if(strafe) diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 8ccee945ed26e..1ecf4a9a831bc 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -1,11 +1,11 @@ -///Lavaproof, fireproof, fast mech with low armor and higher energy consumption, cannot strafe and has an internal ore box. +///Lavaproof, fireproof, fast mech with low armor and higher energy consumption and has an internal ore box. /obj/vehicle/sealed/mecha/clarke - desc = "Combining man and machine for a better, stronger engineer. Can even resist lava!" + desc = "Combining man and machine for a better, stronger miner, Cannot strafe Can even resist lava!" name = "\improper Clarke" icon_state = "clarke" base_icon_state = "clarke" max_temperature = 65000 - max_integrity = 200 + max_integrity = 250 movedelay = 1.25 overclock_coeff = 1.25 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF @@ -15,14 +15,14 @@ equip_by_category = list( MECHA_L_ARM = null, MECHA_R_ARM = null, - MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/orebox_manager), + MECHA_UTILITY = list(/obj/item/mecha_parts/mecha_equipment/orebox_manager, /obj/item/mecha_parts/mecha_equipment/sleeper/clarke), MECHA_POWER = list(), MECHA_ARMOR = list(), ) max_equip_by_category = list( MECHA_L_ARM = 1, MECHA_R_ARM = 1, - MECHA_UTILITY = 5, + MECHA_UTILITY = 6, MECHA_POWER = 1, MECHA_ARMOR = 1, ) @@ -35,7 +35,7 @@ pivot_step = TRUE /datum/armor/mecha_clarke - melee = 20 + melee = 40 bullet = 10 laser = 20 energy = 10 @@ -55,13 +55,14 @@ /obj/vehicle/sealed/mecha/clarke/generate_actions() . = ..() initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_search_ruins) + initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/clarke_scoop_body) //Ore Box Controls ///Special equipment for the Clarke mech, handles moving ore without giving the mech a hydraulic clamp and cargo compartment. /obj/item/mecha_parts/mecha_equipment/orebox_manager name = "ore storage module" - desc = "An automated ore box management device." + desc = "An automated ore box management device, complete with a built-in boulder processor." icon_state = "mecha_bin" equipment_slot = MECHA_UTILITY detachable = FALSE @@ -109,6 +110,26 @@ log_message("Dumped [cached_ore_box].", LOG_MECHA) return TRUE +/obj/item/mecha_parts/mecha_equipment/sleeper/clarke //The Clarke subtype of the sleeper is a built-in utility module + equipment_slot = MECHA_UTILITY + detachable = FALSE + +/datum/action/vehicle/sealed/mecha/clarke_scoop_body + name = "Pick up body" + desc = "Activate to pick up a nearby body" + button_icon = 'icons/obj/devices/mecha_equipment.dmi' + button_icon_state = "mecha_sleeper_miner" + +/datum/action/vehicle/sealed/mecha/clarke_scoop_body/Trigger(trigger_flags) + var/obj/item/mecha_parts/mecha_equipment/sleeper/clarke/sleeper = locate() in chassis + var/mob/living/carbon/human/human_target + for(var/mob/living/carbon/human/body in range(1, chassis)) + if(chassis.is_driver(body) || !ishuman(body) || !chassis.Adjacent(body)) + continue + human_target = body //Non-driver, human, and adjacent + break + sleeper.action(pick(chassis.return_drivers()), human_target) //This will probably break if anyone allows multiple drivers of the Clarke mech + #define SEARCH_COOLDOWN (1 MINUTES) /datum/action/vehicle/sealed/mecha/mech_search_ruins diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm index a2aaa53784f45..7d8452893ac21 100644 --- a/code/modules/vehicles/mecha/working/ripley.dm +++ b/code/modules/vehicles/mecha/working/ripley.dm @@ -301,6 +301,10 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/ripley/cargo) var/obj/vehicle/sealed/mecha/ripley/workmech = chassis workmech.cargo_hold = src +/obj/item/mecha_parts/mecha_equipment/ejector/detach() + var/obj/vehicle/sealed/mecha/ripley/workmech = chassis + workmech.cargo_hold = null + return ..() /obj/item/mecha_parts/mecha_equipment/ejector/Destroy() for(var/atom/stored in contents) diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index 392c890ca8fd2..9b0dd29b5fe48 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -213,7 +213,7 @@ instability = 3 icon_state = "hoverboard_holy" -/obj/vehicle/ridden/scooter/skateboard/hoverboard/make_ridable() +/obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded/make_ridable() AddElement(/datum/element/ridable, /datum/component/riding/vehicle/scooter/skateboard/hover/holy) /obj/vehicle/ridden/scooter/skateboard/hoverboard/holyboarded/Initialize(mapload) diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index 6726fb02ef150..6042210d01ca1 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -97,9 +97,9 @@ return ..() //bullets will have a 60% chance to hit any riders -/obj/vehicle/ridden/secway/bullet_act(obj/projectile/P) +/obj/vehicle/ridden/secway/bullet_act(obj/projectile/proj) if(!buckled_mobs || prob(40)) return ..() for(var/mob/rider as anything in buckled_mobs) - rider.bullet_act(P) - return TRUE + return rider.projectile_hit(proj) + return ..() diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 27d2afa88e57d..a5f2c84920d24 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -57,6 +57,7 @@ /obj/item/reagent_containers/cup/fish_feed = 4, /obj/item/fish_analyzer = 2, /obj/item/fishing_rod/telescopic = 1, + /obj/item/fish_tank = 1, ), ), list( diff --git a/code/modules/vending/mail.dm b/code/modules/vending/mail.dm new file mode 100644 index 0000000000000..1e091a3128756 --- /dev/null +++ b/code/modules/vending/mail.dm @@ -0,0 +1,309 @@ +#define STATE_SORTING "sorting" +#define STATE_IDLE "idle" +#define STATE_YES "yes" +#define STATE_NO "no" +#define MAIL_CAPACITY 100 + +/obj/machinery/mailsorter + name = "mail sorter" + desc = "A large mail sorting unit. Sorting mail since 1987!" + icon = 'icons/obj/machines/mailsorter.dmi' + icon_state = "mailsorter" + base_icon_state = "mailsorter" + layer = BELOW_OBJ_LAYER + density = TRUE + max_integrity = 300 + integrity_failure = 0.33 + req_access = list(ACCESS_CARGO) + circuit = /obj/item/circuitboard/machine/mailsorter + + var/light_mask = "mailsorter-light-mask" + var/panel_type = "panel" + + /// What the machine is currently doing. Can be "sorting", "idle", "yes", "no". + var/currentstate = STATE_IDLE + /// List of all mail that's inside the mailbox. + var/list/mail_list = list() + /// The direction in which the mail will be unloaded. + var/output_dir = SOUTH + /// List of the departments to sort the mail for. + var/static/list/sorting_departments = list( + DEPARTMENT_ENGINEERING, + DEPARTMENT_SECURITY, + DEPARTMENT_MEDICAL, + DEPARTMENT_SCIENCE, + DEPARTMENT_CARGO, + DEPARTMENT_SERVICE, + DEPARTMENT_COMMAND, + ) + var/static/list/choices = list( + "Eject" = icon('icons/hud/radial.dmi', "radial_eject"), + "Dump" = icon('icons/hud/radial.dmi', "mail_dump"), + "Sort" = icon('icons/hud/radial.dmi', "mail_sort"), + ) + +/// Steps one tile in the `output_dir`. Returns `turf`. +/obj/machinery/mailsorter/proc/get_unload_turf() + return get_step(src, output_dir) + +/obj/machinery/mailsorter/screwdriver_act(mob/living/user, obj/item/tool) + default_deconstruction_screwdriver(user, "[base_icon_state]-off", base_icon_state, tool) + update_appearance(UPDATE_OVERLAYS) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/mailsorter/crowbar_act(mob/living/user, obj/item/tool) + default_deconstruction_crowbar(tool) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/mailsorter/examine(mob/user) + . = ..() + . += span_notice("There is[length(mail_list) < 100 ? " " : " no more "]space for [length(mail_list) < 100 ? "[100 - length(mail_list)] " : ""]envelope\s inside.") + . += span_notice("There [length(mail_list) >= 2 ? "are" : "is"] [length(mail_list) ? length(mail_list) : "no"] envelope\s inside.") + if(panel_open) + . += span_notice("Alt-click to rotate the output direction.") + +/obj/machinery/mailsorter/Destroy() + drop_all_mail() + . = ..() + +/// Drops all enevlopes on the machine turf. Only occurs when the machine is broken. +/obj/machinery/mailsorter/proc/drop_all_mail(damage_flag) + if(!isturf(get_turf(src))) + QDEL_LIST(mail_list) + return + for(var/obj/item/mail in mail_list) + mail.forceMove(src) + mail_list -= mail + +/// Dumps all envelopes on the `unload_turf`. +/obj/machinery/mailsorter/proc/dump_all_mail() + if(!isturf(get_turf(src))) + QDEL_LIST(mail_list) + return + var/turf/unload_turf = get_unload_turf() + for(var/obj/item/mail in mail_list) + mail.forceMove(unload_turf) + mail.throw_at(unload_turf, 2, 3) + mail_list -= mail + +/// Validates whether the inserted item is acceptable. +/obj/machinery/mailsorter/proc/accept_check(obj/item/weapon) + var/static/list/accepted_items = list( + /obj/item/mail, + /obj/item/mail/envelope, + /obj/item/mail/junkmail, + /obj/item/mail/mail_strike, + /obj/item/mail/traitor, + /obj/item/paper, + ) + return is_type_in_list(weapon, accepted_items) + +/obj/machinery/mailsorter/interact(mob/user) + if (!allowed(user)) + to_chat(user, span_warning("Access denied.")) + return + if (currentstate != STATE_IDLE) + return + if (length(mail_list) == 0) + to_chat(user, span_warning("There's no mail inside!")) + return + var/choice = show_radial_menu( + user, + src, + choices, + require_near = !HAS_SILICON_ACCESS(user), + autopick_single_option = FALSE, + ) + if (!choice) + return + switch (choice) + if ("Eject") + pick_mail(user) + if ("Dump") + playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE) + to_chat(user, span_notice("[src] dumps [length(mail_list)] envelope\s on the floor.")) + dump_all_mail() + if ("Sort") + sort_mail(user) + +/// Prompts the player to select a department to sort the mail for. Returns if `null`. +/obj/machinery/mailsorter/proc/sort_mail(mob/user) + var/sorting_dept = tgui_input_list(user, "Choose the department to sort mail for","Mail Sorting", sorting_departments) + if (!sorting_dept) + return + currentstate = STATE_SORTING + update_appearance(UPDATE_OVERLAYS) + playsound(src, 'sound/machines/mail_sort.ogg', 20, TRUE) + addtimer(CALLBACK(src, PROC_REF(continue_sort), user, sorting_dept), 5 SECONDS) + +/// Sorts the mail based on the picked department. Ejects the sorted envelopes onto the `unload_turf`. +/obj/machinery/mailsorter/proc/continue_sort(mob/user, sorting_dept) + var/list/sorted_mail = list() + var/total_to_sort = length(mail_list) + var/sorted = 0 + var/unable_to_sort = 0 + + for (var/obj/item/mail/some_mail in mail_list) + if (!some_mail.recipient_ref) + unable_to_sort ++ + continue + var/datum/mind/some_recipient = some_mail.recipient_ref.resolve() + if (some_recipient) + var/datum/job/recipient_job = some_recipient.assigned_role + var/datum/job_department/primary_department = recipient_job.departments_list?[1] + var/datum/job_department/main_department = primary_department.department_name + if (main_department == sorting_dept) + sorted_mail.Add(some_mail) + sorted ++ + else + unable_to_sort ++ + if (length(sorted_mail) == 0) + currentstate = STATE_NO + update_appearance(UPDATE_OVERLAYS) + playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE) + say("No mail for the following department: [sorting_dept].") + else + currentstate = STATE_YES + update_appearance(UPDATE_OVERLAYS) + say("[sorted] envelope\s sorted successfully.") + playsound(src, 'sound/machines/ping.ogg', 20, TRUE) + to_chat(user, span_notice("[src] ejects [length(sorted_mail)] envelope\s.")) + var/turf/unload_turf = get_unload_turf() + for (var/obj/item/mail/mail_in_list in sorted_mail) + mail_in_list.forceMove(unload_turf) + sorted_mail -= mail_in_list + mail_list -= mail_in_list + addtimer(CALLBACK(src, PROC_REF(check_sorted), unable_to_sort, total_to_sort), 1 SECONDS) + +/// Informs the player of the amount of processed envelopes. +/obj/machinery/mailsorter/proc/check_sorted(mob/user, unable_to_sort, total_to_sort) + if (unable_to_sort > 0) + playsound(src, 'sound/machines/buzz/buzz-sigh.ogg', 20, TRUE) + say("Couldn't sort [unable_to_sort] envelope\s.") + else + playsound(src, 'sound/machines/ping.ogg', 20, TRUE) + say("[total_to_sort] envelope\s processed.") + addtimer(CALLBACK(src, PROC_REF(update_state_after_sorting)), 1 SECONDS) + +/obj/machinery/mailsorter/proc/update_state_after_sorting() + currentstate = STATE_IDLE + update_appearance(UPDATE_OVERLAYS) + +/obj/machinery/mailsorter/item_interaction(mob/user, obj/item/thingy, params) + if (istype(thingy, /obj/item/storage/bag/mail)) + if (length(thingy.contents) < 1) + to_chat(user, span_warning("The [thingy] is empty!")) + return + var/loaded = 0 + for (var/obj/item/mail in thingy.contents) + if (!(mail.item_flags & ABSTRACT) && \ + !(mail.flags_1 & HOLOGRAM_1) && \ + accept_check(mail) \ + ) + if (length(mail_list) + 1 > MAIL_CAPACITY ) + to_chat(user, span_warning("There is no space for more mail in [src]!")) + return FALSE + else if (load(mail, user)) + loaded++ + mail_list += mail + if(loaded) + user.visible_message(span_notice("[user] loads \the [src] with \the [thingy]."), \ + span_notice("You load \the [src] with \the [thingy].")) + if(length(thingy.contents)) + to_chat(user, span_warning("Some items are refused.")) + return TRUE + else + to_chat(user, span_warning("There is nothing in \the [thingy] to put in the [src]!")) + return FALSE + else if (istype(thingy, /obj/item/mail)) + if (length(mail_list) + 1 > MAIL_CAPACITY ) + to_chat(user, span_warning("There is no space for more mail in [src]!")) + else + thingy.forceMove(src) + mail_list += thingy + to_chat(user, span_notice("The [src] whizzles as it accepts the [thingy].")) + +/// Prompts the user to select an anvelope from the list of all the envelopes inside. +/obj/machinery/mailsorter/proc/pick_mail(mob/user) + if(!length(mail_list)) + return + var/obj/item/mail/mail_throw = tgui_input_list(user, "Choose the envelope to eject","Mail Sorting", mail_list) + if(!mail_throw) + return + currentstate = STATE_SORTING + update_appearance(UPDATE_OVERLAYS) + playsound(src, 'sound/machines/mail_sort.ogg', 20, TRUE) + addtimer(CALLBACK(src, PROC_REF(pick_envelope), user, mail_throw), 50) + +/// Ejects a single envelope the player has picked onto the `unload_turf`. +/obj/machinery/mailsorter/proc/pick_envelope(mob/user, obj/item/mail/mail_throw) + to_chat(user, span_notice("[src] reluctantly spits out [mail_throw].")) + var/turf/unload_turf = get_unload_turf() + mail_throw.forceMove(unload_turf) + mail_throw.throw_at(unload_turf, 2, 3) + mail_list -= mail_throw + currentstate = STATE_IDLE + update_appearance(UPDATE_OVERLAYS) + +/// Tries to load something into the machine. +/obj/machinery/mailsorter/proc/load(obj/item/thingy, mob/user) + if(ismob(thingy.loc)) + var/mob/owner = thingy.loc + if(!owner.transferItemToLoc(thingy, src)) + to_chat(owner, span_warning("\the [thingy] is stuck to your hand, you cannot put it in \the [src]!")) + return FALSE + return TRUE + else + if(thingy.loc.atom_storage) + return thingy.loc.atom_storage.attempt_remove(thingy, src, silent = TRUE) + else + thingy.forceMove(src) + return TRUE + +/obj/machinery/mailsorter/click_alt(mob/living/user) + if(!panel_open) + return CLICK_ACTION_BLOCKING + output_dir = turn(output_dir, -90) + to_chat(user, span_notice("You change [src]'s I/O settings, setting the output to [dir2text(output_dir)].")) + update_appearance(UPDATE_OVERLAYS) + return CLICK_ACTION_SUCCESS + + +/obj/machinery/mailsorter/update_overlays() + . = ..() + if(!powered()) + return + if(!(machine_stat & BROKEN)) + var/image/mail_output = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_[output_dir]") + switch(output_dir) + if(NORTH) + mail_output.pixel_y = 32 + if(SOUTH) + mail_output.pixel_y = -32 + if(EAST) + mail_output.pixel_x = 32 + if(WEST) + mail_output.pixel_x = -32 + mail_output.color = COLOR_CRAYON_ORANGE + var/mutable_appearance/light_out = emissive_appearance(mail_output.icon, mail_output.icon_state, offset_spokesman = src, alpha = mail_output.alpha) + light_out.pixel_y = mail_output.pixel_y + light_out.pixel_x = mail_output.pixel_x + . += mail_output + . += light_out + . += mutable_appearance(base_icon_state, currentstate) + if(panel_open) + . += panel_type + if(light_mask && !(machine_stat & BROKEN)) + . += emissive_appearance(icon, light_mask, src) + +/obj/machinery/mailsorter/update_icon_state() + icon_state = "[base_icon_state][powered() ? null : "-off"]" + if(machine_stat & BROKEN) + icon_state = "[base_icon_state]-broken" + return ..() + +#undef STATE_SORTING +#undef STATE_IDLE +#undef STATE_YES +#undef STATE_NO +#undef MAIL_CAPACITY diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 8be4c15851b40..6fdd8f5d25e1c 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -202,6 +202,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) /obj/item/storage/bag/mail = 3, /obj/item/radio/headset/headset_cargo = 3, /obj/item/clothing/accessory/pocketprotector = 3, + /obj/item/flatpack/mailsorter = 1, ) premium = list( /obj/item/clothing/head/costume/mailman = 1, @@ -479,12 +480,6 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) /obj/item/plunger = 2, /obj/item/wirebrush = 2, /obj/item/radio/headset/headset_srv = 2, - /obj/item/clothing/head/hats/janitor_doppler = 3, - /obj/item/clothing/shoes/galoshes/doppler = 2, - /obj/item/clothing/gloves/botanic_leather/janitor = 3, - /obj/item/clothing/suit/apron/janitor_cloak = 3, - /obj/item/clothing/under/rank/civilian/janitor/doppler = 3, - /obj/item/clothing/under/rank/civilian/janitor/doppler_ct = 3, ) refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe default_price = PAYCHECK_CREW diff --git a/code/modules/wiremod/components/action/laserpointer.dm b/code/modules/wiremod/components/action/laserpointer.dm index 0eb7f822db1ea..8693a5c1ab18b 100644 --- a/code/modules/wiremod/components/action/laserpointer.dm +++ b/code/modules/wiremod/components/action/laserpointer.dm @@ -11,8 +11,8 @@ /// The input port var/datum/port/input/target_input - var/datum/port/input/image_pixel_x = 0 - var/datum/port/input/image_pixel_y = 0 + var/datum/port/input/image_pixel_x + var/datum/port/input/image_pixel_y var/max_range = 7 diff --git a/code/modules/wiremod/components/admin/getvar.dm b/code/modules/wiremod/components/admin/getvar.dm index 2fe8f18b09e3d..e467963fe345b 100644 --- a/code/modules/wiremod/components/admin/getvar.dm +++ b/code/modules/wiremod/components/admin/getvar.dm @@ -45,7 +45,7 @@ output_value.set_datatype(expected_output_type.value) /obj/item/circuit_component/get_variable/input_received(datum/port/input/port) - var/atom/object = entity?.value + var/datum/object = entity?.value if(getvar_options.value == "Global") object = GLOB diff --git a/code/modules/wiremod/components/math/arithmetic.dm b/code/modules/wiremod/components/math/arithmetic.dm index 083616f1e0e54..20474ec949295 100644 --- a/code/modules/wiremod/components/math/arithmetic.dm +++ b/code/modules/wiremod/components/math/arithmetic.dm @@ -2,6 +2,7 @@ #define COMP_ARITHMETIC_SUBTRACT "Subtract" #define COMP_ARITHMETIC_MULTIPLY "Multiply" #define COMP_ARITHMETIC_DIVIDE "Divide" +#define COMP_ARITHMETIC_MODULO "Modulo" #define COMP_ARITHMETIC_MIN "Minimum" #define COMP_ARITHMETIC_MAX "Maximum" @@ -34,6 +35,7 @@ COMP_ARITHMETIC_SUBTRACT, COMP_ARITHMETIC_MULTIPLY, COMP_ARITHMETIC_DIVIDE, + COMP_ARITHMETIC_MODULO, COMP_ARITHMETIC_MIN, COMP_ARITHMETIC_MAX, ) @@ -75,6 +77,8 @@ result = null break result /= value + if(COMP_ARITHMETIC_MODULO) + result %= value if(COMP_ARITHMETIC_MAX) result = max(result, value) if(COMP_ARITHMETIC_MIN) @@ -86,5 +90,6 @@ #undef COMP_ARITHMETIC_SUBTRACT #undef COMP_ARITHMETIC_MULTIPLY #undef COMP_ARITHMETIC_DIVIDE +#undef COMP_ARITHMETIC_MODULO #undef COMP_ARITHMETIC_MIN #undef COMP_ARITHMETIC_MAX diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm index 29147aefa9458..b31f3ce151bcd 100644 --- a/code/modules/wiremod/shell/brain_computer_interface.dm +++ b/code/modules/wiremod/shell/brain_computer_interface.dm @@ -93,8 +93,6 @@ var/datum/port/output/user_port - var/datum/weakref/user - var/obj/item/organ/cyberimp/bci/bci /obj/item/circuit_component/bci_core/populate_ports() @@ -111,19 +109,18 @@ /obj/item/circuit_component/bci_core/proc/update_charge_action() CIRCUIT_TRIGGER - var/mob/living/carbon/resolved_owner = user?.resolve() if (show_charge_meter.value) if (charge_action) return charge_action = new(src) - if (resolved_owner) - charge_action.Grant(resolved_owner) + if (bci.owner) + charge_action.Grant(bci.owner) bci.actions += charge_action else if (!charge_action) return - if (resolved_owner) - charge_action.Remove(resolved_owner) + if (bci.owner) + charge_action.Remove(bci.owner) bci.actions -= charge_action QDEL_NULL(charge_action) @@ -139,9 +136,8 @@ bci = shell if (charge_action) - var/mob/living/carbon/resolved_owner = user?.resolve() - if (resolved_owner) - charge_action.Remove(resolved_owner) + if (bci.owner) + charge_action.Remove(bci.owner) bci.actions -= charge_action QDEL_NULL(charge_action) @@ -158,14 +154,13 @@ if (!sent_message) return - var/mob/living/carbon/resolved_owner = user?.resolve() - if (isnull(resolved_owner)) + if (isnull(bci.owner)) return - if (resolved_owner.stat == DEAD) + if (bci.owner.stat == DEAD) return - to_chat(resolved_owner, "You hear a strange, robotic voice in your head... \"[span_robot("[html_encode(sent_message)]")]\"") + to_chat(bci.owner, "You hear a strange, robotic voice in your head... \"[span_robot("[html_encode(sent_message)]")]\"") /obj/item/circuit_component/bci_core/proc/on_organ_implanted(datum/source, mob/living/carbon/owner) SIGNAL_HANDLER @@ -173,7 +168,6 @@ update_charge_action() user_port.set_output(owner) - user = WEAKREF(owner) RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(on_borg_charge)) @@ -183,7 +177,6 @@ SIGNAL_HANDLER user_port.set_output(null) - user = null UnregisterSignal(owner, list( COMSIG_ATOM_EXAMINE, diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index f6f21b7e1eed1..e524bdee5cb94 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -23,26 +23,19 @@ GLOB.zombie_infection_list -= src . = ..() -/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/M, special = FALSE, movement_flags) +/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/new_owner, special = FALSE, movement_flags) . = ..() - + RegisterSignal(new_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died)) START_PROCESSING(SSobj, src) -/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/M, special = FALSE) +/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/new_owner, special = FALSE, movement_flags) . = ..() STOP_PROCESSING(SSobj, src) - if(iszombie(M) && old_species && !special) - M.set_species(old_species) + if(iszombie(new_owner) && old_species && !special) + new_owner.set_species(old_species) if(timer_id) deltimer(timer_id) - -/obj/item/organ/zombie_infection/on_mob_insert(mob/living/carbon/organ_owner, special) - . = ..() - RegisterSignal(organ_owner, COMSIG_LIVING_DEATH, PROC_REF(organ_owner_died)) - -/obj/item/organ/zombie_infection/on_mob_remove(mob/living/carbon/organ_owner, special) - . = ..() - UnregisterSignal(organ_owner, COMSIG_LIVING_DEATH) + UnregisterSignal(new_owner, COMSIG_LIVING_DEATH) /obj/item/organ/zombie_infection/proc/organ_owner_died(mob/living/carbon/source, gibbed) SIGNAL_HANDLER diff --git a/config/config.txt b/config/config.txt index 96a8c869f4c7c..510988803c616 100644 --- a/config/config.txt +++ b/config/config.txt @@ -9,6 +9,7 @@ $include resources.txt $include interviews.txt $include lua.txt $include auxtools.txt +$include map_vote.txt # You can use the @ character at the beginning of a config option to lock it from being edited in-game # Example usage: @@ -609,3 +610,9 @@ UPLOAD_LIMIT 524288 ## Restricts admin client uploads to the server, defined in bytes, default is 5MB UPLOAD_LIMIT_ADMIN 5242880 + +## Uncomment to allow admins with +DEBUG to start the byond-tracy profiler during the round. +#ALLOW_TRACY_START + +## Uncomment to allow admins with +DEBUG to queue the next round to run the byond-tracy profiler. +#ALLOW_TRACY_QUEUE diff --git a/config/game_options.txt b/config/game_options.txt index 239ec8d43e1b9..952a02651395a 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -514,6 +514,9 @@ MAXFINE 2000 ## How many played hours of DRONE_REQUIRED_ROLE required to be a Maintenance Done #DRONE_ROLE_PLAYTIME 14 +## Will drones be restricted from interacting with the supermatter and atmopherics area? +#DRONE_AREA_INTERACTION_RESTRICT 1 + ## Whether native FoV is enabled for all people. #NATIVE_FOV diff --git a/config/maps.txt b/config/maps.txt index 3004238631e8b..ccb393621480c 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -37,11 +37,6 @@ map metastation votable endmap -map northstar - minplayers 50 - votable -endmap - map tramstation minplayers 35 votable diff --git a/dependencies.sh b/dependencies.sh index d9b286e61aed5..1046b72c12d77 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -8,7 +8,7 @@ export BYOND_MAJOR=515 export BYOND_MINOR=1637 #rust_g git tag -export RUST_G_VERSION=3.3.0 +export RUST_G_VERSION=3.5.1 #node version export NODE_VERSION_LTS=22.11.0 diff --git a/html/changelogs/AutoChangeLog-pr-87773.yml b/html/changelogs/AutoChangeLog-pr-87773.yml deleted file mode 100644 index beb2605ec2748..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87773.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Holoo-1" -delete-after: True -changes: - - bugfix: "fixed roundstart borgs not being synced to ai" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87818.yml b/html/changelogs/AutoChangeLog-pr-87818.yml deleted file mode 100644 index 84037f8dcd987..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87818.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed special DNA infusions from squids and pufferfish." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87819.yml b/html/changelogs/AutoChangeLog-pr-87819.yml deleted file mode 100644 index 5e7cfe01c003d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87819.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed bombing non-turfs fishing spots not spawning loot correctly." - - balance: "Explosive bombing no longer spawns bottled messages/photos." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87825.yml b/html/changelogs/AutoChangeLog-pr-87825.yml deleted file mode 100644 index 15258c679ad04..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87825.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed fish not being able to reproduce with other fish of the same type without the crossbreeding trait." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87827.yml b/html/changelogs/AutoChangeLog-pr-87827.yml deleted file mode 100644 index 153c3581b473c..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87827.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed fish still being hungry when fed if in aquarium with the 'growth and reproduction' option disabled." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87832.yml b/html/changelogs/AutoChangeLog-pr-87832.yml deleted file mode 100644 index 4ebb0e20d35a8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87832.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - bugfix: "Xenobio console puts sucked up slimes into stasis so they no longer split up inside" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87834.yml b/html/changelogs/AutoChangeLog-pr-87834.yml deleted file mode 100644 index 8a0ada8f2cd2d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87834.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "harryob" -delete-after: True -changes: - - bugfix: "certain tgui inputs no longer require 2 clicks to open" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87835.yml b/html/changelogs/AutoChangeLog-pr-87835.yml deleted file mode 100644 index ab2ded648b722..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87835.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "sqnztb" -delete-after: True -changes: - - map: "tramstation tool storage trash no longer routes to the barber shop" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87836.yml b/html/changelogs/AutoChangeLog-pr-87836.yml deleted file mode 100644 index dcac7fdd74dd8..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87836.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Goat" -delete-after: True -changes: - - qol: "You can now examine labelers to tell how many more labels it has." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87837.yml b/html/changelogs/AutoChangeLog-pr-87837.yml deleted file mode 100644 index 96a44be2edb83..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87837.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "tmyqlfpir" -delete-after: True -changes: - - bugfix: "Airlock shells are properly assigned circuit cameras modules" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87838.yml b/html/changelogs/AutoChangeLog-pr-87838.yml deleted file mode 100644 index 6e8027cf19a73..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87838.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Neocloudy" -delete-after: True -changes: - - bugfix: "examine tags now use regex for checking if a tag has \"and\" in it" - - spellcheck: "the tooltip for the morbid examine tag doesn't try to use html anymore" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87839.yml b/html/changelogs/AutoChangeLog-pr-87839.yml deleted file mode 100644 index 43aafa3b23640..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87839.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - qol: "Makes some minor updates to Runtimestation, including event spawn points and a cargo bounty pad." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87840.yml b/html/changelogs/AutoChangeLog-pr-87840.yml deleted file mode 100644 index 2ce6d8d10d9c9..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87840.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EmptyLullaby" -delete-after: True -changes: - - bugfix: "Goliath cloaks are no longer so hard on the calves that they force digitigrade legs to disable." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87841.yml b/html/changelogs/AutoChangeLog-pr-87841.yml deleted file mode 100644 index 83704f38ee57b..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87841.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Goat" -delete-after: True -changes: - - qol: "Curator console's inventory screen will now update when you change pages or remove items." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87843.yml b/html/changelogs/AutoChangeLog-pr-87843.yml deleted file mode 100644 index 168494cd29b45..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87843.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Goat" -delete-after: True -changes: - - map: "The library's scanner on Birdshot is now close enough to connect to the computer and was also given a book binder." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87845.yml b/html/changelogs/AutoChangeLog-pr-87845.yml deleted file mode 100644 index 9a9672e710500..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87845.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothymtorres" -delete-after: True -changes: - - bugfix: "Fix missing screentips plasmaman helmets and MOD suit hat stabilizer helmets." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87846.yml b/html/changelogs/AutoChangeLog-pr-87846.yml deleted file mode 100644 index 3423cb647db77..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87846.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothymtorres" -delete-after: True -changes: - - bugfix: "Fix broken link to issue manager guide in Github contributor guide" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87847.yml b/html/changelogs/AutoChangeLog-pr-87847.yml deleted file mode 100644 index b1290b19944e4..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87847.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Absolucy" -delete-after: True -changes: - - bugfix: "You can no longer crush random unsuspecting people with vendors by ventcrawling while cursed." - - qol: "AFK players don't count as \"watchers\" for cursed stuff." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87849.yml b/html/changelogs/AutoChangeLog-pr-87849.yml deleted file mode 100644 index 394c7b39a0d9d..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87849.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothymtorres" -delete-after: True -changes: - - bugfix: "Fix holymelon armor not inheriting magic resistance" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87850.yml b/html/changelogs/AutoChangeLog-pr-87850.yml deleted file mode 100644 index b84618840865c..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87850.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "OrionTheFox" -delete-after: True -changes: - - bugfix: "(DeltaStation) Fixed unwired APCs in the Electronic Marketing Den, Abandoned Garden, Security Maintenance, and Private Investigator's Office" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87851.yml b/html/changelogs/AutoChangeLog-pr-87851.yml deleted file mode 100644 index e2c0c757c4ee3..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87851.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - bugfix: "Fixed hat stabilizer ignoring clothing worn_y_offset" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87852.yml b/html/changelogs/AutoChangeLog-pr-87852.yml deleted file mode 100644 index 50ad199495d90..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87852.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SmArtKar" -delete-after: True -changes: - - bugfix: "Fixed basic mob performance impact created by the factorio PR" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87855.yml b/html/changelogs/AutoChangeLog-pr-87855.yml deleted file mode 100644 index e31cdb3c8d3a2..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87855.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "00-Steven" -delete-after: True -changes: - - bugfix: "Fixed auto-reel fishing line item catching logic." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-87856.yml b/html/changelogs/AutoChangeLog-pr-87856.yml deleted file mode 100644 index df597780aa209..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-87856.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "SyncIt21" -delete-after: True -changes: - - bugfix: "flatpacker accepts circuitboards with left click" - - bugfix: "rcd can deconstruct tables" - - bugfix: "you can open panels of destructive analyzers with screwdriver right click. Use right click or combat mode with items for default interactions" - - bugfix: "flatpacker & machines with local storage can be RPED'd again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-88254.yml b/html/changelogs/AutoChangeLog-pr-88254.yml new file mode 100644 index 0000000000000..e2ee830005d84 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-88254.yml @@ -0,0 +1,5 @@ +author: "SyncIt21" +delete-after: True +changes: + - bugfix: "Turbine converts energy to power correctly & shows correct reading with multitool" + - refactor: "turbine code has been overall improved. report bugs on github" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-88435.yml b/html/changelogs/AutoChangeLog-pr-88435.yml new file mode 100644 index 0000000000000..0f91aa47c2209 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-88435.yml @@ -0,0 +1,4 @@ +author: "tontyGH" +delete-after: True +changes: + - bugfix: "Underlining your messages in loud mode shouldn't break anymore" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-88492.yml b/html/changelogs/AutoChangeLog-pr-88492.yml new file mode 100644 index 0000000000000..3b1598c748c0f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-88492.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - qol: "Jetpacks should ACTUALLY feel better now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-88508.yml b/html/changelogs/AutoChangeLog-pr-88508.yml new file mode 100644 index 0000000000000..30b95cd438a3c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-88508.yml @@ -0,0 +1,4 @@ +author: "JoshAdamPowell" +delete-after: True +changes: + - map: "In the new year's budget the syndicate have decided that chemists need beakers to do their job properly." \ No newline at end of file diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml index dc1ca68e5f858..571b5e5983590 100644 --- a/html/changelogs/archive/2024-11.yml +++ b/html/changelogs/archive/2024-11.yml @@ -401,3 +401,687 @@ grungussuss: - qol: you can now mitigate motion sickness from screen shake by enabling "darken screen shake" in preferences +2024-11-13: + 00-Steven: + - bugfix: Fixed auto-reel fishing line item catching logic. + Absolucy: + - bugfix: You can no longer crush random unsuspecting people with vendors by ventcrawling + while cursed. + - qol: AFK players don't count as "watchers" for cursed stuff. + EmptyLullaby: + - bugfix: Goliath cloaks are no longer so hard on the calves that they force digitigrade + legs to disable. + Ghommie: + - bugfix: Fixed special DNA infusions from squids and pufferfish. + - bugfix: Fixed fish still being hungry when fed if in aquarium with the 'growth + and reproduction' option disabled. + - bugfix: Fixed bombing non-turfs fishing spots not spawning loot correctly. + - balance: Explosive bombing no longer spawns bottled messages/photos. + - bugfix: Fixed fish not being able to reproduce with other fish of the same type + without the crossbreeding trait. + Goat: + - map: The library's scanner on Birdshot is now close enough to connect to the computer + and was also given a book binder. + - qol: Curator console's inventory screen will now update when you change pages + or remove items. + - qol: You can now examine labelers to tell how many more labels it has. + Holoo-1: + - bugfix: fixed roundstart borgs not being synced to ai + Neocloudy: + - bugfix: examine tags now use regex for checking if a tag has "and" in it + - spellcheck: the tooltip for the morbid examine tag doesn't try to use html anymore + OrionTheFox: + - bugfix: (DeltaStation) Fixed unwired APCs in the Electronic Marketing Den, Abandoned + Garden, Security Maintenance, and Private Investigator's Office + Rhials: + - qol: Makes some minor updates to Runtimestation, including event spawn points + and a cargo bounty pad. + SmArtKar: + - bugfix: Xenobio console puts sucked up slimes into stasis so they no longer split + up inside + - bugfix: Fixed basic mob performance impact created by the factorio PR + - bugfix: Fixed hat stabilizer ignoring clothing worn_y_offset + SyncIt21: + - bugfix: flatpacker accepts circuitboards with left click + - bugfix: rcd can deconstruct tables + - bugfix: you can open panels of destructive analyzers with screwdriver right click. + Use right click or combat mode with items for default interactions + - bugfix: flatpacker & machines with local storage can be RPED'd again + harryob: + - bugfix: ghosts observing ghosts can no longer click on their screen alerts + - bugfix: certain tgui inputs no longer require 2 clicks to open + sqnztb: + - map: tramstation tool storage trash no longer routes to the barber shop + timothymtorres: + - bugfix: Fix holymelon armor not inheriting magic resistance + - bugfix: Fix broken link to issue manager guide in Github contributor guide + - bugfix: Fix missing screentips plasmaman helmets and MOD suit hat stabilizer helmets. + tmyqlfpir: + - bugfix: Airlock shells are properly assigned circuit cameras modules +2024-11-14: + 00-Steven: + - bugfix: A bitrunner avatar spawning with the exact same name as a name currently + on the records no longer updates that record to match when the hacker alias + gets applied. + - qol: Net avatar ID cards use the net avatar's name instead of being generic. + Fikou: + - bugfix: a modsuit being deleted will delete its parts correctly + - bugfix: a modsuit needs its boots out to be moved by an AI + - qol: you can extend or retract a modsuits parts from the ui panel + - qol: modsuit cores have colorcoded charge bars in the ui panel + - qol: weapon recall module makes you pick up the weapon if its on your tile + - code_imp: tether module has its own button for cutting tethers instead of stealing + it from pins + - bugfix: armor booster doesnt protect from head injury without the helmet on + LT3: + - bugfix: Server config will now read the map vote configuration file + MTandi: + - qol: Chem dispenser UI droplets now have a shadow to not blend with the background + Majkl-J: + - qol: mech fabricator output direction can now be changed with a drag pull + Rhials: + - qol: Crayon bounties are less demanding, and require less crayons for payout. + SmArtKar: + - bugfix: Fixed ayylmao's brain examine lines + - bugfix: Fixed stingbangs using wrong sprites + - bugfix: Fixed detective action palette being invisible + SyncIt21: + - bugfix: holosign creators interact with storage items correctly + grungussuss: + - sound: party popper no longer makes reagent sloshing sounds + - sound: shoes pickup volume is louder now + mc-oofert: + - bugfix: meatlovers flatbread no longer tastes raw + timothymtorres: + - bugfix: Fix using chairs in holodeck to create infinite metal + xPokee, waterpig: + - code_imp: cleaned up beserk.dm +2024-11-15: + Absolucy: + - refactor: The ORM, "ore container", and order console UIs (produce, mining, bitrunner + vendors) now load icons in a more efficient manner. + - bugfix: Admin-deleting a mob now ghostizes it beforehand, preventing a runtime + error. + Ben10Omintrix: + - bugfix: fixes seedling ai getting stuck when trying to refill water from emptied + water tanks + Dawnseer: + - bugfix: removes the gas mask check for if the gas mask mouth is covered. Now it + only checks for filters and other cigs + GremlinSeeker: + - bugfix: Syndicate Biodome fixes + Majkl-J: + - bugfix: Fixes SSWardrobe stealing a camera from the camera app when on a dummy, + causing a harddel + Melbert: + - image: Speeds up some frames of the dust animation slightly + - image: Dust/remains spawned after being dusted are now aligned towards the bottom + of the tile + - image: Bigger mobs now produce bigger piles of ash + - image: Plasmamen now dust into plasma bones + SmArtKar: + - bugfix: Many years later, projectiles finally can pass through portals - this + time without crashing the server. + - bugfix: Fixed tenacity effect printing its messages when it shouldn't be, and + not removing its' effects when it should've. + - bugfix: Fixed scanner gates saying both bypass and detection lines when malfunctioning + SyncIt21: + - bugfix: Fixed visual glitches when inserting items from an slot other than the + hands into evidence bags & other storages that have quick gather mode enabled + - bugfix: silo connection on some machines won't time out when changing FPS settings + - code_imp: improved attack chain code for silo connection + Time-Green: + - bugfix: Nooartrium heart damage can no longer be bypassed with non-organic hearts + carlarctg: + - bugfix: you now snip cuffs with right click to prevent accidental cuts + - spellcheck: 'spellecheck: existence not existance' + - balance: Significantly buffed the anomalock modules. + - balance: Anomalock modules can be used with eachother. + - balance: Antigravity module costs 2 complexity. + - balance: Teleporter module is thrice as fast at teleporting with a slightly reduced + cooldown, but has a much larger power cost. + - code_imp: Changed how teleporter tracks maximum range to be less painful to the + end user. + - refactor: Refactored LoS checks to be a proc on atom, los_check + - balance: Kinesis module's default range has been extended to 8. + - balance: Kinesis module can drag around people in critical condition or worse. + - bugfix: vampires are a human subtype & have stomachs/lungs + grungussuss: + - sound: sandstone blocks have the correct sound now + - qol: added feedback for cutting mulebot wires + larentoun: + - bugfix: Fixes a runtime when wingless creature flaps their wings + mc-oofert: + - bugfix: Added dehydrator to birdshot kitchen. Surgery theatre now has a surgery + tray and surplus prosthetics. An unwired hallway APC is now wired. 1st SM filter + is now set to Nitrogen. Chemistry closet in pharmacy now contains extra chemicals + to compensate for not having a chemical storage. Atmos air for distro mixer + now mixes correctly + timothymtorres: + - balance: Lower the telecrystal price of the singularity beacon from 10 to 4 and + reduce the timer to 20 minutes before it can be purchased. + xPokee: + - bugfix: fixed brains turning invisible after being washed +2024-11-16: + Hardly: + - bugfix: Fixes watchers not attacking their targets in melee range + TheRealSpriteMan1337: + - spellcheck: Fixed some of the typos in computers' build & repair tips, adjusted + wording + Xander3359: + - bugfix: fix furious steel and blade ascension being jank + carlarctg: + - rscadd: Adds the Perceptomatrix Helm, a hallucination anomaly core item + zxaber: + - bugfix: Firelocks opened by a mech will correctly close when the mech moves out + of range. +2024-11-17: + Fikou: + - bugfix: xeno princesses no longer lose their unique identifier + JagOfTroy: + - bugfix: 'Fixed Automatic Announcement System bug with the Research Node Announcement + message not updating properly. It will now properly save and announce whatever + input the user desires! + + :cl:' + SmArtKar: + - rscdel: Removed N-Spect scanner's and scanner gate's ability to scan people for + contraband. + - bugfix: Fixed cats not begging people for food + - bugfix: Fixed a mixup in ripley plate sprites + - bugfix: Fixed tethers being able to move immovable objects (and delete gravgens) + - bugfix: Fixed a missing arg in fish release code causing runtimes + carlarctg: + - bugfix: '[no gbp] renmoves bartender skillchip from chipped quirk' + timothymtorres: + - bugfix: Fix radio jammer screentips +2024-11-18: + BurgerBB: + - qol: Reworks the Druggy visual effect to cause less eye strain. + EOBGames: + - rscadd: DONK CO. HAS UNVEILED A NEW RANGE OF READY-DONK PRODUCTS! GET THEM AT + CARGO TODAY! + - image: 'READY-DONK: NEW LOOK, SAME GREAT TASTE' + EnterTheJake: + - rscadd: New internal sleeper module for the Clarke. + - balance: Clarke Integrity has been bumped from 200 to 250 HP, melee armor bumped + from 20 to 40. + - balance: Exo mining module can now be used to scan vents and begin the wave defense + event. + - balance: The Clarke Ore Storage Module can now collect boulders and internally + smelt them. + - balance: Mech Pka is now bundled within the Clarke tech node, it now does more + damage and comes with the AOE upgrade preinstalled. + - balance: Exo mining drills are now a utility module rather than a weapon. + - balance: Applied Bluespace Research and Controlled Plasma tech nodes are no longer + hardlocked behind surveys, they instead favor from a discount if they are completed. + - bugfix: Fixes Exo Mech modules not granting life support to housed patients. + Ghommie: + - bugfix: You can no longer deploy survival/fishing capsules by the holodeck and + permanently brick it. + - balance: Tendril chests and mystery boxes can now be fished multiple times with + a 30 minutes cooldown. + - balance: other previously fishing loot available in limited amount, such as adamantine + and runite from plasma rivers, regenerate over time. + - rscadd: Using the gibber on people with fish tails now yield some fish tail fillets. + OrionTheFox: + - code_imp: The Greytide event will now play bolt audio and update the icon when + toggling door bolts. + Sothanforax: + - sound: Added sounds for the escape menu opening/closing/being open + TheBoondock: + - sound: added ignition and roaring fire sound to plasma/tritium fire + Vekter: + - map: Removes extra privacy shutters in the HoS' office on NebulaStation + Xackii: + - qol: heretic living heart now points to the target with an arrow. + - bugfix: pinpointer no longer breaks if scanned target disappears from our reality. + aaaa1023: + - bugfix: Birdshot Atmospherics now has an Air alarm + - bugfix: Birdshot Atmospherics pumping room APC is now connected to the main grid + - bugfix: Birdshot Port Primary Hallway APC is now connected to the main grid + carlarctg: + - bugfix: actually adds the perceptomatrix to the techweb + - bugfix: Reverts change that altered pyrokinesis recipe to require firebreath instead + of fiery sweat + grungussuss: + - sound: changed the welding hat toggle sfx + - qol: some hats now "compress" your hair to fit it the headwear better + - bugfix: xenos take more damage to husk + mc-oofert: + - bugfix: You may no longer use a climbing hook to phase through catwalks and such. + On the other hand, improved climbing hook aim and you may climb onto lattices + or catwalks + - balance: makes reputation locked gear instead be very very expensive and get cheaper + as you get to that rep + - bugfix: manufacturing sort-routers can no longer crawl + sqnztb: + - map: metastation's security mail chute no longer has an extra erroneous pipe. + thegrb93: + - bugfix: Fix broken cyborg inducer + timothymtorres: + - map: Fix missing CE Office Shutter Buttons on Icebox. Also removes a duplicate + keycard auth device. +2024-11-19: + Fikou: + - bugfix: Fixed chaplain divine archer outfit rolled down sprite + Jackal-boop: + - balance: syndicate GMO researchers have increased the effectiveness of their 'hot + potato' + carlarctg: + - qol: Improved fish lure descriptions to be easier to grok + fevryk: + - rscadd: Added new weapon carpenter hammer to black market uplink + - rscadd: Added killsound feature + tontyGH: + - bugfix: Haunted 8-balls are now usable again (FINALLY) + - bugfix: Haunted 8-ball UI now correctly displays your selected answer + - qol: Made the haunted 8-ball UI look a pinch better. Just a smidge. + - code_imp: Haunted 8-balls no longer use a duplicate answer list +2024-11-20: + Ben10Omintrix: + - refactor: floorbots have been refactored, please report any bugs + - rscadd: adds repairbots to the game! + Dawnseer: + - rscadd: Unleashed a great evil upon hoplines, in the form of a paperwork implant. + Dmeto: + - map: 'removes a unused disposal pipe from Cargo, fixes mining dock intercom. + + map:adds access helper to disposals south airlock.' + EnterTheJake: + - bugfix: FIxes insulated modsuits not granting full insulation. + Gaxeer: + - bugfix: AI controlled monkeys can again activate items in active hand + Hatterhat: + - bugfix: Crate Chaos's encrypted cache is now randomly placed again. + Jewelry-x: + - bugfix: changeling memories of victims no longer include `` and `
` + Melbert: + - balance: Having a broken arm affects your accuracy with ranged weapons fired with + that arm. Utilizing a painkiller will nullify this effect, however. + - balance: Painkillers will prevent your punches from being cancelled due to having + a broken arm. You'll still take damage, though. + - balance: Being drunk now affects your accuracy with ranged weapon. The bartender + is immune to this effect via their skillchip. + - code_imp: A lot of code involving left and right hand handling has been cleaned + up, easier to read. Report any oddities, like left and rights being flipped + grungussuss: + - bugfix: mobs can no longer hear their own breathing while deaf + - bugfix: a bug regarding orderable items has been fixed + - server: drone area restrictions are now config + - balance: drones now take less time to become "un-shy" of something after it's + been touched. + larentoun: + - bugfix: 'Mafia: Psych''s reveal ability now correctly has a single use' + - bugfix: 'Mafia: Fugitive''s vest ability now correctly should have two uses' +2024-11-21: + Ghommie: + - refactor: refactored aquariums heavily. Please report any fishy bug. + - rscadd: Added portable/handheld fish tanks to the game. They can be crafted with + an aquarium kit and 5 sheets of plastic. While portable, they cannot store fish + that are too big or if there're too many already. This restriction can be removed + by using the new "bluespace fish tank kit" techweb item. + - map: Replaced the lawyer's stationary pet aquarium with a fish tank, so you can + carry McGill around. + - balance: Reduced the iron cost of stationary aquariums a little. + - bugfix: Fixed a couple nits with the water visuals not appearing on objects with + a very low layer (rendered just above the floor), as well as atmos pipes looking + a bit funky on untiled turfs beside catwalks and platings when beside connected, + under-floored pipes. + SmArtKar: + - refactor: Firestacks, burning/acid/decaying effects and (brought back after being + temporarily removed) slimed status effects now use a new "shared" particles + system, which should considerably improve client performance when encountering + a lot of burning/slimed entities. + - bugfix: Berets no longer make you go bald above your earline. + SyncIt21: + - bugfix: plumbing pill press advertises the correct maximum volume of your selected + product instead of always 50u on the UI + - code_imp: plumbing pill press validates selected container to prevent href exploits + - code_imp: plumbing pill press validates input volume to see if it's a number + grungussuss: + - sound: the glove pickup sound will no longer play for modsuits undeploying + mc-oofert: + - qol: alerts that do stuff when clicked glow gold + necromanceranne: + - balance: 'After months of rigorous training montages, handwork and dedication. + Nanotrasen can proudly say that their staff is now more capable of performing + various judo techniques to disable and incapacitate any would-be troublemakers. + They have proclaimed the Spinward ''safer than ever''. Unfortunately for Nanotrasen + and the Spinward as a whole,, most of these same techniques have been incorporated + into the Tunnel Arts through the use of Khan spies. (See: Extremely bored assistants + who are getting tired of suplexing the clown). Is this the end for the Spinward + Sector? Will anyone be able to stop Maint Khan''s advance?' + - balance: Being grabbed can be harder to break out of depending on how vulnerable + you are; being prone, staggered and wounded, or just being a pushover (the quirk) + makes it easier to keep hold of you. Particularly if more than one of these + is true. Though if you're a fishman, you probably can't get grabbed at all. + - balance: Your arm power now contributes to the stamina damage someone is dealt + when they attempt and fail to break out of your grab. + - balance: Bartenders while drunk are great at grappling. + - bugfix: The values used for determining at what point you must resist if you have + taken damage and are staggered are now correctly set to 40, not incorrectly + to 80. + timothymtorres, MrMelbert: + - bugfix: Fix lustrous brain trauma not removing during polymorph +2024-11-22: + Acantharctia: + - balance: Numb quirk now stops you from screaming and seeing the damage overlay + when damaged. Better keep a close eye on your health. + Ben10Omintrix: + - bugfix: fixes monkey AI not being able to attack + Dawnseer: + - bugfix: Turns Cap (White) into a white cap in loadout + KikoWen0: + - map: Nebula Arrivals stairs are now easier to navigate + - map: Fixed unconnected wire in dormitories on Nebula + - map: Fixed engineers having free pass to cargo department on Nebula + Melbert: + - bugfix: Monkeys no longer ignore basic rules such as "you can't escape a passive + grab if you're cuffed or in crit" + - bugfix: Fixes some atmos and record related log messages + SmArtKar: + - bugfix: Reconnected Wawa's sci to atmos distro + - bugfix: Fixed incorrect coverage descriptions + - refactor: Converted most common particle sources to use our new pooling system. + - bugfix: Fixed all hoverboards having holyboard space slowdown effect + - bugfix: Fixed limping status effect harddels + SyncIt21: + - bugfix: Labour stacker machine gives points for sheets again + carlarctg: + - rscdel: Replaces UZI domain reward with ballistic chameleon gun + - rscadd: Also added a separate possible reward for an uzi bitrunning disk. + grungussuss: + - sound: the "curse you" sfx has been replaced + - admin: admins can now control the volume that some admin triggered sounds are + played at + jlsnow301: + - bugfix: TGUI panel light mode should no longer be gross gray + mc-oofert: + - rscdel: removed quiet succumb which is pointless now that the bug got fixed + necromanceranne: + - image: Cleans up some redundant pixels on the bowman sprites. + - image: Kitchen and eating utensils now have suit storage sprites. + - code_imp: The cost for Core Equipment for nuclear operatives will always be equal + to the cost of the contained items if purchased directly from the uplink. + - bugfix: Improves the descriptions for some uplink entries. + - bugfix: Correctly applies resistance and EMP proofing to the broadcasting camera + so that it doesn't cause weird things to happen. + tontyGH: + - code_imp: made /proc/getviewsize() pure + - refactor: mob/eye/ai_eye has been restructured, now inheriting from a generic + mob/eye/camera type + - refactor: advanced cameras and their subtypes are now mob/eye/camera/remote subtypes + - code_imp: the cameranet no longer expects the user to be an AI eye + - code_imp: remote camera eyes have had their initialization streamlined + - code_imp: remote cameras handle assigning and unassigning users by themselves + now + - code_imp: remote cameras now use weakrefs instead of hard referencing owners and + origins + - code_imp: also the sentient disease is_define was removed (we don't have those + anymore) + - bugfix: AI eyes no longer assign real names to themselves, fixing their orbit + name + wallem: + - image: Updates slot machine sprites +2024-11-23: + EOBGames: + - rscadd: 'A new series of shipping containers have been added: keep an eye out + for them at your local cargo terminus.' + EnterTheJake: + - bugfix: fixes atmos goggles not showing the temperature of turfs. + Fikou: + - admin: you no longer get auto deadminned on localhost + - admin: default prefs are now to be deadminned as antag/head/sec/silicon + Ghommie: + - bugfix: Fixes ink spit not respecting its 21 seconds cooldown. + SmArtKar: + - balance: Armor now decreases the chances of getting your eye blown out by a rogue + bullet + - admin: Implemented final type filtering for spawn commands - putting * at the + end of a spawn string will signify that there should be no subtypes offered! + SyncIt21: + - bugfix: inducers can be inserted into storage objects again + - bugfix: fixes grown foods(like pineapples) getting deleted sometimes inside crates + and stuff +2024-11-24: + Ben10Omintrix: + - bugfix: fixes the chipped quirk displaying the skill chip's typepath rather than + its name + - bugfix: fixes chipped quirk's itchy effect not working + - bugfix: the chipped quirk's itchy effect now goes away when the skillchip is removed + - refactor: projectile dampeners have been refactored. please report any bugs + SmArtKar: + - qol: Projectiles now visually impact their targets instead of disappearing about + a tile short of it. + - bugfix: Fixed multiple minor issues with projectile behavior + - refactor: Completely rewrote almost all of our projectile code - if anything broke + or started looking/behaving oddly, make an issue report! + - bugfix: Fixed full augmentation scan experiment being uncompletable + - bugfix: Organ manipulation can be completed once again and doesn't cause you to + be un-melee-able in some cases. + - bugfix: Fixed a rare runtime in jetpack component code + - bugfix: Fixed parsnip sabre not receiving a jousting component + grungussuss: + - bugfix: entertainment screens now properly show their tooltip for muting sound + lovegreenstuff: + - bugfix: synthmeat is no longer an nft + thimothymtorres: + - bugfix: Fix wrong status effect for watery tile + timothymtorres: + - bugfix: Fix coffee maker smoke particles not deleting + - bugfix: Fix fireplace particles runtimes. + timothymtorres, SmArtKar: + - bugfix: Fix chewable bubblegum not metabolizing due to microdose +2024-11-25: + Absolucy: + - refactor: Cleaned up code relating to heretic ascension announcements and traits. + ArcaneMusic: + - rscadd: Adds a canned disease that can show randomly in space occasionally, causing + the target to begin to providing chemicals resulting in the target to avoid + needing to be affected by gravity. + Auris456852: + - bugfix: Makes a sliced baklava pie keep its complexity after slicing + Dawnseer: + - bugfix: fixed some erronous spriting on the zippo + EnterTheJake: + - image: Heretic's Moon Blade has received a new sprite. + Ghommie: + - balance: Nerfed slipperiness from fish infusion. It no longer knockdowns but it + staggers and slides the user one or two tiles away. + - balance: Added a slight natural weakness to fire/heat to the fish infusion, which, + taking the minor general damage resistance resistance when wet, is pretty mild. + - balance: hot temperature projectiles from the temperature gun (and watchers I + think) also dry living creatures hit by them. + GoblinBackwards: + - bugfix: fixed the fire effect not appearing on burning gasses + Mifutus: + - rscadd: Added new moth customizations available in the character creation under + the name "Dipped" + - image: 'added icons for the moth wings, antennae and markings + + :cl:' + - bugfix: fixed the pulse rifle not spawning when won + - code_imp: 'added get_turf to the pulserifle when the odds are beat. + + :cl:' + SmArtKar: + - code_imp: Cleaned up organ code + - bugfix: Fixed meteors freezing in place if they continiously miss the station + on a looping z level + - image: Muzzle flash now is attached to your sprite, meaning you won't run over + it if you fire while moving + - bugfix: Fixed some issues with defib paddle retraction. + - bugfix: Fixed atrocinator module footstep spam when you're moving on a tram + - qol: Reagent grinders display number of material sheets they hold instead of defaulting + to 1 + - image: Changing clipboard skins now changes the inhands sprite as well + - bugfix: Fixed a runtime in cranial fissure remove code + - bugfix: Fixed fishing turfs not lazyloading + - bugfix: Blind people no longer make eye contact with their hands + - bugfix: Blindfolds and other sorts of opaque eye coverage now prevent eye contact + from occuring + - bugfix: Fixed a random zero in nuke ops uplink UI + - bugfix: Fixed a runtime caused by logging out while your runechat message was + appearing. + carlarctg: + - qol: carpenter hammer fits on belt slot + - code_imp: renames belt_icon_state to inside_belt_icon_state for intelligibiility + grungussuss: + - sound: changelings now have a sound for absorbing + mc-oofert: + - bugfix: fixed some wiring on wawastation, added an additional distro/scrubbers + connection to sciences network + - bugfix: damage done by thrown objects to objects respects their demolition modifier + timothymtorres: + - bugfix: Fix weather effects ignoring certain areas like space. + - bugfix: Fix coffee maker items teleporting to AI/Cyborg locations + - code_imp: Change some status effects to use SECONDS define. +2024-11-26: + Ben10Omintrix: + - bugfix: raptors no longer break their trough upon interacting with it + - balance: removed the troublesome trait from raptors, they now wont go out to attack + their colleagues. + - rscadd: you can now give pet collars to ur raptors to rename them + Ghommie: + - bugfix: Fixed pixel position of fish overlays for aquariums. + - bugfix: The Aquarium ui won't show the user contents rather than that of the aquarium + itself + Hardly: + - bugfix: Ghosts can no longer emit spooky analyzing sounds when scanning + Isratosh: + - balance: Time-gated traitor uplink gear is returned to being hard reputation locked + with a static price. + OrionTheFox: + - qol: added an examine note to lighters showing their fuel + SmArtKar: + - code_imp: Projectile impacts no longer fetch mobs' armor values thrice + - code_imp: Converted pills and patches into interact_with_atom + - bugfix: Fixed a non-player facing runtime in portable atmos machinery code. + - bugfix: Ensures that if your brain is removed you die + - bugfix: Fixed a (non-player facing) runtime in organ manipulation surgery + grungussuss: + - rscdel: The northstar arcship has been removed. :( +2024-11-27: + Boviro: + - qol: Atmos MODsuits can now hold extinguishers on their suit slot + Ghommie: + - bugfix: FIsh flops again. + Melbert: + - balance: Morphine's sedative power has been halved. It now takes ~10 units to + guarantee sleep, up from ~5. + - balance: Morphine now causes mild disgust. + - balance: Morphine is now twice as addictive, causing addiction if you down over + ~30 units without pause. + SmArtKar: + - sound: Reduced volume of fire sounds + Time-Green: + - bugfix: No more "is blacking out!" + - bugfix: Brain transplants work again + carlarctg: + - spellcheck: Fixes a typo in legionnaire abilities +2024-11-28: + Absolucy: + - bugfix: ACTUALLY allow dot radio prefixes to also work with the tgui-say radio + prefix display. + Ben10Omintrix: + - bugfix: repairbots no longer get flashed by their own welder + - bugfix: repairbots no longer break glass tables they step on + - bugfix: repairbots can no longer flush their own welders + - bugfix: fixes some runtimes when emagged repairbots try to deconstruct things + - bugfix: fixes sentient repairbots not being able to see or remove their material + counts + Melbert: + - bugfix: Frozen slimes can't latch on to you (but they can still attack you technically) + - bugfix: Maybe fixes some organ manipulation bugs + - bugfix: Mulebot wire hacking is less fourth wall breaking + - bugfix: Stuff like the SM exploding will no longer output to your OOC tab + Mothblocks: + - qol: IV drips now create a beam from their spout to your body, and will visually + pull you closer. + SmArtKar: + - bugfix: Fixed colossus committing suicide on a regular basis + SyncIt21: + - bugfix: chainsaw is not invisible when turned off in hand + - bugfix: chainsaw won't play ping sound when turned on + - bugfix: mounted chainsaw has a new animated sprite when turned on & won't go invisible + in hand + ValuedEmployee: + - rscadd: New purr and meow emotes for players with felinid tongues +2024-11-29: + Ghommie: + - bugfix: Player-controlled lobstrosities, space dragons, space carps and penguins + can fish again. + - bugfix: Bombing someone during organ manipulation no longer summons new organs. + Runi-c: + - rscadd: digitigrade lizards can wear certain shoes and suits + - image: added digitigrade shoes & oversuit templates + - refactor: improved digi clothing generator code + TealSeer: + - bugfix: Using a bonesetter to correct a dislocated limb should no longer cause + you to hit the patient with it too. + carlarctg: + - qol: Added some tips of the round. + - balance: Increased Rusted Harvester health from 35 to 45. + - balance: Increased haunted longsword's demolition mod by 20%. + - bugfix: Rusted harvesters won't get narsie telling them to bring her their victims. + - bugfix: Heretic summons aren't affected by void chill anymore. + - rscadd: Centcom's janitorial department has gotten tired of scooping up discarded + scarves from the floor and has instead assigned MODlink scryers to some stations' + crew in an attempt to spice up the disposal team's jobs. + - rscadd: Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. + Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. + - rscadd: Aquatic mobs can be hooked by fishing rods, even without a jawed fishing + hook installed. + - rscadd: The carp and fish infusion sets now give the infusee the aquatic biotype. + Added support for infusions adding a biotype. + - rscadd: You can check for a fish's pulse with a stethoscope, which will tell you + its status even without fishing skill. + - qol: Refined fish health status checks to be more precise. + - rscadd: Added 'Fishy' Reagent, a version of strange reagent that only works for + fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin + or tetrodotoxin. + - rscadd: Added a lifish chemical reaction that creates fish. + - rscadd: You can now wear a hat on any modsuit, even w/o the stabilizing module. + But it may easily fall off... + - rscadd: Added the Atrocinator, Hat Stabilizer, and Tanning modules to the black + market. + - rscadd: Added the loose hat component to bio/bomb/rad hoods and space helmets. + necromanceranne: + - bugfix: Civilian bounty pads refuse to send holographic items. Nanotrasen have + received far too many holographic fish for their liking. Officer Mathews is + still weeping in a corner after all the clownfish in his aquarium turned to + dust before his very eyes... + - code_imp: Cleans up the bounty pad code just a smidge. + oranges: + - rscadd: Teleporting a leaning person will now make them fall over + paganiy: + - rscadd: 'Add a new item to the chef traitor''s uplink: Molt''Obeso sauce. A sauce + that makes people want to eat too much.' +2024-11-30: + Absolucy: + - bugfix: Light Step now properly prevents your hands and clothes from getting covered + in blood when stepping in it. + - bugfix: Fixed double-encoded messages with AI shuttle call reasons. + CRITAWAKETS: + - rscadd: Added in the modulo operator to the circuit arithmetic component. + Ghommie: + - bugfix: Aquariums are now potential fishing spots. + - balance: Aquarium kits can now be printed from cargo, service, science protolathes + as well as the autolathe. They no longer have to be ordered from cargo. + - balance: Revamped the "Growth/Reproduction" setting for aquarium to "Safe Mode", + which also disables the food, temperature and water requiremenets of aquariums, + making it useful for purely decorative aquariums. + - balance: Replaced the "Aggressive" fish trait with "Territorial". No more angelfish + shanking the goldfish and guppy in prefilled aquariums with less than 5 fishes. + - qol: Added screentips to aquariums. + - rscadd: Icemoon lavaloops (now named plasmaloops) fish now look different. + Melbert: + - bugfix: You should be afflicted by the "Curse of Mundanity" far, far less + - bugfix: Fixed play local sound for admins + OrionTheFox: + - image: resprited the worn sprites of all Fannypacks + SmArtKar: + - bugfix: Fixed Nebula's robotics fabricators being obstructed roundstart + - bugfix: Fixed damage overlays hiding themselves or flickering when you get wounded. + - bugfix: Fixed projectile parrying diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml new file mode 100644 index 0000000000000..210a0f1e6f04a --- /dev/null +++ b/html/changelogs/archive/2024-12.yml @@ -0,0 +1,396 @@ +2024-12-01: + KingkumaArt: + - bugfix: Etherials no longer lose overcharge really slowly. + - bugfix: Etherial Wine/Telepole no longer overcharges etherials with one sip. + OrionTheFox: + - image: resprited the (Analog) Wall Clock + SmArtKar: + - bugfix: Fixed cargo ticket and pet adventure drone loot pools not working + - bugfix: Fixed plasmamen envirosuits being unrepairable + SmArtKar, Kapu: + - bugfix: Atmospheric tanks no longer fetch icons every tick + distributivgesetz: + - bugfix: The labor shuttle can no longer be cheesed by piggybacking a prisoner + who has completed their sentence. + larentoun: + - bugfix: Printed advanced robotic right leg now has correct name, instead of being + "heavy" + - bugfix: Printed Moth X-Ray eyes are now correctly named, instead of being just + "robotic eyes" + timothymtorres: + - rscadd: The revenant defile spell now affects showers by removing all water recyclers + and reagents that gets replaced with blood. + - rscadd: Showering in clean water (+70%) results in positive mood/regen/stamina + effects. It will wash off the mob. + - rscadd: Showering in dirty water results in negative mood effects and disgust. + It will NOT wash off the mob. + - rscadd: Showering with radioactive reagents (+20%) results in the preventing the + shower from washing off the radiation. + - rscadd: Showering in blood (+70%) results in severe negative mood effects and + disgust. (unless you are morbid, evil, or undead then it's considered positive) + It will cover the mob in blood. + - rscadd: Water effects that interact with a mob from touch or vapor (showering/spray + bottles/etc.) will now heal sleep, unconsciousness, confusion, drowsiness, jitters, + dizziness, and drunkenness. + - bugfix: Fix bloody showers not covering objects in blood. + - bugfix: Tossing or spraying a container full of blood now covers objects/mobs + in blood + - bugfix: Fix wrong status effect for watery tile + - image: Add new alert icons for bloody/dirty showers + - code_imp: Refactored some expose_obj reagent code to support method types. + - code_imp: Improved mood typecasting for owner to allow checking of mob biotypes. +2024-12-02: + Ghommie: + - balance: brought fishing difficulty of all fishing spots a bit closer to their + original value following a small oopsie that made them unexpectingly easier + for more than two months. + - bugfix: Fixed fishing lures. + OrionTheFox: + - bugfix: fixed the "tactical combat/engineering uniform" allowing toggling with + no alt sprite + SmArtKar: + - bugfix: Fixed lunar parade soundloop + - bugfix: You cannot have more than one MODtether (excluding manual connections) + - qol: Tethers are easier to cut (require less pixelhunting) + - bugfix: Fixed flipped fishing hooks + - bugfix: You can no longer stick a butter on a stick on a stick + - qol: Mining drills are now active by default + - bugfix: Fixes mining drill displaying drilling messages while inactive + githubuser4141: + - bugfix: fixes splinter cell pistols causing mechs to suddenly have all their flags + deleted + mc-oofert: + - bugfix: fixed the museum password puzzle (to the cafeteria), and the scrubbers + and vents there now look correctly (also fixed a rare visual bug) + - bugfix: it is now harder to bypass indestructible windows and grilles (those are + placed there for a reason, you know!) + norsvenska: + - spellcheck: You are no longer faced with a typo after either not writing on paper, + or attempting to stamp a paper that's been stamped too many times. +2024-12-03: + Absolucy: + - bugfix: Made the broadcast camera's sprite more consistent, it hopefully shouldn't + reset to the inactive sprite while recording in some weird scenarios now. + - bugfix: Abductor doohickeys (i.e abductor device circuit boards, mental interface + device, silencer, science tool, and omnitool) now properly unlock alien tech + via the experimentor. + EnterTheJake: + - balance: Wraith Module recloaking timer bumped from 5 to 20 seconds. + - balance: The Wraith Module's cloak now dissipates on ranged attacks and any type + of bump. + - balance: Wraith Module can no longer be installed In suits with the armor booster + module . + SmArtKar: + - bugfix: Fixed Hilbert's rigged analyzer not being able to scan the hotel orb + - bugfix: Fixed all parried projectiles only going up or down + - bugfix: Fixed "Leave Body" escape menu tab runtiming + - bugfix: Fixed smoker addictions not refreshing + ValuedEmployee: + - bugfix: Only players with Felinid tongues get to meow and purr for real this time, + and other carbons cannot + - bugfix: Mimes can no longer meow out loud and have their own mime message + - bugfix: Stopped delay on meow and purr emotes where they had to be used twice + to work the first time they're used + - rscdel: Removed redundant text warning for players that can't use the meow or + purr emotes + norsvenska: + - spellcheck: Station commission plaques (the gold ones that have the date they + were added) have been updated, adding Nebula's, fixing Wawa's, and decommissioning + Northstar's. + thegrb93: + - bugfix: Borg lights not turning off when flashed or empd + - bugfix: Air alarms stuck in warning state when area alarms are cleared +2024-12-04: + Absolucy: + - bugfix: Fixed a runtime error related to the balloon alert from folding a paper + plane. + Ghommie: + - bugfix: Aquarium safe mode is now safe. + - bugfix: Fish are no longer still hungry after being fed. + - bugfix: Fixing some errors when removing brains with skillchips in them. + Melbert: + - refactor: A ton of things now use the more correct method of applying damage to + you. Which means they will correctly factor in damage modifiers and are less + likely to break your sprite. Some examples include embedded objects jostling + around, chiropractice, and tackling a wall. Report any oddities, such as extreme + damage or bodyparts being wrongly affected. + - bugfix: Having acid splashed on your face may now disfigure you and make you bald, + as it once did three years ago. + - bugfix: Itchy heretic trauma now better checks if the bodypart is covered or not + before determining if you should itch. + - bugfix: '"Repair Puncture" logs no longer mistakenly report you are "Incising + burned flesh"' + SmArtKar: + - bugfix: Fixed a zero g pushoff runtime + - sound: Modsuits no longer horrifically screech when taken off + - bugfix: Fixed a board GPS imprintion runtime + - bugfix: Fixed a runtime in detomatix logging + Wallem: + - image: Updates slime potion sprites, adds some new colors and rearranges some + others. +2024-12-05: + 13spacemen: + - rscdel: Time Dilation no longer shows in the hub text + Ben10Omintrix: + - bugfix: repairbots now gain their destructive abilities when hacked by an AI + - bugfix: repairbot crafting recipes have been updated + Majkl-J: + - bugfix: Ruins will now correctly spawn their tied ruins in + - bugfix: The map_logging test now runs proper + - code_imp: The stacked_lights test now screams with area names too. + SmArtKar: + - qol: Shifted the escape menu stat panel down a bit +2024-12-06: + Autisem: + - refactor: Nanotrasen has introducted new upgrades into the aging station shield + statalites, they require a but longer to toggle on however + OrionTheFox: + - bugfix: fixed the Icebox Phonebooth air alarm being on the outside, thus triggering + because the planet is, indeed, cold. It is now inside and all-access so that + callers can turn it off when they decide the phone's more important than their + health and safety. + SmArtKar: + - bugfix: Fixed atrocinator not yeeting you up + - bugfix: Fixed a qdel loop in hypnosis brain trauma + imedial: + - bugfix: Map vote now cares about current player count +2024-12-07: + Ben10Omintrix: + - qol: u can now directly feed animals from ur hands, like raptors or cats, by clicking + on them with their preferred food. + - balance: u can now heal ur raptors mid or post battles by hand feeding them ores + FlufflesTheDog: + - spellcheck: paywall firing pins no longer set the gun description to the pin's + description on removal + LT3: + - bugfix: Tram spoilers correctly provide welder or multitool hints depending on + their damage + - bugfix: Malfunctioning tram controller flashes orange and can be preemptively + fixed before it crashes + SmArtKar: + - qol: AI laws and tape recorders no longer cause radio blips + - balance: Removed organ "refreshing" from legion cores, magic wands and regenerative + crossbreeds so they no longer get rid of your implants + - bugfix: Fixed an edge case with meteor moveloop code + - bugfix: Fixed projectile homing + - rscadd: Toolboxes can be used on any object to pull out and use a tool from it + as long as your offhand is free. + - qol: Jetpacks are significantly smoother and nicer to use now - and not affected + by lag anymore! + - code_imp: Cleaned up spacemove/jetpack code a bit and moved some common code to + helpers. + - refactor: Wings are now... jetpacks. They behave exactly the same and this should + reduce the amount of copypaste code in spacemove significantly. + SmArtKar, Kapu: + - code_imp: Implemented caching for icon sizes which should significantly improve + mob health performance due to HUDs constantly fetching icons + SyncIt21: + - code_imp: improved code for machinery + - code_imp: slightly improved code for borg inducer + - spellcheck: fixes examines & screentips for borg inducer + - code_imp: condensed code for reagent grinder + - bugfix: reagent grinder won't break when 2 or more people are simultaneously interacting + with it + - bugfix: ejecting contents & examining the reagent grinder as an AI via the radial + menu does not require it to be powered or anchored + - bugfix: examine block for reagent grinder as an AI is properly formatted + Time-Green: + - balance: Bioscramblers are no longer immortal + - balance: Anomalies give 20 extra seconds to defuse! Or 20 extra seconds for them + to reach havoc... + - balance: Material anomalies only teleport 1-4 times before detonating + carlarctg: + - bugfix: Recovered crew no longer show up on roundend report + - rscadd: Surgery trays now have a small chance to become medical toolboxes. Autopsy + trays can become coroner toolboxes. + - rscadd: Added a 1 in 1.000.000 chance for a toolbox to have four latches. + mc-oofert: + - balance: A mutation in gatfruit seeds has led to a drastic alteration in the observable + traits of the plant, which now fires hardened peas that deal less damage, but + poison the target. Additionally, its poison can be, with some botanical engineering, + replaced with whatever you wish. + - balance: burglars finesse spell range increased from 4 to 6 and it may loot any + back storage object, caretakers refuge cooldown is only applied when exiting + refuge, labyrinth handbook accepts any crayon instead of a white crayon + - qol: you may click an id with the knock heretic id card to make it consume it + - rscadd: janitor modsuit space cleaner mister module + - bugfix: manufacturing assembling machine crafts junk shells and lizard boots properly, + may no longer craft anchored objects (broken check), and sends its crafted stuff + at once + - balance: changeling last resort works as a monkey or animal + timothymtorres: + - bugfix: Fix drink labels for alcohol bottles + - rscadd: Add medical human organ crate emergency medical holodeck simulation + - bugfix: Fix gravity not updating for mobs when teleporting, wormhole jaunters, + wizard spells, tile creation/destruction, mech entry/ejection and other methods. + - bugfix: Fix gravity for areas in space near station (solars, nearspace, bomb testing, + etc.) + tontyGH: + - bugfix: runetext fades in correctly in bulk. signers rejoice + zxaber: + - bugfix: Mechs with crowbar-like tools can now hold adjacent firelocks open correctly. +2024-12-08: + SyncIt21: + - refactor: improved attack chain code for rapid pipe dispenser + - code_imp: organized lists & global vars for rapid pipe dispenser into their own + respective files & improved a bunch of code +2024-12-09: + FlufflesTheDog: + - bugfix: Dimensional shifter relics work more reliably. + Ghommie: + - bugfix: You should be once again able to fish moonfish and other fish used in + lizard cuisine from tiziran water turfs. + Melbert: + - rscdel: Some crowbars on Wawa, Nebula, and Birdboat are significantly less heavy + SmArtKar: + - image: Added unique sprites for Endotherm wintercoats + - image: Wintercoat hoods now show a bit of your hair! + grungussuss: + - rscadd: pointing now has interactions with the amount of limbs/organs you have + - balance: you can now point while restrained + - sound: pointing with your head makes a sound + grungussuss and Sothanforax: + - rscadd: hiss emote + - sound: hissssssing sounds + mc-oofert: + - bugfix: The Men in Grey may no longer access birdshots engineering via a certain + maintenance airlock + - bugfix: multitile airlock assemblies from a broken multitile airlock are the same + direction + mcbalaam: + - rscadd: Added the mail sorting unit - working with mail has never been simpler! + - rscadd: Added two flatpack pre-defined subtypes for the flatpacker and the mail + sorter. + timothymtorres: + - code_imp: Add better logging for ruins + tontyGH: + - bugfix: Pubby's whiteship no longer breaks when it tries to dock + - bugfix: /datum/component/PostTransfer() procs that didn't have their new_parent + arguments have now been fixed + - bugfix: This means that turning into a Domain gondola shouldn't RR people anymore +2024-12-10: + MelokGleb: + - qol: changes Chronic Illness quirk name, description and icon to match it's dangerousness +2024-12-11: + Ghommie: + - bugfix: Fixed feeding fish only increasing their size but not the weight. + - bugfix: Fixing remote/ghost alt-click functioning on aquariums + - bugfix: Added missing plasma tetra to freshwater fishing spots. + - balance: plasma tetra is now smaller and qualifies as baitfish. + LT3: + - bugfix: Map vote will no longer sometimes ignore the winning choice and pick a + cached, ineligible map + SmArtKar: + - bugfix: Removed rogue sand decals from Island Brawl domain walls + WebcomicArtist: + - bugfix: Durand shield now uses proper amount of power upon taking damage + - bugfix: Mech plasma generator now produces the correct amount of charge, previously + bugged to be 10% of intended. + carlarctg: + - rscadd: Adds suicides to fish. Like, a lot of suicides. Almost all of them very + unique. I'm too lazy to make a video, but they've been thoroughly tested. + grungussuss: + - bugfix: fixed *me emote being called when using the *help emote + - bugfix: you will no longer slip off your mount when traversing slippery surfaces + - bugfix: fixed being unable to remove bar seating holograms + - bugfix: fixed an error with slipping + - bugfix: fixed items not falling from a lattice after being deconstructed/destroyed +2024-12-12: + Kocma-san: + - admin: moves all admin requests in admin stuff section. Now they have type Prayers + SmArtKar: + - bugfix: Made wendigo's bullet hell lag less, at cost of its visuals. + - bugfix: Toolboxes can now be placed onto tables/into crates + - bugfix: Fixed toolboxes automatically using the first item in them +2024-12-13: + Majkl-J: + - bugfix: Fauna can no longer push necropolis gates + Melbert: + - bugfix: Words in other languages will be randomized far less often (depending + on how commonly they are used). This bug was 10 years old. + - qol: Hovering over clickable screen elements will now update your mouse cursor + to indicate they're clickable + - qol: Hovering over small wall mounts (light switches, buttons, fire alarms) will + now update to mouse cursor indicating you're hovering them + - qol: Cauterizing bleeding wounds now plays the cautery sfx. + - qol: Bleeding wounds will now go away the moment they're fully healed, rather + than a second or two later. + - qol: Suture / Mesh treatment is now uniform! meaning healing bruises with a suture + is now the same thing as healing cuts with a suture. This has very little difference + in practice, but it should generally result in a lot smoother experience. + - qol: 'Suture / Mesh usage has been reworked slightly, and now offers two modes + of use:' + - qol: LEFT CLICKING will heal in AUTO MODE, which will AUTOMATICALLY switch between + damaged bodyparts, prioritizing your targeted limb. You cannot change target + mid-heal; changing target simply changes your priority for your NEXT heal. + - qol: RIGHT CLICKING will heal in MANUAL MODE, which functions like it does currently + - allowing you to change your target before you finish your heal and giving + you a 1 second "assessment" step to change your target when you're done healing + a limb. Manual mode is 10% faster than Auto mode. + SmArtKar: + - image: Scarves have received a minor update to their sprites + - bugfix: Fixed moths only being able to fly if they spawn in zero gravity + grungussuss: + - bugfix: '*me emote works again' +2024-12-14: + EnterTheJake: + - bugfix: temporary blocks such as blade heretic orbiting knives properly stop body + throws. + Ghommie: + - bugfix: Actually fixed alt-clicking aquariums. + Majkl-J: + - bugfix: Aloe cream no longer catches fire seconds after finishing baking + - bugfix: Overcharged SMESes no longer spam runtime when timers chug up + NecromancerAnne (code), orcacora (sprites): + - rscadd: Adds NT BR-38 Battle Rifles. A hybrid weapon. Find it in your local armory + and cargo catalogue today. (Keep away from EMPs) + Runi-c: + - balance: medical doctors can buy Reagent Dartgun from traitor uplink + SmArtKar: + - bugfix: Fixes primed stingbangs being invisible + SmArtKar, LemonInTheDark: + - rscadd: Changed how spraycans color items - "old" mode is still availible via + right click. + - refactor: Refactored how some items and effects color things so that they look + prettier. + SyncIt21: + - code_imp: improved code for leaning + distributivgesetz: + - code_imp: Fixed rare cases where moving an object somewhere could silently fail, + but still run unintended code. Report any weird issues on Github + grungussuss: + - bugfix: fixed regal rat attack logic + - bugfix: fixed access on birdshot engi mulebot delivery window + mcbalaam: + - qol: Now all antagonists are visible to an admin in the orbit menu! + norsvenska: + - spellcheck: The Lance and Raven shuttle airlocks are now properly labelled emergency + airlocks, rather than emegency airlocks. + - spellcheck: The radio jammer now releases disruptor waves, rather than distruptor + waves. + timothymtorres: + - sound: Add water sound to sinks +2024-12-15: + Ghommie: + - bugfix: Fixed the displayed stats when examining fishing rods twice. + LT3: + - bugfix: Fixed unconstructed solar panels on Nebulastation port aft solars + Melbert: + - rscadd: Adds Syndol to the chemical kit, an addictive hallucinogen that applies + bonus effects when security officers, assistants, or clowns are exposed. + - bugfix: Metalgen works as a lockpick; igniting a crate metalgen'd into plasma + will properly drop its contents. + - code_imp: Hiding stuff in food should generally work more consistently now. + - bugfix: Fixes players not doing the "searching for item" do-after for items hidden + in food. + - qol: When dragging an item (like, with your mouse cursor. not physically), your + cursor updates when hovering humans or cyborgs to indicate you're hovering over + a human or cyborg. + Paxilmaniac: + - bugfix: Fixes resin sprayers not working if the target is more than one tile away + from you + necromanceranne: + - code_imp: Various mob attack procs are treated as unarmed attacks as a baseline + assumption, rather than melee attacks. + timothymtorres: + - code_imp: Improve looping sounds to allow nested and non-associative lists diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 38921a6e48402..83d7c14d0cc1b 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 85d450e03bdd6..41bdf992bbf41 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi index 113e16163ecdc..b48164f8795a1 100644 Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ diff --git a/icons/hud/64x16_actions.dmi b/icons/hud/64x16_actions.dmi index 812d888846ebd..23865a80f0354 100644 Binary files a/icons/hud/64x16_actions.dmi and b/icons/hud/64x16_actions.dmi differ diff --git a/icons/hud/fishing_hud.dmi b/icons/hud/fishing_hud.dmi index f9d2d2ff9c457..84f739f9db228 100644 Binary files a/icons/hud/fishing_hud.dmi and b/icons/hud/fishing_hud.dmi differ diff --git a/icons/hud/radial.dmi b/icons/hud/radial.dmi index f6e141ab6855a..5e32a89fe5d06 100644 Binary files a/icons/hud/radial.dmi and b/icons/hud/radial.dmi differ diff --git a/icons/hud/radial_fishing.dmi b/icons/hud/radial_fishing.dmi index 8b914f32613be..daa4ce8abda3e 100644 Binary files a/icons/hud/radial_fishing.dmi and b/icons/hud/radial_fishing.dmi differ diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index d540a55d344ba..4fd8b3c8592d1 100644 Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ diff --git a/icons/hud/screen_full.dmi b/icons/hud/screen_full.dmi index dfe3bd12091d9..be4571638b10f 100644 Binary files a/icons/hud/screen_full.dmi and b/icons/hud/screen_full.dmi differ diff --git a/icons/hud/screen_gen.dmi b/icons/hud/screen_gen.dmi index 5b1c24d7789cc..c38725e43e433 100644 Binary files a/icons/hud/screen_gen.dmi and b/icons/hud/screen_gen.dmi differ diff --git a/icons/mob/actions/actions_silicon.dmi b/icons/mob/actions/actions_silicon.dmi index 9c4b7ec7fbe85..b8f5caafc3fa3 100644 Binary files a/icons/mob/actions/actions_silicon.dmi and b/icons/mob/actions/actions_silicon.dmi differ diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index a67830ac5e917..9fd317494ad8b 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 62cc25aaf33ad..8d70197537c52 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi index 01cf7b38913f5..0ffdb70219cf4 100644 Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ diff --git a/icons/mob/clothing/digi_template.dmi b/icons/mob/clothing/digi_template.dmi new file mode 100644 index 0000000000000..319bd875041c7 Binary files /dev/null and b/icons/mob/clothing/digi_template.dmi differ diff --git a/icons/mob/clothing/ears.dmi b/icons/mob/clothing/ears.dmi index cd7f6cc9e2bc9..beca6060b70db 100644 Binary files a/icons/mob/clothing/ears.dmi and b/icons/mob/clothing/ears.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 8a8c893577882..5ff2a5b792070 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index 2f3161b0331a1..3eee250ca66d5 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/head/hats.dmi b/icons/mob/clothing/head/hats.dmi index 01ed2679f23b3..7f59060129712 100644 Binary files a/icons/mob/clothing/head/hats.dmi and b/icons/mob/clothing/head/hats.dmi differ diff --git a/icons/mob/clothing/head/helmet.dmi b/icons/mob/clothing/head/helmet.dmi index db48dda1fd61c..05fe660a33a29 100644 Binary files a/icons/mob/clothing/head/helmet.dmi and b/icons/mob/clothing/head/helmet.dmi differ diff --git a/icons/mob/clothing/head/winterhood.dmi b/icons/mob/clothing/head/winterhood.dmi index ba722a5a0f281..a173364c99454 100644 Binary files a/icons/mob/clothing/head/winterhood.dmi and b/icons/mob/clothing/head/winterhood.dmi differ diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi index bd57cb6eee916..cb02e72603bbe 100644 Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ diff --git a/icons/mob/clothing/suits/utility.dmi b/icons/mob/clothing/suits/utility.dmi index 4b6235d740ad3..f05fcf6514efd 100644 Binary files a/icons/mob/clothing/suits/utility.dmi and b/icons/mob/clothing/suits/utility.dmi differ diff --git a/icons/mob/clothing/suits/wintercoat.dmi b/icons/mob/clothing/suits/wintercoat.dmi index 9bcfca4d6a3a1..921e3991846ff 100644 Binary files a/icons/mob/clothing/suits/wintercoat.dmi and b/icons/mob/clothing/suits/wintercoat.dmi differ diff --git a/icons/mob/clothing/under/civilian.dmi b/icons/mob/clothing/under/civilian.dmi index 3511731eac3ca..63788c8d1ed13 100644 Binary files a/icons/mob/clothing/under/civilian.dmi and b/icons/mob/clothing/under/civilian.dmi differ diff --git a/icons/mob/clothing/under/digi_template.dmi b/icons/mob/clothing/under/digi_template.dmi deleted file mode 100644 index 0c9db80eb1c88..0000000000000 Binary files a/icons/mob/clothing/under/digi_template.dmi and /dev/null differ diff --git a/icons/mob/clothing/under/masking_helpers.dmi b/icons/mob/clothing/under/masking_helpers.dmi index dfbec7d1cb8ec..26e1cc446685f 100644 Binary files a/icons/mob/clothing/under/masking_helpers.dmi and b/icons/mob/clothing/under/masking_helpers.dmi differ diff --git a/icons/mob/dust_animation.dmi b/icons/mob/dust_animation.dmi index 459fc2aa3c4b3..10d8418a14453 100644 Binary files a/icons/mob/dust_animation.dmi and b/icons/mob/dust_animation.dmi differ diff --git a/icons/mob/human/hair_masks.dmi b/icons/mob/human/hair_masks.dmi index 5dbd4917a87e3..bb7b55e0cc3a4 100644 Binary files a/icons/mob/human/hair_masks.dmi and b/icons/mob/human/hair_masks.dmi differ diff --git a/icons/mob/human/species/moth/moth_antennae.dmi b/icons/mob/human/species/moth/moth_antennae.dmi index a40013e93576f..e6d024668084b 100644 Binary files a/icons/mob/human/species/moth/moth_antennae.dmi and b/icons/mob/human/species/moth/moth_antennae.dmi differ diff --git a/icons/mob/human/species/moth/moth_markings.dmi b/icons/mob/human/species/moth/moth_markings.dmi index a6ebc2cedb517..1c8173eaf3903 100644 Binary files a/icons/mob/human/species/moth/moth_markings.dmi and b/icons/mob/human/species/moth/moth_markings.dmi differ diff --git a/icons/mob/human/species/moth/moth_wings.dmi b/icons/mob/human/species/moth/moth_wings.dmi index 91c0d8b2b2cd1..1d3aaea5e776d 100644 Binary files a/icons/mob/human/species/moth/moth_wings.dmi and b/icons/mob/human/species/moth/moth_wings.dmi differ diff --git a/icons/mob/human/textures.dmi b/icons/mob/human/textures.dmi index 4408c3e067281..78bf3a18e10dc 100644 Binary files a/icons/mob/human/textures.dmi and b/icons/mob/human/textures.dmi differ diff --git a/icons/mob/inhands/64x64_lefthand.dmi b/icons/mob/inhands/64x64_lefthand.dmi index e5dc62260453a..d46d2b439f514 100644 Binary files a/icons/mob/inhands/64x64_lefthand.dmi and b/icons/mob/inhands/64x64_lefthand.dmi differ diff --git a/icons/mob/inhands/64x64_righthand.dmi b/icons/mob/inhands/64x64_righthand.dmi index 5f153cece749c..8adb31df8546d 100644 Binary files a/icons/mob/inhands/64x64_righthand.dmi and b/icons/mob/inhands/64x64_righthand.dmi differ diff --git a/icons/mob/inhands/equipment/toolbox_lefthand.dmi b/icons/mob/inhands/equipment/toolbox_lefthand.dmi index e3aca82d9e839..3dbd5ea013d42 100644 Binary files a/icons/mob/inhands/equipment/toolbox_lefthand.dmi and b/icons/mob/inhands/equipment/toolbox_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/toolbox_righthand.dmi b/icons/mob/inhands/equipment/toolbox_righthand.dmi index a7b538a130002..13dc226fcea31 100644 Binary files a/icons/mob/inhands/equipment/toolbox_righthand.dmi and b/icons/mob/inhands/equipment/toolbox_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index f38ce00161941..82f46b35c6cc1 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 4639b290fe371..b2e2fc8033b89 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/chainsaw_lefthand.dmi b/icons/mob/inhands/weapons/chainsaw_lefthand.dmi index 5235f1510102a..e7da8d0ee5da6 100644 Binary files a/icons/mob/inhands/weapons/chainsaw_lefthand.dmi and b/icons/mob/inhands/weapons/chainsaw_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/chainsaw_righthand.dmi b/icons/mob/inhands/weapons/chainsaw_righthand.dmi index 0800a5273156c..902c2b4ee07aa 100644 Binary files a/icons/mob/inhands/weapons/chainsaw_righthand.dmi and b/icons/mob/inhands/weapons/chainsaw_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index 90df2a892f984..369365131c6de 100644 Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi index eebed61656aa4..fb77baa515b08 100644 Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_lefthand.dmi b/icons/mob/inhands/weapons/hammers_lefthand.dmi index d065edd86e75a..aaae035e056f1 100644 Binary files a/icons/mob/inhands/weapons/hammers_lefthand.dmi and b/icons/mob/inhands/weapons/hammers_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_righthand.dmi b/icons/mob/inhands/weapons/hammers_righthand.dmi index 022b281e4626a..6ff58389894e8 100644 Binary files a/icons/mob/inhands/weapons/hammers_righthand.dmi and b/icons/mob/inhands/weapons/hammers_righthand.dmi differ diff --git a/icons/mob/rideables/mecha.dmi b/icons/mob/rideables/mecha.dmi index 5960d05413781..a52a3ff5d4be5 100644 Binary files a/icons/mob/rideables/mecha.dmi and b/icons/mob/rideables/mecha.dmi differ diff --git a/icons/mob/silicon/aibots.dmi b/icons/mob/silicon/aibots.dmi index 86c450ef1ceae..819eecea0b739 100644 Binary files a/icons/mob/silicon/aibots.dmi and b/icons/mob/silicon/aibots.dmi differ diff --git a/icons/obj/aquarium/fish.dmi b/icons/obj/aquarium/fish.dmi index 53a218bc780a1..49856cc649fe9 100644 Binary files a/icons/obj/aquarium/fish.dmi and b/icons/obj/aquarium/fish.dmi differ diff --git a/icons/obj/aquarium/supplies.dmi b/icons/obj/aquarium/supplies.dmi index 08f4923a0abdd..73a1f5ffe345a 100644 Binary files a/icons/obj/aquarium/supplies.dmi and b/icons/obj/aquarium/supplies.dmi differ diff --git a/icons/obj/aquarium/tanks.dmi b/icons/obj/aquarium/tanks.dmi index 44f526f8c9980..b4a5e06471f8b 100644 Binary files a/icons/obj/aquarium/tanks.dmi and b/icons/obj/aquarium/tanks.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 454f2195e837d..3928c2246f1ed 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/head/helmet.dmi b/icons/obj/clothing/head/helmet.dmi index 621afe57ddce4..e213773717591 100644 Binary files a/icons/obj/clothing/head/helmet.dmi and b/icons/obj/clothing/head/helmet.dmi differ diff --git a/icons/obj/clothing/head/winterhood.dmi b/icons/obj/clothing/head/winterhood.dmi index 34e0abf39beef..591f99ec313fb 100644 Binary files a/icons/obj/clothing/head/winterhood.dmi and b/icons/obj/clothing/head/winterhood.dmi differ diff --git a/icons/obj/clothing/modsuit/mod_modules.dmi b/icons/obj/clothing/modsuit/mod_modules.dmi index 9811af0b54838..f91f9f0b9dcaf 100644 Binary files a/icons/obj/clothing/modsuit/mod_modules.dmi and b/icons/obj/clothing/modsuit/mod_modules.dmi differ diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi index ca90eb8a3291b..3a1bd3d2ccff3 100644 Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 58d4791adc882..ea87b1dc293bb 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits/utility.dmi b/icons/obj/clothing/suits/utility.dmi index 8c12f056e21fe..31de04d33a731 100644 Binary files a/icons/obj/clothing/suits/utility.dmi and b/icons/obj/clothing/suits/utility.dmi differ diff --git a/icons/obj/clothing/suits/wintercoat.dmi b/icons/obj/clothing/suits/wintercoat.dmi index 377c9ef61e30e..a70b4eb6cbe98 100644 Binary files a/icons/obj/clothing/suits/wintercoat.dmi and b/icons/obj/clothing/suits/wintercoat.dmi differ diff --git a/icons/obj/clothing/under/civilian.dmi b/icons/obj/clothing/under/civilian.dmi index 6707876c244b7..a81e3681deb20 100644 Binary files a/icons/obj/clothing/under/civilian.dmi and b/icons/obj/clothing/under/civilian.dmi differ diff --git a/icons/obj/devices/mecha_equipment.dmi b/icons/obj/devices/mecha_equipment.dmi index ebfa5438ae911..e22b021ae236b 100644 Binary files a/icons/obj/devices/mecha_equipment.dmi and b/icons/obj/devices/mecha_equipment.dmi differ diff --git a/icons/obj/devices/new_assemblies.dmi b/icons/obj/devices/new_assemblies.dmi index 7bf96e5ba92e3..f80f89ce20a09 100644 Binary files a/icons/obj/devices/new_assemblies.dmi and b/icons/obj/devices/new_assemblies.dmi differ diff --git a/icons/obj/fishing.dmi b/icons/obj/fishing.dmi index d97384f1f7994..58ab9944366dd 100644 Binary files a/icons/obj/fishing.dmi and b/icons/obj/fishing.dmi differ diff --git a/icons/obj/fluff/containers.dmi b/icons/obj/fluff/containers.dmi index 8aed1ffbb9a99..0e966c9f794fb 100644 Binary files a/icons/obj/fluff/containers.dmi and b/icons/obj/fluff/containers.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 7b6afcc37ffbe..acc932a40049d 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/lizard.dmi b/icons/obj/food/lizard.dmi index 9e60c814a2e5a..44dc43e84de9d 100644 Binary files a/icons/obj/food/lizard.dmi and b/icons/obj/food/lizard.dmi differ diff --git a/icons/obj/machines/computer.dmi b/icons/obj/machines/computer.dmi index 9fcc46bf9b4e8..34f632044c162 100644 Binary files a/icons/obj/machines/computer.dmi and b/icons/obj/machines/computer.dmi differ diff --git a/icons/obj/machines/engine/turbine.dmi b/icons/obj/machines/engine/turbine.dmi index 1ae45eb2a1b1f..afd9839af1341 100644 Binary files a/icons/obj/machines/engine/turbine.dmi and b/icons/obj/machines/engine/turbine.dmi differ diff --git a/icons/obj/machines/mailsorter.dmi b/icons/obj/machines/mailsorter.dmi new file mode 100644 index 0000000000000..8d09e36796f95 Binary files /dev/null and b/icons/obj/machines/mailsorter.dmi differ diff --git a/icons/obj/machines/manufactorio.dmi b/icons/obj/machines/manufactorio.dmi index 31abf6f6a20ee..58b08e4ab440b 100644 Binary files a/icons/obj/machines/manufactorio.dmi and b/icons/obj/machines/manufactorio.dmi differ diff --git a/icons/obj/machines/vending.dmi b/icons/obj/machines/vending.dmi index 319771e4e7fb5..8c39296a155f7 100644 Binary files a/icons/obj/machines/vending.dmi and b/icons/obj/machines/vending.dmi differ diff --git a/icons/obj/medical/chemical.dmi b/icons/obj/medical/chemical.dmi index e362c5126e193..8b1a3f574f828 100644 Binary files a/icons/obj/medical/chemical.dmi and b/icons/obj/medical/chemical.dmi differ diff --git a/icons/obj/service/janitor.dmi b/icons/obj/service/janitor.dmi index 9f28c6bbe046e..1ec087a7667f6 100644 Binary files a/icons/obj/service/janitor.dmi and b/icons/obj/service/janitor.dmi differ diff --git a/icons/obj/signs.dmi b/icons/obj/signs.dmi index 4e0ce76cd8672..f9a3301d82852 100644 Binary files a/icons/obj/signs.dmi and b/icons/obj/signs.dmi differ diff --git a/icons/obj/storage/toolbox.dmi b/icons/obj/storage/toolbox.dmi index 9ca99565f3174..49385d5b73cf2 100644 Binary files a/icons/obj/storage/toolbox.dmi and b/icons/obj/storage/toolbox.dmi differ diff --git a/icons/obj/weapons/grenade.dmi b/icons/obj/weapons/grenade.dmi index c65f6d0e9fb80..628b271d423e5 100644 Binary files a/icons/obj/weapons/grenade.dmi and b/icons/obj/weapons/grenade.dmi differ diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 2dab0cb3d8d08..0f3b0620198ee 100644 Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ diff --git a/icons/obj/weapons/guns/ballistic.dmi b/icons/obj/weapons/guns/ballistic.dmi index ef61f1d24949d..6f208f4d8b1cd 100644 Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi index d3ecd385a7094..2776fbd4961a8 100644 Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/icons/obj/weapons/guns/wide_guns.dmi b/icons/obj/weapons/guns/wide_guns.dmi index 7e18f60eeb864..a193dcc53015f 100644 Binary files a/icons/obj/weapons/guns/wide_guns.dmi and b/icons/obj/weapons/guns/wide_guns.dmi differ diff --git a/icons/obj/weapons/hammer.dmi b/icons/obj/weapons/hammer.dmi index 751e626779890..2b4e0cc820488 100644 Binary files a/icons/obj/weapons/hammer.dmi and b/icons/obj/weapons/hammer.dmi differ diff --git a/icons/obj/weapons/khopesh.dmi b/icons/obj/weapons/khopesh.dmi index 20b084396aa6d..257ccc800dfb8 100644 Binary files a/icons/obj/weapons/khopesh.dmi and b/icons/obj/weapons/khopesh.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index ff9d1e62e9b31..3b67fc7927e51 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/ui/repairbotmanagement/repairbot_smile.dmi b/icons/ui/repairbotmanagement/repairbot_smile.dmi new file mode 100644 index 0000000000000..6dad3497910d7 Binary files /dev/null and b/icons/ui/repairbotmanagement/repairbot_smile.dmi differ diff --git a/modular_doppler/bitrunning_prefs_disks/code/disks/prefs_disk.dm b/modular_doppler/bitrunning_prefs_disks/code/disks/prefs_disk.dm new file mode 100644 index 0000000000000..6079e81de4beb --- /dev/null +++ b/modular_doppler/bitrunning_prefs_disks/code/disks/prefs_disk.dm @@ -0,0 +1,119 @@ +/** + * Bitrunning tech disks which let you load a custom character preference for your bit avatar. + * This uses a preference selected from your character list. + * Optionally, this may include the loadout as well. + * + * For the sake of domain restrictions: + * - ability blocks block the application of character prefs. + * - item blocks block the application of character loadout. + */ +/obj/item/bitrunning_disk/preferences + name = "bitrunning program: personalized avatar" + desc = "A disk containing source code. It can be used to override your bit avatar's standard appearance. Further avatar disks will be ignored." + + // Allows it to be held in the pocket + w_class = WEIGHT_CLASS_SMALL + + /// Our chosen preference. + var/datum/preferences/chosen_preference + /// Whether we include the loadout as well. + var/include_loadout = FALSE + /// Mock client we use for forwarding to quirk assignment (beware, evil hacks). + var/datum/prefs_disk_client_interface/mock_client + +/obj/item/bitrunning_disk/preferences/Initialize(mapload) + . = ..() + register_context() + +/obj/item/bitrunning_disk/preferences/examine(mob/user) + . = ..() + if(isnull(chosen_preference)) + return + + . += span_info("Loadout application is currently [include_loadout ? "enabled" : "disabled"].") + . += span_notice("Ctrl-click to toggle loadout application.") + +/obj/item/bitrunning_disk/preferences/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + var/result = NONE + if(isnull(chosen_preference) && (held_item == src)) + context[SCREENTIP_CONTEXT_LMB] = "Select avatar" + result = CONTEXTUAL_SCREENTIP_SET + if(!isturf(src.loc)) + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Toggle loadout" + result = CONTEXTUAL_SCREENTIP_SET + + return result + +/obj/item/bitrunning_disk/preferences/Destroy() + QDEL_NULL(chosen_preference) + QDEL_NULL(mock_client) + return ..() + +/obj/item/bitrunning_disk/preferences/attack_self(mob/user, modifiers) + . = ..() + + if(isnull(user.client) || chosen_preference) + return + + var/list/character_profiles = user.client.prefs?.create_character_profiles() + if(isnull(character_profiles) || !length(character_profiles)) + return + + var/choice = tgui_input_list(user, message = "Select a character", title = "Bitrunning Avatar", items = character_profiles) + if(isnull(choice) || !user.is_holding(src)) + return + + choice_made = choice + chosen_preference = new(user.client) + chosen_preference.load_character(character_profiles.Find(choice)) + + // Perform our evil hacks + if(isnull(mock_client)) + mock_client = new + mock_client.prefs = chosen_preference + // Done loading from the client, so replace reference to the real client + chosen_preference.parent = mock_client + + balloon_alert(user, "avatar set!") + playsound(user, 'sound/items/click.ogg', 50, TRUE) + +/obj/item/bitrunning_disk/preferences/item_ctrl_click(mob/user) + if(isturf(src.loc)) // If on a turf, we skip to dragging + return NONE + if(isnull(chosen_preference)) + balloon_alert(user, "set preference first!") + return CLICK_ACTION_BLOCKING + include_loadout = !include_loadout + balloon_alert(user, include_loadout ? "loadout enabled!" : "loadout disabled!") + + // High frequency range when enabled, low when disabled. More tactile. + var/toggle_frequency = include_loadout ? rand(45000, 55000) : rand(32000, 42000) + playsound(user, 'sound/items/click.ogg', 50, TRUE, frequency = toggle_frequency) + + return CLICK_ACTION_SUCCESS + +/** + * Allows for ordering of the prefs disk. + */ +/datum/orderable_item/bitrunning_tech/prefs_disk + cost_per_order = 1000 + purchase_path = /obj/item/bitrunning_disk/preferences + desc = "This disk contains a program that lets you load in custom bit avatars." + +/** + * Evil hack that allows us to assign quirks without needing to forward a real client. + * Using this instead of the normal mock client allows us to include only what we need without editing the base, + * or interfering with things like `mock_client_uid`. + * + * Much the same, this should match the interface of /client wherever necessary. + */ +/datum/prefs_disk_client_interface + /// Player preferences datum for the client + var/datum/preferences/prefs + + /// The mob the client controls + var/mob/mob + +/// We don't actually care about award status, but we don't want it to runtime due to not existing. +/datum/prefs_disk_client_interface/proc/get_award_status(achievement_type, mob/user, value = 1) + return 0 diff --git a/modular_doppler/bitrunning_prefs_disks/code/outfit_overrides/bitrunner_outfit_override.dm b/modular_doppler/bitrunning_prefs_disks/code/outfit_overrides/bitrunner_outfit_override.dm new file mode 100644 index 0000000000000..fbbf76ed1b12a --- /dev/null +++ b/modular_doppler/bitrunning_prefs_disks/code/outfit_overrides/bitrunner_outfit_override.dm @@ -0,0 +1,4 @@ + +// Spawns a single preferences disk to start with for all bitrunners. +/datum/outfit/job/bitrunner + r_pocket = /obj/item/bitrunning_disk/preferences diff --git a/modular_doppler/bitrunning_prefs_disks/readme.md b/modular_doppler/bitrunning_prefs_disks/readme.md new file mode 100644 index 0000000000000..b953df82da844 --- /dev/null +++ b/modular_doppler/bitrunning_prefs_disks/readme.md @@ -0,0 +1,47 @@ + + +SOON + +## Bitrunning Avatar Preference Disks + +Module ID: BITRUNNING_PREFS_DISKS + +### Description: + +Allows bitrunners to buy a personalized avatar disk, which lets them load in a given character preference, with all that entails. +This includes even quirks through evil hacks, and optionally loadouts. +Preference application and quirks are blocked if a domain blocks spells/abilities, loadouts are blocked if a domain blocks items. +The evil hacks this performs are using a barebones mock client to allow for quirk assignment without forwarding or affecting the real client. + + + +### TG Proc/File Changes: + +- `code/modules/bitrunning/server/obj_generation.dm`: `proc/stock_gear` + + +### Modular Overrides: + +- N/A + + +### Defines: + +- N/A + + +### Included files that are not contained in this module: + +- N/A + + +### Credits: 00-Steven + + \ No newline at end of file diff --git a/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm b/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm index 6b4a9b82821f3..3ee0efd219e47 100644 --- a/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm +++ b/modular_doppler/colony_fabricator/code/appliances/wind_turbine.dm @@ -15,9 +15,9 @@ layer = ABOVE_MOB_LAYER can_change_cable_layer = TRUE /// How much power the turbine makes without a storm - var/regular_power_production = 2500 + var/regular_power_production = 1 KILO WATTS /// How much power the turbine makes during a storm - var/storm_power_production = 10000 + var/storm_power_production = 5 KILO WATTS /// Is our pressure too low to function? var/pressure_too_low = FALSE /// Minimum external pressure needed to work diff --git a/modular_doppler/colony_fabricator/code/colony_fabricator.dm b/modular_doppler/colony_fabricator/code/colony_fabricator.dm index b9c38bd3090bc..946ad8322fecd 100644 --- a/modular_doppler/colony_fabricator/code/colony_fabricator.dm +++ b/modular_doppler/colony_fabricator/code/colony_fabricator.dm @@ -13,8 +13,6 @@ allowed_buildtypes = COLONY_FABRICATOR /// The item we turn into when repacked var/repacked_type = /obj/item/flatpacked_machine - /// The sound loop played while the fabricator is making something - var/datum/looping_sound/colony_fabricator_running/soundloop /obj/machinery/rnd/production/colony_lathe/Initialize(mapload) . = ..() @@ -22,14 +20,9 @@ AddElement(/datum/element/manufacturer_examine, COMPANY_FRONTIER) // We don't get new designs but can't print stuff if something's not researched, so we use the web that has everything researched stored_research = locate(/datum/techweb/admin) in SSresearch.techwebs - soundloop = new(src, FALSE) if(!mapload) flick("colony_lathe_deploy", src) // Sick ass deployment animation -/obj/machinery/rnd/production/colony_lathe/Destroy() - QDEL_NULL(soundloop) - return ..() - // formerly NO_DECONSTRUCTION /obj/machinery/rnd/production/colony_lathe/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/screwdriver) return NONE @@ -45,14 +38,12 @@ return /obj/machinery/rnd/production/colony_lathe/start_printing_visuals() - soundloop.start() set_light(l_range = 1.5) icon_state = "colony_lathe_working" update_appearance() /obj/machinery/rnd/production/colony_lathe/finalize_build() . = ..() - soundloop.stop() set_light(l_range = 0) icon_state = base_icon_state update_appearance() diff --git a/modular_doppler/colony_fabricator/code/looping_sounds.dm b/modular_doppler/colony_fabricator/code/looping_sounds.dm index a1f26b8fb8d88..f93e7288a5b2e 100644 --- a/modular_doppler/colony_fabricator/code/looping_sounds.dm +++ b/modular_doppler/colony_fabricator/code/looping_sounds.dm @@ -1,17 +1,3 @@ -/datum/looping_sound/colony_fabricator_running - start_sound = 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav' - start_length = 1 - mid_sounds = list( - 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav' = 1, - 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav' = 1, - 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav' = 1, - 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav' = 1, - ) - mid_length = 3 SECONDS - end_sound = 'modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav' - volume = 100 - falloff_exponent = 3 - /datum/looping_sound/arc_furnace_running mid_sounds = list( 'modular_doppler/colony_fabricator/sounds/arc_furnace/arc_furnace_mid_1.wav' = 1, diff --git a/modular_doppler/colony_fabricator/code/machines/solar_panels.dm b/modular_doppler/colony_fabricator/code/machines/solar_panels.dm index b66640e731315..8d32d5b18a308 100644 --- a/modular_doppler/colony_fabricator/code/machines/solar_panels.dm +++ b/modular_doppler/colony_fabricator/code/machines/solar_panels.dm @@ -14,7 +14,7 @@ return /obj/machinery/power/solar/deployable/on_deconstruction(disassembled) - var/obj/item/solar_assembly/assembly = locate() in src + var/obj/item/solar_assembly/assembly = locate() in contents if(assembly) qdel(assembly) return ..() @@ -69,7 +69,7 @@ return NONE /obj/machinery/power/tracker/deployable/on_deconstruction(disassembled) - var/obj/item/solar_assembly/assembly = locate() in src + var/obj/item/solar_assembly/assembly = locate() in contents if(assembly) qdel(assembly) return ..() diff --git a/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm b/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm index 86bd78f1d062b..e68d48a6a9964 100644 --- a/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm +++ b/modular_doppler/colony_fabricator/code/machines/solid_fuel_generator.dm @@ -14,7 +14,7 @@ anchored = TRUE max_sheets = 25 time_per_sheet = parent_type::time_per_sheet * (5 / 3) //66.6% better - power_gen = parent_type::power_gen * 2.5 + power_gen = 10 KILO JOULES drag_slowdown = 1.5 sheet_path = /obj/item/stack/sheet/mineral/plasma /// The item we turn into when repacked diff --git a/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm b/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm index fcd14acb0d78d..370a528107454 100644 --- a/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm +++ b/modular_doppler/colony_fabricator/code/machines/stirling_generator.dm @@ -20,7 +20,7 @@ /// What this thing deconstructs into var/deconstruction_type = /obj/item/flatpacked_machine/stirling_generator /// Maximum efficient heat difference, at what heat difference does more difference stop meaning anything for power? - var/max_efficient_heat_difference = 8000 + var/max_efficient_heat_difference = 6000 /// Maximum power output from this machine var/max_power_output = 100 KILO WATTS /// How much power the generator is currently making diff --git a/modular_doppler/colony_fabricator/code/tools/tools.dm b/modular_doppler/colony_fabricator/code/tools/tools.dm index c48670058f7c7..0ffef60ebde68 100644 --- a/modular_doppler/colony_fabricator/code/tools/tools.dm +++ b/modular_doppler/colony_fabricator/code/tools/tools.dm @@ -7,7 +7,7 @@ not much quicker than unpowered tools." icon = 'modular_doppler/colony_fabricator/icons/tools.dmi' icon_state = "drill" - belt_icon_state = null + inside_belt_icon_state = null inhand_icon_state = "drill" worn_icon_state = "drill" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' diff --git a/modular_doppler/colony_fabricator/sounds/attributions.txt b/modular_doppler/colony_fabricator/sounds/attributions.txt index 565a818121207..534c8d0c85406 100644 --- a/modular_doppler/colony_fabricator/sounds/attributions.txt +++ b/modular_doppler/colony_fabricator/sounds/attributions.txt @@ -3,9 +3,6 @@ a contributor who no longer wishes to be named specifically for free open source use from the novasector codebase, so don't worry about it. modular_doppler/colony_fabricator/sound/arc_furnace/arc_furnace_mid_(1 - 4).wav -modular_doppler/colony_fabricator/sound/fabricator/fabricator_mid_(1 - 4).wav -modular_doppler/colony_fabricator/sound/fabricator/fabricator_end.wav -modular_doppler/colony_fabricator/sound/fabricator/fabricator_start.wav The following sounds are from https://pixabay.com/sound-effects/wall-air-conditioner-43901/ diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav deleted file mode 100644 index 90e16a116fb7d..0000000000000 Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_end.wav and /dev/null differ diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav deleted file mode 100644 index 5a70874cda7a4..0000000000000 Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_1.wav and /dev/null differ diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav deleted file mode 100644 index a8ea099036c83..0000000000000 Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_2.wav and /dev/null differ diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav deleted file mode 100644 index b5d0a0117c5cb..0000000000000 Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_3.wav and /dev/null differ diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav deleted file mode 100644 index 1700b0fc379bb..0000000000000 Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_mid_4.wav and /dev/null differ diff --git a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav b/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav deleted file mode 100644 index 673a9da8b41c3..0000000000000 Binary files a/modular_doppler/colony_fabricator/sounds/fabricator/fabricator_start.wav and /dev/null differ diff --git a/modular_doppler/deathmatch/deathmatch_loadouts.dm b/modular_doppler/deathmatch/deathmatch_loadouts.dm new file mode 100644 index 0000000000000..1ac6040ce9ea0 --- /dev/null +++ b/modular_doppler/deathmatch/deathmatch_loadouts.dm @@ -0,0 +1,12 @@ +/** + * CYBERSUN SIM + */ +/datum/outfit/deathmatch_loadout/cybersun_sim + name = "DM: Cybersun Grunt" + display_name = "Cybersun Grunt" + + uniform = /obj/item/clothing/under/syndicate/combat + mask = /obj/item/clothing/mask/neck_gaiter/cybersun + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + id = /obj/item/card/id/advanced/chameleon diff --git a/modular_doppler/deathmatch/deathmatch_maps.dm b/modular_doppler/deathmatch/deathmatch_maps.dm new file mode 100644 index 0000000000000..303a34411a161 --- /dev/null +++ b/modular_doppler/deathmatch/deathmatch_maps.dm @@ -0,0 +1,10 @@ +/** + * CYBERSUN SIM + */ +/datum/lazy_template/deathmatch/cybersun_sim + map_dir = "_maps/doppler/deathmatch" + name = "Cybersun Training Simulator" + max_players = 4 + allowed_loadouts = list(/datum/outfit/deathmatch_loadout/cybersun_sim) + map_name = "cybersun_sim" + key = "cybersun_sim" diff --git a/modular_doppler/deathmatch/deathmatch_structures.dm b/modular_doppler/deathmatch/deathmatch_structures.dm new file mode 100644 index 0000000000000..6510ae9c43a82 --- /dev/null +++ b/modular_doppler/deathmatch/deathmatch_structures.dm @@ -0,0 +1,8 @@ +/obj/structure/emergency_shield/timer + icon_state = "shield-greyscale" + color = "#ff0000b9" + resistance_flags = INDESTRUCTIBLE + +/obj/structure/emergency_shield/timer/Initialize(mapload) + . = ..() + QDEL_IN(src, 15 SECONDS) diff --git a/modular_doppler/deforest_medical_items/code/cargo_packs.dm b/modular_doppler/deforest_medical_items/code/cargo_packs.dm index 5dced06ad9d9e..5904f201097f5 100644 --- a/modular_doppler/deforest_medical_items/code/cargo_packs.dm +++ b/modular_doppler/deforest_medical_items/code/cargo_packs.dm @@ -29,34 +29,15 @@ /obj/item/storage/medkit/combat_surgeon/stocked = 3, ) -/datum/supply_pack/medical/kit_technician - name = "Heavy Duty Medical Kit Crate - Technician" - crate_name = "technician kit crate" - desc = "Contains a pink medical technician kit." - access = ACCESS_MEDICAL - cost = CARGO_CRATE_VALUE * 5.5 - contains = list( - /obj/item/storage/backpack/duffelbag/deforest_paramedic/stocked, - ) - -/datum/supply_pack/medical/kit_surgical - name = "Heavy Duty Medical Kit Crate - Surgical" - crate_name = "surgical kit crate" - desc = "Contains a grey first responder surgical kit." - access = ACCESS_MEDICAL - cost = CARGO_CRATE_VALUE * 5 - contains = list( - /obj/item/storage/backpack/duffelbag/deforest_surgical/stocked, - ) - /datum/supply_pack/medical/kit_medical - name = "Heavy Duty Medical Kit Crate - Medical" + name = "Heavy Duty Medical Kit Crate" crate_name = "medical kit crate" - desc = "Contains an orange satchel medical kit." + desc = "Contains two heavy-duty medical kits for emergencies." access = ACCESS_MEDICAL - cost = CARGO_CRATE_VALUE * 4.5 + cost = CARGO_CRATE_VALUE * 11 contains = list( /obj/item/storage/backpack/duffelbag/deforest_medkit/stocked, + /obj/item/storage/backpack/duffelbag/deforest_surgical/stocked, ) /datum/supply_pack/medical/deforest_vendor_refill diff --git a/modular_doppler/deforest_medical_items/code/healing_stack_items.dm b/modular_doppler/deforest_medical_items/code/healing_stack_items.dm index 245ba6699f93a..9c8cf1f35ca58 100644 --- a/modular_doppler/deforest_medical_items/code/healing_stack_items.dm +++ b/modular_doppler/deforest_medical_items/code/healing_stack_items.dm @@ -33,7 +33,7 @@ var/treatment_sound = 'sound/items/duct_tape/duct_tape_rip.ogg' // This is only relevant for the types of wounds defined, we can't work if there are none -/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent, looping) +/obj/item/stack/medical/wound_recovery/try_heal(mob/living/patient, mob/user, silent, looping, auto_change_zone = FALSE) if(patient.has_status_effect(/datum/status_effect/vulnerable_to_damage)) patient.balloon_alert(user, "still recovering from last use!") diff --git a/modular_doppler/deforest_medical_items/code/illegal_injectors.dm b/modular_doppler/deforest_medical_items/code/illegal_injectors.dm index 7c3059f5d976e..59b91db488b64 100644 --- a/modular_doppler/deforest_medical_items/code/illegal_injectors.dm +++ b/modular_doppler/deforest_medical_items/code/illegal_injectors.dm @@ -1,18 +1,3 @@ -// Twitch, because having sandevistans be implants is for losers, just inject it! -/obj/item/reagent_containers/hypospray/medipen/deforest/twitch - name = "TWitch sensory stimulant injector" - desc = "A Deforest branded autoinjector, loaded with 'TWitch' among other reagents. This drug is known to make \ - those who take it 'see faster', whatever that means." - base_icon_state = "twitch" - icon_state = "twitch" - list_reagents = list( - /datum/reagent/drug/twitch = 10, - /datum/reagent/drug/maint/tar = 5, - /datum/reagent/medicine/silibinin = 5, - /datum/reagent/toxin/leadacetate = 5, - ) - custom_price = PAYCHECK_COMMAND * 3.5 - // Demoneye, for when you feel the need to become "fucking invincible" /obj/item/reagent_containers/hypospray/medipen/deforest/demoneye name = "DemonEye steroid injector" @@ -54,10 +39,11 @@ /datum/reagent/medicine/c2/penthrite = 5, /datum/reagent/medicine/polypyr = 5, /datum/reagent/medicine/silibinin = 5, - /datum/reagent/medicine/omnizine = 5, + /datum/reagent/medicine/omnizine = 10, /datum/reagent/inverse/healing/tirimol = 5, ) custom_price = PAYCHECK_COMMAND * 2.5 + volume = 30 // Combat stimulant that makes you immune to slowdowns for a bit /obj/item/reagent_containers/hypospray/medipen/deforest/synalvipitol diff --git a/modular_doppler/deforest_medical_items/code/injectors.dm b/modular_doppler/deforest_medical_items/code/injectors.dm index 02558b52bb102..27ab2969f9d45 100644 --- a/modular_doppler/deforest_medical_items/code/injectors.dm +++ b/modular_doppler/deforest_medical_items/code/injectors.dm @@ -77,7 +77,7 @@ /datum/reagent/medicine/synaptizine = 5, /datum/reagent/medicine/inaprovaline = 5, /datum/reagent/determination = 10, - /datum/reagent/toxin/histamine = 5, + /datum/reagent/toxin/lipolicide = 5, ) // Morpital, heals a small amount of damage and kills pain for a bit @@ -87,9 +87,9 @@ base_icon_state = "morpital" icon_state = "morpital" list_reagents = list( - /datum/reagent/medicine/morphine = 5, - /datum/reagent/medicine/omnizine/protozine = 15, - /datum/reagent/toxin/staminatoxin = 5, + /datum/reagent/medicine/mine_salve = 5, + /datum/reagent/medicine/omnizine = 15, + /datum/reagent/toxin/lipolicide = 5, ) // Lipital, heals more damage than morpital but doesnt work much at higher damages @@ -102,7 +102,7 @@ list_reagents = list( /datum/reagent/medicine/lidocaine = 5, /datum/reagent/medicine/omnizine = 5, - /datum/reagent/medicine/c2/probital = 10, + /datum/reagent/medicine/c2/libital = 10, ) // Anti-poisoning injector, with a little bit of radiation healing as a treat @@ -115,7 +115,7 @@ list_reagents = list( /datum/reagent/medicine/c2/multiver = 10, /datum/reagent/medicine/potass_iodide = 10, - /datum/reagent/nitrous_oxide = 5, + /datum/reagent/toxin/lipolicide = 5, ) // Epinephrine and helps a little bit against stuns and stamina damage @@ -141,7 +141,7 @@ /datum/reagent/medicine/atropine = 10, /datum/reagent/medicine/coagulant/fabricated = 5, /datum/reagent/medicine/salbutamol = 5, - /datum/reagent/toxin/staminatoxin = 5, + /datum/reagent/toxin/lipolicide = 5, ) // Coagulant, really not a whole lot more @@ -180,7 +180,7 @@ /datum/reagent/medicine/mine_salve = 5, /datum/reagent/medicine/leporazine = 5, /datum/reagent/medicine/c2/lenturi = 10, - /datum/reagent/toxin/staminatoxin = 5, + /datum/reagent/toxin/lipolicide = 5, ) // Stabilizes a lot of stats like drowsiness, sanity, dizziness, so on diff --git a/modular_doppler/deforest_medical_items/code/medstation.dm b/modular_doppler/deforest_medical_items/code/medstation.dm deleted file mode 100644 index 019cc57320d9e..0000000000000 --- a/modular_doppler/deforest_medical_items/code/medstation.dm +++ /dev/null @@ -1,55 +0,0 @@ -/obj/machinery/biogenerator/medstation - name = "wall med-station" - desc = "An advanced machine seen in frontier outposts and colonies capable of turning organic plant matter into \ - various emergency medical supplies and injectors. You can find one of these in the medical sections of just about \ - any frontier installation." - icon = 'modular_doppler/deforest_medical_items/icons/medstation.dmi' - circuit = null - anchored = TRUE - density = FALSE - efficiency = 1 - productivity = 1 - show_categories = list( - RND_CATEGORY_DEFOREST_MEDICAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - /// The item we turn into when repacked - var/repacked_type = /obj/item/wallframe/frontier_medstation - -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/biogenerator/medstation, 29) - -/obj/machinery/biogenerator/medstation/RefreshParts() - . = ..() - efficiency = 1 - productivity = 1 - -/obj/machinery/biogenerator/medstation/default_unfasten_wrench(mob/user, obj/item/wrench/tool, time) - user.balloon_alert(user, "deconstructing...") - tool.play_tool_sound(src) - if(tool.use_tool(src, user, 1 SECONDS)) - playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) - deconstruct(TRUE) - return - -/obj/machinery/biogenerator/medstation/on_deconstruction(disassembled) - if(disassembled) - new repacked_type(drop_location()) - -/obj/machinery/biogenerator/medstation/default_deconstruction_crowbar() - return - -// Deployable item for cargo for the medstation - -/obj/item/wallframe/frontier_medstation - name = "unmounted wall med-station" - desc = "The innovative technology of a biogenerator to print medical supplies, but able to be mounted neatly on a wall out of the way." - icon = 'modular_doppler/deforest_medical_items/icons/medstation.dmi' - icon_state = "biogenerator_parts" - w_class = WEIGHT_CLASS_NORMAL - result_path = /obj/machinery/biogenerator/medstation - pixel_shift = 29 - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, - /datum/material/silver = SHEET_MATERIAL_AMOUNT * 3, - /datum/material/gold = SHEET_MATERIAL_AMOUNT, - ) diff --git a/modular_doppler/deforest_medical_items/code/medstation_designs/blood.dm b/modular_doppler/deforest_medical_items/code/medstation_designs/blood.dm deleted file mode 100644 index 0d523d14f4fa7..0000000000000 --- a/modular_doppler/deforest_medical_items/code/medstation_designs/blood.dm +++ /dev/null @@ -1,131 +0,0 @@ -/datum/design/organic_bloodbag_aplus - name = "A+ Blood Pack" - id = "organic_bloodbag_aplus" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/a_plus - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_aminus - name = "A- Blood Pack" - id = "organic_bloodbag_aminus" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/a_minus - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_bplus - name = "B+ Blood Pack" - id = "organic_bloodbag_bplus" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/b_plus - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_bminus - name = "B- Blood Pack" - id = "organic_bloodbag_bminus" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/b_minus - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_oplus - name = "O+ Blood Pack" - id = "organic_bloodbag_oplus" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/o_plus - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_ominus - name = "O- Blood Pack" - id = "organic_bloodbag_ominus" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 150) - build_path = /obj/item/reagent_containers/blood/o_minus - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_lizard - name = "L Blood Pack" - id = "organic_bloodbag_lizard" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/lizard - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_ethereal - name = "LE Blood Pack" - id = "organic_bloodbag_ethereal" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/ethereal - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_plant - name = "H2O Blood Pack" - id = "organic_bloodbag_plant" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) - build_path = /obj/item/reagent_containers/blood/podperson - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_slimeperson - name = "TOX Blood Pack" - id = "organic_bloodbag_slimeperson" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/toxin - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_robot - name = "R Blood Pack" - id = "organic_bloodbag_robot" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/robot - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) - -/datum/design/organic_bloodbag_bug - name = "I Blood Pack" - id = "organic_bloodbag_bug" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/reagent_containers/blood/bug - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_BLOOD, - ) diff --git a/modular_doppler/deforest_medical_items/code/medstation_designs/medical.dm b/modular_doppler/deforest_medical_items/code/medstation_designs/medical.dm deleted file mode 100644 index 7eb8106e3a4e4..0000000000000 --- a/modular_doppler/deforest_medical_items/code/medstation_designs/medical.dm +++ /dev/null @@ -1,98 +0,0 @@ -/datum/design/organic_printer_balm - name = "Red Sun Balm" - id = "organic_sun_balm" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) - build_path = /obj/item/stack/medical/ointment/red_sun - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_gauze - name = "Sealed Aseptic Guaze" - id = "organic_gauze" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) - build_path = /obj/item/stack/medical/gauze/sterilized - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_coagulant_f - name = "Coagulant-F Packet" - id = "organic_coagulant_pack" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 50) - build_path = /obj/item/stack/medical/suture/coagulant - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_ointment - name = "Ointment" - id = "organic_ointment" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 25) - build_path = /obj/item/stack/medical/ointment - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_bruise_pack - name = "Bruise Packs" - id = "organic_bruise_packs" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 25) - build_path = /obj/item/stack/medical/bruise_pack - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_amollin_pill - name = "Amollin Painkiller" - id = "organic_printer_amollin_pill" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 25) - build_path = /obj/item/reagent_containers/pill/amollin - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_bandaid - name = "First Aid Bandage" - id = "organic_bandaid" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/stack/medical/bandage - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_bone_gel - name = "Bone Gel" - id = "organic_bone_gel" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/stack/medical/bone_gel - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) - -/datum/design/organic_printer_surgical_tape - name = "Surgical Tape" - id = "organic_surgical_tape" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 100) - build_path = /obj/item/stack/sticky_tape/surgical - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_DEFOREST_MEDICAL, - ) diff --git a/modular_doppler/deforest_medical_items/code/storage_items.dm b/modular_doppler/deforest_medical_items/code/storage_items.dm index 4380b66587921..bff050345dea5 100644 --- a/modular_doppler/deforest_medical_items/code/storage_items.dm +++ b/modular_doppler/deforest_medical_items/code/storage_items.dm @@ -393,104 +393,3 @@ /obj/item/bodybag, /obj/item/storage/hypospraykit, )) - -// Midrange bag for paramedics, hypospray and more flexible item wise than surgical, but restricted to small items only -/obj/item/storage/backpack/duffelbag/deforest_paramedic - name = "medical technician kit" - desc = "Compared to its sibling the first responder surgical kit, this variant is equipped with a hypospray hit for roving paramedics. Featuring rapid access pockets that are lightweight, it can however only hold smaller items." - icon = 'modular_doppler/deforest_medical_items/icons/storage.dmi' - icon_state = "technician" - lefthand_file = 'modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi' - righthand_file = 'modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi' - inhand_icon_state = "technician" - worn_icon = 'modular_doppler/deforest_medical_items/icons/worn/worn.dmi' -// worn_icon_teshari = 'modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi' - equip_sound = 'sound/items/equip/jumpsuit_equip.ogg' - pickup_sound = 'sound/items/handling/cloth_pickup.ogg' - drop_sound = 'sound/items/handling/cloth_drop.ogg' - slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT - storage_type = /datum/storage/duffel/deforest_paramedic - zip_slowdown = 0.3 // Midrange between the other two bags - unzip_duration = 1.2 SECONDS - -/obj/item/storage/backpack/duffelbag/deforest_paramedic/stocked - -/obj/item/storage/backpack/duffelbag/deforest_paramedic/stocked/PopulateContents() - var/static/items_inside = list( - /obj/item/scalpel = 1, - /obj/item/hemostat = 1, - /obj/item/retractor = 1, - /obj/item/circular_saw = 1, - /obj/item/bonesetter = 1, - /obj/item/cautery = 1, - /obj/item/surgical_drapes = 1, - /obj/item/stack/medical/bone_gel = 1, - /obj/item/stack/medical/wound_recovery = 1, - /obj/item/stack/medical/wound_recovery/rapid_coagulant = 1, - /obj/item/stack/medical/mesh/advanced = 2, - /obj/item/stack/medical/suture/medicated = 2, - /obj/item/stack/medical/gauze/sterilized = 1, - /obj/item/storage/pill_bottle/painkiller = 1, - /obj/item/hypospray/mkii/piercing/atropine = 1, - /obj/item/reagent_containers/cup/hypovial/small/libital = 1, - /obj/item/reagent_containers/cup/hypovial/small/lenturi = 1, - /obj/item/reagent_containers/cup/hypovial/small/seiver = 1, - /obj/item/healthanalyzer = 1, - ) - generate_items_inside(items_inside,src) - -/datum/storage/duffel/deforest_paramedic - max_specific_storage = WEIGHT_CLASS_SMALL - max_total_storage = 21 * WEIGHT_CLASS_SMALL - max_slots = 21 - -/datum/storage/duffel/deforest_paramedic/New() - . = ..() - - can_hold = typecacheof(list( - /obj/item/bonesetter, - /obj/item/cautery, - /obj/item/circular_saw, - /obj/item/clothing/neck/stethoscope, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/muzzle, - /obj/item/clothing/mask/surgical, - /obj/item/clothing/suit/toggle/labcoat/hospitalgown, - /obj/item/dnainjector, - /obj/item/extinguisher/mini, - /obj/item/flashlight/pen, - /obj/item/geiger_counter, - /obj/item/healthanalyzer, - /obj/item/hemostat, - /obj/item/holosign_creator/medical, - /obj/item/hypospray, - /obj/item/implant, - /obj/item/implantcase, - /obj/item/implanter, - /obj/item/lazarus_injector, - /obj/item/lighter, - /obj/item/pinpointer/crew, - /obj/item/reagent_containers/blood, - /obj/item/reagent_containers/dropper, - /obj/item/reagent_containers/cup/beaker, - /obj/item/reagent_containers/cup/bottle, - /obj/item/reagent_containers/cup/hypovial, - /obj/item/reagent_containers/cup/tube, - /obj/item/reagent_containers/hypospray, - /obj/item/reagent_containers/medigel, - /obj/item/reagent_containers/pill, - /obj/item/reagent_containers/spray, - /obj/item/reagent_containers/syringe, - /obj/item/retractor, - /obj/item/scalpel, - /obj/item/surgical_drapes, - /obj/item/stack/medical, - /obj/item/stack/sticky_tape, - /obj/item/sensor_device, - /obj/item/storage/fancy/cigarettes, - /obj/item/storage/pill_bottle, - /obj/item/tank/internals/emergency_oxygen, - /obj/item/storage/box/bandages, - /obj/item/bodybag, - /obj/item/storage/hypospraykit, - )) diff --git a/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm b/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm index 78a9a0dd7dc7b..0ecdefeb3f81e 100644 --- a/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm +++ b/modular_doppler/deforest_medical_items/code/treatment_zone_projector.dm @@ -5,7 +5,7 @@ desc = "A massive glowing holosign warning you to keep out of it, there's probably some important stuff happening in there!" icon = 'modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi' icon_state = "treatment_zone" - layer = BELOW_OBJ_LAYER + layer = BOT_PATH_LAYER pixel_x = -32 pixel_y = -32 use_vis_overlay = FALSE diff --git a/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi b/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi index 61e9fb5f7501c..c53eab3ba9d76 100644 Binary files a/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi and b/modular_doppler/deforest_medical_items/icons/inhands/cases_lefthand.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi b/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi index b09d02d258a6c..c5a2099e96b20 100644 Binary files a/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi and b/modular_doppler/deforest_medical_items/icons/inhands/cases_righthand.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/injectors.dmi b/modular_doppler/deforest_medical_items/icons/injectors.dmi index 8ee669c0bc6b6..50f4f2c4db8a4 100644 Binary files a/modular_doppler/deforest_medical_items/icons/injectors.dmi and b/modular_doppler/deforest_medical_items/icons/injectors.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/medstation.dmi b/modular_doppler/deforest_medical_items/icons/medstation.dmi deleted file mode 100644 index 2de94bc420a8a..0000000000000 Binary files a/modular_doppler/deforest_medical_items/icons/medstation.dmi and /dev/null differ diff --git a/modular_doppler/deforest_medical_items/icons/stack_items.dmi b/modular_doppler/deforest_medical_items/icons/stack_items.dmi index c9e82f1375f79..40fb1dc18507b 100644 Binary files a/modular_doppler/deforest_medical_items/icons/stack_items.dmi and b/modular_doppler/deforest_medical_items/icons/stack_items.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/storage.dmi b/modular_doppler/deforest_medical_items/icons/storage.dmi index 513aed6e2a1bd..bd4c2f7b0dd0a 100644 Binary files a/modular_doppler/deforest_medical_items/icons/storage.dmi and b/modular_doppler/deforest_medical_items/icons/storage.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi b/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi index 8596bce378d80..5c99df6db6e34 100644 Binary files a/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi and b/modular_doppler/deforest_medical_items/icons/telegraph_96x96.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/worn/worn.dmi b/modular_doppler/deforest_medical_items/icons/worn/worn.dmi index 942715fe56a7c..bf394833ef356 100644 Binary files a/modular_doppler/deforest_medical_items/icons/worn/worn.dmi and b/modular_doppler/deforest_medical_items/icons/worn/worn.dmi differ diff --git a/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi b/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi index 276804f908b30..ea7249f36dc4d 100644 Binary files a/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi and b/modular_doppler/deforest_medical_items/icons/worn/worn_teshari.dmi differ diff --git a/modular_doppler/doppler_command_uniforms/hop/icon.dmi b/modular_doppler/doppler_command_uniforms/hop/icon.dmi new file mode 100644 index 0000000000000..ef048c4a3e1c1 Binary files /dev/null and b/modular_doppler/doppler_command_uniforms/hop/icon.dmi differ diff --git a/modular_doppler/doppler_command_uniforms/hop/overrides.dm b/modular_doppler/doppler_command_uniforms/hop/overrides.dm new file mode 100644 index 0000000000000..3b2ac56100e61 --- /dev/null +++ b/modular_doppler/doppler_command_uniforms/hop/overrides.dm @@ -0,0 +1,66 @@ +/obj/item/clothing/under/rank/civilian/head_of_personnel + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "uniform" + inhand_icon_state = null + +/obj/item/clothing/under/rank/civilian/head_of_personnel/skirt + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "skirt" + inhand_icon_state = null + +/obj/item/clothing/under/rank/civilian/head_of_personnel/suit // This wasn't resprited, so we set the icon back to normal + icon = 'icons/obj/clothing/under/civilian.dmi' + worn_icon = 'icons/mob/clothing/under/civilian.dmi' + +/obj/item/clothing/suit/armor/vest/hop + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "jacket" + inhand_icon_state = null + +/obj/item/clothing/head/hats/hopcap + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "hat" + inhand_icon_state = null + +/obj/item/clothing/suit/hooded/wintercoat/hop + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "wintercoat" + inhand_icon_state = null + +/obj/item/clothing/head/hooded/winterhood/hop + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "winterhood" + inhand_icon_state = null + +/obj/item/clothing/neck/cloak/hop + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "cloak" + inhand_icon_state = null + +/obj/item/clothing/under/plasmaman/head_of_personnel + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "plasma_suit" + inhand_icon_state = null + +/obj/item/clothing/head/helmet/space/plasmaman/head_of_personnel + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "plasma_helmet" + inhand_icon_state = null + +/obj/item/clothing/gloves/color/plasmaman/head_of_personnel + // Old desc references them looking like the captain's gloves + desc = "Covers up those scandalous, bony hands. They come with a sleek, black-and-purple finish to hide those pesky ink stains." + + icon = 'modular_doppler/doppler_command_uniforms/hop/icon.dmi' + worn_icon = 'modular_doppler/doppler_command_uniforms/hop/worn.dmi' + icon_state = "plasma_gloves" + inhand_icon_state = null diff --git a/modular_doppler/doppler_command_uniforms/hop/worn.dmi b/modular_doppler/doppler_command_uniforms/hop/worn.dmi new file mode 100644 index 0000000000000..5fdd797438df4 Binary files /dev/null and b/modular_doppler/doppler_command_uniforms/hop/worn.dmi differ diff --git a/modular_doppler/epic_loot/code/_basetype.dm b/modular_doppler/epic_loot/code/_basetype.dm new file mode 100644 index 0000000000000..48a1a91349a38 --- /dev/null +++ b/modular_doppler/epic_loot/code/_basetype.dm @@ -0,0 +1,83 @@ +/obj/structure/maintenance_loot_structure + name = "abandoned crate" + icon = 'modular_doppler/epic_loot/icons/loot_structures.dmi' + density = TRUE + anchored = TRUE + layer = BELOW_OBJ_LAYER + obj_flags = CAN_BE_HIT + pass_flags_self = LETPASSTHROW|LETPASSCLICKS + max_integrity = 200 + + /// What storage datum we use + var/storage_datum_to_use = /datum/storage/maintenance_loot_structure + /// Weighted list of the loot that can spawn in this + var/list/loot_weighted_list = list( + /obj/effect/spawner/random/maintenance = 1, + ) + /// This one is going to be weird, a string of dice to use when rolling number of contents + var/loot_spawn_dice_string = "2d4+1" + +/obj/structure/maintenance_loot_structure/Initialize(mapload) + . = ..() + create_storage(storage_type = storage_datum_to_use) + make_contents() + +/obj/structure/maintenance_loot_structure/examine(mob/user) + . = ..() + . += span_engradio("It might have other things you're looking for if you look again later?") + return . + +// Since it doesn't want to play nice for whatever reason +/obj/structure/maintenance_loot_structure/attack_hand(mob/living/user) + if(!user.can_perform_action(src, NEED_HANDS)) + return ..() + atom_storage.open_storage(user) + return TRUE + +/// Fills random contents into this structure's inventory, starting a loop to respawn loot if the container is empty later +/obj/structure/maintenance_loot_structure/proc/make_contents() + var/refill_check_time = rand(15 MINUTES, 30 MINUTES) + spawn_loot() + addtimer(CALLBACK(src, PROC_REF(make_contents)), refill_check_time) + +/// Spawns a random amount of loot into the structure, random numbers based on the amount of storage slots inside it +/obj/structure/maintenance_loot_structure/proc/spawn_loot() + if(length(contents)) + for(var/obj/thing in contents) + qdel(thing) + var/random_loot_amount = roll(loot_spawn_dice_string) + for(var/loot_spawn in 1 to random_loot_amount) + var/obj/new_loot = pick_weight(loot_weighted_list) + new new_loot(src) + Shake(2, 2, 1 SECONDS) + +/datum/storage/maintenance_loot_structure + max_slots = 9 + max_specific_storage = WEIGHT_CLASS_GIGANTIC + max_total_storage = WEIGHT_CLASS_BULKY * 6 + numerical_stacking = FALSE + rustle_sound = FALSE + screen_max_columns = 3 + /// What sound this makes when people open it's storage + var/opening_sound = 'modular_doppler/epic_loot/sound/plastic.mp3' + +/datum/storage/maintenance_loot_structure/open_storage(mob/to_show) + . = ..() + if(!.) + return + playsound(parent, opening_sound, 50, TRUE) + +// Loot items basetype, for convenience +/obj/item/epic_loot + name = "epic loot!!!!!" + desc = "Unknown purpose, unknown maker, unknown value. The only thing I know for real: There will be loot." + icon = 'modular_doppler/epic_loot/icons/epic_loot.dmi' + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + inhand_icon_state = "binoculars" + w_class = WEIGHT_CLASS_SMALL + +/obj/item/epic_loot/examine(mob/user) + . = ..() + . += span_engradio("You should probably sell or recycle this.") + return . diff --git a/modular_doppler/epic_loot/code/loot_items/components.dm b/modular_doppler/epic_loot/code/loot_items/components.dm new file mode 100644 index 0000000000000..116507d6923e8 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_items/components.dm @@ -0,0 +1,214 @@ +/datum/export/epic_loot_components + cost = PAYCHECK_COMMAND + unit_name = "low value salvage" + export_types = list( + /obj/item/epic_loot/grenade_fuze, + /obj/item/epic_loot/nail_box, + /obj/item/epic_loot/cold_weld, + /obj/item/epic_loot/signal_amp, + /obj/item/epic_loot/fuel_conditioner, + ) + +/datum/export/epic_loot_components_super + cost = PAYCHECK_COMMAND * 2 + unit_name = "salvage" + export_types = list( + /obj/item/epic_loot/water_filter, + /obj/item/epic_loot/thermometer, + /obj/item/epic_loot/current_converter, + /obj/item/epic_loot/electric_motor, + ) + +/datum/export/epic_loot_components_super_super + cost = PAYCHECK_COMMAND * 3 + unit_name = "high value salvage" + export_types = list( + /obj/item/epic_loot/thermal_camera, + /obj/item/epic_loot/shuttle_gyro, + /obj/item/epic_loot/phased_array, + /obj/item/epic_loot/shuttle_battery, + ) + +// Grenade fuze, an old design from an old time past. You can still make a pretty good grenade with it though +/obj/item/epic_loot/grenade_fuze + name = "grenade fuze" + desc = "Just the fuze of a grenade, missing the explosive and arguably most important half of the grenade." + icon_state = "fuze" + inhand_icon_state = "pen" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// The filter part of a water filter machine, though these machines are insanely rare due to modern synthesis technology +/obj/item/epic_loot/water_filter + name = "water filter cartridge" + desc = "A blue polymer tube filled with filter medium for use in an industrial water filtration unit." + icon_state = "water_filter" + inhand_icon_state = "miniFE" + drop_sound = 'sound/items/handling/tools/weldingtool_drop.ogg' + pickup_sound = 'sound/items/handling/tools/weldingtool_pickup.ogg' + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// Analog thermometer, how to tell temperature before gas analyzers were cool +/obj/item/epic_loot/thermometer + name = "analog thermometer" + desc = "An outdated, and likely broken, analog thermometer." + icon_state = "thermometer" + inhand_icon_state = "razor" + drop_sound = 'sound/items/handling/tools/multitool_drop.ogg' + pickup_sound = 'sound/items/handling/tools/multitool_pickup.ogg' + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// A box of nails, impossible tech on a space station +/obj/item/epic_loot/nail_box + name = "box of nails" + desc = "A pristine box of nails, a method of keeping things together that we... can't really use here, in a space station." + icon_state = "nails" + inhand_icon_state = "rubberducky" + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, + ) + +// Used for joining together plastics, ideally. +/obj/item/epic_loot/cold_weld + name = "tube of cold weld" + desc = "A tube of cold weld, used to join together plastics, usually for repair." + icon_state = "cold_weld" + inhand_icon_state = "razor" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// An electronic motor +/obj/item/epic_loot/electric_motor + name = "electric motor" + desc = "An electrically driven motor for industrial applications." + icon_state = "motor" + inhand_icon_state = "miniFE" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg' + pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT, + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// Current converters, these change one rating of current into another in a mostly safe manner +/obj/item/epic_loot/current_converter + name = "current converter" + desc = "A device for regulating electric current that passes through it." + icon_state = "current_converter" + inhand_icon_state = "miniFE" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/tools/weldingtool_drop.ogg' + pickup_sound = 'sound/items/handling/tools/weldingtool_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SHEET_MATERIAL_AMOUNT, + ) + +// Signal amplifiers, used to take a faint signal and return it stronger than before +/obj/item/epic_loot/signal_amp + name = "signal amplifier" + desc = "A device for taking weakened input signals and strengthening them for use or listening." + icon_state = "signal_amp" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/iron = SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// Thermal camera modules +/obj/item/epic_loot/thermal_camera + name = "thermal camera module" + desc = "An infrared sensing device used for the production of thermal camera systems." + icon_state = "thermal" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + +// Shuttle gyroscopes, AKA how a shuttle realizes which way it's pointing +/obj/item/epic_loot/shuttle_gyro + name = "shuttle gyroscope" + desc = "A bulky device used by shuttles and other space faring vessels to find the direction they are facing." + icon_state = "shuttle_gyro" + inhand_icon_state = "miniFE" + w_class = WEIGHT_CLASS_BULKY + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 4 + ) + +/obj/item/epic_loot/shuttle_gyro/Initialize(mapload) + . = ..() + AddComponent(/datum/component/two_handed, require_twohands = TRUE) + +// Phased array elements, combine a bunch together to get god's strongest radar, or whatever else you can think of +/obj/item/epic_loot/phased_array + name = "phased array element" + desc = "An element of a larger phased array. These combine together to produce sensing and scanning devices used on most common space-faring vessels." + icon_state = "phased_array" + inhand_icon_state = "blankplaque" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, + /datum/material/silver = SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SHEET_MATERIAL_AMOUNT, + ) + +// Shuttle batteries, used to power electronics while the engines are off +/obj/item/epic_loot/shuttle_battery + name = "shuttle battery" + desc = "A massive shuttle-grade battery, used to keep the electronics of space-faring vessel powered while the main engines are de-activated." + icon_state = "ship_battery" + inhand_icon_state = "blankplaque" + w_class = WEIGHT_CLASS_BULKY + drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg' + pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10, + /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 4, + ) + +/obj/item/epic_loot/shuttle_battery/Initialize(mapload) + . = ..() + AddComponent(/datum/component/two_handed, require_twohands = TRUE) + +// Industrial fuel conditioner, used to keep most fuel-burning machines within regulations for waste emissions +/obj/item/epic_loot/fuel_conditioner + name = "fuel conditioner" + desc = "A plastic container of fuel conditioner for industrial size plasma generators. \ + Any generator that would need this is either much too large or much too old to be seen around here." + icon_state = "fuel_conditioner" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg' + pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg' diff --git a/modular_doppler/epic_loot/code/loot_items/electronics.dm b/modular_doppler/epic_loot/code/loot_items/electronics.dm new file mode 100644 index 0000000000000..5719a1ed842e6 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_items/electronics.dm @@ -0,0 +1,143 @@ +/datum/export/epic_loot_electronics + cost = PAYCHECK_COMMAND + unit_name = "electronic salvage" + export_types = list( + /obj/item/epic_loot/device_fan, + /obj/item/epic_loot/display_broken, + /obj/item/epic_loot/civilian_circuit, + /obj/item/epic_loot/processor, + /obj/item/epic_loot/disk_drive, + ) + +/datum/export/epic_loot_electronics_super + cost = PAYCHECK_COMMAND * 2 + unit_name = "high value electronic salvage" + export_types = list( + /obj/item/epic_loot/display, + /obj/item/epic_loot/graphics, + /obj/item/epic_loot/military_circuit, + /obj/item/epic_loot/power_supply, + ) + +// Computer fans +/obj/item/epic_loot/device_fan + name = "device fan" + desc = "An electronics cooling fan, used to keep computers and the like at reasonable temperatures while working." + icon_state = "device_fan" + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 9, + /datum/material/gold = SMALL_MATERIAL_AMOUNT, + ) + +// A display of some sort, this one probably still works +/obj/item/epic_loot/display + name = "display" + desc = "An electronic display, used in any number of machines to display information to users." + icon_state = "display" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, + /datum/material/gold = SMALL_MATERIAL_AMOUNT, + ) + +// A display of some sort, this one for sure does not work +/obj/item/epic_loot/display_broken + name = "broken display" + desc = "An electronic display, used in any number of machines to display information to users. This one is broken." + icon_state = "display_broken" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, + /datum/material/gold = SMALL_MATERIAL_AMOUNT, + ) + +// Martian made very high quality no scam 质量非常高 +/obj/item/epic_loot/graphics + name = "graphics processor" + desc = "A large processor card for the handling of computer generated graphics." + icon_state = "graphics" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, + ) + +// A military general-use circuit board +/obj/item/epic_loot/military_circuit + name = "military-grade circuit board" + desc = "A small circuit board commonly seen used by military-grade electronics." + icon_state = "circuit_military" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 6, + /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, + ) + +// A civilian general-use circuit board +/obj/item/epic_loot/civilian_circuit + name = "general-purpose circuit board" + desc = "A small circuit board commonly seen used by general-purpose electronics." + icon_state = "civilian_circuit" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 6, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, + ) + +// A computer processor unit +/obj/item/epic_loot/processor + name = "processor core" + desc = "The processing core of a computer, the small chip responsible for all of the inner workings of most devices." + icon_state = "processor" + inhand_icon_state = "razor" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/silver = SMALL_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT, + ) + +// A computer power supply +/obj/item/epic_loot/power_supply + name = "computer power supply" + desc = "A computer power supply, used to provide regulated electric power to other components of a computer." + icon_state = "psu" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, + ) + +// A drive for reading data from data disks in computers +/obj/item/epic_loot/disk_drive + name = "hard-disk reader" + desc = "A device for reading and writing data to hard-disks, one of the most common data storage media on the frontier." + icon_state = "disk_drive" + w_class = WEIGHT_CLASS_NORMAL + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, + ) diff --git a/modular_doppler/epic_loot/code/loot_items/medical.dm b/modular_doppler/epic_loot/code/loot_items/medical.dm new file mode 100644 index 0000000000000..d645cc4160f0a --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_items/medical.dm @@ -0,0 +1,46 @@ +/datum/export/epic_loot_super_med_tools + cost = PAYCHECK_COMMAND * 5 + unit_name = "high value medical salvage" + export_types = list( + /obj/item/epic_loot/vein_finder, + /obj/item/epic_loot/eye_scope, + ) + +// Vein finder, uses strong LED lights to reveal veins in someone's body. Perhaps the name "LEDX" rings a bell +/obj/item/epic_loot/vein_finder + name = "medical vein locator" + desc = "A small device with a number of high intensity lights on one side. Used by medical professionals to locate veins in someone's body." + icon_state = "vein_finder" + inhand_icon_state = "headset" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, + ) + +/obj/item/epic_loot/vein_finder/afterattack(atom/target, mob/user, proximity_flag) + . = ..() + if(!proximity_flag) + return + if(!ishuman(target)) + return + user.visible_message( + "[user] determines that [target] does, in fact, have veins.", + "You determine that [target] does, in fact, have veins." + ) + new /obj/effect/temp_visual/medical_holosign(get_turf(target), user) + +// Eyescope, a now rare device that was used to check the eyes of patients before the universal health scanner became common +/obj/item/epic_loot/eye_scope + name = "medical eye-scope" + desc = "An outdated device used to examine a patient's eyes. Rare now due to the outbreak of the universal health scanner." + icon_state = "eyescope" + inhand_icon_state = "zippo" + drop_sound = 'sound/items/handling/component_drop.ogg' + pickup_sound = 'sound/items/handling/component_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, + ) diff --git a/modular_doppler/epic_loot/code/loot_items/valuables.dm b/modular_doppler/epic_loot/code/loot_items/valuables.dm new file mode 100644 index 0000000000000..fb209e9a6485e --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_items/valuables.dm @@ -0,0 +1,159 @@ +/datum/export/epic_loot_valuables + cost = PAYCHECK_COMMAND * 3 + unit_name = "recovered valuables" + export_types = list( + /obj/item/epic_loot/press_pass, + /obj/item/epic_loot/hdd, + /obj/item/epic_loot/slim_diary, + /obj/item/epic_loot/plasma_explosive, + /obj/item/epic_loot/silver_chainlet, + ) + +/datum/export/epic_loot_valuables_super + cost = PAYCHECK_COMMAND * 4 + unit_name = "recovered high valuables" + export_types = list( + /obj/item/epic_loot/ssd, + /obj/item/epic_loot/military_flash, + /obj/item/epic_loot/diary, + /obj/item/epic_loot/corpo_folder, + /obj/item/epic_loot/intel_folder, + /obj/item/epic_loot/gold_chainlet, + ) + +// An old press pass, perhaps of an unlucky soul who was reporting on the incident that made this place abandoned in the first place +/obj/item/epic_loot/press_pass + name = "expired visitor pass" + desc = "An old lanyard with an expired visitor pass stuck to it. Most of the text has worn off, you can't tell who it was for or who it was issued by." + icon_state = "press_pass" + drop_sound = 'sound/items/handling/disk_drop.ogg' + pickup_sound = 'sound/items/handling/disk_pickup.ogg' + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + ) + +// A computer SSD +/obj/item/epic_loot/ssd + name = "solid-state drive" + desc = "A solid-state drive for computers, may even contain some still-valuable information on it!" + icon_state = "ssd" + inhand_icon_state = "razor" + drop_sound = 'sound/items/handling/disk_drop.ogg' + pickup_sound = 'sound/items/handling/disk_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + ) + +// A computer hard drive +/obj/item/epic_loot/hdd + name = "hard drive" + desc = "A hard drive for computers, may even contain some still-valuable information on it!" + icon_state = "hard_disk" + inhand_icon_state = "razor" + drop_sound = 'sound/items/handling/disk_drop.ogg' + pickup_sound = 'sound/items/handling/disk_pickup.ogg' + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + ) + +// Military-grade flash drives, made for use specifically with military computers +/obj/item/epic_loot/military_flash + name = "military flash drive" + desc = "A military-grade flash drive for use in matching military-grade computer systems. Might even contain some still-valuable information on it!" + icon_state = "military_flash" + inhand_icon_state = "razor" + drop_sound = 'sound/items/handling/disk_drop.ogg' + pickup_sound = 'sound/items/handling/disk_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, + ) + +// Someone's personal diary, or bootleg captain's log, whatever +/obj/item/epic_loot/diary + name = "sealed diary" + desc = "An old, apparently well-kept diary with unknown information inside. May hold important data on the location it was found in." + icon_state = "diary" + drop_sound = 'sound/items/handling/book_drop.ogg' + pickup_sound = 'sound/items/handling/book_pickup.ogg' + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + ) + +// A slimmer version of the regular diary +/obj/item/epic_loot/slim_diary + name = "sealed slim diary" + desc = "An old, apparently well-kept diary with unknown information inside. May hold important data on the location it was found in." + icon_state = "slim_diary" + drop_sound = 'sound/items/handling/book_drop.ogg' + pickup_sound = 'sound/items/handling/book_pickup.ogg' + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + ) + +// Straight up, a brick of plasma-cringe explosive, keep away from fire +/obj/item/epic_loot/plasma_explosive + name = "brick of plasma-based explosive" + desc = "A really quite dangerous brick of a plasma-based explosive. Usually, a demolition charge or something of the sort, but, it's still a bomb." + icon_state = "plasma_explosive" + drop_sound = 'sound/items/handling/cardboard_box/cardboardbox_drop.ogg' + pickup_sound = 'sound/items/handling/cardboard_box/cardboardbox_pickup.ogg' + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list( + /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3, + ) + +/obj/item/epic_loot/plasma_explosive/Initialize(mapload) + . = ..() + AddComponent(/datum/component/explodable, 0, 1, 3, 5, 5) + +// A folder from some corporation with likely valuable data inside +/obj/item/epic_loot/corpo_folder + name = "corporate data folder" + desc = "A blue folder with no label of who it's from. What is labeled, however, is the series of marks of confidential or trade secret information inside." + icon_state = "nt_folders" + drop_sound = 'sound/items/handling/book_drop.ogg' + pickup_sound = 'sound/items/handling/book_pickup.ogg' + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + ) + +// Brown unlabeled folder of doom, may contain government secrets +/obj/item/epic_loot/intel_folder + name = "intelligence folder" + desc = "A an unmarked, unassuming folder for documents. What is labeled, however, is the series of marks of confidential or trade secret information inside." + icon_state = "documents" + drop_sound = 'sound/items/handling/book_drop.ogg' + pickup_sound = 'sound/items/handling/book_pickup.ogg' + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list( + /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 8, + ) + +// A small chainlet made of silver +/obj/item/epic_loot/silver_chainlet + name = "silver chainlet" + desc = "A small chainlet for decorating clothing or other items, made from silver." + icon_state = "silver_chain" + drop_sound = 'sound/items/handling/disk_drop.ogg' + pickup_sound = 'sound/items/handling/disk_pickup.ogg' + custom_materials = list( + /datum/material/silver = SHEET_MATERIAL_AMOUNT, + ) + +// A small chainlet made of gold +/obj/item/epic_loot/gold_chainlet + name = "gold chainlet" + desc = "A small chainlet for decorating clothing or other items, made from gold." + icon_state = "gold_chain" + drop_sound = 'sound/items/handling/disk_drop.ogg' + pickup_sound = 'sound/items/handling/disk_pickup.ogg' + custom_materials = list( + /datum/material/gold = SHEET_MATERIAL_AMOUNT, + ) diff --git a/modular_doppler/epic_loot/code/loot_structures/ammo_box.dm b/modular_doppler/epic_loot/code/loot_structures/ammo_box.dm new file mode 100644 index 0000000000000..d9d5f0f21e060 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/ammo_box.dm @@ -0,0 +1,34 @@ +/datum/storage/maintenance_loot_structure/ammo_box + max_slots = 6 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 6 + screen_max_columns = 3 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3' + +/obj/structure/maintenance_loot_structure/ammo_box + name = "small shipping crate" + desc = "A small reinforced box used for shipping small items in." + icon_state = "ammo_box" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/ammo_box + loot_spawn_dice_string = "1d10-4" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + /obj/effect/spawner/random/epic_loot/random_provisions = 1, + /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1, + ) + +/obj/structure/maintenance_loot_structure/ammo_box/super_evil + icon_state = "cache" + +/obj/structure/maintenance_loot_structure/ammo_box/random + icon_state = "ammo_box_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "ammo_box", + "cache", + ) + +/obj/structure/maintenance_loot_structure/ammo_box/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/computer_tower.dm b/modular_doppler/epic_loot/code/loot_structures/computer_tower.dm new file mode 100644 index 0000000000000..b53491ae61b63 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/computer_tower.dm @@ -0,0 +1,36 @@ +/datum/storage/maintenance_loot_structure/computer + max_slots = 4 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 4 + screen_max_columns = 2 + opening_sound = 'modular_doppler/epic_loot/sound/plastic.mp3' + +/obj/structure/maintenance_loot_structure/computer_tower + name = "computer tower" + desc = "A compact computer unit, missing it's monitor. May still contain valuable components inside." + icon_state = "alienware" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/computer + loot_spawn_dice_string = "1d7-3" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_computer_parts = 1, + ) + +/obj/structure/maintenance_loot_structure/computer_tower/white + icon_state = "alienware_honeycrisp" + +/obj/structure/maintenance_loot_structure/computer_tower/eighties + icon_state = "alienware_tan_man" + +/obj/structure/maintenance_loot_structure/computer_tower/random + icon_state = "alienware_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "alienware", + "alienware_honeycrisp", + "alienware_tan_man", + ) + +/obj/structure/maintenance_loot_structure/computer_tower/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/files.dm b/modular_doppler/epic_loot/code/loot_structures/files.dm new file mode 100644 index 0000000000000..5a0557ffcdd6f --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/files.dm @@ -0,0 +1,32 @@ +/datum/storage/maintenance_loot_structure/file_cabinet + max_slots = 6 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 6 + screen_max_columns = 2 + opening_sound = 'modular_doppler/epic_loot/sound/cabinet.mp3' + +/obj/structure/maintenance_loot_structure/file_cabinet + name = "filing cabinet" + desc = "A large filing cabinet, it even comes with terrible sounding unlubricated rails!" + icon_state = "files" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/file_cabinet + loot_spawn_dice_string = "1d10-4" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_documents = 9, + ) + +/obj/structure/maintenance_loot_structure/file_cabinet/white + icon_state = "files_clean" + +/obj/structure/maintenance_loot_structure/file_cabinet/random + icon_state = "files_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "files", + "files_clean", + ) + +/obj/structure/maintenance_loot_structure/file_cabinet/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/grenade_box.dm b/modular_doppler/epic_loot/code/loot_structures/grenade_box.dm new file mode 100644 index 0000000000000..df773672fec76 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/grenade_box.dm @@ -0,0 +1,34 @@ +/datum/storage/maintenance_loot_structure/grenade_box + max_slots = 4 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 4 + screen_max_columns = 2 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_2.mp3' + +/obj/structure/maintenance_loot_structure/grenade_box + name = "small shipping crate" + desc = "A reinforced shipping crate for the transport of small items." + icon_state = "grenade_box" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/grenade_box + loot_spawn_dice_string = "1d6-2" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + /obj/effect/spawner/random/epic_loot/random_provisions = 1, + /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1, + ) + +/obj/structure/maintenance_loot_structure/grenade_box/evil + icon_state = "grenade_box_evil" + +/obj/structure/maintenance_loot_structure/grenade_box/random + icon_state = "grenade_box_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "grenade_box", + "grenade_box_evil", + ) + +/obj/structure/maintenance_loot_structure/grenade_box/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/gun_case.dm b/modular_doppler/epic_loot/code/loot_structures/gun_case.dm new file mode 100644 index 0000000000000..fa7d384e057bd --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/gun_case.dm @@ -0,0 +1,34 @@ +/datum/storage/maintenance_loot_structure/gun_box + max_slots = 4 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 4 + screen_max_columns = 4 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3' + +/obj/structure/maintenance_loot_structure/gun_box + name = "shipping crate" + desc = "A reinforced shipping crate foor the transport of larger items." + icon_state = "guncrate" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/gun_box + loot_spawn_dice_string = "1d7-3" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + /obj/effect/spawner/random/epic_loot/random_provisions = 1, + /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1, + ) + +/obj/structure/maintenance_loot_structure/gun_box/evil + icon_state = "guncrate_dark" + +/obj/structure/maintenance_loot_structure/gun_box/random + icon_state = "guncrate_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "guncrate", + "guncrate_dark", + ) + +/obj/structure/maintenance_loot_structure/gun_box/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/large_crate.dm b/modular_doppler/epic_loot/code/loot_structures/large_crate.dm new file mode 100644 index 0000000000000..1164a42b17a7f --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/large_crate.dm @@ -0,0 +1,63 @@ +/datum/storage/maintenance_loot_structure/large_crate + max_slots = 16 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 16 + screen_max_columns = 4 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3' + +/obj/structure/maintenance_loot_structure/large_crate + name = "provision transport crate" + desc = "A large crate for transporting equally large amounts of food supplies around." + icon_state = "foodcrate" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/large_crate + loot_spawn_dice_string = "4d5-4" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_provisions = 1, + ) + +/obj/structure/maintenance_loot_structure/large_crate/medical + name = "medical transport crate" + desc = "A large crate for transporting equally large amounts of medical supplies around." + icon_state = "medcrate" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/medical_everything = 1, + ) + +/obj/structure/maintenance_loot_structure/large_crate/medical/airdrop + icon_state = "supplydrop" + +/obj/structure/maintenance_loot_structure/large_crate/engineering + name = "engineering transport crate" + desc = "A large crate for transporting equally large amounts of tools and components around." + icon_state = "toolcrate" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + ) + +/obj/structure/maintenance_loot_structure/large_crate/engineering/airdrop + icon_state = "supplydrop_yellow" + +/obj/structure/maintenance_loot_structure/large_crate/military + name = "reinforced transport crate" + desc = "A large crate for transporting equally large amounts of militar." + icon_state = "supplydrop_green" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + /obj/effect/spawner/random/epic_loot/random_provisions = 1, + /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1, + /obj/effect/spawner/random/epic_loot/medical_everything = 1, + ) + +/obj/effect/spawner/random/epic_loot/random_supply_crate + name = "random supply crate spawner" + desc = "Automagically transforms into a random supply crate, hopefully filled with goodies." + icon = 'modular_doppler/epic_loot/icons/loot_structures.dmi' + icon_state = "crate_random" + loot = list( + /obj/structure/maintenance_loot_structure/large_crate, + /obj/structure/maintenance_loot_structure/large_crate/medical, + /obj/structure/maintenance_loot_structure/large_crate/medical/airdrop, + /obj/structure/maintenance_loot_structure/large_crate/engineering, + /obj/structure/maintenance_loot_structure/large_crate/engineering/airdrop, + /obj/structure/maintenance_loot_structure/large_crate/military, + ) diff --git a/modular_doppler/epic_loot/code/loot_structures/medbox.dm b/modular_doppler/epic_loot/code/loot_structures/medbox.dm new file mode 100644 index 0000000000000..40ffab841a33d --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/medbox.dm @@ -0,0 +1,36 @@ +/datum/storage/maintenance_loot_structure/medical_box + max_slots = 6 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 6 + screen_max_columns = 3 + opening_sound = 'modular_doppler/epic_loot/sound/plastic.mp3' + +/obj/structure/maintenance_loot_structure/medbox + name = "emergency medical box" + desc = "A large, atmos-sealed plastic container for holding emergency medical supplies." + icon_state = "medbox" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/medical_box + loot_spawn_dice_string = "1d8-2" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/medical_everything = 1, + ) + +/obj/structure/maintenance_loot_structure/medbox/bleu + icon_state = "medbox_blue" + +/obj/structure/maintenance_loot_structure/medbox/red + icon_state = "medbox_red" + +/obj/structure/maintenance_loot_structure/medbox/random + icon_state = "medbox_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "medbox", + "medbox_blue", + "medbox_red", + ) + +/obj/structure/maintenance_loot_structure/medbox/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/military_case.dm b/modular_doppler/epic_loot/code/loot_structures/military_case.dm new file mode 100644 index 0000000000000..0b26b90cf3e74 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/military_case.dm @@ -0,0 +1,38 @@ +/datum/storage/maintenance_loot_structure/military_case + max_slots = 8 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 8 + screen_max_columns = 4 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3' + +/obj/structure/maintenance_loot_structure/military_case + name = "large shipping crate" + desc = "A reinforced shipping crate for the transport of larger items." + icon_state = "military_crate" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/military_case + loot_spawn_dice_string = "1d10-2" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + /obj/effect/spawner/random/epic_loot/random_provisions = 1, + /obj/effect/spawner/random/epic_loot/random_other_military_loot = 1, + ) + +/obj/structure/maintenance_loot_structure/military_case/evil + icon_state = "guncrate_dark" + +/obj/structure/maintenance_loot_structure/military_case/super_evil + icon_state = "larpbox" + +/obj/structure/maintenance_loot_structure/military_case/random + icon_state = "military_crate_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "military_crate", + "military_crate_dark", + "larpbox", + ) + +/obj/structure/maintenance_loot_structure/military_case/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/register.dm b/modular_doppler/epic_loot/code/loot_structures/register.dm new file mode 100644 index 0000000000000..0013d6d7761a3 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/register.dm @@ -0,0 +1,42 @@ +/datum/storage/maintenance_loot_structure/register + max_slots = 2 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 2 + screen_max_columns = 2 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_2.mp3' + +/obj/structure/maintenance_loot_structure/register + name = "credits register" + desc = "A compact computing unit to handle transfers of credits between accounts. May still contain currency left behind!" + icon_state = "register_small" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/register + loot_spawn_dice_string = "1d3-1" + loot_weighted_list = list( + /obj/effect/spawner/random/entertainment/coin = 1, + /obj/effect/spawner/random/entertainment/money_small = 2, + /obj/effect/spawner/random/entertainment/money = 1, + ) + +/obj/structure/maintenance_loot_structure/register/white + icon_state = "register_small_clean" + +/obj/structure/maintenance_loot_structure/register/big + icon_state = "register_big" + +/obj/structure/maintenance_loot_structure/register/big_white + icon_state = "register_big_clean" + +/obj/structure/maintenance_loot_structure/register/random + icon_state = "register_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "register_small", + "register_small_clean", + "register_big", + "register_big_clean", + ) + +/obj/structure/maintenance_loot_structure/register/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/safe.dm b/modular_doppler/epic_loot/code/loot_structures/safe.dm new file mode 100644 index 0000000000000..2b5342e028805 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/safe.dm @@ -0,0 +1,32 @@ +/datum/storage/maintenance_loot_structure/desk_safe + max_slots = 2 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 2 + screen_max_columns = 1 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_3.mp3' + +/obj/structure/maintenance_loot_structure/desk_safe + name = "compact safe" + desc = "A not-so-secure safe meant to fit around or under desks." + icon_state = "safe" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/desk_safe + loot_spawn_dice_string = "1d3-1" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_strongbox_loot = 1, + ) + +/obj/structure/maintenance_loot_structure/desk_safe/bleu + icon_state = "safe_blue" + +/obj/structure/maintenance_loot_structure/desk_safe/random + icon_state = "safe_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "safe", + "safe_blue", + ) + +/obj/structure/maintenance_loot_structure/desk_safe/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/toolbox.dm b/modular_doppler/epic_loot/code/loot_structures/toolbox.dm new file mode 100644 index 0000000000000..43e2babff2852 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/toolbox.dm @@ -0,0 +1,38 @@ +/datum/storage/maintenance_loot_structure/toolbox + max_slots = 6 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 6 + screen_max_columns = 3 + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_1.mp3' + +/obj/structure/maintenance_loot_structure/toolbox + name = "heavy toolbox" + desc = "An industrial grade toolbox, for when you need to carry a LOT of things to a job. \ + It's previous owner has smartly attached this one pretty firmly to whatever surface it's on, \ + to prevent theft." + icon_state = "toolbox" + storage_datum_to_use = /datum/storage/maintenance_loot_structure/toolbox + loot_spawn_dice_string = "1d8-2" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/random_engineering = 1, + ) + +/obj/structure/maintenance_loot_structure/toolbox/yellow + icon_state = "toolbox_yellow" + +/obj/structure/maintenance_loot_structure/toolbox/red + icon_state = "toolbox_red" + +/obj/structure/maintenance_loot_structure/toolbox/random + icon_state = "toolbox_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "toolbox", + "toolbox_yellow", + "toolbox_red", + ) + +/obj/structure/maintenance_loot_structure/toolbox/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/loot_structures/wall_jackets.dm b/modular_doppler/epic_loot/code/loot_structures/wall_jackets.dm new file mode 100644 index 0000000000000..3b3bfd24b0802 --- /dev/null +++ b/modular_doppler/epic_loot/code/loot_structures/wall_jackets.dm @@ -0,0 +1,67 @@ +/datum/storage/maintenance_loot_structure/jacket + max_slots = 2 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 4 + screen_max_columns = 2 + opening_sound = 'sound/items/handling/cloth_pickup.ogg' + +/obj/structure/maintenance_loot_structure/wall_jacket + name = "hanging jacket" + desc = "Someone's old, now abandoned jacket. Maybe there's still stuff in the pockets?" + icon_state = "jacket_green" + density = FALSE + storage_datum_to_use = /datum/storage/maintenance_loot_structure/jacket + loot_spawn_dice_string = "1d3-1" + loot_weighted_list = list( + /obj/effect/spawner/random/epic_loot/pocket_sized_items = 1, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/Initialize(mapload) + . = ..() + find_and_hang_on_wall() + +/obj/structure/maintenance_loot_structure/wall_jacket/yellow + icon_state = "jacket_yellow" + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/yellow, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/blue + icon_state = "jacket_blue" + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/blue, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/police + icon_state = "jacket_police" + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/police, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/black + icon_state = "jacket_black" + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/black, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/military + icon_state = "jacket_military" + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/military, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/random + icon_state = "jacket_random" + /// The different icon states we can swap to when initializing + var/list/random_icon_states = list( + "jacket_green", + "jacket_yellow", + "jacket_blue", + "jacket_police", + "jacket_black", + "jacket_military", + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/maintenance_loot_structure/wall_jacket/random, 28) + +/obj/structure/maintenance_loot_structure/wall_jacket/random/Initialize(mapload) + . = ..() + icon_state = pick(random_icon_states) + update_appearance() diff --git a/modular_doppler/epic_loot/code/random_spawners_real.dm b/modular_doppler/epic_loot/code/random_spawners_real.dm new file mode 100644 index 0000000000000..a10e736d3396c --- /dev/null +++ b/modular_doppler/epic_loot/code/random_spawners_real.dm @@ -0,0 +1,689 @@ +/obj/effect/spawner/random/epic_loot + name = "extraction loot spawner" + desc = "Gods please let there be nobody extract camping." + icon = 'modular_doppler/epic_loot/icons/epic_loot.dmi' + icon_state = null + +// Jacket pocket contents + +// Actual pocket items spawner + +/obj/effect/spawner/random/epic_loot/pocket_sized_items + name = "random pocket sized items" + icon_state = "random_pocket_valuable" + loot = list( + /obj/effect/spawner/random/epic_loot/pocket_valuable = 1, + /obj/effect/spawner/random/epic_loot/pocket_medical = 1, + /obj/effect/spawner/random/epic_loot/pocket_da_money = 1, + ) + +// Chainlet, good or not good, call it + +/obj/effect/spawner/random/epic_loot/pocket_valuable + name = "random pocket valuable" + icon_state = "random_chain" + loot = list( + /obj/item/epic_loot/silver_chainlet = 3, + /obj/item/epic_loot/press_pass = 2, + /obj/item/epic_loot/military_flash = 2, + /obj/item/epic_loot/slim_diary = 2, + /obj/item/epic_loot/gold_chainlet = 1, + ) + +// Pocket meds + +/obj/effect/spawner/random/epic_loot/pocket_medical + name = "random pocket medical item" + icon_state = "random_med_stack" + loot = list( + /obj/item/storage/pill_bottle/iron = 2, + /obj/item/storage/pill_bottle/painkiller = 2, + /obj/item/storage/pill_bottle/ondansetron = 1, + /obj/item/stack/medical/bandage = 2, + /obj/item/stack/medical/bandage/makeshift = 2, + /obj/item/stack/medical/aloe = 2, + /obj/item/stack/medical/ointment/red_sun = 1, + /obj/item/stack/medical/bruise_pack = 1, + /obj/item/stack/medical/gauze/sterilized = 1, + ) + +// Pocket da money + +/obj/effect/spawner/random/epic_loot/pocket_da_money + name = "random pocket money" + icon_state = "random_pocket_valuable" + loot = list( + /obj/effect/spawner/random/entertainment/money_small = 2, + /obj/effect/spawner/random/entertainment/money = 1, + /obj/effect/spawner/random/entertainment/cigarette_pack = 1, + /obj/effect/spawner/random/entertainment/cigarette = 2, + /obj/effect/spawner/random/entertainment/wallet_lighter = 2, + ) + +// Medical related spawners + +// The medical everything spawner + +/obj/effect/spawner/random/epic_loot/medical_everything + name = "random medical anything" + icon_state = "random_med_stack" + loot = list( + /obj/effect/spawner/random/epic_loot/medical_stack_item = 2, + /obj/effect/spawner/random/epic_loot/medical_stack_item_advanced = 1, + /obj/effect/spawner/random/epic_loot/chemical = 1, + /obj/effect/spawner/random/epic_loot/medical_tools = 2, + /obj/effect/spawner/random/epic_loot/medkit = 1, + /obj/effect/spawner/random/epic_loot/medpens = 2, + /obj/effect/spawner/random/epic_loot/medpens_combat_based_redpilled = 1, + ) + +// Basic healing items + +/obj/effect/spawner/random/epic_loot/medical_stack_item + name = "random medical item" + icon_state = "random_med_stack" + loot = list( + /obj/item/stack/medical/bruise_pack = 3, + /obj/item/stack/medical/gauze = 3, + /obj/item/stack/medical/gauze/sterilized = 2, + /obj/item/stack/medical/suture/emergency = 3, + /obj/item/stack/medical/suture/coagulant = 2, + /obj/item/stack/medical/suture/bloody = 1, + /obj/item/stack/medical/ointment = 3, + /obj/item/stack/medical/ointment/red_sun = 2, + /obj/item/stack/medical/mesh = 2, + /obj/item/stack/medical/aloe = 2, + /obj/item/stack/medical/bone_gel/one = 2, + /obj/item/stack/medical/bone_gel = 1, + /obj/item/stack/medical/bandage/makeshift = 3, + /obj/item/stack/medical/bandage = 2, + /obj/item/stack/sticky_tape/surgical = 2, + /obj/item/reagent_containers/blood/random = 1, + /obj/item/stack/medical/wound_recovery/robofoam = 2, + // Pill bottles + /obj/item/storage/pill_bottle/iron = 2, + /obj/item/storage/pill_bottle/potassiodide = 2, + /obj/item/storage/pill_bottle/painkiller = 2, + /obj/item/storage/pill_bottle/probital = 2, + /obj/item/storage/pill_bottle/happinesspsych = 1, + /obj/item/storage/pill_bottle/lsdpsych = 1, + /obj/item/storage/pill_bottle/mannitol = 2, + /obj/item/storage/pill_bottle/multiver = 2, + /obj/item/storage/pill_bottle/mutadone = 1, + /obj/item/storage/pill_bottle/neurine = 1, + /obj/item/storage/pill_bottle/ondansetron = 1, + /obj/item/storage/pill_bottle/psicodine = 1, + /obj/item/storage/pill_bottle/sansufentanyl = 1, + ) + +// More advanced healing items + +/obj/effect/spawner/random/epic_loot/medical_stack_item_advanced + name = "random advanced medical item" + icon_state = "random_med_stack_adv" + loot = list( + /obj/item/stack/medical/gauze/sterilized = 2, + /obj/item/stack/medical/suture = 3, + /obj/item/stack/medical/suture/coagulant = 3, + /obj/item/stack/medical/suture/bloody = 2, + /obj/item/stack/medical/suture/medicated = 1, + /obj/item/stack/medical/ointment/red_sun = 3, + /obj/item/stack/medical/mesh = 3, + /obj/item/stack/medical/mesh/bloody = 2, + /obj/item/stack/medical/mesh/advanced = 1, + /obj/item/stack/medical/aloe = 2, + /obj/item/stack/medical/bone_gel = 2, + /obj/item/stack/medical/bandage = 2, + /obj/item/stack/sticky_tape/surgical = 2, + /obj/item/stack/medical/poultice = 1, + /obj/item/stack/medical/wound_recovery = 1, + /obj/item/stack/medical/wound_recovery/rapid_coagulant = 1, + /obj/item/reagent_containers/blood/random = 2, + /obj/item/stack/medical/wound_recovery/robofoam = 3, + /obj/item/stack/medical/wound_recovery/robofoam_super = 2, + // Medigels + /obj/item/reagent_containers/medigel/libital = 2, + /obj/item/reagent_containers/medigel/aiuri = 2, + /obj/item/reagent_containers/medigel/sterilizine = 2, + /obj/item/reagent_containers/medigel/synthflesh = 1, + // Pill bottles + /obj/item/storage/pill_bottle/iron = 2, + /obj/item/storage/pill_bottle/potassiodide = 2, + /obj/item/storage/pill_bottle/painkiller = 2, + /obj/item/storage/pill_bottle/probital = 2, + /obj/item/storage/pill_bottle/happinesspsych = 1, + /obj/item/storage/pill_bottle/lsdpsych = 1, + /obj/item/storage/pill_bottle/mannitol = 2, + /obj/item/storage/pill_bottle/multiver = 2, + /obj/item/storage/pill_bottle/mutadone = 1, + /obj/item/storage/pill_bottle/neurine = 1, + /obj/item/storage/pill_bottle/ondansetron = 1, + /obj/item/storage/pill_bottle/psicodine = 1, + /obj/item/storage/pill_bottle/sansufentanyl = 1, + ) + +// Chems and whatnot + +/obj/effect/spawner/random/epic_loot/chemical + name = "random chemical" + icon_state = "random_med_stack_adv" + loot = list( + // Chemjaks + /obj/item/reagent_containers/cup/bottle/epinephrine = 1, + /obj/item/reagent_containers/cup/bottle/morphine = 2, + /obj/item/reagent_containers/cup/bottle/mannitol = 1, + /obj/item/reagent_containers/cup/bottle/multiver = 2, + /obj/item/reagent_containers/cup/bottle/ammoniated_mercury = 2, + /obj/item/reagent_containers/cup/bottle/syriniver = 2, + /obj/item/reagent_containers/cup/bottle/synaptizine = 2, + /obj/item/reagent_containers/cup/bottle/fentanyl = 2, + /obj/item/reagent_containers/cup/bottle/formaldehyde = 1, + /obj/item/reagent_containers/cup/bottle/diphenhydramine = 1, + /obj/item/reagent_containers/cup/bottle/potass_iodide = 2, + /obj/item/reagent_containers/cup/bottle/salglu_solution = 3, + /obj/item/reagent_containers/cup/bottle/atropine = 2, + /obj/item/reagent_containers/cup/bottle/capsaicin = 2, + /obj/item/reagent_containers/cup/bottle/fentanyl = 1, + /obj/item/reagent_containers/cup/bottle/leadacetate = 1, + /obj/item/reagent_containers/cup/bottle/thermite = 1, + /obj/item/reagent_containers/cup/bottle/ethanol = 2, + /obj/item/reagent_containers/syringe = 2, + // Medigels + /obj/item/reagent_containers/medigel/libital = 2, + /obj/item/reagent_containers/medigel/aiuri = 2, + /obj/item/reagent_containers/medigel/sterilizine = 2, + /obj/item/reagent_containers/medigel/synthflesh = 1, + ) + +// Medical tools spawner + +/obj/effect/spawner/random/epic_loot/medical_tools + name = "random medical tools" + icon_state = "random_med_tools" + loot = list( + /obj/item/bonesetter = 2, + /obj/item/cautery = 2, + /obj/item/cautery/cruel = 1, + /obj/item/clothing/neck/stethoscope = 2, + /obj/item/flashlight/pen = 2, + /obj/item/flashlight/pen/paramedic = 2, + /obj/item/healthanalyzer = 1, + /obj/item/healthanalyzer/simple = 2, + /obj/item/healthanalyzer/simple/disease = 2, + /obj/item/hemostat = 2, + /obj/item/storage/box/bandages = 1, + /obj/item/bodybag = 2, + /obj/item/blood_filter = 2, + /obj/item/circular_saw = 2, + /obj/item/clothing/gloves/latex/nitrile = 2, + /obj/item/clothing/mask/surgical = 2, + /obj/item/retractor = 2, + /obj/item/scalpel = 2, + /obj/item/shears = 1, + /obj/item/surgical_drapes = 2, + /obj/item/surgicaldrill = 2, + /obj/item/epic_loot/vein_finder = 1, + /obj/item/epic_loot/eye_scope = 1, + /obj/item/reagent_containers/dropper = 2, + /obj/item/reagent_containers/cup/beaker = 2, + /obj/item/reagent_containers/cup/beaker/large = 1, + /obj/item/reagent_containers/cup/bottle = 2, + /obj/item/reagent_containers/cup/tube = 2, + /obj/item/reagent_containers/syringe = 2, + /obj/item/defibrillator = 1, + /obj/item/defibrillator/loaded = 1, + /obj/item/emergency_bed = 2, + /obj/item/storage/epic_loot_medical_case = 1, + ) + +// Random medkits + +/obj/effect/spawner/random/epic_loot/medkit + name = "random medkit" + icon_state = "random_medkit" + loot = list( + /obj/item/storage/medkit/civil_defense/stocked = 2, + /obj/item/storage/medkit/civil_defense/comfort/stocked = 2, + /obj/item/storage/medkit/frontier/stocked = 2, + /obj/item/storage/medkit/combat_surgeon/stocked = 2, + /obj/item/storage/medkit/robotic_repair/stocked = 2, + /obj/item/storage/medkit/robotic_repair/preemo/stocked = 1, + /obj/item/storage/backpack/duffelbag/deforest_medkit/stocked = 1, + /obj/item/storage/backpack/duffelbag/deforest_surgical/stocked = 1, + /obj/item/storage/epic_loot_medpen_case = 2, + ) + +// Random medpens for healing yourself + +/obj/effect/spawner/random/epic_loot/medpens + name = "random autoinjectors" + icon_state = "random_medpen_spawner" + loot = list( + /obj/item/reagent_containers/hypospray/medipen/deforest/occuisate = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/adrenaline = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/morpital = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/lipital = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/meridine = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/synephrine = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/calopine = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/krotozine = 1, + /obj/item/reagent_containers/hypospray/medipen/deforest/lepoturi = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/psifinil = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/halobinin = 2, + ) + +// Random medpens for fighting other people + +/obj/effect/spawner/random/epic_loot/medpens_combat_based_redpilled + name = "random combat autoinjectors" + icon_state = "random_medpen_advanced" + loot = list( + /obj/item/reagent_containers/hypospray/medipen/deforest/adrenaline = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/morpital = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/lipital = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/synephrine = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/calopine = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/krotozine = 3, + /obj/item/reagent_containers/hypospray/medipen/deforest/lepoturi = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/twitch = 1, + /obj/item/reagent_containers/hypospray/medipen/deforest/demoneye = 1, + /obj/item/reagent_containers/hypospray/medipen/deforest/aranepaine = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/pentibinin = 2, + /obj/item/reagent_containers/hypospray/medipen/deforest/synalvipitol = 2, + ) + +// Tool and supply spawners + +/obj/effect/spawner/random/epic_loot/random_engineering + name = "random engineering thing" + icon_state = "random_component" + loot = list( + /obj/effect/spawner/random/epic_loot/random_components = 1, + /obj/effect/spawner/random/epic_loot/random_computer_parts = 1, + /obj/effect/spawner/random/epic_loot/random_tools = 1, + /obj/effect/spawner/random/epic_loot/random_construction = 1, + ) + +// Sellable components + +/obj/effect/spawner/random/epic_loot/random_components + name = "random components" + icon_state = "random_component" + loot = list( + /obj/item/epic_loot/water_filter = 2, + /obj/item/epic_loot/thermometer = 2, + /obj/item/epic_loot/nail_box = 2, + /obj/item/epic_loot/cold_weld = 2, + /obj/item/epic_loot/electric_motor = 1, + /obj/item/epic_loot/current_converter = 1, + /obj/item/epic_loot/signal_amp = 1, + /obj/item/epic_loot/thermal_camera = 1, + /obj/item/epic_loot/shuttle_gyro = 1, + /obj/item/epic_loot/phased_array = 1, + /obj/item/epic_loot/shuttle_battery = 1, + /obj/item/epic_loot/fuel_conditioner = 2, + /obj/item/epic_loot/display = 1, + /obj/item/epic_loot/display_broken = 2, + /obj/item/epic_loot/civilian_circuit = 2, + ) + +// Random computer parts + +/obj/effect/spawner/random/epic_loot/random_computer_parts + name = "random computer parts" + icon_state = "random_electronic_part" + loot = list( + /obj/item/epic_loot/signal_amp = 2, + /obj/item/epic_loot/device_fan = 2, + /obj/item/epic_loot/graphics = 1, + /obj/item/epic_loot/military_circuit = 1, + /obj/item/epic_loot/civilian_circuit = 2, + /obj/item/epic_loot/processor = 2, + /obj/item/epic_loot/power_supply = 2, + /obj/item/epic_loot/disk_drive = 2, + /obj/item/epic_loot/ssd = 1, + /obj/item/epic_loot/hdd = 1, + /obj/item/epic_loot/military_flash = 1, + ) + +// Random tools + +/obj/effect/spawner/random/epic_loot/random_tools + name = "random tools and supplies" + icon_state = "random_tool" + loot = list( + // Wrench + /obj/item/wrench = 3, + /obj/item/wrench/bolter = 2, + /obj/item/wrench/caravan = 1, + /obj/item/wrench/combat = 1, + // Screwdriver + /obj/item/screwdriver = 3, + /obj/item/screwdriver/omni_drill = 2, + /obj/item/screwdriver/caravan = 1, + // Crowbar + /obj/item/crowbar = 3, + /obj/item/crowbar/large/doorforcer = 2, + /obj/item/crowbar/red/caravan = 1, + /obj/item/fireaxe/metal_h2_axe = 1, + // Wirecutters + /obj/item/wirecutters = 3, + /obj/item/wirecutters/caravan = 1, + // Welder + /obj/item/weldingtool = 3, + /obj/item/weldingtool/largetank = 3, + /obj/item/weldingtool/arc_welder = 2, + /obj/item/weldingtool/experimental = 1, + // Multitool + /obj/item/multitool = 2, + /obj/item/multitool/ai_detect = 1, + // Rapid whatever tools + /obj/item/pipe_dispenser = 1, + /obj/item/construction/rcd = 1, + /obj/item/construction/rtd = 1, + // Misc tools and related items + /obj/item/stack/cable_coil = 3, + /obj/item/flashlight = 2, + /obj/item/flashlight/flare = 3, + /obj/item/grenade/chem_grenade/metalfoam = 2, + /obj/item/geiger_counter = 2, + /obj/item/analyzer = 2, + // Various methods of insulation + /obj/item/clothing/gloves/color/yellow = 2, + /obj/item/clothing/gloves/chief_engineer = 1, + /obj/item/clothing/gloves/atmos = 1, + // Misc utility clothing + /obj/item/clothing/gloves/tinkerer = 1, + /obj/item/clothing/head/utility/welding = 2, + /obj/item/clothing/head/utility/hardhat/welding = 1, + /obj/item/clothing/glasses/meson = 3, + /obj/item/clothing/glasses/meson/engine = 2, + /obj/item/storage/belt/utility = 2, + /obj/item/clothing/shoes/magboots = 2, + // Tapes + /obj/item/stack/sticky_tape = 2, + /obj/item/stack/sticky_tape/super = 1, + // Cells + /obj/item/stock_parts/power_store/cell/upgraded = 1, + /obj/item/stock_parts/power_store/cell/crap = 2, + /obj/item/stock_parts/power_store/battery/upgraded = 1, + /obj/item/stock_parts/power_store/battery/crap = 2, + // Masks + /obj/item/clothing/mask/gas = 3, + /obj/item/clothing/mask/gas/welding = 2, + /obj/item/clothing/mask/gas/atmos/frontier_colonist = 2, + // Air tanks + /obj/item/tank/internals/nitrogen/belt = 1, + /obj/item/tank/internals/emergency_oxygen/engi = 2, + /obj/item/tank/internals/emergency_oxygen/double = 1, + // stuff + /obj/item/storage/epic_loot_cooler = 1, + /obj/item/storage/epic_loot_money_case = 1, + // Robofoam is a tool, right? + /obj/item/stack/medical/wound_recovery/robofoam = 2, + /obj/item/stack/medical/wound_recovery/robofoam_super = 1, + ) + +// Random construction stuff + +/obj/effect/spawner/random/epic_loot/random_construction + name = "random constructions" + icon_state = "random_tool" + loot = list( + // Sheets + /obj/item/stack/sheet/iron/twenty = 2, + /obj/item/stack/sheet/iron/ten = 3, + /obj/item/stack/sheet/glass/fifty = 1, + /obj/item/stack/sheet/plastic/five = 3, + /obj/item/stack/sheet/plastic_wall_panel/ten = 2, + /obj/item/stack/rods/twentyfive = 2, + /obj/item/stack/sheet/tinumium/three = 2, + /obj/item/stack/sheet/mineral/silver = 2, + /obj/item/stack/sheet/mineral/gold = 2, + /obj/item/stack/sheet/mineral/plasma/five = 2, + // Flatpack machines + /obj/item/flatpacked_machine = 1, + /obj/item/flatpacked_machine/airlock_kit = 2, + /obj/item/flatpacked_machine/airlock_kit_manual = 2, + /obj/item/flatpacked_machine/arc_furnace = 1, + /obj/item/flatpacked_machine/co2_cracker = 2, + /obj/item/flatpacked_machine/frontier_griddle = 1, + /obj/item/flatpacked_machine/frontier_range = 1, + /obj/item/flatpacked_machine/fuel_generator = 1, + /obj/item/flatpacked_machine/gps_beacon = 2, + /obj/item/flatpacked_machine/hydro_synth = 1, + /obj/item/flatpacked_machine/large_station_battery = 1, + /obj/item/flatpacked_machine/macrowave = 1, + /obj/item/flatpacked_machine/ore_silo = 1, + /obj/item/flatpacked_machine/ore_thumper = 1, + /obj/item/flatpacked_machine/organics_printer = 2, + /obj/item/flatpacked_machine/organics_ration_printer = 2, + /obj/item/flatpacked_machine/recycler = 2, + /obj/item/flatpacked_machine/rtg = 2, + /obj/item/flatpacked_machine/shutter_kit = 1, + /obj/item/flatpacked_machine/solar = 2, + /obj/item/flatpacked_machine/solar_tracker = 1, + /obj/item/flatpacked_machine/station_battery = 1, + /obj/item/flatpacked_machine/stirling_generator = 1, + /obj/item/flatpacked_machine/sustenance_machine = 2, + /obj/item/flatpacked_machine/thermomachine = 1, + /obj/item/flatpacked_machine/water_synth = 2, + /obj/item/flatpacked_machine/wind_turbine = 2, + /obj/item/folded_navigation_gigabeacon = 1, + /obj/item/wallframe/cell_charger_multi = 2, + /obj/item/wallframe/wall_heater = 2, + /obj/item/wallframe/digital_clock = 1, + // Other things + /obj/item/door_seal = 2, + ) + +// Things from a safe + +// Documents and whatnot + +/obj/effect/spawner/random/epic_loot/random_documents + name = "random documents" + icon_state = "random_documents" + loot = list( + /obj/item/folder/white = 2, + /obj/item/folder/red = 2, + /obj/item/folder/blue = 2, + /obj/item/folder/ancient_paperwork = 2, + /obj/item/epic_loot/intel_folder = 2, + /obj/item/epic_loot/corpo_folder = 2, + /obj/item/epic_loot/slim_diary = 2, + /obj/item/epic_loot/diary = 2, + /obj/item/computer_disk/maintenance = 2, + /obj/item/computer_disk/black_market = 1, + /obj/item/computer_disk/virus = 1, + /obj/item/clipboard = 2, + /obj/item/pen/fountain/captain = 1, + /obj/item/pen/fountain = 2, + /obj/item/pen/screwdriver = 1, + /obj/item/pen/red = 2, + /obj/item/pen/blue = 2, + /obj/item/pen/fourcolor = 2, + /obj/item/pen/survival = 1, + /obj/item/storage/epic_loot_docs_case = 1, + /obj/item/book/granter/crafting_recipe/dusting/smoothbore_disabler_prime = 1, + /obj/item/book/granter/crafting_recipe/dusting/laser_musket_prime = 1, + /obj/item/book/granter/crafting_recipe/dusting/pipegun_prime = 1, + /obj/item/book/granter/crafting_recipe/death_sandwich = 1, + /obj/item/book/granter/crafting_recipe/trash_cannon = 1, + /obj/item/book/granter/crafting_recipe/donk_secret_recipe = 1, + ) + +// Stuff that comes in strongboxes specifically + +/obj/effect/spawner/random/epic_loot/random_strongbox_loot + name = "random strongbox loot" + icon_state = "random_strongbox_loot" + loot = list( + /obj/item/epic_loot/ssd = 1, + /obj/item/epic_loot/hdd = 1, + /obj/effect/spawner/random/epic_loot/pocket_valuable = 2, + /obj/effect/spawner/random/epic_loot/random_documents = 2, + ) + +// Unsorted yeah + +// "Military" loot + +/obj/effect/spawner/random/epic_loot/random_other_military_loot + name = "random military loot" + desc = "Automagically transforms into some kind of misc. military loot item." + icon_state = "random_loot_military" + loot = list( + /obj/item/clothing/mask/gas/sechailer = 3, + /obj/item/clothing/mask/gas = 2, + /obj/item/clothing/mask/gas/atmos/frontier_colonist = 2, + /obj/item/folder/ancient_paperwork = 2, + /obj/item/epic_loot/intel_folder = 3, + /obj/item/epic_loot/slim_diary = 3, + /obj/item/epic_loot/ssd = 2, + /obj/item/epic_loot/hdd = 2, + /obj/item/epic_loot/military_flash = 2, + /obj/item/computer_disk/maintenance = 2, + /obj/item/computer_disk/black_market = 1, + /obj/item/epic_loot/plasma_explosive = 1, + /obj/item/epic_loot/grenade_fuze = 3, + /obj/item/epic_loot/signal_amp = 3, + /obj/item/epic_loot/thermal_camera = 2, + /obj/item/epic_loot/shuttle_gyro = 2, + /obj/item/epic_loot/phased_array = 2, + /obj/item/epic_loot/shuttle_battery = 2, + /obj/item/epic_loot/military_circuit = 3, + /obj/item/storage/epic_loot_medpen_case = 2, + /obj/item/storage/epic_loot_docs_case = 2, + /obj/item/storage/epic_loot_org_pouch = 2, + ) + +// Random food for transport +/obj/effect/spawner/random/epic_loot/random_provisions + name = "random provisions" + icon_state = "random_food" + loot = list( + /obj/item/food/sustenance_bar = 3, + /obj/item/food/sustenance_bar/cheese = 2, + /obj/item/food/sustenance_bar/mint = 2, + /obj/item/food/sustenance_bar/neapolitan = 2, + /obj/item/food/vendor_snacks/mothmallow = 1, + /obj/item/food/vendor_snacks/moth_bag = 3, + /obj/item/food/vendor_snacks/moth_bag/cheesecake = 2, + /obj/item/food/vendor_snacks/moth_bag/cheesecake/honey = 2, + /obj/item/food/vendor_snacks/moth_bag/fuel_jack = 3, + /obj/item/food/vendor_tray_meal/side/cornbread = 2, + /obj/item/food/vendor_tray_meal/side/moffin = 2, + /obj/item/food/vendor_tray_meal/side/roasted_seeds = 2, + /obj/item/food/brain_pate = 2, + /obj/item/food/branrequests = 3, + /obj/item/food/breadslice/corn = 2, + /obj/item/food/breadslice/reispan = 2, + /obj/item/food/breadslice/plain = 2, + /obj/item/food/breadslice/root = 2, + /obj/item/food/butter = 3, + /obj/item/food/candy = 3, + /obj/item/food/canned/beans = 3, + /obj/item/food/canned/peaches = 3, + /obj/item/food/canned/tomatoes = 3, + /obj/item/food/canned/chap = 3, + /obj/item/food/canned/desert_snails = 2, + /obj/item/food/canned/envirochow = 1, + /obj/item/food/canned/jellyfish = 2, + /obj/item/food/canned/larvae = 2, + /obj/item/food/canned/pine_nuts = 2, + /obj/item/food/canned/squid_ink = 1, + /obj/item/food/cheese/firm_cheese_slice = 2, + /obj/item/food/cheese/firm_cheese = 1, + /obj/item/food/chocolatebar = 2, + /obj/item/food/cnds/random = 3, + /obj/item/food/colonial_course/pljeskavica = 1, + /obj/item/food/colonial_course/nachos = 1, + /obj/item/food/colonial_course/blins = 1, + /obj/item/food/cornchips/random = 2, + /obj/item/food/peanuts/random = 2, + /obj/item/food/ready_donk = 1, + /obj/item/food/ready_donk/donkhiladas = 1, + /obj/item/food/ready_donk/donkrange_chicken = 1, + /obj/item/food/ready_donk/mac_n_cheese = 1, + /obj/item/food/ready_donk/nachos_grandes = 1, + /obj/item/food/ready_donk/country_chicken = 1, + /obj/item/food/ready_donk/salisbury_steak = 1, + /obj/item/food/semki = 3, + /obj/item/food/spacers_sidekick = 2, + /obj/item/food/sticko/random = 3, + // Ingredients + /obj/item/reagent_containers/cup/glass/bottle/juice/limejuice = 2, + /obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice = 2, + /obj/item/reagent_containers/cup/glass/bottle/juice/pineapplejuice = 2, + /obj/item/reagent_containers/condiment/milk = 1, + /obj/item/reagent_containers/condiment/sugar/small_ration = 2, + /obj/item/reagent_containers/condiment/flour/small_ration = 2, + /obj/item/reagent_containers/condiment/small_ration_korta_flour = 2, + /obj/item/reagent_containers/condiment/cherryjelly = 1, + /obj/item/reagent_containers/condiment/rice/small_ration = 2, + /obj/item/reagent_containers/condiment/soymilk/small_ration = 2, + /obj/item/reagent_containers/condiment/cornmeal = 1, + /obj/item/reagent_containers/condiment/grounding_solution = 1, + /obj/item/reagent_containers/condiment/bbqsauce = 2, + /obj/item/reagent_containers/condiment/chocolate = 1, + /obj/item/reagent_containers/condiment/coconut_milk = 2, + /obj/item/reagent_containers/condiment/curry_powder = 2, + /obj/item/reagent_containers/condiment/dashi_concentrate = 1, + /obj/item/reagent_containers/condiment/donksauce = 1, + /obj/item/reagent_containers/condiment/vegetable_oil = 2, + /obj/item/reagent_containers/condiment/worcestershire = 1, + /obj/item/reagent_containers/condiment/enzyme = 1, + /obj/item/reagent_containers/condiment/honey = 1, + /obj/item/reagent_containers/condiment/hotsauce = 1, + /obj/item/reagent_containers/condiment/ketchup = 1, + /obj/item/reagent_containers/condiment/mayonnaise = 1, + /obj/item/reagent_containers/condiment/peanut_butter = 1, + /obj/item/reagent_containers/condiment/protein = 1, + /obj/item/reagent_containers/condiment/red_bay = 2, + /obj/item/reagent_containers/condiment/vinegar = 1, + /obj/item/reagent_containers/condiment/coldsauce = 1, + /obj/item/storage/box/spaceman_ration/meats = 1, + /obj/item/storage/box/spaceman_ration/meats/lizard = 1, + /obj/item/storage/box/spaceman_ration/meats/fish = 1, + /obj/item/storage/box/spaceman_ration/plants = 2, + /obj/item/storage/box/spaceman_ration/plants/alternate = 2, + /obj/item/storage/box/spaceman_ration/plants/lizard = 2, + /obj/item/storage/box/spaceman_ration/plants/mothic = 2, + /obj/item/storage/box/papersack/ration_bread_slice = 1, + /obj/item/storage/box/colonial_rations = 1, + // Da cooler + /obj/item/storage/epic_loot_cooler = 2, + ) + +// Da money + +/obj/effect/spawner/random/entertainment/money/one + spawn_loot_count = 1 + +/obj/effect/spawner/random/entertainment/money_small/one + spawn_loot_count = 1 + +// Maint structure spawner + +/obj/effect/spawner/random/epic_loot/random_maint_loot_structure + name = "random maintenance loot structure" + desc = "Automagically transforms into a random loot structure that spawns in maint." + icon = 'modular_doppler/epic_loot/icons/loot_structures.dmi' + icon_state = "random_maint_structure" + loot = list( + /obj/structure/maintenance_loot_structure/ammo_box/random, + /obj/structure/maintenance_loot_structure/computer_tower/random, + /obj/structure/maintenance_loot_structure/file_cabinet/random, + /obj/structure/maintenance_loot_structure/grenade_box/random, + /obj/structure/maintenance_loot_structure/gun_box/random, + /obj/effect/spawner/random/epic_loot/random_supply_crate, + /obj/structure/maintenance_loot_structure/medbox/random, + /obj/structure/maintenance_loot_structure/military_case/random, + /obj/structure/maintenance_loot_structure/register/random, + /obj/structure/maintenance_loot_structure/desk_safe/random, + /obj/structure/maintenance_loot_structure/toolbox/random, + /obj/structure/maintenance_loot_structure/wall_jacket/random, + ) diff --git a/modular_doppler/epic_loot/code/storage_containers/containers.dm b/modular_doppler/epic_loot/code/storage_containers/containers.dm new file mode 100644 index 0000000000000..682315b83a58b --- /dev/null +++ b/modular_doppler/epic_loot/code/storage_containers/containers.dm @@ -0,0 +1,232 @@ +/obj/item/storage/epic_loot_medpen_case + name = "autoinjector case" + desc = "A semi-rigid case for holding a large number of autoinjectors inside of." + icon = 'modular_doppler/epic_loot/icons/storage_items.dmi' + icon_state = "pencase" + equip_sound = 'sound/items/equip/toolbelt_equip.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + drop_sound = 'sound/items/handling/cloth_drop.ogg' + storage_type = /datum/storage/maintenance_loot_structure/epic_loot_medpen_case + slot_flags = ITEM_SLOT_POCKETS + w_class = WEIGHT_CLASS_BULKY + +/datum/storage/maintenance_loot_structure/epic_loot_medpen_case + max_slots = 6 + max_specific_storage = WEIGHT_CLASS_SMALL + max_total_storage = WEIGHT_CLASS_SMALL * 6 + numerical_stacking = TRUE + opening_sound = 'sound/items/zip/un_zip.ogg' + +/datum/storage/maintenance_loot_structure/epic_loot_medpen_case/New() + . = ..() + + can_hold = typecacheof(list( + /obj/item/dnainjector, + /obj/item/hypospray, + /obj/item/implant, + /obj/item/implantcase, + /obj/item/implanter, + /obj/item/lazarus_injector, + /obj/item/reagent_containers/hypospray, + /obj/item/reagent_containers/medigel, + /obj/item/reagent_containers/pill, + /obj/item/storage/pill_bottle, + )) + +/obj/item/storage/epic_loot_docs_case + name = "documents case" + desc = "A large pouch conveniently shaped to hold all of the valueable paperwork in the galaxy." + icon = 'modular_doppler/epic_loot/icons/storage_items.dmi' + icon_state = "documents" + equip_sound = 'sound/items/equip/toolbelt_equip.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + drop_sound = 'sound/items/handling/cloth_drop.ogg' + storage_type = /datum/storage/maintenance_loot_structure/epic_loot_docs_case + slot_flags = ITEM_SLOT_POCKETS + w_class = WEIGHT_CLASS_BULKY + +/datum/storage/maintenance_loot_structure/epic_loot_docs_case + max_slots = 4 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 4 + screen_max_columns = 2 + numerical_stacking = TRUE + opening_sound = 'sound/items/handling/cloth_pickup.ogg' + +/datum/storage/maintenance_loot_structure/epic_loot_docs_case/New() + . = ..() + + can_hold = typecacheof(list( + /obj/item/folder, + /obj/item/epic_loot/intel_folder, + /obj/item/epic_loot/corpo_folder, + /obj/item/epic_loot/slim_diary, + /obj/item/epic_loot/diary, + /obj/item/computer_disk, + /obj/item/paper, + /obj/item/photo, + /obj/item/documents, + /obj/item/paperwork, + /obj/item/clipboard, + )) + +/obj/item/storage/epic_loot_org_pouch + name = "organizational pouch" + desc = "A pouch with every possible type of pocket and organizer stuck into it, to hold all of the small stuff you could think of." + icon = 'modular_doppler/epic_loot/icons/storage_items.dmi' + icon_state = "sick" + equip_sound = 'sound/items/equip/toolbelt_equip.ogg' + pickup_sound = 'sound/items/handling/cloth_pickup.ogg' + drop_sound = 'sound/items/handling/cloth_drop.ogg' + storage_type = /datum/storage/maintenance_loot_structure/epic_loot_org_pouch + slot_flags = ITEM_SLOT_POCKETS + w_class = WEIGHT_CLASS_BULKY + +/datum/storage/maintenance_loot_structure/epic_loot_org_pouch + max_slots = 4 + max_specific_storage = WEIGHT_CLASS_SMALL + max_total_storage = WEIGHT_CLASS_SMALL * 4 + screen_max_columns = 2 + numerical_stacking = TRUE + opening_sound = 'sound/items/zip/un_zip.ogg' + +/obj/item/storage/epic_loot_cooler + name = "compact cooler" + desc = "A wonder in food storage technology, it's a blue bag that you can put food in." + icon = 'modular_doppler/epic_loot/icons/storage_items.dmi' + icon_state = "cooler" + lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' + inhand_icon_state = "toolbox_blue" + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + storage_type = /datum/storage/maintenance_loot_structure/epic_loot_cooler + w_class = WEIGHT_CLASS_BULKY + +/datum/storage/maintenance_loot_structure/epic_loot_cooler + max_slots = 12 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 12 + screen_max_columns = 4 + numerical_stacking = FALSE + opening_sound = 'sound/items/zip/un_zip.ogg' + +/datum/storage/maintenance_loot_structure/epic_loot_cooler/New() + . = ..() + + can_hold = typecacheof(list( + /obj/item/food, + /obj/item/reagent_containers/condiment, + /obj/item/reagent_containers/cup, + )) + +/obj/item/storage/epic_loot_money_case + name = "money case" + desc = "A heavy duty case for the transportation of (bribe) money." + icon = 'modular_doppler/epic_loot/icons/storage_items.dmi' + icon_state = "money_case" + lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' + inhand_icon_state = "lockbox" + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + storage_type = /datum/storage/maintenance_loot_structure/epic_loot_the_money + w_class = WEIGHT_CLASS_BULKY + +/datum/storage/maintenance_loot_structure/epic_loot_the_money + max_slots = 6 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_total_storage = WEIGHT_CLASS_NORMAL * 6 + screen_max_columns = 2 + numerical_stacking = FALSE + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_1.mp3' + +/datum/storage/maintenance_loot_structure/epic_loot_the_money/New() + . = ..() + + can_hold = typecacheof(list( + /obj/item/stack/spacecash, + /obj/item/coin, + )) + +/obj/item/storage/epic_loot_medical_case + name = "medical case" + desc = "A heavy duty case for the transportation of medical supplies." + icon = 'modular_doppler/epic_loot/icons/storage_items.dmi' + icon_state = "medical" + lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' + inhand_icon_state = "bitrunning" + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + storage_type = /datum/storage/maintenance_loot_structure/epic_loot_medkit + w_class = WEIGHT_CLASS_BULKY + +/datum/storage/maintenance_loot_structure/epic_loot_medkit + max_slots = 21 + max_specific_storage = WEIGHT_CLASS_BULKY + max_total_storage = WEIGHT_CLASS_BULKY * 21 + screen_max_columns = 7 + numerical_stacking = FALSE + opening_sound = 'modular_doppler/epic_loot/sound/wood_crate_1.mp3' + +/datum/storage/maintenance_loot_structure/epic_loot_medkit/New() + . = ..() + + can_hold = typecacheof(list( + /obj/item/blood_filter, + /obj/item/bonesetter, + /obj/item/cautery, + /obj/item/circular_saw, + /obj/item/clothing/glasses, + /obj/item/clothing/gloves, + /obj/item/clothing/neck/stethoscope, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/muzzle, + /obj/item/clothing/mask/surgical, + /obj/item/clothing/suit/toggle/labcoat/hospitalgown, + /obj/item/construction/plumbing, + /obj/item/dnainjector, + /obj/item/extinguisher/mini, + /obj/item/flashlight/pen, + /obj/item/geiger_counter, + /obj/item/gun/syringe/syndicate, + /obj/item/healthanalyzer, + /obj/item/hemostat, + /obj/item/holosign_creator/medical, + /obj/item/hypospray, + /obj/item/implant, + /obj/item/implantcase, + /obj/item/implanter, + /obj/item/lazarus_injector, + /obj/item/lighter, + /obj/item/pinpointer/crew, + /obj/item/plunger, + /obj/item/radio, + /obj/item/reagent_containers/blood, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/cup/beaker, + /obj/item/reagent_containers/cup/bottle, + /obj/item/reagent_containers/cup/tube, + /obj/item/reagent_containers/hypospray, + /obj/item/reagent_containers/medigel, + /obj/item/reagent_containers/pill, + /obj/item/reagent_containers/spray, + /obj/item/reagent_containers/syringe, + /obj/item/retractor, + /obj/item/scalpel, + /obj/item/shears, + /obj/item/stack/medical, + /obj/item/stack/sticky_tape, + /obj/item/stamp, + /obj/item/sensor_device, + /obj/item/storage/fancy/cigarettes, + /obj/item/storage/pill_bottle, + /obj/item/surgical_drapes, + /obj/item/surgicaldrill, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/wrench/medical, + /obj/item/emergency_bed, + /obj/item/storage/box/bandages, + /obj/item/bodybag, + )) diff --git a/modular_doppler/epic_loot/code/where_they_spawn.dm b/modular_doppler/epic_loot/code/where_they_spawn.dm new file mode 100644 index 0000000000000..2d981ae7598d3 --- /dev/null +++ b/modular_doppler/epic_loot/code/where_they_spawn.dm @@ -0,0 +1,42 @@ +/obj/effect/spawner/random/trash/box + loot = list( + /obj/structure/closet/cardboard = 9, + /obj/structure/closet/cardboard/metal = 1, + /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 3, + ) + +/obj/effect/spawner/random/structure/crate + loot = list( + /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 1000, + /obj/effect/spawner/random/structure/crate_loot = 744, + /obj/structure/closet/crate/trashcart/filled = 75, + /obj/effect/spawner/random/trash/moisture_trap = 50, + /obj/effect/spawner/random/trash/hobo_squat = 30, + /obj/structure/closet/mini_fridge = 35, + /obj/effect/spawner/random/trash/mess = 30, + /obj/item/kirbyplants/fern = 20, + /obj/structure/closet/crate/decorations = 15, + /obj/effect/decal/remains/human/smokey/maintenance = 7, + /obj/structure/destructible/cult/pants_altar = 1, + ) + +/obj/effect/spawner/random/structure/crate_loot + loot = list( + /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 30, + /obj/effect/spawner/random/structure/closet_empty/crate/with_loot = 15, + /obj/effect/spawner/random/structure/closet_empty/crate = 4, + /obj/structure/closet/crate/secure/loot = 1, + ) + +/obj/effect/spawner/random/structure/closet_maintenance + loot = list( + /obj/effect/spawner/random/epic_loot/random_maint_loot_structure = 15, + /obj/effect/spawner/random/structure/closet_empty = 10, + /obj/structure/closet/emcloset = 2, + /obj/structure/closet/firecloset = 2, + /obj/structure/closet/toolcloset = 2, + /obj/structure/closet/l3closet = 1, + /obj/structure/closet/radiation = 1, + /obj/structure/closet/bombcloset = 1, + /obj/structure/closet/mini_fridge/grimy = 1, + ) diff --git a/modular_doppler/epic_loot/icons/epic_loot.dmi b/modular_doppler/epic_loot/icons/epic_loot.dmi new file mode 100644 index 0000000000000..e05a53aefdea6 Binary files /dev/null and b/modular_doppler/epic_loot/icons/epic_loot.dmi differ diff --git a/modular_doppler/epic_loot/icons/loot_structures.dmi b/modular_doppler/epic_loot/icons/loot_structures.dmi new file mode 100644 index 0000000000000..213c69849cfef Binary files /dev/null and b/modular_doppler/epic_loot/icons/loot_structures.dmi differ diff --git a/modular_doppler/epic_loot/icons/storage_items.dmi b/modular_doppler/epic_loot/icons/storage_items.dmi new file mode 100644 index 0000000000000..04e6db41d6708 Binary files /dev/null and b/modular_doppler/epic_loot/icons/storage_items.dmi differ diff --git a/modular_doppler/epic_loot/sound/attributions.txt b/modular_doppler/epic_loot/sound/attributions.txt new file mode 100644 index 0000000000000..6aee04bdec393 --- /dev/null +++ b/modular_doppler/epic_loot/sound/attributions.txt @@ -0,0 +1 @@ +The sounds in this folder are all from https://pixabay.com/users/38928062/ as of the time of writing this comment diff --git a/modular_doppler/epic_loot/sound/cabinet.mp3 b/modular_doppler/epic_loot/sound/cabinet.mp3 new file mode 100644 index 0000000000000..b2380969d783d Binary files /dev/null and b/modular_doppler/epic_loot/sound/cabinet.mp3 differ diff --git a/modular_doppler/epic_loot/sound/plastic.mp3 b/modular_doppler/epic_loot/sound/plastic.mp3 new file mode 100644 index 0000000000000..469ff97a2fdde Binary files /dev/null and b/modular_doppler/epic_loot/sound/plastic.mp3 differ diff --git a/modular_doppler/epic_loot/sound/wood_crate_1.mp3 b/modular_doppler/epic_loot/sound/wood_crate_1.mp3 new file mode 100644 index 0000000000000..3fdf354ae0b07 Binary files /dev/null and b/modular_doppler/epic_loot/sound/wood_crate_1.mp3 differ diff --git a/modular_doppler/epic_loot/sound/wood_crate_2.mp3 b/modular_doppler/epic_loot/sound/wood_crate_2.mp3 new file mode 100644 index 0000000000000..01fa391d6cccc Binary files /dev/null and b/modular_doppler/epic_loot/sound/wood_crate_2.mp3 differ diff --git a/modular_doppler/epic_loot/sound/wood_crate_3.mp3 b/modular_doppler/epic_loot/sound/wood_crate_3.mp3 new file mode 100644 index 0000000000000..aa3d9954f8266 Binary files /dev/null and b/modular_doppler/epic_loot/sound/wood_crate_3.mp3 differ diff --git a/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm b/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm index 8b1bbab6eea4d..77e1639df6214 100644 --- a/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm +++ b/modular_doppler/hearthkin/primitive_genemod/code/map_items.dm @@ -18,77 +18,10 @@ . = ..() AddComponent(/datum/component/simple_farm, set_plant = TRUE) -// Water that can be fished out of +// Hotspring water with icebox air -/turf/open/water/hot_spring - desc = "Water kept warm through some unknown heat source, possibly a geothermal heat source far underground. \ - Whatever it is, it feels pretty damn nice to swim in given the rest of the environment around here, and you \ - can even catch a glimpse of the odd fish darting through the water." - baseturfs = /turf/open/openspace/icemoon - initial_gas_mix = "ICEMOON_ATMOS" - /// Holder for the steam particles that show up sometimes - var/obj/effect/abstract/particle_holder/particle_effect - -/turf/open/water/hot_spring/Initialize(mapload) - . = ..() - AddElement(/datum/element/lazy_fishing_spot, /datum/fish_source/icecat_hot_spring) - if(prob(60)) - particle_effect = new(src, /particles/hotspring_steam) - -/turf/open/water/hot_spring/Destroy() - QDEL_NULL(particle_effect) - return ..() - -/turf/open/water/hot_spring/Entered(atom/movable/arrived) - ..() - wash_atom(arrived) - wash_atom(loc) - -/// Cleans the given atom of whatever dirties it -/turf/open/water/hot_spring/proc/wash_atom(atom/nasty) - nasty.wash(CLEAN_WASH) - -/turf/open/water/hot_spring/Entered(atom/movable/arrived) - ..() - if(istype(arrived, /mob/living)) - hotspring_mood(arrived) - -/// Applies the hot water mood buff on the passed mob -/turf/open/water/hot_spring/proc/hotspring_mood(mob/living/swimmer) - swimmer.add_mood_event("hotspring", /datum/mood_event/hotspring/nerfed) - -// Steam particles for pairing with the hotsprings above - -/particles/hotspring_steam - icon = 'icons/effects/particles/smoke.dmi' - icon_state = list( - "steam_1" = 2, - "steam_2" = 2, - "steam_3" = 1, - ) - width = 64 - height = 64 - count = 5 - spawning = 0.2 - lifespan = 1 SECONDS - fade = 0.5 SECONDS - color = "#ffffff" - position = generator(GEN_BOX, list(-32,-32,0), list(32,32,0), NORMAL_RAND) - scale = generator(GEN_VECTOR, list(0.9,0.9), list(1.1,1.1), NORMAL_RAND) - drift = generator(GEN_VECTOR, list(-0.1,0), list(0.1,0.025), UNIFORM_RAND) - spin = generator(GEN_NUM, list(-15,15), NORMAL_RAND) - -// Fishing source for the above water turfs - -/datum/fish_source/icecat_hot_spring - fish_table = list( - /obj/item/fish/moonfish/dwarf = 5, - /obj/item/fish/needlefish = 10, - /obj/item/fish/armorfish = 10, - /obj/item/fish/chasm_crab/ice = 5, - /obj/item/stack/sheet/bone = 5, - ) - catalog_description = "Hot Springs" +/turf/open/water/hot_spring/icemoon + initial_gas_mix = ICEMOON_DEFAULT_ATMOS // The area diff --git a/modular_doppler/human_health_maximum/code/to_the_limit.dm b/modular_doppler/human_health_maximum/code/to_the_limit.dm new file mode 100644 index 0000000000000..1aac5502898c3 --- /dev/null +++ b/modular_doppler/human_health_maximum/code/to_the_limit.dm @@ -0,0 +1,4 @@ +/mob/living/carbon/human + max_stamina = 170 + maxHealth = 150 + health = 150 diff --git a/modular_doppler/kahraman_equipment/code/clothing/clothing.dm b/modular_doppler/kahraman_equipment/code/clothing/clothing.dm index e7ef49310e2cf..59d461f9877a1 100644 --- a/modular_doppler/kahraman_equipment/code/clothing/clothing.dm +++ b/modular_doppler/kahraman_equipment/code/clothing/clothing.dm @@ -8,8 +8,10 @@ icon_state = "jumpsuit" worn_icon = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi' supported_bodyshapes = list(BODYSHAPE_HUMANOID, BODYSHAPE_DIGITIGRADE) - bodyshape_icon_files = list(BODYSHAPE_HUMANOID_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi', - BODYSHAPE_DIGITIGRADE_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi') + bodyshape_icon_files = list( + BODYSHAPE_HUMANOID_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi', + BODYSHAPE_DIGITIGRADE_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi', + ) worn_icon_state = "jumpsuit" sensor_mode = SENSOR_COORDS random_sensor = FALSE @@ -193,6 +195,7 @@ icon = 'modular_doppler/kahraman_equipment/icons/clothes/clothing.dmi' icon_state = "mask" worn_icon = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi' + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION supported_bodyshapes = list(BODYSHAPE_HUMANOID, BODYSHAPE_SNOUTED) bodyshape_icon_files = list(BODYSHAPE_HUMANOID_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn.dmi', BODYSHAPE_SNOUTED_T = 'modular_doppler/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi') diff --git a/modular_doppler/kahraman_equipment/code/ore_thumper.dm b/modular_doppler/kahraman_equipment/code/ore_thumper.dm index 99b1833aabae4..7221c03e83504 100644 --- a/modular_doppler/kahraman_equipment/code/ore_thumper.dm +++ b/modular_doppler/kahraman_equipment/code/ore_thumper.dm @@ -89,7 +89,7 @@ if(!istype(get_turf(src), /turf/open/misc)) . += span_notice("It must be constructed on suitable terrain, like ash, snow, or sand.") . += span_notice("It must have a powered, wired connection running beneath it with [display_power(active_power_usage, convert = FALSE)] of excess power to function.") - . += span_notice("It will produce a box of materials after it has slammed [slam_jams_needed] times.") + . += span_notice("It will produce materials after it has slammed [slam_jams_needed] times.") . += span_notice("Currently, it has slammed [slam_jams] / [slam_jams_needed] times needed.") . += span_notice("It will stop producing resources if there are too many piles of ore near it.") . += span_notice("The thumper cannot work if it is too close to another thumper, needing at least [ore_spawn_range] spaces in all directions between it another thumper.") @@ -243,10 +243,10 @@ for(var/iteration in 1 to rand(2, 4)) var/turf/target_turf = pick(nearby_valid_turfs) -// var/obj/item/stack/new_ore = pick_weight(ore_weight_list) -// var/obj/new_ore_pile = new new_ore(target_turf, ore_spawn_values[new_ore.type]) + var/obj/item/stack/new_ore = pick_weight(ore_weight_list) + var/obj/new_ore_pile = new new_ore(target_turf, ore_spawn_values[new_ore.type]) new /obj/effect/temp_visual/mook_dust(target_turf) -// playsound(new_ore_pile, 'modular_nova/master_files/sound/effects/robot_sit.ogg', 25, TRUE) port tallborgs soon + playsound(new_ore_pile, 'modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg', 25, TRUE) slam_jams -= slam_jams_needed diff --git a/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm b/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm index 0ead8a75f6416..cc019598dc927 100644 --- a/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm +++ b/modular_doppler/kahraman_equipment/code/organic_printer_designs/equipment.dm @@ -22,17 +22,6 @@ RND_CATEGORY_AKHTER_EQUIPMENT, ) -/datum/design/frontier_medtech_belt - name = "Medical Technician Kit" - id = "frontier_medtech_belt" - build_type = BIOGENERATOR - materials = list(/datum/material/biomass = 200) - build_path = /obj/item/storage/backpack/duffelbag/deforest_paramedic - category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_AKHTER_EQUIPMENT, - ) - /datum/design/frontier_medkit name = "Frontier Medical Kit" id = "frontier_medkit" diff --git a/modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg b/modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg new file mode 100644 index 0000000000000..769d2d43b0b7f Binary files /dev/null and b/modular_doppler/kahraman_equipment/sounds/tallborg_sitting_down.ogg differ diff --git a/modular_doppler/loadout_categories/categories/backpacks.dm b/modular_doppler/loadout_categories/categories/backpacks.dm index 7a0427ec0334d..30222bab376d3 100644 --- a/modular_doppler/loadout_categories/categories/backpacks.dm +++ b/modular_doppler/loadout_categories/categories/backpacks.dm @@ -38,6 +38,10 @@ name = "Custom Duffelbag" item_path = /obj/item/storage/backpack/duffelbag/custom +/datum/loadout_item/backpack/adventurer + name = "Adventurer's Bandolier" + item_path = /obj/item/storage/backpack/satchel/crusader + /datum/loadout_item/backpack/duffel/industrial name = "Custom Industrial Duffelbag" item_path = /obj/item/storage/backpack/duffelbag/engineering/custom diff --git a/modular_doppler/loadout_categories/categories/belts.dm b/modular_doppler/loadout_categories/categories/belts.dm index 2faf0304cacf4..38694c991b551 100644 --- a/modular_doppler/loadout_categories/categories/belts.dm +++ b/modular_doppler/loadout_categories/categories/belts.dm @@ -129,10 +129,10 @@ name = "Frontier Med-kit" item_path = /obj/item/storage/medkit/frontier/stocked -/datum/loadout_item/belts/deforest_paramed - name = "Satchel Tech-kit" - item_path = /obj/item/storage/backpack/duffelbag/deforest_paramedic - /datum/loadout_item/belts/deforest_surgical name = "Firest Responder Med-kit" item_path = /obj/item/storage/backpack/duffelbag/deforest_surgical + +/datum/loadout_item/belts/crusader_belt + name = "Sword Belt & Sheath" + item_path = /obj/item/storage/belt/crusader diff --git a/modular_doppler/loadout_categories/categories/clothing.dm b/modular_doppler/loadout_categories/categories/clothing.dm index 83def820f323e..e8ef6ae501fde 100644 --- a/modular_doppler/loadout_categories/categories/clothing.dm +++ b/modular_doppler/loadout_categories/categories/clothing.dm @@ -47,6 +47,10 @@ name = "Marsian PLA Trenchcoat" item_path = /obj/item/clothing/suit/jacket/doppler/red_trench +/datum/loadout_item/suit/warm_coat + name = "Warm Coat" + item_path = /obj/item/clothing/suit/warm_coat + /* * SUITS / SUIT JACKETS */ @@ -327,14 +331,6 @@ name = "Hawaiian Shirt" item_path = /obj/item/clothing/suit/costume/hawaiian -/* -* MAID OUT WITH THE FIT -*/ - -/datum/loadout_item/suit/maid_costume - name = "Maid Costume" - item_path = /obj/item/clothing/under/costume/maid - /* * MISC */ diff --git a/modular_doppler/loadout_categories/categories/gloves.dm b/modular_doppler/loadout_categories/categories/gloves.dm index be338ebeb7042..b34943287a98f 100644 --- a/modular_doppler/loadout_categories/categories/gloves.dm +++ b/modular_doppler/loadout_categories/categories/gloves.dm @@ -73,8 +73,8 @@ item_path = /obj/item/clothing/gloves/radio /datum/loadout_item/gloves/maid_arm_covers - name = "Maid Costume" - item_path = /obj/item/clothing/gloves/maid + name = "Maid Arm Covers" + item_path = /obj/item/clothing/gloves/maid_arm_covers /datum/loadout_item/gloves/lalune_gloves name = "Elbow Gloves" diff --git a/modular_doppler/loadout_categories/categories/heads.dm b/modular_doppler/loadout_categories/categories/heads.dm index f18bc53bd7651..e7e8a83ebfce6 100644 --- a/modular_doppler/loadout_categories/categories/heads.dm +++ b/modular_doppler/loadout_categories/categories/heads.dm @@ -100,4 +100,4 @@ /datum/loadout_item/head/maid_headband name = "Maid Headband" - item_path = /obj/item/clothing/head/costume/maidheadband + item_path = /obj/item/clothing/head/maid_headband diff --git a/modular_doppler/loadout_categories/categories/masks.dm b/modular_doppler/loadout_categories/categories/masks.dm index 9b6d7fb1bdeca..ee13834e60cb2 100644 --- a/modular_doppler/loadout_categories/categories/masks.dm +++ b/modular_doppler/loadout_categories/categories/masks.dm @@ -75,3 +75,15 @@ /datum/loadout_item/mask/neck_gaiter name = "Neck Gaiter" item_path = /obj/item/clothing/mask/neck_gaiter + +/datum/loadout_item/mask/paper + name = "Paper Mask" + item_path = /obj/item/clothing/mask/paper + +/datum/loadout_item/mask/lollipop + name = "Lollipop" + item_path = /obj/item/food/lollipop + +/datum/loadout_item/mask/kitsune + name = "Kitsune Mask" + item_path = /obj/item/clothing/mask/kitsune diff --git a/modular_doppler/loadout_categories/categories/neck.dm b/modular_doppler/loadout_categories/categories/neck.dm index 298bffcd11a34..1dfa78c6261f7 100644 --- a/modular_doppler/loadout_categories/categories/neck.dm +++ b/modular_doppler/loadout_categories/categories/neck.dm @@ -25,3 +25,35 @@ /datum/loadout_item/neck/maid_neck_cover name = "Maid Neck Cover" item_path = /obj/item/clothing/neck/maid_neck_cover + +/datum/loadout_item/neck/collar + name = "Choker" + item_path = /obj/item/clothing/neck/human_petcollar/locked/choker + +/datum/loadout_item/neck/collar/bell + name = "Bell Collar" + item_path = /obj/item/clothing/neck/human_petcollar/locked/bell + +/datum/loadout_item/neck/collar/cross + name = "Cross Collar" + item_path = /obj/item/clothing/neck/human_petcollar/locked/cross + +/datum/loadout_item/neck/collar/holo + name = "Holocollar" + item_path = /obj/item/clothing/neck/human_petcollar/locked/holo + +/datum/loadout_item/neck/collar/cow + name = "Cowbell Collar" + item_path = /obj/item/clothing/neck/human_petcollar/locked/cow + +/datum/loadout_item/neck/collar/leather + name = "Leather Collar" + item_path = /obj/item/clothing/neck/human_petcollar/locked/leather + +/datum/loadout_item/neck/collar/spike + name = "Spiked Collar" + item_path = /obj/item/clothing/neck/human_petcollar/locked/spike + +/datum/loadout_item/neck/bowtie + name = "Bowtie (Colorable)" + item_path = /obj/item/clothing/neck/bowtie diff --git a/modular_doppler/loadout_categories/categories/undersuit.dm b/modular_doppler/loadout_categories/categories/undersuit.dm index 002af1dded7e7..debce213a9d44 100644 --- a/modular_doppler/loadout_categories/categories/undersuit.dm +++ b/modular_doppler/loadout_categories/categories/undersuit.dm @@ -89,6 +89,10 @@ name = "Jeans" item_path = /obj/item/clothing/under/pants/jeans +/datum/loadout_item/undersuit/pants/moto + name = "Moto Pants" + item_path = /obj/item/clothing/under/pants/moto_leggings + /datum/loadout_item/undersuit/pants/jeans/shorts name = "Jean Shorts" item_path = /obj/item/clothing/under/shorts/jeanshorts @@ -133,6 +137,54 @@ name = "Loincloth, Alt" item_path = /obj/item/clothing/under/dress/skirt/loincloth/loincloth_alt +/datum/loadout_item/undersuit/formal + name = "Pencilskirt with Shirt" + item_path = /obj/item/clothing/under/suit/pencil + +/datum/loadout_item/undersuit/formal/pencil + name = "Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/noshirt + +/datum/loadout_item/undersuit/formal/pencil/black_really + name = "Executive Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/black_really + +/datum/loadout_item/undersuit/formal/pencil/charcoal + name = "Charcoal Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/charcoal + +/datum/loadout_item/undersuit/formal/pencil/navy + name = "Navy Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/navy + +/datum/loadout_item/undersuit/formal/pencil/burgandy + name = "Burgandy Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/burgandy + +/datum/loadout_item/undersuit/formal/pencil/checkered + name = "Checkered Pencilskirt with Shirt" + item_path = /obj/item/clothing/under/suit/pencil/checkered + +/datum/loadout_item/undersuit/formal/pencil/checkered/noshirt + name = "Checkered Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/checkered/noshirt + +/datum/loadout_item/undersuit/formal/pencil/tan + name = "Tan Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/tan + +/datum/loadout_item/undersuit/formal/pencil/green + name = "Green Pencilskirt" + item_path = /obj/item/clothing/under/suit/pencil/green + +/datum/loadout_item/undersuit/formal/cowl_neck + name = "Cowl Neck Shirt & Trousers" + item_path = /obj/item/clothing/under/cowl_neck_shirt + +/datum/loadout_item/undersuit/formal/collared_shirt + name = "Collared Shirt & Trousers" + item_path = /obj/item/clothing/under/collared_shirt + /* * BUTTONDOWNS */ @@ -214,6 +266,10 @@ name = "Strapless Dress" item_path = /obj/item/clothing/under/dress/doppler/strapless +/datum/loadout_item/undersuit/dress/maid + name = "Maid Outfit" + item_path = /obj/item/clothing/under/maid_costume + /// JAPANESE/LUNAR BREAKER /datum/loadout_item/undersuit/dress/qipao @@ -292,6 +348,10 @@ name = "Colorable Jumpskirt" item_path = /obj/item/clothing/under/color/jumpskirt -/datum/loadout_item/under/jumpsuit/frontier +/datum/loadout_item/undersuit/jumpsuit/frontier name = "Frontier Jumpsuit" item_path = /obj/item/clothing/under/frontier_colonist + +/datum/loadout_item/undersuit/bunnysuit + name = "Bunny Suit" + item_path = /obj/item/clothing/under/costume/bunnysuit diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm index ddbc8f7f3fc60..fea4deedf5c84 100644 --- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_sets.dm @@ -67,4 +67,4 @@ /datum/greyscale_config/hypovial name = "Hypovial" icon_file = 'modular_doppler/modular_items/hyposprays/icons/vials.dmi' - json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/items/hypovial.json' \ No newline at end of file + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/items/hypovial.json' diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm index ee3ae3ed47251..0b9535e1db4b9 100644 --- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm @@ -63,6 +63,15 @@ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/shirt.dmi' json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/dagger_mantle_worn.json' +/datum/greyscale_config/warm_coat + name = "Warm Coat" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json' + +/datum/greyscale_config/warm_coat/worn + name = "Warm Coat (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi' + // Apron /datum/greyscale_config/apron diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm index f1e487e0ee474..dc009380a9320 100644 --- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_under.dm @@ -310,3 +310,48 @@ /datum/greyscale_config/long_skirt/worn name = "Long Skirt (Worn)" icon_file = 'modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi' + +/datum/greyscale_config/pencilskirt + name = "Pencilskirt" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json' + +/datum/greyscale_config/pencilskirt/worn + name = "Pencilskirt (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi' + +/datum/greyscale_config/pencilskirt_withshirt + name = "Pencilskirt + Shirt" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json' + +/datum/greyscale_config/pencilskirt_withshirt/worn + name = "Pencilskirt + Shirt (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi' + +/datum/greyscale_config/pencilskirt_checkers + name = "Checkered Pencilskirt" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json' + +/datum/greyscale_config/pencilskirt_checkers/worn + name = "Checkered Pencilskirt (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi' + +/datum/greyscale_config/pencilskirt_checkers_withshirt + name = "Checkered Pencilskirt + Shirt" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json' + +/datum/greyscale_config/pencilskirt_checkers_withshirt/worn + name = "Checkered Pencilskirt + Shirt (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi' + +/datum/greyscale_config/pencilskirt_withsuit + name = "Pencilskirt + Suit" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json' + +/datum/greyscale_config/pencilskirt_withsuit/worn + name = "Pencilskirt + Suit (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi' diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi new file mode 100644 index 0000000000000..8827aa69d66a4 Binary files /dev/null and b/modular_doppler/modular_cosmetics/GAGS/icons/mob/pencilskirt.dmi differ diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi index c56b9a3a11925..4e4f6b824a7e1 100644 Binary files a/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi and b/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi differ diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi new file mode 100644 index 0000000000000..2a5c15dec121b Binary files /dev/null and b/modular_doppler/modular_cosmetics/GAGS/icons/obj/pencilskirt.dmi differ diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi index 2707140ea05d9..cb9a0d415c43d 100644 Binary files a/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi and b/modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi differ diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json new file mode 100644 index 0000000000000..039254707b4b8 --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/suit/warm_coat.json @@ -0,0 +1,16 @@ +{ + "warm_coat": [ + { + "type": "icon_state", + "icon_state": "warm_coat", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "warm_coat_trim", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ] +} diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json new file mode 100644 index 0000000000000..23f0bbcb9f600 --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt.json @@ -0,0 +1,15 @@ +{ + "pencilskirt": [ + { + "type": "icon_state", + "icon_state": "pencilskirt_belt", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json new file mode 100644 index 0000000000000..99072525ab540 --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_bicol.json @@ -0,0 +1,40 @@ +{ + "pencilskirt_checkers": [ + { + "type": "icon_state", + "icon_state": "pencilskirt_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_belt", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_checkers", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ], + "pencilskirt_shirt": [ + { + "type": "icon_state", + "icon_state": "pencilskirt_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_belt", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_shirt", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ] +} diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json new file mode 100644 index 0000000000000..8ebb891af02d2 --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_quadcol.json @@ -0,0 +1,33 @@ +{ + "pencilskirt_suit": [ + { + "type": "icon_state", + "icon_state": "pencilskirt_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_belt", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_suit_base", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_suit_under", + "blend_mode": "overlay", + "color_ids": [ 3 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_suit_tie", + "blend_mode": "overlay", + "color_ids": [ 4 ] + } + ] +} diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json new file mode 100644 index 0000000000000..b555d45358944 --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/under/pencilskirt_tricol.json @@ -0,0 +1,27 @@ +{ + "pencilskirt_checkers_shirt": [ + { + "type": "icon_state", + "icon_state": "pencilskirt_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_checkers", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_belt", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pencilskirt_shirt", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ] +} diff --git a/modular_doppler/modular_cosmetics/code/belt/crusaderbelt.dm b/modular_doppler/modular_cosmetics/code/belt/crusaderbelt.dm new file mode 100644 index 0000000000000..5dd5f0c3ad6a5 --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/belt/crusaderbelt.dm @@ -0,0 +1,136 @@ +/obj/item/storage/belt/crusader //Belt + sheath combination - still only holds one sword at a time though + icon = 'modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi' + name = "sword belt" + desc = "Technically called a baldric, this can hold an assortment of equipment for whatever situation an adventurer may encounter; as well as having an attached sheath." + icon_state = "crusader_belt" + worn_icon_state = "crusader_belt" + inhand_icon_state = "utility" + w_class = WEIGHT_CLASS_BULKY //Cant fit a sheath in your bag + interaction_flags_click = NEED_DEXTERITY + +/obj/item/storage/belt/crusader/Initialize(mapload) + . = ..() + + create_storage( + max_slots = 2, + max_specific_storage = WEIGHT_CLASS_BULKY, //This makes sure swords and the pouches can fit in here - the whitelist keeps the bad stuff out + storage_type = /datum/storage/belt/crusader, + canhold = list( + /obj/item/storage/belt/storage_pouch, + /obj/item/forging/reagent_weapon/sword, + /obj/item/forging/reagent_weapon/katana, + /obj/item/forging/reagent_weapon/bokken, + /obj/item/forging/reagent_weapon/dagger, + /obj/item/melee/sabre, + /obj/item/claymore, + /obj/item/melee/cleric_mace, + /obj/item/knife, + /obj/item/melee/baton, + /obj/item/nullrod, //holds any subset of nullrod in the sheath-storage - - - + ), + canthold = list( // - - - except the second list's items (no fedora in the sheath) + /obj/item/nullrod/armblade, + /obj/item/nullrod/carp, + /obj/item/nullrod/chainsaw, + /obj/item/nullrod/bostaff, + /obj/item/nullrod/hammer, + /obj/item/nullrod/pitchfork, + /obj/item/nullrod/pride_hammer, + /obj/item/nullrod/spear, + /obj/item/nullrod/staff, + /obj/item/nullrod/fedora, + /obj/item/nullrod/godhand, + /obj/item/nullrod/staff, + /obj/item/nullrod/whip, + ), + ) + atom_storage.allow_big_nesting = TRUE // Lets the pouch work + AddElement(/datum/element/update_icon_updates_onmob) + +//Overrides normal dumping code to instead dump from the pouch item inside +/datum/storage/belt/crusader/dump_content_at(atom/dest_object, mob/dumping_mob) + var/atom/used_belt = parent + if(!used_belt) + return + var/obj/item/storage/belt/storage_pouch/pouch = locate() in real_location + if(!pouch) + pouch.balloon_alert(dumping_mob, "no pouch!") + return //oopsie!! If we don't have a pouch! You're fucked! + if(locked) + pouch.balloon_alert(dumping_mob, "locked!") + return + pouch.atom_storage.dump_content_at(dest_object, dumping_mob) + +/obj/item/storage/belt/crusader/item_ctrl_click(mob/user) //Makes ctrl-click also open the inventory, so that you can open it with full hands without dropping the sword + . = ..() + atom_storage.show_contents(user) + return CLICK_ACTION_SUCCESS + +/obj/item/storage/belt/crusader/click_alt(mob/user) //This is basically the same as the normal sheath, but because there's always an item locked in the first slot it uses the second slot for swords + if(contents.len == 2) + var/obj/item/drawn_item = contents[2] + add_fingerprint(user) + playsound(src, 'sound/items/unsheath.ogg', 50, TRUE, -5) + if(!user.put_in_hands(drawn_item)) + to_chat(user, span_notice("You fumble for [drawn_item] and it falls on the floor.")) + update_appearance() + return CLICK_ACTION_SUCCESS + user.visible_message(span_notice("[user] takes [drawn_item] out of [src]."), span_notice("You take [drawn_item] out of [src].")) + update_appearance() + else + to_chat(user, span_warning("[src] is empty!")) + return CLICK_ACTION_SUCCESS + +/obj/item/storage/belt/crusader/update_icon(updates) + if(contents.len == 2) //Checks for a sword/rod in the sheath slot, changes the sprite accordingly + icon_state = "crusader_belt_sheathed" + worn_icon_state = "crusader_belt_sheathed" + else + icon_state = "crusader_belt" + worn_icon_state = "crusader_belt" + . = ..() + +/obj/item/storage/belt/crusader/examine(mob/user) + . = ..() + .+= span_notice("Ctrl-click it to easily open its inventory.") + if(contents.len == 2) //If there's no sword/rod in the sheath slot it doesnt display the alt-click instruction + . += span_notice("Alt-click it to quickly draw the blade.") + return + +/obj/item/storage/belt/crusader/PopulateContents() + . = ..() + new /obj/item/storage/belt/storage_pouch(src) + +/obj/item/storage/belt/storage_pouch //seperate mini-storage inside the belt, leaving room for only one sword. Inspired by a (very poorly implemented) belt on Desert Rose + icon = 'modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi' + name = "storage pouch" + desc = span_notice("Click on this to open your belt's inventory!") + icon_state = "storage_pouch_icon" + worn_icon_state = "storage_pouch_icon" + w_class = WEIGHT_CLASS_BULKY //Still cant put it in your bags, it's technically a belt + anchored = 1 //Dont want people taking it out with their hands + +/obj/item/storage/belt/storage_pouch/attack_hand(mob/user, list/modifiers) //Opens the bag on click - considering it's already anchored, this makes it function similar to how ghosts can open all nested inventories + . = ..() + + atom_storage.show_contents(user) + +/obj/item/storage/belt/storage_pouch/Initialize(mapload) + . = ..() + + atom_storage.max_slots = 6 + atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL //Rather than have a huge whitelist, the belt can simply hold anything a pocket can hold - Can easily be changed if it somehow becomes an issue + +/datum/crafting_recipe/crusader_belt + name = "Sword Belt and Sheath" + result = /obj/item/storage/belt/crusader + reqs = list(/obj/item/storage/belt/utility = 1, /obj/item/stack/sheet/leather = 3, /obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/mineral/gold = 1) + tool_behaviors = list(TOOL_WIRECUTTER, TOOL_SCREWDRIVER, TOOL_WELDER) //To cut the leather and fasten/weld the sheath detailing + time = 30 + category = CAT_CLOTHING + +/datum/crafting_recipe/crusader_belt/on_craft_completion(mob/user, atom/result) + var/obj/item/storage/belt/crusader/crusader_belt = result + crusader_belt.PopulateContents() diff --git a/modular_doppler/modular_cosmetics/code/face/basemasks.dm b/modular_doppler/modular_cosmetics/code/face/basemasks.dm index dfbce549c9ee1..55084bc277128 100644 --- a/modular_doppler/modular_cosmetics/code/face/basemasks.dm +++ b/modular_doppler/modular_cosmetics/code/face/basemasks.dm @@ -6,3 +6,7 @@ /obj/item/clothing/mask/bandana supported_bodyshapes = null bodyshape_icon_files = null + +/obj/item/clothing/mask/kitsune + supported_bodyshapes = null + bodyshape_icon_files = null diff --git a/modular_doppler/modular_cosmetics/code/face/masks.dm b/modular_doppler/modular_cosmetics/code/face/masks.dm index c2a1f97c5301a..e05be6d5826f7 100644 --- a/modular_doppler/modular_cosmetics/code/face/masks.dm +++ b/modular_doppler/modular_cosmetics/code/face/masks.dm @@ -39,3 +39,15 @@ . += span_notice("[src] can be worn above or below your suit. Alt-Right-click to toggle.") . += span_notice("Alt-click [src] to adjust it.") +/obj/item/clothing/mask/neck_gaiter/cybersun + name = "advanced neck gaiter" + desc = "A glistening neck accessory, colored in a black pinstripe texture. The material is an attempt to imitate 'heatsilk' technology, but it is barely any laser-reflective. Has a small respirator to be used with internals." + unique_death = 'modular_doppler/modular_sounds/sound/machines/hacked.ogg' + greyscale_colors = "#333333" + var/hit_reflect_chance = 5 // don't count on it, operative + +/obj/item/clothing/mask/neck_gaiter/cybersun/IsReflect(def_zone) + if(def_zone in list(BODY_ZONE_HEAD)) + return FALSE + if (prob(hit_reflect_chance)) + return TRUE diff --git a/modular_doppler/modular_cosmetics/code/face/papermask.dm b/modular_doppler/modular_cosmetics/code/face/papermask.dm new file mode 100644 index 0000000000000..8d2fee1647233 --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/face/papermask.dm @@ -0,0 +1,137 @@ +/datum/action/item_action/adjust/papermask + name = "Adjust paper mask" + desc = "LMB: Change mask face. RMB: Adjust mask." + +/datum/action/item_action/adjust/papermask/Trigger(trigger_flags) + . = ..() + if(!.) + return + var/obj/item/clothing/mask/paper/paper_mask = target + if(trigger_flags & TRIGGER_SECONDARY_ACTION) + paper_mask.adjust_mask(usr) + else + paper_mask.reskin_obj(usr) + +/obj/item/clothing/mask/paper + name = "paper mask" + desc = "It's true. Once you wear a mask for so long, you forget about who you are. Wonder if that happens with shitty paper ones." + icon = 'modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi' + icon_state = "mask_paper" + clothing_flags = MASKINTERNALS + flags_inv = HIDEFACIALHAIR | HIDESNOUT + interaction_flags_click = NEED_DEXTERITY + w_class = WEIGHT_CLASS_SMALL + supported_bodyshapes = null + bodyshape_icon_files = null + actions_types = list(/datum/action/item_action/adjust/papermask) + unique_reskin = list( + "Blank" = "mask_paper", + "Neutral" = "mask_neutral", + "Eye" = "mask_eye", + "Sleep" = "mask_sleep", + "Heart" = "mask_heart", + "Core" = "mask_core", + "Plus" = "mask_plus", + "Square" = "mask_square", + "Bullseye" = "mask_bullseye", + "Vertical" = "mask_vertical", + "Horizontal" = "mask_horizontal", + "X" = "mask_x", + "Bug" = "mask_bug", + "Double" = "mask_double", + "Mark" = "mask_mark", + "Line" = "mask_line", + "Minus" = "mask_minus", + "Four" = "mask_four", + "Diamond" = "mask_diamond", + "Cat" = "mask_cat", + "Big Eye" = "mask_bigeye", + "Good" = "mask_good", + "Bad" = "mask_bad", + "Happy" = "mask_happy", + "Sad" = "mask_sad", + ) + + /// Whether or not the mask is currently being layered over (or under!) hair. FALSE/null means the mask is layered over the hair (this is how it starts off). + var/wear_hair_over + /// Whether or not the strap is currently hidden or visible + var/strap_hidden + +/obj/item/clothing/mask/paper/Initialize(mapload) + . = ..() + if(wear_hair_over) + alternate_worn_layer = BACK_LAYER + +/obj/item/clothing/mask/paper/worn_overlays(mutable_appearance/standing, isinhands, icon_file) + . = ..() + if(!strap_hidden) + . += mutable_appearance(icon_file, "mask_paper_strap") + +/obj/item/clothing/mask/paper/click_alt_secondary(mob/user) + adjust_mask(user) + +/obj/item/clothing/mask/paper/item_ctrl_click(mob/user) + adjust_strap(user) + return CLICK_ACTION_SUCCESS + +/obj/item/clothing/mask/paper/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + context[SCREENTIP_CONTEXT_ALT_LMB] = "Change Mask Face" + context[SCREENTIP_CONTEXT_ALT_RMB] = "Adjust Mask" + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Hide/Show Strap" + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/clothing/mask/paper/reskin_obj(mob/user) + if(!user.is_holding_item_of_type(/obj/item/pen)) + balloon_alert(user, "must be holding a pen!") + return + + . = ..() + + var/mob/living/carbon/carbon_user + if(iscarbon(user)) + carbon_user = user + if(carbon_user && carbon_user.wear_mask == src) + carbon_user.update_worn_mask() + + current_skin = null //so we can infinitely reskin + +/obj/item/clothing/mask/paper/proc/adjust_mask(mob/living/carbon/human/user) + if(!istype(user)) + return + if(!user.incapacitated) + var/is_worn = user.wear_mask == src + wear_hair_over = !wear_hair_over + if(wear_hair_over) + alternate_worn_layer = BACK_LAYER + to_chat(user, "You [is_worn ? "" : "will "]sweep your hair over the mask.") + else + alternate_worn_layer = initial(alternate_worn_layer) + to_chat(user, "You [is_worn ? "" : "will "]sweep your hair under the mask.") + + user.update_worn_mask() + +/obj/item/clothing/mask/paper/proc/adjust_strap(mob/living/carbon/human/user) + if(!istype(user)) + return + if(!user.incapacitated) + var/is_worn = user.wear_mask == src + strap_hidden = !strap_hidden + to_chat(user, "You [is_worn ? "" : "will "][strap_hidden ? "hide" : "show"] the mask strap.") + + user.update_worn_mask() + +// Because alternate_worn_layer can potentially get reset on unequipping the mask (ex: for 'Top' snouts), let's make sure we don't lose it our settings +/obj/item/clothing/mask/paper/dropped(mob/living/carbon/human/user) + var/prev_alternate_worn_layer = alternate_worn_layer + . = ..() + alternate_worn_layer = prev_alternate_worn_layer + +/datum/crafting_recipe/paper_mask + name = "Paper Mask" + result = /obj/item/clothing/mask/paper + time = 30 + tool_behaviors = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/paper = 5) + category = CAT_CLOTHING diff --git a/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm b/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm index 727cfdd4b964b..889eada8dfd05 100644 --- a/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm +++ b/modular_doppler/modular_cosmetics/code/garment_bag_overrides.dm @@ -7,10 +7,10 @@ /obj/item/storage/bag/garment/hop/PopulateContents() . = ..() - new /obj/item/clothing/under/misc/doppler_uniform/service(src) - new /obj/item/clothing/neck/doppler_mantle/service(src) - new /obj/item/clothing/head/beret/doppler_command/service(src) - new /obj/item/clothing/head/utility/hardhat/welding/doppler_command/service(src) + new /obj/item/clothing/under/misc/doppler_uniform/command(src) + new /obj/item/clothing/neck/doppler_mantle/command(src) + new /obj/item/clothing/head/beret/doppler_command/command(src) + new /obj/item/clothing/head/utility/hardhat/welding/doppler_command/command(src) /obj/item/storage/bag/garment/hos/PopulateContents() . = ..() diff --git a/modular_doppler/modular_cosmetics/code/hands/gloves.dm b/modular_doppler/modular_cosmetics/code/hands/gloves.dm index 294b0488871ae..acb210b6b4f57 100644 --- a/modular_doppler/modular_cosmetics/code/hands/gloves.dm +++ b/modular_doppler/modular_cosmetics/code/hands/gloves.dm @@ -23,3 +23,14 @@ greyscale_config_worn = /datum/greyscale_config/armwraps/worn greyscale_colors = "#FFFFFF" flags_1 = IS_PLAYER_COLORABLE_1 + +/obj/item/clothing/gloves/maid_arm_covers + name = "maid arm covers" + desc = "Maid in China." + icon_state = "maid_arm_covers" + greyscale_config = /datum/greyscale_config/maid_arm_covers + greyscale_config_worn = /datum/greyscale_config/maid_arm_covers/worn + greyscale_config_inhand_left = null + greyscale_config_inhand_right = null + greyscale_colors = "#7b9ab5#edf9ff" + flags_1 = IS_PLAYER_COLORABLE_1 diff --git a/modular_doppler/modular_cosmetics/code/hands/special.dm b/modular_doppler/modular_cosmetics/code/hands/special.dm new file mode 100644 index 0000000000000..c75f88042e20b --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/hands/special.dm @@ -0,0 +1,7 @@ +/obj/item/clothing/gloves/botanic_leather/janitor + name = "janitor gloves" + desc = "These rubber gloves protect against thorns, barbs, prickles, glass shards and any other threats that might be found in the station's trash. They're also quite warm." + icon = 'modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi' + icon_state = "janitor_doppler" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi' + inhand_icon_state = null diff --git a/modular_doppler/modular_cosmetics/code/hats/civilian.dm b/modular_doppler/modular_cosmetics/code/hats/civilian.dm new file mode 100644 index 0000000000000..093a761d6cccc --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/hats/civilian.dm @@ -0,0 +1,7 @@ +/obj/item/clothing/head/hats/janitor_doppler + name = "janitor cap" + desc = "A regal purple cap to keep your head clean as you clean the filthy." + icon = 'modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi' + icon_state = "janitor_doppler" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi' + inhand_icon_state = "greyscale_softcap" diff --git a/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm b/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm index 511494d3fd879..03dae2a276706 100644 --- a/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm +++ b/modular_doppler/modular_cosmetics/code/hats/doppler_command_hats.dm @@ -1,66 +1,54 @@ +// Cool firehelmets + +/obj/item/clothing/head/utility/hardhat/welding + /// If we use a special icon file for the welding mask overlay + var/mask_overlay_icon = null + /obj/item/clothing/head/utility/hardhat/welding/doppler_command - name = "generic doppler command hardhat" - desc = "You shouldn't be seeing this. Yell at Naaka." + name = "generic command hardhat" + desc = "A heavy-duty hardhat for protecting the heads of the heads when everything starts to go wrong." icon = 'modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi' worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi' resistance_flags = FIRE_PROOF | ACID_PROOF icon_state = null hat_type = null + mask_overlay_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi' /obj/item/clothing/head/utility/hardhat/welding/doppler_command/medical - name = "doppler medical hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." + name = "medical command hardhat" icon_state = "hardhat0_med" hat_type = "med" /obj/item/clothing/head/utility/hardhat/welding/doppler_command/science - name = "doppler science hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." + name = "science command hardhat" icon_state = "hardhat0_sci" hat_type = "sci" /obj/item/clothing/head/utility/hardhat/welding/doppler_command/engineering - name = "doppler engineering hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." + name = "engineering command hardhat" icon_state = "hardhat0_eng" hat_type = "eng" /obj/item/clothing/head/utility/hardhat/welding/doppler_command/cargo - name = "doppler cargo hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." + name = "supply command hardhat" icon_state = "hardhat0_cargo" hat_type = "cargo" -/obj/item/clothing/head/utility/hardhat/welding/doppler_command/service - name = "doppler service hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." - icon_state = "hardhat0_serv" - hat_type = "serv" - /obj/item/clothing/head/utility/hardhat/welding/doppler_command/command - name = "doppler command hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." + name = "command hardhat" icon_state = "hardhat0_cmd" hat_type = "cmd" -/obj/item/clothing/head/utility/hardhat/welding/doppler_command/performer - name = "doppler performer hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." - icon_state = "hardhat0_perf" - hat_type = "perf" - /obj/item/clothing/head/utility/hardhat/welding/doppler_command/security - name = "doppler security hardhat" - desc = "Heavy-duty headgear demarkated in standard command colors. A special of Doppler Shift-series stations." + name = "security command hardhat" icon_state = "hardhat0_sec" hat_type = "sec" +/// Beret but cooler - -/// Beret breaker /obj/item/clothing/head/beret/doppler_command - name = "generic doppler command beret" - desc = "You shouldn't be seeing this. Yell at Naaka." + name = "generic command beret" + desc = "A slim beret denoting the wearer as the command for some aspect of the station." icon = 'modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi' worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi' icon_state = null @@ -72,41 +60,25 @@ flags_1 = NONE /obj/item/clothing/head/beret/doppler_command/medical - name = "doppler medical beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." + name = "medical command beret" icon_state = "doppler_med" /obj/item/clothing/head/beret/doppler_command/science - name = "doppler science beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." + name = "science command beret" icon_state = "doppler_sci" /obj/item/clothing/head/beret/doppler_command/engineering - name = "doppler engineering beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." + name = "engineering command beret" icon_state = "doppler_eng" /obj/item/clothing/head/beret/doppler_command/cargo - name = "doppler cargo beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." + name = "supply command beret" icon_state = "doppler_cargo" -/obj/item/clothing/head/beret/doppler_command/service - name = "doppler service beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." - icon_state = "doppler_serv" - /obj/item/clothing/head/beret/doppler_command/command - name = "doppler command beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." + name = "command beret" icon_state = "doppler_cmd" -/obj/item/clothing/head/beret/doppler_command/performer - name = "doppler performer beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." - icon_state = "doppler_perf" - /obj/item/clothing/head/beret/doppler_command/security - name = "doppler security beret" - desc = "A cozy, fashionable beret used to connotate command staff on Doppler Shift-series stations." + name = "security command beret" icon_state = "doppler_sec" diff --git a/modular_doppler/modular_cosmetics/code/head/head.dm b/modular_doppler/modular_cosmetics/code/head/head.dm index 87a3c4c174a3d..38454578fa78a 100644 --- a/modular_doppler/modular_cosmetics/code/head/head.dm +++ b/modular_doppler/modular_cosmetics/code/head/head.dm @@ -24,3 +24,12 @@ /obj/item/clothing/head/costume/papakha/white icon_state = "papakha_white" + +/obj/item/clothing/head/maid_headband + name = "maid headband" + desc = "Just like from one of those Chinese cartoons!" + icon_state = "maid_headband" + greyscale_config = /datum/greyscale_config/maid_headband + greyscale_config_worn = /datum/greyscale_config/maid_headband/worn + greyscale_colors = "#edf9ff" + flags_1 = IS_PLAYER_COLORABLE_1 diff --git a/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm b/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm index 1dae6fcc99ceb..157179f2d697a 100644 --- a/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm +++ b/modular_doppler/modular_cosmetics/code/neck/doppler_command_mantles.dm @@ -1,49 +1,34 @@ /obj/item/clothing/neck/doppler_mantle - name = "generic doppler mantle" - desc = "You shouldn't be seeing this. Yell at Naaka." + name = "generic command mantle" + desc = "A command mantle made of fire and acid proof materials to protect the wearer." icon = 'modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi' worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi' icon_state = "" inhand_icon_state = null w_class = WEIGHT_CLASS_SMALL body_parts_covered = CHEST|ARMS + resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/neck/doppler_mantle/medical - name = "doppler medical mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." + name = "medical command mantle" icon_state = "doppler_med" /obj/item/clothing/neck/doppler_mantle/science - name = "doppler science mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." + name = "science command mantle" icon_state = "doppler_sci" /obj/item/clothing/neck/doppler_mantle/engineering - name = "doppler engineering mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." + name = "engineering command mantle" icon_state = "doppler_eng" /obj/item/clothing/neck/doppler_mantle/cargo - name = "doppler cargo mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." + name = "supply command mantle" icon_state = "doppler_cargo" -/obj/item/clothing/neck/doppler_mantle/service - name = "doppler service mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." - icon_state = "doppler_serv" - /obj/item/clothing/neck/doppler_mantle/command - name = "doppler command mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." + name = "command mantle" icon_state = "doppler_cmd" -/obj/item/clothing/neck/doppler_mantle/performer - name = "doppler performer mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." - icon_state = "doppler_perf" - /obj/item/clothing/neck/doppler_mantle/security - name = "doppler security mantle" - desc = "A stylish command mantle from Doppler Shift-series stations." + name = "security command mantle" icon_state = "doppler_sec" diff --git a/modular_doppler/modular_cosmetics/code/shoes/galoshes.dm b/modular_doppler/modular_cosmetics/code/shoes/galoshes.dm new file mode 100644 index 0000000000000..a4174b2162829 --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/shoes/galoshes.dm @@ -0,0 +1,6 @@ +/obj/item/clothing/shoes/galoshes/doppler + name = "purple galoshes" + desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces." + icon = 'modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi' + icon_state = "galoshes_doppler" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi' diff --git a/modular_doppler/modular_cosmetics/code/storage/backpacks.dm b/modular_doppler/modular_cosmetics/code/storage/backpacks.dm index 5037e5415bc02..9a911bb065555 100644 --- a/modular_doppler/modular_cosmetics/code/storage/backpacks.dm +++ b/modular_doppler/modular_cosmetics/code/storage/backpacks.dm @@ -32,6 +32,23 @@ greyscale_config_worn = /datum/greyscale_config/backpack/satchel/worn flags_1 = IS_PLAYER_COLORABLE_1 +/obj/item/storage/backpack/satchel/crusader //Not very special, really just a satchel texture + icon = 'modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi' + name = "adventurer's bandolier" + desc = "A bandolier-satchel combination for holding all your dungeon loot." + icon_state = "crusader_bandolier" + inhand_icon_state = "explorerpack" + w_class = WEIGHT_CLASS_BULKY + +/datum/crafting_recipe/crusader_satchel + name = "Adventurer's Bandolier" + result = /obj/item/storage/backpack/satchel/crusader + reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/leather = 1) //Cheap because it's really just a re-texture of the satchel + tool_behaviors = list(TOOL_WIRECUTTER) + time = 15 + category = CAT_CLOTHING + // duffelbags /obj/item/storage/backpack/duffelbag/custom name = "custom duffelbag" diff --git a/modular_doppler/modular_cosmetics/code/suits/jacket.dm b/modular_doppler/modular_cosmetics/code/suits/jacket.dm index ad3490770d5db..980b4ad9e9719 100644 --- a/modular_doppler/modular_cosmetics/code/suits/jacket.dm +++ b/modular_doppler/modular_cosmetics/code/suits/jacket.dm @@ -281,3 +281,15 @@ /obj/item/clothing/suit/jacket/doppler/red_trench/Initialize(mapload) . = ..() create_storage(storage_type = /datum/storage/pockets/jacket/jumbo) + +/obj/item/clothing/suit/warm_coat + name = "warm coat" + desc = "A long insulated coat with fur, it looks quite comfortable." + icon_state = "warm_coat" + greyscale_config = /datum/greyscale_config/warm_coat + greyscale_config_worn = /datum/greyscale_config/warm_coat/worn + greyscale_colors = "#7a5f4f#d9cec7" + flags_1 = IS_PLAYER_COLORABLE_1 + cold_protection = CHEST|GROIN|ARMS + body_parts_covered = CHEST|GROIN|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT diff --git a/modular_doppler/modular_cosmetics/code/suits/misc.dm b/modular_doppler/modular_cosmetics/code/suits/misc.dm index ecfb8d0af9df5..c020752e97c27 100644 --- a/modular_doppler/modular_cosmetics/code/suits/misc.dm +++ b/modular_doppler/modular_cosmetics/code/suits/misc.dm @@ -10,3 +10,13 @@ greyscale_config = /datum/greyscale_config/apron greyscale_config_worn = /datum/greyscale_config/apron/worn flags_1 = IS_PLAYER_COLORABLE_1 + +// Janitor +/obj/item/clothing/suit/apron/janitor_cloak + name = "waterproof poncho" + desc = "A transparent, waterproof cloak for your cleaning needs." + icon = 'modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi' + icon_state = "janicloak" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi' + inhand_icon_state = null + body_parts_covered = CHEST|GROIN|ARMS diff --git a/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm b/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm index 59148de8721bc..3d6ee5ae76549 100644 --- a/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm +++ b/modular_doppler/modular_cosmetics/code/under/doppler_uniforms.dm @@ -201,3 +201,27 @@ else new /obj/item/clothing/under/misc/doppler_uniform/standard/suit/overalls/colored(loc) return INITIALIZE_HINT_QDEL + +// Doppla janitor uniforms + +/obj/item/clothing/under/rank/civilian/janitor/doppler + name = "janitor uniform" + desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." + icon = 'modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi' + icon_state = "janitor_doppler" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi' + inhand_icon_state = "janitor" + body_parts_covered = CHEST|GROIN + can_adjust = TRUE + alt_covers_chest = TRUE + +/obj/item/clothing/under/rank/civilian/janitor/doppler_ct + name = "janitor crop top" + desc = "It's the unofficial uniform of the station's janitor. It has minor protection from biohazards." + icon = 'modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi' + icon_state = "janitor_doppler_ct" + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi' + inhand_icon_state = "janitor" + body_parts_covered = CHEST|GROIN + can_adjust = TRUE + alt_covers_chest = TRUE diff --git a/modular_doppler/modular_cosmetics/code/under/dresses.dm b/modular_doppler/modular_cosmetics/code/under/dresses.dm index f3ca60eecbcbc..83bf0abe3e947 100644 --- a/modular_doppler/modular_cosmetics/code/under/dresses.dm +++ b/modular_doppler/modular_cosmetics/code/under/dresses.dm @@ -49,7 +49,14 @@ desc = "A fluffy pink tutu." icon_state = "pinktutu" - +/obj/item/clothing/under/maid_costume + name = "maid costume" + desc = "Maid in China." + icon_state = "maid_costume" + greyscale_config = /datum/greyscale_config/maid_costume + greyscale_config_worn = /datum/greyscale_config/maid_costume/worn + greyscale_colors = "#7b9ab5#edf9ff" + flags_1 = IS_PLAYER_COLORABLE_1 /* * LUNAR AND JAPANESE CLOTHES diff --git a/modular_doppler/modular_cosmetics/code/under/formal.dm b/modular_doppler/modular_cosmetics/code/under/formal.dm new file mode 100644 index 0000000000000..86d63a393a2fe --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/under/formal.dm @@ -0,0 +1,68 @@ +/obj/item/clothing/under/suit/pencil + name = "pencilskirt and shirt" + desc = "A clean shirt with a tight-fitting pencilskirt." + icon_state = "pencilskirt_shirt" + female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY + greyscale_colors = "#37373e#ffffff" + greyscale_config = /datum/greyscale_config/pencilskirt_withshirt + greyscale_config_worn = /datum/greyscale_config/pencilskirt_withshirt/worn + flags_1 = IS_PLAYER_COLORABLE_1 + +/obj/item/clothing/under/suit/pencil/noshirt + name = "pencilskirt" + desc = "A tight-fitting pencilskirt, perfect to augment an undershirt." + icon_state = "pencilskirt" + greyscale_colors = "#37373e" + greyscale_config = /datum/greyscale_config/pencilskirt + greyscale_config_worn = /datum/greyscale_config/pencilskirt/worn + body_parts_covered = GROIN|LEGS + +/obj/item/clothing/under/suit/pencil/charcoal + name = "charcoal pencilskirt" + desc = "A clean white shirt with a tight-fitting charcoal pencilskirt." + greyscale_colors = "#303030#ffffff" + +/obj/item/clothing/under/suit/pencil/navy + name = "navy pencilskirt" + desc = "A clean white shirt with a tight-fitting navy-blue pencilskirt." + greyscale_colors = "#112334#ffffff" + +/obj/item/clothing/under/suit/pencil/burgandy + name = "burgandy pencilskirt" + desc = "A clean white shirt with a tight-fitting burgandy-red pencilskirt." + greyscale_colors = "#3e1111#ffffff" + +/obj/item/clothing/under/suit/pencil/tan + name = "tan pencilskirt" + desc = "A clean white shirt with a tight-fitting tan pencilskirt." + greyscale_colors = "#8b7458#ffffff" + +/obj/item/clothing/under/suit/pencil/green + name = "green pencilskirt" + desc = "A clean white shirt with a tight-fitting green pencilskirt." + greyscale_colors = "#113e20#ffffff" + +/obj/item/clothing/under/suit/pencil/black_really + name = "executive pencilskirt" + desc = "A sleek suit with a tight-fitting pencilskirt." + icon_state = "pencilskirt_suit" + greyscale_colors = "#37373e#37373e#ffffff#ac3232" + greyscale_config = /datum/greyscale_config/pencilskirt_withsuit + greyscale_config_worn = /datum/greyscale_config/pencilskirt_withsuit/worn + +/obj/item/clothing/under/suit/pencil/checkered + name = "checkered pencilskirt and shirt" + desc = "A clean shirt with a tight-fitting checkered pencilskirt." + icon_state = "pencilskirt_checkers_shirt" + greyscale_colors = "#37373e#232323#ffffff" + greyscale_config = /datum/greyscale_config/pencilskirt_checkers_withshirt + greyscale_config_worn = /datum/greyscale_config/pencilskirt_checkers_withshirt/worn + +/obj/item/clothing/under/suit/pencil/checkered/noshirt + name = "checkered pencilskirt" + desc = "A tight-fitting checkered pencilskirt." + icon_state = "pencilskirt_checkers" + greyscale_colors = "#37373e#232323" + greyscale_config = /datum/greyscale_config/pencilskirt_checkers + greyscale_config_worn = /datum/greyscale_config/pencilskirt_checkers/worn + body_parts_covered = GROIN|LEGS diff --git a/modular_doppler/modular_cosmetics/code/under/miscellania.dm b/modular_doppler/modular_cosmetics/code/under/miscellania.dm index e23b3609480a3..cd1528664c6a2 100644 --- a/modular_doppler/modular_cosmetics/code/under/miscellania.dm +++ b/modular_doppler/modular_cosmetics/code/under/miscellania.dm @@ -34,6 +34,8 @@ desc = "De riguer for techno classicists, these extreme wide leg pants come back into style every \ now and then. This pair has generous onboard storage." icon_state = "big_pants" + supported_bodyshapes = null + bodyshape_icon_files = null greyscale_config = /datum/greyscale_config/big_pants greyscale_config_worn = /datum/greyscale_config/big_pants/worn greyscale_colors = "#874f16" @@ -55,3 +57,14 @@ /obj/item/clothing/under/misc/gear_harness/Initialize(mapload) . = ..() allowed += GLOB.colonist_suit_allowed + +/obj/item/clothing/under/costume/bunnysuit + name = "bunny suit" + desc = "Makes the wearer more attractive; even and especially men." + icon_state = "bunnysuit" + icon = 'modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi' + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + body_parts_covered = CHEST|GROIN + can_adjust = TRUE + alt_covers_chest = FALSE diff --git a/modular_doppler/modular_cosmetics/code/uniform_overrides.dm b/modular_doppler/modular_cosmetics/code/uniform_overrides.dm index 9275f59afdf51..85a7587216eef 100644 --- a/modular_doppler/modular_cosmetics/code/uniform_overrides.dm +++ b/modular_doppler/modular_cosmetics/code/uniform_overrides.dm @@ -5,3 +5,8 @@ /datum/colored_assistant/random jumpsuits = list(/obj/item/clothing/under/misc/doppler_uniform/standard/suit/overalls/random) jumpskirts = list(/obj/item/clothing/under/misc/doppler_uniform/standard/suit/overalls/random) // DITTO: see above + +/datum/outfit/job/janitor + uniform = /obj/item/clothing/under/rank/civilian/janitor/doppler + suit = /obj/item/clothing/suit/apron/janitor_cloak + gloves = /obj/item/clothing/gloves/botanic_leather/janitor diff --git a/modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi b/modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi new file mode 100644 index 0000000000000..55d626f4c7b5c Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/belt/crusaderbelt.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi b/modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi new file mode 100644 index 0000000000000..da545a246bfe3 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/face/papermask.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi b/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi index dd650ffcf8209..4fe32e363c2fd 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi and b/modular_doppler/modular_cosmetics/icons/mob/hands/gloves.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi index 5380331dec63c..d35fc86f23462 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi and b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hardhats.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi index 1966d0ab836d6..c2ac9f2de5f7d 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi and b/modular_doppler/modular_cosmetics/icons/mob/head/doppler_command_hats.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi new file mode 100644 index 0000000000000..9cbfd2fb08db3 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/head/hats.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi b/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi index d498a63f5b507..2b42a8a04307c 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi and b/modular_doppler/modular_cosmetics/icons/mob/neck/doppler_mantles.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi b/modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi new file mode 100644 index 0000000000000..1eb4e350043ad Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/shoes/working.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi b/modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi new file mode 100644 index 0000000000000..fff67bff249a1 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/storage/crusaderbandolier.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi b/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi index 364131dc895ac..ba04f18237553 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi and b/modular_doppler/modular_cosmetics/icons/mob/suit/labcoat_digi.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi b/modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi new file mode 100644 index 0000000000000..06771ea720981 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/suit/working.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi b/modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi new file mode 100644 index 0000000000000..4e48b7abb1f80 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/mob/under/janitor_my_beloved.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi b/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi index 7bebe8b30d71d..cdb1c7091eeb6 100644 Binary files a/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi and b/modular_doppler/modular_cosmetics/icons/mob/under/miscellania.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi b/modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi new file mode 100644 index 0000000000000..11a4df9127fda Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/belt/crusaderbelt.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi b/modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi new file mode 100644 index 0000000000000..6680c414bfb55 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/face/papermask.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi b/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi index 867d49a9d11b6..0f164baaba1ac 100644 Binary files a/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi and b/modular_doppler/modular_cosmetics/icons/obj/hands/gloves.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi index bf6428f794234..5e66911e26137 100644 Binary files a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi and b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hardhats.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi index c6b94226e6d73..9f8eee4144746 100644 Binary files a/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi and b/modular_doppler/modular_cosmetics/icons/obj/head/doppler_command_hats.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi new file mode 100644 index 0000000000000..c0c8a681834e7 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/head/hats.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi b/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi index 926edbfa55329..bec78857245a8 100644 Binary files a/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi and b/modular_doppler/modular_cosmetics/icons/obj/neck/doppler_mantles.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi b/modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi new file mode 100644 index 0000000000000..4d28d21c73ead Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/shoes/working.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi b/modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi new file mode 100644 index 0000000000000..12346308a3d1e Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/storage/crusaderbandolier.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi b/modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi new file mode 100644 index 0000000000000..f4dc8f3af10a1 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/suit/working.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi b/modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi new file mode 100644 index 0000000000000..8d18986beff15 Binary files /dev/null and b/modular_doppler/modular_cosmetics/icons/obj/under/janitor_my_beloved.dmi differ diff --git a/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi b/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi index 29cdaa73b3ae2..4c62cd027a9a2 100644 Binary files a/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi and b/modular_doppler/modular_cosmetics/icons/obj/under/miscellania.dmi differ diff --git a/modular_doppler/modular_customization/accessories/code/hair.dm b/modular_doppler/modular_customization/accessories/code/hair.dm index 54048feeda384..4c964a63321b9 100644 --- a/modular_doppler/modular_customization/accessories/code/hair.dm +++ b/modular_doppler/modular_customization/accessories/code/hair.dm @@ -655,6 +655,50 @@ name = "Inari" icon_state = "inari" +/datum/sprite_accessory/hair/modular/punktails + name = "Punktails" + icon_state = "hair_punktails" + +/datum/sprite_accessory/hair/modular/firestarter + name = "Firestarter" + icon_state = "hair_firestarter" + +/datum/sprite_accessory/hair/modular/impish + name = "Impish" + icon_state = "hair_impish" + +/datum/sprite_accessory/hair/modular/mermaid + name = "Mermaid" + icon_state = "hair_mermaid" + +/datum/sprite_accessory/hair/modular/royal_curls + name = "Royal Curls" + icon_state = "hair_royal_curls" + +/datum/sprite_accessory/hair/modular/halfcut + name = "Halfcut" + icon_state = "hair_halfcut" + +/datum/sprite_accessory/hair/modular/halfcut_rough + name = "Halfcut Rough" + icon_state = "hair_halfcut_rough" + +/datum/sprite_accessory/hair/modular/glossy + name = "Glossy" + icon_state = "hair_glossy" + +/datum/sprite_accessory/hair/modular/mia + name = "Mia" + icon_state = "hair_mia" + +/datum/sprite_accessory/hair/modular/braided_sidetail + name = "Braided Sidetail" + icon_state = "hair_braided_sidetail" + +/datum/sprite_accessory/hair/modular/glamour + name = "Glamour" + icon_state = "hair_glamour" + // Facial hair /datum/sprite_accessory/facial_hair/modular diff --git a/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm b/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm index 30579a6ac6a67..e263fd6fdbf0b 100644 --- a/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm +++ b/modular_doppler/modular_customization/accessories/code/human_accessories/human_horns.dm @@ -42,3 +42,56 @@ /datum/sprite_accessory/horns/humanoid/broken_l name = "Broken (Left)" icon_state = "lbroken" + +/datum/sprite_accessory/horns/humanoid/guilmon + name = "Guilmon" + icon_state = "guilmon" + +/datum/sprite_accessory/horns/humanoid/drake + name = "Drake" + icon_state = "drake" + +/datum/sprite_accessory/horns/humanoid/crippledbull + name = "Crippled Bull" + icon_state = "crippledbull" + +/datum/sprite_accessory/horns/humanoid/ticketrack + name = "Ticket Rack" + icon_state = "ticketrack" + +/datum/sprite_accessory/horns/humanoid/hopefulhorns + name = "Hopeful Horns" + icon_state = "hopefulhorns" + +/datum/sprite_accessory/horns/humanoid/broadcurls + name = "Broad Curls" + icon_state = "broadcurls" + +/datum/sprite_accessory/horns/humanoid/curly + name = "Curly" + icon_state = "newcurly" + +/datum/sprite_accessory/horns/humanoid/upwards + name = "Upwards" + icon_state = "upwardshorns" + +/datum/sprite_accessory/horns/humanoid/dragon + name = "Dragon" + icon_state = "dragon" + +/datum/sprite_accessory/horns/humanoid/antenna + name = "Antenna" + icon_state = "antenna" + +/datum/sprite_accessory/horns/humanoid/big + name = "Painted Points" + icon = 'modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi' + icon_state = "paintedpoints" + +/datum/sprite_accessory/horns/humanoid/big/whoshorns + name = "Who's Horns" + icon_state = "whoshorns" + +/datum/sprite_accessory/horns/humanoid/big/highrisehorns + name = "High-rise Horns" + icon_state = "highrisehorns" diff --git a/modular_doppler/modular_customization/accessories/code/moth_accessories/moth_wings.dm b/modular_doppler/modular_customization/accessories/code/moth_accessories/moth_wings.dm deleted file mode 100644 index 0a9150b263802..0000000000000 --- a/modular_doppler/modular_customization/accessories/code/moth_accessories/moth_wings.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/sprite_accessory/moth_wings - icon = 'modular_doppler/modular_customization/accessories/icons/moth/moth_wings.dmi' diff --git a/modular_doppler/modular_customization/accessories/icons/hair.dmi b/modular_doppler/modular_customization/accessories/icons/hair.dmi index f2510019853a9..09414755e95d2 100644 Binary files a/modular_doppler/modular_customization/accessories/icons/hair.dmi and b/modular_doppler/modular_customization/accessories/icons/hair.dmi differ diff --git a/modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi b/modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi new file mode 100644 index 0000000000000..5336e45491b5c Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/human/horns_big.dmi differ diff --git a/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi b/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi index 2b41e3f307a76..218b27cdee549 100644 Binary files a/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi and b/modular_doppler/modular_customization/accessories/icons/human/human_horns.dmi differ diff --git a/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi b/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi index 44cf0131f5d7a..e2ec62e78e5cf 100644 Binary files a/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi and b/modular_doppler/modular_customization/accessories/icons/insectoid/insect_snouts.dmi differ diff --git a/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi b/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi index 9d5e5a612e596..c7c30341b88dd 100644 Binary files a/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi and b/modular_doppler/modular_customization/accessories/icons/non_species_specific/avian/avian_snouts.dmi differ diff --git a/modular_doppler/modular_customization/markings/body_markings/other.dm b/modular_doppler/modular_customization/markings/body_markings/other.dm index 9a4a465bb4a84..6a84d437af160 100644 --- a/modular_doppler/modular_customization/markings/body_markings/other.dm +++ b/modular_doppler/modular_customization/markings/body_markings/other.dm @@ -211,3 +211,13 @@ icon_state = "nips" body_zones = CHEST gender_specific = FALSE + +/datum/sprite_accessory/body_marking/other/outer_eye + name = "Outer Eye" + icon_state = "outereye" + body_zones = HEAD + +/datum/sprite_accessory/body_marking/other/undereye + name = "Undereye" + icon_state = "undereye" + body_zones = HEAD diff --git a/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi b/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi index 81ad234778311..0ad2ab2bdc416 100644 Binary files a/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi and b/modular_doppler/modular_customization/markings/icons/markings/secondary_markings.dmi differ diff --git a/modular_doppler/modular_items/bettermed_overrides.dm b/modular_doppler/modular_items/bettermed_overrides.dm index 1c75101da278f..86beee9543366 100644 --- a/modular_doppler/modular_items/bettermed_overrides.dm +++ b/modular_doppler/modular_items/bettermed_overrides.dm @@ -1,111 +1,26 @@ -/// == TOOL UPDATE ZONE == -/obj/item/scalpel - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/cautery - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/retractor - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/hemostat - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/bonesetter - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/blood_filter - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/circular_saw - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/surgicaldrill - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - -/obj/item/scalpel/advanced - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - light_color = "#AAFF00" - light_range = 2 - lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi' - righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi' - -/obj/item/scalpel/advanced/on_transform(obj/item/source, mob/user, active) - . = ..() - if(active) - set_light_range(2) - set_light_color("#FFAA00") - else - set_light_range(2) - set_light_color("#AAFF00") - -/obj/item/retractor/advanced - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi' - righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi' - -/obj/item/cautery/advanced - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi' - righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi' - light_color = "#AAFF00" - -/obj/item/cautery/advanced/on_transform(obj/item/source, mob/user, active) - . = ..() - if(active) - set_light_color("#FFAA00") - else - set_light_color("#AAFF00") - -/obj/item/surgical_drapes - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - - - -/// == STORAGE UPDATE ZONE == -/obj/item/surgery_tray - icon = 'modular_doppler/modular_items/icons/bettermed_medcart.dmi' - -/obj/item/storage/medkit - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi' - righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi' - -/obj/item/storage/medkit/coroner - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' +// Empty medkits /obj/item/storage/medkit/empty empty = TRUE + /obj/item/storage/medkit/brute/empty empty = TRUE + /obj/item/storage/medkit/fire/empty empty = TRUE + /obj/item/storage/medkit/toxin/empty empty = TRUE + /obj/item/storage/medkit/o2/empty empty = TRUE + /obj/item/storage/medkit/surgery/empty empty = TRUE -/obj/item/storage/medkit/advanced/empty - empty = TRUE -/obj/item/storage/medkit/ancient - icon = 'modular_doppler/modular_items/icons/bettermed.dmi' - lefthand_file = 'modular_doppler/modular_items/icons/bettermed_lh.dmi' - righthand_file = 'modular_doppler/modular_items/icons/bettermed_rh.dmi' - icon_state = "medkit_old" - inhand_icon_state = "oldkit" - -/obj/item/storage/medkit/buffs - name = "support medkit" - desc = "An empty medkit for creative chemists to fill with concoctions." - icon_state = "medkit_buffs" - inhand_icon_state = "medkit-buffs" - damagetype_healed = HEAL_ALL_DAMAGE +/obj/item/storage/medkit/advanced/empty empty = TRUE - - /// == RECIPE ADDITION ZONE == /datum/design/spare_medkit name = "Medkit" @@ -142,11 +57,6 @@ id = "medkit_o2" build_path = /obj/item/storage/medkit/o2/empty -/datum/design/spare_medkit/buffs - name = "Support Medkit" - id = "medkit_buffs" - build_path = /obj/item/storage/medkit/buffs - /datum/techweb_node/medbay_equip/New() design_ids += list( "medkit", @@ -154,7 +64,6 @@ "medkit_burn", "medkit_toxin", "medkit_o2", - "medkit_buffs", ) return ..() diff --git a/modular_doppler/modular_items/emergency_breach_equipment.dm b/modular_doppler/modular_items/emergency_breach_equipment.dm new file mode 100644 index 0000000000000..d718728949ccf --- /dev/null +++ b/modular_doppler/modular_items/emergency_breach_equipment.dm @@ -0,0 +1,61 @@ +#define OXY_CANDLE_RELEASE_TEMP (T20C + 10) // 30 celsius, it's hot. Will be even hotter with hotspot expose + +/obj/item/oxygen_candle + name = "oxygen candle" + desc = "A steel tube with the words 'OXYGEN - PULL CORD TO IGNITE' stamped on the side.\nA small label reads 'WARNING: NOT FOR LIGHTING USE. WILL IGNITE FLAMMABLE GASSES'" + icon = 'modular_doppler/modular_items/icons/oxygen_candle.dmi' + icon_state = "oxycandle" + w_class = WEIGHT_CLASS_SMALL + light_color = LIGHT_COLOR_LAVA // Very warm chemical burn + var/pulled = FALSE + var/processing = FALSE + var/processes_left = 40 + +/obj/item/oxygen_candle/attack_self(mob/user) + if(!pulled) + playsound(src, 'sound/effects/fuse.ogg', 75, 1) + balloon_alert(user, "cord pulled") + icon_state = "oxycandle_burning" + pulled = TRUE + processing = TRUE + START_PROCESSING(SSobj, src) + set_light(2) + +/obj/item/oxygen_candle/process() + var/turf/pos = get_turf(src) + if(!pos) + return + pos.hotspot_expose(500, 100) + pos.atmos_spawn_air("o2=5;TEMP=[OXY_CANDLE_RELEASE_TEMP]") + processes_left-- + if(processes_left <= 0) + set_light(0) + STOP_PROCESSING(SSobj, src) + processing = FALSE + name = "burnt oxygen candle" + icon_state = "oxycandle_burnt" + desc += "\nThis tube has exhausted its chemicals." + +/obj/item/oxygen_candle/Destroy() + if(processing) + STOP_PROCESSING(SSobj, src) + return ..() + +#undef OXY_CANDLE_RELEASE_TEMP + +/obj/item/grenade/chem_grenade/budget_smart_metal + name = "budget smart metal foam grenade" + desc = "Used for emergency sealing of hull breaches, while keeping areas accessible. This one came in a bulk pack a few years ago, and some of the ingredients have gone flat." + stage = GRENADE_READY + +/obj/item/grenade/chem_grenade/budget_smart_metal/Initialize(mapload) + . = ..() + var/obj/item/reagent_containers/cup/beaker/large/beaker_one = new(src) + var/obj/item/reagent_containers/cup/beaker/beaker_two = new(src) + + beaker_one.reagents.add_reagent(/datum/reagent/aluminium, 50) + beaker_two.reagents.add_reagent(/datum/reagent/smart_foaming_agent, 15) + beaker_two.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 15) + + beakers += beaker_one + beakers += beaker_two diff --git a/modular_doppler/modular_items/icons/bettermed.dmi b/modular_doppler/modular_items/icons/bettermed.dmi deleted file mode 100644 index 09d6352ee249a..0000000000000 Binary files a/modular_doppler/modular_items/icons/bettermed.dmi and /dev/null differ diff --git a/modular_doppler/modular_items/icons/bettermed_lh.dmi b/modular_doppler/modular_items/icons/bettermed_lh.dmi deleted file mode 100644 index f1c0d17e15eb5..0000000000000 Binary files a/modular_doppler/modular_items/icons/bettermed_lh.dmi and /dev/null differ diff --git a/modular_doppler/modular_items/icons/bettermed_medcart.dmi b/modular_doppler/modular_items/icons/bettermed_medcart.dmi deleted file mode 100644 index 6b696dfb62a6c..0000000000000 Binary files a/modular_doppler/modular_items/icons/bettermed_medcart.dmi and /dev/null differ diff --git a/modular_doppler/modular_items/icons/bettermed_rh.dmi b/modular_doppler/modular_items/icons/bettermed_rh.dmi deleted file mode 100644 index 8a97a2cb998e9..0000000000000 Binary files a/modular_doppler/modular_items/icons/bettermed_rh.dmi and /dev/null differ diff --git a/modular_doppler/modular_items/icons/oxygen_candle.dmi b/modular_doppler/modular_items/icons/oxygen_candle.dmi new file mode 100644 index 0000000000000..5654fbd9d2f49 Binary files /dev/null and b/modular_doppler/modular_items/icons/oxygen_candle.dmi differ diff --git a/modular_doppler/modular_items/shipchem_overrides.dm b/modular_doppler/modular_items/shipchem_overrides.dm index c85a381d3375f..d2888886e51a5 100644 --- a/modular_doppler/modular_items/shipchem_overrides.dm +++ b/modular_doppler/modular_items/shipchem_overrides.dm @@ -23,7 +23,7 @@ if(can_have_cap) if(!cap_icon_state) WARNING("Container that allows caps is lacking a cap_icon_state!") - set_cap_status(cap_on) + set_cap_status(FALSE) else cap_on = FALSE @@ -94,10 +94,10 @@ /// ACTUAL AESTHETIC CHANGES BEGIN HERE /obj/item/reagent_containers/cup/beaker + desc = "A beaker. It can hold up to 60 units." icon = 'modular_doppler/modular_items/icons/shipchems.dmi' fill_icon = 'modular_doppler/modular_items/icons/shipchems_reagentfillings.dmi' fill_icon_thresholds = list(1, 40, 60, 80, 100) - //fill_icon_state = "beaker" cap_on = TRUE can_have_cap = TRUE @@ -106,7 +106,6 @@ volume = 60 possible_transfer_amounts = list(5,10,15,20,30,60) amount_per_transfer_from_this = 5 - desc = "A beaker. It can hold up to 60 units." /obj/item/reagent_containers/cup/beaker/oldstation amount_per_transfer_from_this = 5 @@ -121,36 +120,36 @@ possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50) /obj/item/reagent_containers/cup/beaker/large + desc = "A large beaker. Can hold up to 120 units." fill_icon_thresholds = list(1, 40, 60, 80, 100) cap_icon_state = "beakerlarge_cap" volume = 120 possible_transfer_amounts = list(5,10,15,20,30,40,60,120) - desc = "A large beaker. Can hold up to 120 units." /obj/item/reagent_containers/cup/beaker/plastic + desc = "An extra-large beaker. Can hold up to 180 units." fill_icon_thresholds = list(1, 25, 50, 75, 100) fill_icon_state = "beakerxlarge" cap_icon_state = "beakerwhite_cap" volume = 180 possible_transfer_amounts = list(5,10,15,20,30,60,90,180) - desc = "An extra-large beaker. Can hold up to 180 units." /obj/item/reagent_containers/cup/beaker/meta + desc = "An ultra-large beaker. Can hold up to 240 units." fill_icon_thresholds = list(1, 25, 50, 75, 100) cap_icon_state = "beakergold_cap" volume = 240 possible_transfer_amounts = list(5,10,15,20,30,60,120,240) - desc = "An ultra-large beaker. Can hold up to 240 units." /obj/item/reagent_containers/cup/beaker/noreact + desc = "A cryostasis beaker that allows for chemical storage without \ + reactions. Can hold up to 120 units." cap_icon_state = "beakernoreact_cap" volume = 120 - desc = "A cryostasis beaker that allows for chemical storage without \ - reactions. Can hold up to 120 units." /obj/item/reagent_containers/cup/beaker/bluespace cap_icon_state = "beakerbluespace_cap" diff --git a/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm b/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm index 67dd334612759..7c0f5285f0da9 100644 --- a/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm +++ b/modular_doppler/modular_medical/surgery/organs/internal/cyberimp.dm @@ -176,7 +176,6 @@ icon = 'modular_doppler/modular_medical/icons/implants.dmi' icon_state = "steel" items_to_create = list(/obj/item/pickaxe/drill/implant) - implant_overlay = null implant_color = null /// The bodypart overlay datum we should apply to whatever mob we are put into's someone's arm var/datum/bodypart_overlay/simple/steel_drill/drill_overlay diff --git a/modular_doppler/modular_quirks/cybernetic_limb_mounts/cybernetic_limb_mounts.dm b/modular_doppler/modular_quirks/cybernetic_limb_mounts/cybernetic_limb_mounts.dm new file mode 100644 index 0000000000000..c52dbc5180fd4 --- /dev/null +++ b/modular_doppler/modular_quirks/cybernetic_limb_mounts/cybernetic_limb_mounts.dm @@ -0,0 +1,83 @@ +/datum/quirk/robot_limb_detach + name = "Cybernetic Limb Mounts" + desc = "You are able to detach and reattach any installed robotic limbs with very little effort, as long as they're in good condition." + gain_text = span_notice("Internal sensors report limb disengagement protocols are ready and waiting.") + lose_text = span_notice("ERROR: LIMB DISENGAGEMENT PROTOCOLS OFFLINE.") + medical_record_text = "Patient bears quick-attach and release limb joint cybernetics." + value = 0 + mob_trait = TRAIT_ROBOTIC_LIMBATTACHMENT + icon = FA_ICON_HANDSHAKE_SIMPLE_SLASH + quirk_flags = QUIRK_HUMAN_ONLY + /// The action we add with this quirk in add(), used for easy deletion later + var/datum/action/cooldown/spell/added_action + +/datum/quirk/robot_limb_detach/add(client/client_source) + var/mob/living/carbon/human/human_holder = quirk_holder + var/datum/action/cooldown/spell/robot_self_amputation/limb_action = new /datum/action/cooldown/spell/robot_self_amputation() + limb_action.Grant(human_holder) + added_action = limb_action + +/datum/quirk/robot_limb_detach/remove() + QDEL_NULL(added_action) + +/datum/action/cooldown/spell/robot_self_amputation + name = "Detach a robotic limb" + desc = "Disengage one of your robotic limbs from your cybernetic mounts. Requires you to not be restrained or otherwise under duress. Will not function on wounded limbs - tend to them first." + button_icon_state = "autotomy" + + cooldown_time = 30 SECONDS + spell_requirements = NONE + check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_HANDS_BLOCKED | AB_CHECK_INCAPACITATED + +/datum/action/cooldown/spell/robot_self_amputation/is_valid_target(atom/cast_on) + return ishuman(cast_on) + +/datum/action/cooldown/spell/robot_self_amputation/cast(mob/living/carbon/human/cast_on) + . = ..() + + if(HAS_TRAIT(cast_on, TRAIT_NODISMEMBER)) + to_chat(cast_on, span_warning("ERROR: LIMB DISENGAGEMENT PROTOCOLS OFFLINE. Seek out a maintenance technician.")) + return + + var/list/exclusions = list() + exclusions += BODY_ZONE_CHEST + exclusions += BODY_ZONE_HEAD + // if we ever decide to move android's brains into their chest, add this below + /*if (!isandroid(cast_on)) + exclusions += BODY_ZONE_HEAD + */ + + var/list/robot_parts = list() + for (var/obj/item/bodypart/possible_part as anything in cast_on.bodyparts) + if ((possible_part.bodytype & BODYTYPE_ROBOTIC) && !(possible_part.body_zone in exclusions)) //only robot limbs and only if they're not crucial to our like, ongoing life, you know? + robot_parts += possible_part + + if (!length(robot_parts)) + to_chat(cast_on, "ERROR: Limb disengagement protocols report no compatible cybernetics currently installed. Seek out a maintenance technician.") + return + + var/obj/item/bodypart/limb_to_detach = tgui_input_list(cast_on, "Limb to detach", "Cybernetic Limb Detachment", sort_names(robot_parts)) + if (QDELETED(src) || QDELETED(cast_on) || QDELETED(limb_to_detach)) + return + + if (length(limb_to_detach.wounds) >= 1) + cast_on.balloon_alert(cast_on, "can't detach wounded limbs!") + playsound(cast_on, 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return + + cast_on.balloon_alert(cast_on, "detaching limb...") + playsound(cast_on, 'sound/items/tools/rped.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + cast_on.visible_message(span_notice("[cast_on] shuffles [cast_on.p_their()] [limb_to_detach.name] forward, actuators hissing and whirring as [cast_on.p_they()] disengage[cast_on.p_s()] the limb from its mount...")) + + if(do_after(cast_on, 5 SECONDS)) + cast_on.visible_message(span_notice("With a gentle twist, [cast_on] finally prises [cast_on.p_their()] [limb_to_detach.name] free from its socket.")) + limb_to_detach.drop_limb() + cast_on.put_in_hands(limb_to_detach) + cast_on.balloon_alert(cast_on, "limb detached!") + if(prob(5)) + playsound(cast_on, 'sound/items/champagne_pop.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + else + playsound(cast_on, 'sound/items/deconstruct.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + else + cast_on.balloon_alert(cast_on, "interrupted!") + playsound(cast_on, 'sound/machines/buzz/buzz-sigh.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) diff --git a/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm b/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm index 34142ba6bdcc7..b1f77adeffbcf 100644 --- a/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm +++ b/modular_doppler/modular_quirks/entombed/code/entombed_mod.dm @@ -110,7 +110,7 @@ who.balloon_alert(who, "can't strip a fused MODsuit!") return ..() -/obj/item/mod/control/pre_equipped/entombed/retract(mob/user, obj/item/part) +/obj/item/mod/control/pre_equipped/entombed/retract(mob/user, obj/item/part, instant = FALSE) if (ishuman(user)) var/mob/living/carbon/human/human_user = user var/datum/quirk/equipping/entombed/tomb_quirk = human_user.get_quirk(/datum/quirk/equipping/entombed) diff --git a/modular_doppler/modular_quirks/evil_replacements/bad_vibes.dm b/modular_doppler/modular_quirks/evil_replacements/bad_vibes.dm new file mode 100644 index 0000000000000..0e2b0c927387b --- /dev/null +++ b/modular_doppler/modular_quirks/evil_replacements/bad_vibes.dm @@ -0,0 +1,15 @@ +/datum/quirk/bad_vibes + name = "Bad Vibes" + desc = "By a quirk of your personality or exposure to too many horrible sights, you give off a bad aura which affects \ + empaths and anyone else who looks too closely." + icon = FA_ICON_HAND_MIDDLE_FINGER + value = 0 + mob_trait = TRAIT_BAD_VIBES + gain_text = span_notice("You give off a negative aura.") + lose_text = span_notice("You try to be more approachable.") + medical_record_text = "Patient scared away a nurse prior to physical examination." + +/datum/mood_event/bad_vibes + description = "Some people truly disturb me... What could happen to make someone like that?" + mood_change = -4 + timeout = 1 MINUTES diff --git a/modular_doppler/modular_quirks/evil_replacements/unholy_aura.dm b/modular_doppler/modular_quirks/evil_replacements/unholy_aura.dm new file mode 100644 index 0000000000000..3689dcbe8682d --- /dev/null +++ b/modular_doppler/modular_quirks/evil_replacements/unholy_aura.dm @@ -0,0 +1,15 @@ +/datum/quirk/unholy + name = "Unholy Aura" + desc = "Whether it's as a punishment for your actions or due to the circumstances of your birth, you've been cursed by \ + whatever dieties take an interest in this sector. You have a harder time interacting with holy figures." + icon = FA_ICON_SMOG + value = -2 + mob_trait = TRAIT_EVIL + gain_text = span_warning("A dispassionate gaze from on high weighs on you.") + lose_text = span_notice("The deities' gaze turns away.") + medical_record_text = "Patient has a strong aversion to religious figures." + +/datum/mood_event/holy_figure + description = "Holy people are anathema to me. I must be more careful..." + mood_change = -4 + timeout = 1 MINUTES diff --git a/modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm b/modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm new file mode 100644 index 0000000000000..ee0eb10cefac3 --- /dev/null +++ b/modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm @@ -0,0 +1,68 @@ +/datum/quirk/narcolepsy + name = "Narcolepsy" + desc = "You may fall asleep at any moment and feel tired often." + icon = FA_ICON_CLOUD_MOON_RAIN + value = -8 + hardcore_value = 8 + medical_record_text = "Patient may involuntarily fall asleep during normal activities." + mail_goodies = list( + /obj/item/reagent_containers/cup/glass/coffee, + /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind, + /obj/item/storage/pill_bottle/prescription_stimulant, + ) + +/datum/quirk/narcolepsy/post_add() + . = ..() + var/mob/living/carbon/human/user = quirk_holder + user.gain_trauma(/datum/brain_trauma/severe/narcolepsy/permanent, TRAUMA_RESILIENCE_ABSOLUTE) + + var/obj/item/storage/pill_bottle/prescription_stimulant/stimmies = new() + if(quirk_holder.equip_to_slot_if_possible(stimmies, ITEM_SLOT_BACKPACK, qdel_on_fail = TRUE, initial = TRUE, indirect_action = TRUE)) + to_chat(quirk_holder, span_info("You have been given a bottle of mild stimulants to assist in staying awake this shift...")) + +/datum/quirk/narcolepsy/remove() + . = ..() + var/mob/living/carbon/human/user = quirk_holder + user?.cure_trauma_type(/datum/brain_trauma/severe/narcolepsy/permanent, TRAUMA_RESILIENCE_ABSOLUTE) + +/datum/brain_trauma/severe/narcolepsy/permanent + scan_desc = "narcolepsy" + +//similar to parent but slower +/datum/brain_trauma/severe/narcolepsy/permanent/on_life(seconds_per_tick, times_fired) + if(owner.IsSleeping()) + return + if(owner.reagents.has_reagent(/datum/reagent/medicine/modafinil)) + return //stimulant which already blocks sleeping + if(owner.reagents.has_reagent(/datum/reagent/medicine/synaptizine)) + return //mild stimulant easily made in chemistry + + var/sleep_chance = 0.333 //3 + var/drowsy = !!owner.has_status_effect(/datum/status_effect/drowsiness) + var/caffeinated = HAS_TRAIT(owner, TRAIT_STIMULATED) + if(drowsy) + sleep_chance = 1 + if(caffeinated) //make it real hard to fall asleep on caffeine + sleep_chance = sleep_chance / 2 + + if(!drowsy && SPT_PROB(sleep_chance, seconds_per_tick)) + to_chat(owner, span_warning("You feel tired...")) + owner.adjust_drowsiness(rand(30 SECONDS, 60 SECONDS)) + + else if(drowsy && SPT_PROB(sleep_chance, seconds_per_tick)) + to_chat(owner, span_warning("You fall asleep.")) + owner.Sleeping(rand(20 SECONDS, 30 SECONDS)) + +/obj/item/storage/pill_bottle/prescription_stimulant + name = "bottle of prescribed stimulant pills" + desc = "A bottle of mild and medicinally approved stimulants to help prevent drowsiness." + +/obj/item/storage/pill_bottle/prescription_stimulant/PopulateContents() + for(var/i in 1 to 5) + new /obj/item/reagent_containers/pill/prescription_stimulant(src) + +/obj/item/reagent_containers/pill/prescription_stimulant + name = "prescription stimulant pill" + desc = "Used to treat symptoms of drowsiness and sudden loss of consciousness. A warning label reads: Take in moderation." + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/synaptizine = 5, /datum/reagent/medicine/modafinil = 3) + icon_state = "pill15" diff --git a/modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi b/modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi new file mode 100644 index 0000000000000..d3caa1e6578ac Binary files /dev/null and b/modular_doppler/modular_quirks/overwrites/icons/bodypart_overlay_simple.dmi differ diff --git a/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm b/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm index 7e594c13ff96c..a3c80fbe88513 100644 --- a/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm +++ b/modular_doppler/modular_quirks/permitted_cybernetic/permitted_cybernetic.dm @@ -3,8 +3,9 @@ GLOBAL_LIST_INIT(possible_quirk_implants, list( "Surgery Toolset" = /obj/item/organ/cyberimp/arm/surgery, "Hydroponics Toolset" = /obj/item/organ/cyberimp/arm/botany, "Sanitation Toolset" = /obj/item/organ/cyberimp/arm/janitor, - "Razorclaw Implant" = /obj/item/organ/cyberimp/arm/razor_claws, - "Excavator Implant" = /obj/item/organ/cyberimp/arm/mining_drill, + "Razorclaw Arm" = /obj/item/organ/cyberimp/arm/razor_claws, + "Excavator Arm" = /obj/item/organ/cyberimp/arm/mining_drill, + "Nutriment Pump Implant" = /obj/item/organ/cyberimp/chest/nutriment, )) /datum/quirk/permitted_cybernetic diff --git a/modular_doppler/modular_quirks/system_shock/system_shock.dm b/modular_doppler/modular_quirks/system_shock/system_shock.dm new file mode 100644 index 0000000000000..abfc8556bc7ab --- /dev/null +++ b/modular_doppler/modular_quirks/system_shock/system_shock.dm @@ -0,0 +1,31 @@ +/datum/quirk/system_shock + name = "System Shock" + desc = "You and electricity have a volatile relationship. One spark's liable to forcefully reboot your systems. Note: This quirk only works on synths." + gain_text = span_danger("You start feeling nervous around plug sockets.") + lose_text = span_notice("You feel normal about sparks.") + medical_record_text = "Patient's processors are unusually uninsulated." + value = -8 + mob_trait = TRAIT_SYSTEM_SHOCK + icon = FA_ICON_PLUG_CIRCLE_XMARK + quirk_flags = QUIRK_HUMAN_ONLY + +/datum/quirk/system_shock/add(client/client_source) + if(isandroid(quirk_holder)) + RegisterSignals(quirk_holder, list(COMSIG_LIVING_ELECTROCUTE_ACT, COMSIG_LIVING_MINOR_SHOCK), PROC_REF(on_electrocute)) + +/datum/quirk/system_shock/remove() + UnregisterSignal(quirk_holder, list(COMSIG_LIVING_ELECTROCUTE_ACT, COMSIG_LIVING_MINOR_SHOCK)) + + +/datum/quirk/system_shock/proc/on_electrocute() + SIGNAL_HANDLER + var/knockout_length = 20 SECONDS + rand(0 SECONDS, 5 SECONDS) + quirk_holder.set_static_vision(knockout_length) + quirk_holder.balloon_alert(quirk_holder, "system rebooting") + to_chat(quirk_holder, span_danger("CRIT&!AL ERR%R: S#STEM REBO#TING.")) + //The intent with the 0.4 seconds is so that the visual static effect lasts longer than the actual knockout/sleeping effect. + addtimer(CALLBACK(src, PROC_REF(knock_out), knockout_length - 0.4 SECONDS), 2 SECONDS) + +///The length at which unconsciousness lasts during system shock. +/datum/quirk/system_shock/proc/knock_out(length) + quirk_holder.Sleeping(length) diff --git a/modular_doppler/modular_sounds/sound/machines/hacked.ogg b/modular_doppler/modular_sounds/sound/machines/hacked.ogg new file mode 100644 index 0000000000000..54aa3b931ea22 Binary files /dev/null and b/modular_doppler/modular_sounds/sound/machines/hacked.ogg differ diff --git a/modular_doppler/modular_species/_species.dm b/modular_doppler/modular_species/_species.dm index 084f8423a5af7..f0a416bcd23e1 100644 --- a/modular_doppler/modular_species/_species.dm +++ b/modular_doppler/modular_species/_species.dm @@ -21,7 +21,7 @@ /// Cybernetic limbs logic here! // Used for most races -/datum/species/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load) +/datum/species/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load, regenerate_icons = TRUE) var/list/frame_bodyparts = target.dna.features["frame_list"] if(type in GLOB.species_blacklist_no_humanoid) return ..() diff --git a/modular_doppler/modular_species/species_types/android/android.dm b/modular_doppler/modular_species/species_types/android/android.dm index 1cfd3a7168848..7287f5ec20501 100644 --- a/modular_doppler/modular_species/species_types/android/android.dm +++ b/modular_doppler/modular_species/species_types/android/android.dm @@ -1,7 +1,7 @@ /// The starter amount for the android's core #define ENERGY_START_AMT 5 MEGA JOULES /// The amount at which mob energy decreases -#define ENERGY_DRAIN_AMT 5 KILO JOULES +#define ENERGY_DRAIN_AMT 2.5 KILO JOULES /datum/species/android name = "Android" @@ -55,7 +55,7 @@ name = "Android (Species Preview)" // nude -/datum/species/android/on_species_gain(mob/living/carbon/target, datum/species/old_species, pref_load) +/datum/species/android/on_species_gain(mob/living/carbon/target, datum/species/old_species, pref_load, regenerate_icons) . = ..() if(ishuman(target)) power_cord = new @@ -71,6 +71,8 @@ QDEL_NULL(energy_tracker) /datum/species/android/spec_revival(mob/living/carbon/human/target) + if(core_energy < 0.5 MEGA JOULES) + core_energy += 0.5 MEGA JOULES playsound(target.loc, 'sound/machines/chime.ogg', 50, TRUE) target.visible_message(span_notice("[target]'s LEDs flicker to life!"), span_notice("All systems nominal. You're back online!")) @@ -91,11 +93,6 @@ return if(core_energy > 0) core_energy -= ENERGY_DRAIN_AMT - // alerts - if(core_energy <= 0.75 MEGA JOULES) - if(prob(10)) - target.balloon_alert_to_viewers("power low!") - playsound(target, 'sound/machines/beep/triple_beep.ogg', 50, FALSE) // alerts end, death begins if(core_energy <= 0) target.death() // You can do a lot in a day. diff --git a/modular_doppler/modular_species/species_types/android/android_hud.dm b/modular_doppler/modular_species/species_types/android/android_hud.dm index 4b4786cf0d952..77c1da9166a57 100644 --- a/modular_doppler/modular_species/species_types/android/android_hud.dm +++ b/modular_doppler/modular_species/species_types/android/android_hud.dm @@ -1,5 +1,5 @@ /// 1 tile down -#define UI_ENERGY_DISPLAY "WEST:6,CENTER-1:0" +#define UI_ENERGY_DISPLAY "WEST:0,CENTER-1:0" ///Maptext define for Hemophage HUDs #define FORMAT_ANDROID_HUD_TEXT(valuecolor, value) MAPTEXT("
[round((value/1000000), 0.01)]MJ
") @@ -11,9 +11,14 @@ name = "Energy Tracker" icon_state = "energy_display" screen_loc = UI_ENERGY_DISPLAY + maptext_width = 48 /atom/movable/screen/android/energy/proc/update_energy_hud(core_energy) maptext = FORMAT_ANDROID_HUD_TEXT(hud_text_color(core_energy), core_energy) + if(core_energy <= 1.5 MEGA JOULES) + icon_state = "energy_display_low" + else + icon_state = "energy_display" /atom/movable/screen/android/energy/proc/hud_text_color(core_energy) return core_energy > 1.5 MEGA JOULES ? "#ffffff" : "#b64b4b" diff --git a/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi b/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi index b524cf6328041..7a08492320196 100644 Binary files a/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi and b/modular_doppler/modular_species/species_types/android/icons/android_hud.dmi differ diff --git a/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm b/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm index 9380087405d9f..8b896b13950eb 100644 --- a/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm +++ b/modular_doppler/modular_species/species_types/anthromorph/anthromorph.dm @@ -29,7 +29,7 @@ BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/digitigrade/anthromorph, ) -/datum/species/anthromorph/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load) +/datum/species/anthromorph/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load, regenerate_icons) apply_animal_trait(target, find_animal_trait(target)) return ..() diff --git a/modular_doppler/modular_species/species_types/genemod/genemod.dm b/modular_doppler/modular_species/species_types/genemod/genemod.dm index a225b10a2d223..a1936b302c835 100644 --- a/modular_doppler/modular_species/species_types/genemod/genemod.dm +++ b/modular_doppler/modular_species/species_types/genemod/genemod.dm @@ -34,7 +34,7 @@ "N/a.", ) -/datum/species/human/genemod/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load) +/datum/species/human/genemod/on_species_gain(mob/living/carbon/human/target, datum/species/old_species, pref_load, regenerate_icons) apply_animal_trait(target, find_animal_trait(target)) return ..() diff --git a/modular_doppler/modular_species/species_types/golem/golem.dm b/modular_doppler/modular_species/species_types/golem/golem.dm index 9e0a6f94791f1..6837249b02432 100644 --- a/modular_doppler/modular_species/species_types/golem/golem.dm +++ b/modular_doppler/modular_species/species_types/golem/golem.dm @@ -28,7 +28,7 @@ var/golem_speed_mod = 0.8 -/datum/species/golem/on_species_gain(mob/living/carbon/new_golem, datum/species/old_species, pref_load) +/datum/species/golem/on_species_gain(mob/living/carbon/new_golem, datum/species/old_species, pref_load, regenerate_icons) . = ..() new_golem.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/snail, multiplicative_slowdown = golem_speed_mod) diff --git a/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm b/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm index 14372f9e7ef75..3adde17d42ad1 100644 --- a/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm +++ b/modular_doppler/modular_species/species_types/hemophage/hemophage_species.dm @@ -32,7 +32,7 @@ return ..() -/datum/species/human/genemod/hemophage/on_species_gain(mob/living/carbon/human/new_hemophage, datum/species/old_species, pref_load) +/datum/species/human/genemod/hemophage/on_species_gain(mob/living/carbon/human/new_hemophage, datum/species/old_species, pref_load, regenerate_icons) . = ..() to_chat(new_hemophage, HEMOPHAGE_SPAWN_TEXT) new_hemophage.update_body() diff --git a/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm b/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm index f3b10cde97952..d6ce9c8d5ff11 100644 --- a/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm +++ b/modular_doppler/modular_species/species_types/primitive_genemod/primitive_genemod.dm @@ -38,7 +38,7 @@ neck = /obj/item/clothing/neck/scarf/primitive_genemod_scarf back = /obj/item/forging/reagent_weapon/axe/fake_copper -/datum/species/human/genemod/primitive/on_species_gain(mob/living/carbon/new_primitive, datum/species/old_species, pref_load) +/datum/species/human/genemod/primitive/on_species_gain(mob/living/carbon/new_primitive, datum/species/old_species, pref_load, regenerate_icons) . = ..() var/mob/living/carbon/human/hearthkin = new_primitive if(!istype(hearthkin)) diff --git a/modular_doppler/modular_species/species_types/ramatae/ramatan.dm b/modular_doppler/modular_species/species_types/ramatae/ramatan.dm index dcb34aa44538a..b4c88db9b9d59 100644 --- a/modular_doppler/modular_species/species_types/ramatae/ramatan.dm +++ b/modular_doppler/modular_species/species_types/ramatae/ramatan.dm @@ -84,7 +84,7 @@ head = /obj/item/clothing/head/beret/doppler_command/science neck = /obj/item/clothing/neck/doppler_mantle/science -/datum/species/ramatan/on_species_gain(mob/living/carbon/human/new_ramatan, datum/species/old_species, pref_load) +/datum/species/ramatan/on_species_gain(mob/living/carbon/human/new_ramatan, datum/species/old_species, pref_load, regenerate_icons) . = ..() new_ramatan.AddComponent(/datum/component/sign_language) diff --git a/modular_doppler/modular_species/species_types/snails/modular_snail.dm b/modular_doppler/modular_species/species_types/snails/modular_snail.dm index 6382911bf3e3c..1af2d3d88941e 100644 --- a/modular_doppler/modular_species/species_types/snails/modular_snail.dm +++ b/modular_doppler/modular_species/species_types/snails/modular_snail.dm @@ -18,7 +18,7 @@ uniform = /obj/item/clothing/under/rank/medical/chemist/pharmacologist/skirt mask = /obj/item/clothing/mask/surgical -/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load) +/datum/species/snail/on_species_gain(mob/living/carbon/new_snailperson, datum/species/old_species, pref_load, regenerate_icons) . = ..() new_snailperson.update_icons() diff --git a/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm b/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm index 0f74e833e49ea..5403d6211f1aa 100644 --- a/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm +++ b/modular_doppler/modular_vending/code/tg_vendors/wardrobes.dm @@ -8,6 +8,16 @@ /obj/item/clothing/suit/jacket/doppler/departmental_jacket/med = 2, ) +/obj/machinery/vending/wardrobe/jani_wardrobe + products_doppler = list( + /obj/item/clothing/head/hats/janitor_doppler = 3, + /obj/item/clothing/shoes/galoshes/doppler = 2, + /obj/item/clothing/gloves/botanic_leather/janitor = 3, + /obj/item/clothing/suit/apron/janitor_cloak = 3, + /obj/item/clothing/under/rank/civilian/janitor/doppler = 3, + /obj/item/clothing/under/rank/civilian/janitor/doppler_ct = 3, + ) + /obj/machinery/vending/wardrobe/engi_wardrobe products_doppler = list( /obj/item/clothing/under/misc/doppler_uniform/engineering = 5, diff --git a/modular_doppler/modular_vending/icons/de_forest_vendors.dmi b/modular_doppler/modular_vending/icons/de_forest_vendors.dmi index 906191c451b36..25ad4c2c0f025 100644 Binary files a/modular_doppler/modular_vending/icons/de_forest_vendors.dmi and b/modular_doppler/modular_vending/icons/de_forest_vendors.dmi differ diff --git a/modular_doppler/ntnrc_for_all/code/common_chat.dm b/modular_doppler/ntnrc_for_all/code/common_chat.dm new file mode 100644 index 0000000000000..634e4e508518a --- /dev/null +++ b/modular_doppler/ntnrc_for_all/code/common_chat.dm @@ -0,0 +1,7 @@ + +/// Conversation subtype that doesn't allow for the addition of any single operator. Netadmin mode can still override. +/datum/ntnet_conversation/common + +/// Override to block adding an operator. +/datum/ntnet_conversation/common/changeop(datum/computer_file/program/chatclient/newop, silent = FALSE) + return diff --git a/modular_doppler/ntnrc_for_all/code/ntnrc_client_edits.dm b/modular_doppler/ntnrc_for_all/code/ntnrc_client_edits.dm new file mode 100644 index 0000000000000..445a057b25f36 --- /dev/null +++ b/modular_doppler/ntnrc_for_all/code/ntnrc_client_edits.dm @@ -0,0 +1,14 @@ + +/// Enables the chat client to run without using up power. +/datum/computer_file/program/chatclient + program_flags = PROGRAM_ON_NTNET_STORE | PROGRAM_REQUIRES_NTNET | PROGRAM_RUNS_WITHOUT_POWER + power_cell_use = 0 + +/datum/computer_file/program/chatclient/on_start(mob/living/user) + . = ..() + if(!.) + return + + // If we're already in the common chat, start with it open. + if((src in SSmodular_computers.common_chat.active_clients) || (src in SSmodular_computers.common_chat.offline_clients)) + active_channel = SSmodular_computers.common_chat.id diff --git a/modular_doppler/ntnrc_for_all/code/pda_prefs_edits.dm b/modular_doppler/ntnrc_for_all/code/pda_prefs_edits.dm new file mode 100644 index 0000000000000..83b48a7190c89 --- /dev/null +++ b/modular_doppler/ntnrc_for_all/code/pda_prefs_edits.dm @@ -0,0 +1,18 @@ + +/// Apply our ntnrc client username prefs +/obj/item/modular_computer/pda/update_pda_prefs(client/owner_client) + . = ..() + if(isnull(owner_client)) + return + + var/datum/computer_file/program/chatclient/our_chat_client = locate() in stored_files + if(isnull(our_chat_client)) + return + + var/default_username = owner_client.prefs.read_preference(/datum/preference/name/ntnrc_username) + if(isnull(default_username)) + return + + our_chat_client.username = default_username + SSmodular_computers.common_chat.add_client(our_chat_client) + open_program(null, our_chat_client, FALSE) diff --git a/modular_doppler/ntnrc_for_all/code/ss_modular_computers_edits.dm b/modular_doppler/ntnrc_for_all/code/ss_modular_computers_edits.dm new file mode 100644 index 0000000000000..67b879c9dabd3 --- /dev/null +++ b/modular_doppler/ntnrc_for_all/code/ss_modular_computers_edits.dm @@ -0,0 +1,8 @@ + +/datum/controller/subsystem/modular_computers + /// Reference to the common chat used for all crew + var/datum/ntnet_conversation/common/common_chat + +/datum/controller/subsystem/modular_computers/Initialize() + . = ..() + common_chat = new(title = NTNRC_COMMON_CHAT, strong = TRUE) diff --git a/modular_doppler/ntnrc_for_all/code/username_prefs.dm b/modular_doppler/ntnrc_for_all/code/username_prefs.dm new file mode 100644 index 0000000000000..ddad401e8f197 --- /dev/null +++ b/modular_doppler/ntnrc_for_all/code/username_prefs.dm @@ -0,0 +1,19 @@ + +/// The username to default to for NTNRC +/datum/preference/name/ntnrc_username + explanation = NTRNC_USERNAME_PREF_NAME + group = "_usernames" // Underscore puts it high up, but below `_real_names` + savefile_key = "chat_client_username" + + +/datum/preference/name/ntnrc_username/create_default_value() + return pick(GLOB.hacker_aliases) + +/datum/preference/name/ntnrc_username/is_valid(value) + return !isnull(permissive_sanitize_name(value)) + +/datum/preference/name/ntnrc_username/deserialize(input, datum/preferences/preferences) + return permissive_sanitize_name(input) + +/datum/preference/name/ntnrc_username/serialize(input) + return permissive_sanitize_name(input) diff --git a/modular_doppler/ntnrc_for_all/readme.md b/modular_doppler/ntnrc_for_all/readme.md new file mode 100644 index 0000000000000..705a33b2fca52 --- /dev/null +++ b/modular_doppler/ntnrc_for_all/readme.md @@ -0,0 +1,28 @@ +## Title: NTNRC For All + +MODULE ID: NTNRC_FOR_ALL + +### Description: + +Implements a general NTNRC channel every crewmember is added to by default, and related username pref. + +### TG Proc Changes: + +- `/datum/computer_file/program/chatclient/ui_act(...)` - Blocked passwords from being set on `strong` channels. +- `/obj/item/modular_computer/ui_act(...)` - Emergency mode exit program swaps between NTNRC and messenger. + +### Defines: + +- `code\__DEFINES\~doppler_defines\ntnrc.dm` + +### Master file additions + +N/A + +### Included files that are not contained in this module: + +N/A + +### Credits: + +- Ephe diff --git a/modular_doppler/objects_and_structures/code/structure.dm b/modular_doppler/objects_and_structures/code/structure.dm deleted file mode 100644 index 8ebda2b81ed2f..0000000000000 --- a/modular_doppler/objects_and_structures/code/structure.dm +++ /dev/null @@ -1,16 +0,0 @@ -/obj/effect/spawner/random/structure/crate - name = "crate spawner" - icon_state = "crate_secure" - loot = list( - /obj/effect/spawner/random/structure/crate_loot = 495, - /obj/structure/trash_pile = 250, - /obj/structure/closet/crate/trashcart/filled = 75, - /obj/effect/spawner/random/trash/moisture_trap = 50, - /obj/effect/spawner/random/trash/hobo_squat = 30, - /obj/structure/closet/mini_fridge = 35, - /obj/effect/spawner/random/trash/mess = 30, - /obj/item/kirbyplants/fern = 20, - /obj/structure/closet/crate/decorations = 15, - /obj/effect/decal/remains/human/smokey/maintenance = 7, - /obj/structure/destructible/cult/pants_altar = 1, - ) diff --git a/modular_doppler/objects_and_structures/code/trash_pile.dm b/modular_doppler/objects_and_structures/code/trash_pile.dm deleted file mode 100644 index 8e38a9bc46796..0000000000000 --- a/modular_doppler/objects_and_structures/code/trash_pile.dm +++ /dev/null @@ -1,138 +0,0 @@ -/obj/structure/trash_pile - name = "trash pile" - desc = "A heap of garbage, but maybe there's something interesting inside?" - icon = 'modular_doppler/objects_and_structures/icons/trash_piles.dmi' - icon_state = "randompile" - density = TRUE - anchored = TRUE - layer = TABLE_LAYER - obj_flags = CAN_BE_HIT - pass_flags = LETPASSTHROW - - max_integrity = 50 - - var/hide_person_time = 30 - var/hide_item_time = 15 - - var/list/searchedby = list()// Characters that have searched this trashpile, with values of searched time. - -/obj/structure/trash_pile/Initialize(mapload) - . = ..() - icon_state = pick( - "pile1", - "pile2", - "pilechair", - "piletable", - "pilevending", - "brtrashpile", - "microwavepile", - "rackpile", - "boxfort", - "trashbag", - "brokecomp", - ) - -/obj/structure/trash_pile/proc/do_search(mob/user) - if(contents.len) // There's something hidden - var/atom/hidden_atom = contents[contents.len] // Get the most recent hidden thing - if(istype(hidden_atom, /mob/living)) - var/mob/living/hidden_mob = hidden_atom - balloon_alert(user, "someone is inside!") - eject_mob(hidden_mob) - else if (istype(hidden_atom, /obj/item)) - var/obj/item/hidden_item = hidden_atom - balloon_alert(user, "found something!") - hidden_item.forceMove(src.loc) - else - // You already searched this one bruh - if(user.ckey in searchedby) - balloon_alert(user, "already searched!") - // You found an item! - else - produce_alpha_item() - balloon_alert(user, "found something!") - searchedby += user.ckey - -/obj/structure/trash_pile/attack_hand(mob/user) - // Human mob - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - human_user.visible_message("[user] searches through \the [src].", span_notice("You search through \the [src].")) - // Do the searching - if(do_after(user, rand(4 SECONDS, 6 SECONDS), target = src)) - if(src.loc) // Let's check if the pile still exists - do_search(user) - else - return ..() - -// Random lists -/obj/structure/trash_pile/proc/produce_alpha_item() - var/lootspawn = pick_weight(GLOB.maintenance_loot) - while(islist(lootspawn)) - lootspawn = pick_weight(lootspawn) - var/obj/item/hidden_item = new lootspawn(get_turf(src)) - return hidden_item - -/obj/structure/trash_pile/mouse_drop_receive(atom/dropping, mob/user, params) - if(user == dropping && iscarbon(dropping)) - var/mob/living/dropped_mob = dropping - if(dropped_mob.mobility_flags & MOBILITY_MOVE) - dive_in_pile(user) - return - -/obj/structure/trash_pile/proc/eject_mob(mob/living/hidden_mob) - hidden_mob.forceMove(src.loc) - playsound(hidden_mob.loc, 'sound/machines/chime.ogg', 50, FALSE, -5) - hidden_mob.do_alert_animation(hidden_mob) - -/obj/structure/trash_pile/proc/do_dive(mob/user) - if(contents.len) - for(var/mob/hidden_mob in contents) - balloon_alert(user, "already someone inside!") - eject_mob(hidden_mob) - return FALSE - return TRUE - -/obj/structure/trash_pile/proc/dive_in_pile(mob/user) - user.visible_message(span_warning("[user] starts diving into [src]."), \ - span_notice("You start diving into [src]...")) - var/adjusted_dive_time = hide_person_time - if(HAS_TRAIT(user, TRAIT_RESTRAINED)) // hiding takes twice as long when restrained. - adjusted_dive_time *= 2 - - if(do_after(user, adjusted_dive_time, user)) - if(src.loc) // Checking if structure has been destroyed - if(do_dive(user)) - user.forceMove(src) - -/obj/structure/trash_pile/proc/can_hide_item(obj/item/hidden_item) - if(contents.len > 10) - return FALSE - return TRUE - -/obj/structure/trash_pile/attackby(obj/item/hidden_item, mob/living/user, params) - if(!user.combat_mode) - if(can_hide_item(hidden_item)) - balloon_alert(user, "hiding item...") - if(do_after(user, hide_item_time, user)) - if(src.loc) - if(user.transferItemToLoc(hidden_item, src)) - balloon_alert(user, "item hidden") - else - balloon_alert(user, "it's stuck to your hand!") - else - balloon_alert(user, "it's full!") - return - - . = ..() - -/obj/structure/trash_pile/Destroy() - for(var/atom/movable/pile_contents in src) - pile_contents.forceMove(src.loc) - return ..() - -/obj/structure/trash_pile/container_resist_act(mob/user) - user.forceMove(src.loc) - -/obj/structure/trash_pile/relaymove(mob/user) - container_resist_act(user) diff --git a/modular_doppler/reagent_forging/code/forge_weapons.dm b/modular_doppler/reagent_forging/code/forge_weapons.dm index 113d9d0138e93..fdf5049f347c8 100644 --- a/modular_doppler/reagent_forging/code/forge_weapons.dm +++ b/modular_doppler/reagent_forging/code/forge_weapons.dm @@ -25,7 +25,7 @@ icon_state = "sword" inhand_icon_state = "sword" worn_icon_state = "sword_back" - belt_icon_state = "sword_belt" + inside_belt_icon_state = "sword_belt" hitsound = 'sound/items/weapons/bladeslice.ogg' throwforce = 10 block_chance = 25 @@ -46,7 +46,7 @@ icon_state = "katana" inhand_icon_state = "katana" worn_icon_state = "katana_back" - belt_icon_state = "katana_belt" + inside_belt_icon_state = "katana_belt" hitsound = 'sound/items/weapons/bladeslice.ogg' throwforce = 10 block_chance = 20 @@ -65,7 +65,7 @@ icon_state = "dagger" inhand_icon_state = "dagger" worn_icon_state = "dagger_back" - belt_icon_state = "dagger_belt" + inside_belt_icon_state = "dagger_belt" hitsound = 'sound/items/weapons/bladeslice.ogg' throw_speed = 4 embed_type = /datum/embed_data/forged_dagger diff --git a/modular_doppler/sprite_swaps/code/bigclosets.dm b/modular_doppler/sprite_swaps/code/bigclosets.dm new file mode 100644 index 0000000000000..f3f36ca8e5323 --- /dev/null +++ b/modular_doppler/sprite_swaps/code/bigclosets.dm @@ -0,0 +1,28 @@ +/obj/structure/closet/emcloset + desc = "A sturdy closet to store breach control equipment and materials. It could probably protect you from dangerous air pressure." + icon = 'modular_doppler/sprite_swaps/icons/elockers.dmi' + max_integrity = 300 + contents_pressure_protection = 1 + door_anim_time = 0 + max_mob_size = MOB_SIZE_LARGE + mob_storage_capacity = 4 + storage_capacity = 45 + +/obj/structure/closet/firecloset + desc = "A sturdy closet to store fire suppression equipment and materials. It could probably protect you from dangerous ambient temperatures." + icon = 'modular_doppler/sprite_swaps/icons/elockers.dmi' + max_integrity = 300 + contents_thermal_insulation = 1 + door_anim_time = 0 + max_mob_size = MOB_SIZE_LARGE + mob_storage_capacity = 4 + storage_capacity = 45 + armor_type = /datum/armor/fire_closet + +/datum/armor/fire_closet + melee = 20 + bullet = 10 + laser = 10 + bomb = 10 + fire = 100 + acid = 60 diff --git a/modular_doppler/sprite_swaps/icons/elockers.dmi b/modular_doppler/sprite_swaps/icons/elockers.dmi new file mode 100644 index 0000000000000..81e4be860492a Binary files /dev/null and b/modular_doppler/sprite_swaps/icons/elockers.dmi differ diff --git a/modular_doppler/tableflip/tableflip.dm b/modular_doppler/tableflip/tableflip.dm index 19d119536d436..73a0cefb1a509 100644 --- a/modular_doppler/tableflip/tableflip.dm +++ b/modular_doppler/tableflip/tableflip.dm @@ -28,7 +28,7 @@ if(istype(mover, /obj/projectile)) var/obj/projectile/projectile = mover //Lets through bullets shot from behind the cover of the table - if(projectile.trajectory && angle2dir_cardinal(projectile.trajectory.angle) == dir) + if(angle2dir_cardinal(projectile.angle) == dir) return TRUE return FALSE if(border_dir == dir) diff --git a/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm b/modular_doppler/the-business/code/twitch.dm similarity index 80% rename from modular_doppler/deforest_medical_items/code/chemicals/twitch.dm rename to modular_doppler/the-business/code/twitch.dm index 8d6b2ca392c6c..6951f8f07628d 100644 --- a/modular_doppler/deforest_medical_items/code/chemicals/twitch.dm +++ b/modular_doppler/the-business/code/twitch.dm @@ -8,9 +8,6 @@ // Reaction to make twitch, makes 10u from 17u input reagents /datum/chemical_reaction/twitch - results = list( - /datum/reagent/drug/twitch = 10, - ) required_reagents = list( /datum/reagent/impedrezene = 5, /datum/reagent/bluespace = 10, @@ -19,14 +16,36 @@ mob_react = FALSE reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING -// Twitch drug, makes the takers of it faster and able to dodge bullets while in their system, to potentially bad side effects +/datum/chemical_reaction/twitch/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) + var/location = get_turf(holder.my_atom) + for(var/iteration in 1 to created_volume) + var/obj/item/reagent_containers/hypospray/medipen/deforest/twitch/new_injector = new(location) + new_injector.pixel_x = rand(-6, 6) + new_injector.pixel_y = rand(-6, 6) + +// Injector, because it needs to look kickass +/obj/item/reagent_containers/hypospray/medipen/deforest/twitch + name = "T-WITCH vial" + desc = "An almost cartoonish looking glass injector filled with a horribly corrosive green liquid that slowly swirls around. \ + A heavily regulated substance called T-WITCH that is claimed to make the users of it 'see faster'." + icon = 'modular_doppler/the-business/icons/items.dmi' + base_icon_state = "twitch" + icon_state = "twitch" + list_reagents = list( + /datum/reagent/drug/twitch = 10, + /datum/reagent/drug/maint/tar = 5, + /datum/reagent/medicine/silibinin = 5, + /datum/reagent/toxin/leadacetate = 5, + ) + +// T-WITCH, makes the user faster in movement and attacks, they can even dodge projectiles when overdosing on it /datum/reagent/drug/twitch - name = "TWitch" - description = "A drug originally developed by and for plutonians to assist them during raids. \ - Does not see wide use due to the whole reality-disassociation and heart disease thing afterwards. \ - Can be intentionally overdosed to increase the drug's effects" + name = "T-WITCH" + description = "An invention by the drug ~artists~ of Europa, a wicked stimulant that both slow's the user's \ + perception of time and speeds of their actions. This is a recipe for some extreme performance, at heavy \ + cost to the user's health in most cases." reagent_state = LIQUID - color = "#c22a44" + color = "#91db69" taste_description = "television static" metabolization_rate = 0.65 * REAGENTS_METABOLISM ph = 3 @@ -41,7 +60,6 @@ /// How much the mob heating is multiplied by, if the target is a robot or has muscled veins var/mob_heating_muliplier = 5 - /datum/reagent/drug/twitch/on_mob_metabolize(mob/living/our_guy) . = ..() @@ -71,7 +89,6 @@ game_plane_master_controller.add_filter(TWITCH_SCREEN_BLUR, 1, list("type" = "radial_blur", "size" = 0.02)) - /datum/reagent/drug/twitch/on_mob_end_metabolize(mob/living/carbon/our_guy) . = ..() @@ -80,8 +97,6 @@ our_guy.sound_environment_override = NONE - speech_effect_span = "hierophant" - UnregisterSignal(our_guy, COMSIG_MOVABLE_MOVED) UnregisterSignal(our_guy, COMSIG_MOVABLE_HEAR) if(overdosed) @@ -90,13 +105,13 @@ if(constant_dose_time < CONSTANT_DOSE_SAFE_LIMIT) // Anything less than this and you'll come out fiiiine, aside from a big hit of stamina damage if(!(our_guy.mob_biotypes & MOB_ROBOTIC)) our_guy.visible_message( - span_danger("[our_guy] suddenly slows from [our_guy.p_their()] inhuman speeds, coming back with a wicked nosebleed!"), - span_danger("You suddenly slow back to normal, a stream of blood gushing from your nose!") + span_danger("[our_guy] stops dead, [our_guy.p_their()] afterimages quickly catching up to them!"), + span_danger("You suddenly stop dead in your tracks, a stream of blood gushing from your nose!") ) else our_guy.visible_message( - span_danger("[our_guy] suddenly slows from [our_guy.p_their()] inhuman speeds!"), - span_danger("You suddenly slow back to normal speed!") + span_danger("[our_guy] stops dead, [our_guy.p_their()] afterimages quickly catching up to them!"), + span_danger("You suddenly stop dead in your tracks!") ) our_guy.adjustStaminaLoss(constant_dose_time) @@ -105,13 +120,13 @@ our_guy.spray_blood(our_guy.dir, 2) // The before mentioned coughing up blood our_guy.emote("cough") our_guy.visible_message( - span_danger("[our_guy] suddenly snaps back from [our_guy.p_their()] inhuman speeds, coughing up a spray of blood!"), - span_danger("As you snap back to normal speed you cough up a worrying amount of blood. You feel like you've just been run over by a power loader.") + span_danger("[our_guy] stops dead, coughing up a spray of blood!"), + span_danger("As you stop dead in your tracks, you cough up a worrying amount of blood.") ) else our_guy.visible_message( - span_danger("[our_guy] suddenly snaps back from [our_guy.p_their()] inhuman speeds!"), - span_danger("You suddenly snap back to normal speeds. You feel like you've just been run over by a power loader.") + span_danger("[our_guy] stops dead, heat venting from [our_guy.p_their()] body!"), + span_danger("You suddenly stop dead in your tracks, superheated air venting from your body!") ) our_guy.adjustStaminaLoss(constant_dose_time) if(!HAS_TRAIT(our_guy, TRAIT_TWITCH_ADAPTED)) @@ -120,18 +135,18 @@ if(!our_guy.hud_used) return + our_guy.Stun(1 SECONDS) + var/atom/movable/plane_master_controller/game_plane_master_controller = our_guy.hud_used.plane_master_controllers[PLANE_MASTERS_GAME] game_plane_master_controller.remove_filter(TWITCH_SCREEN_FILTER) game_plane_master_controller.remove_filter(TWITCH_SCREEN_BLUR) - /// Leaves an afterimage behind the mob when they move /datum/reagent/drug/twitch/proc/on_movement(mob/living/carbon/our_guy, atom/old_loc) SIGNAL_HANDLER new /obj/effect/temp_visual/decoy/twitch_afterimage(old_loc, our_guy) - /// Tries to dodge incoming bullets if we aren't disabled for any reasons /datum/reagent/drug/twitch/proc/dodge_bullets(mob/living/carbon/human/source, obj/projectile/hitting_projectile, def_zone) SIGNAL_HANDLER @@ -147,7 +162,6 @@ addtimer(CALLBACK(source, TYPE_PROC_REF(/datum, remove_filter), TWITCH_BLUR_EFFECT), 0.5 SECONDS) return COMPONENT_BULLET_PIERCED - /datum/reagent/drug/twitch/on_mob_life(mob/living/carbon/our_guy, seconds_per_tick, times_fired) . = ..() @@ -168,10 +182,11 @@ if(locate(/datum/reagent/drug/kronkaine) in our_guy.reagents.reagent_list) // Kronkaine, another heart-straining drug, could cause problems if mixed with this our_guy.ForceContractDisease(new /datum/disease/adrenal_crisis(), FALSE, TRUE) - /datum/reagent/drug/twitch/overdose_start(mob/living/our_guy) . = ..() + speech_effect_span = "hierophant" + RegisterSignal(our_guy, COMSIG_ATOM_PRE_BULLET_ACT, PROC_REF(dodge_bullets)) our_guy.next_move_modifier -= 0.2 // Overdosing makes you a liiitle faster but you know has some really bad consequences @@ -186,7 +201,6 @@ for(var/filter in game_plane_master_controller.get_filters(TWITCH_SCREEN_FILTER)) animate(filter, loop = -1, color = col_filter_ourple, time = 4 SECONDS, easing = BOUNCE_EASING) - /datum/reagent/drug/twitch/overdose_process(mob/living/carbon/our_guy, seconds_per_tick, times_fired) . = ..() our_guy.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick) @@ -205,9 +219,8 @@ our_guy.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) if(SPT_PROB(5, seconds_per_tick) && !(our_guy.mob_biotypes & MOB_ROBOTIC)) - to_chat(our_guy, span_danger("You cough up a splatter of blood!")) - our_guy.spray_blood(our_guy.dir, 1) - our_guy.emote("cough") + our_guy.playsound_local(our_guy, 'sound/effects/singlebeat.ogg', 100, TRUE) + flash_color(our_guy, flash_color = "#ff0000", flash_time = 3 SECONDS) if(SPT_PROB(10, seconds_per_tick)) our_guy.add_filter(TWITCH_OVERDOSE_BLUR_EFFECT, 2, phase_filter(8)) @@ -218,7 +231,6 @@ SIGNAL_HANDLER hearing_args[HEARING_RAW_MESSAGE] = "[hearing_args[HEARING_RAW_MESSAGE]]" - /// Cool filter that I'm using for some of this :))) /proc/phase_filter(size) . = list("type" = "wave") @@ -226,7 +238,6 @@ if(!isnull(size)) .["size"] = size - // Temp visual that changes color for that bootleg sandevistan effect /obj/effect/temp_visual/decoy/twitch_afterimage duration = 0.75 SECONDS diff --git a/modular_doppler/the-business/icons/items.dmi b/modular_doppler/the-business/icons/items.dmi new file mode 100644 index 0000000000000..805f33631ea88 Binary files /dev/null and b/modular_doppler/the-business/icons/items.dmi differ diff --git a/modular_doppler/verbs/code/subtle.dm b/modular_doppler/verbs/code/subtle.dm index 785119be2eb53..3d6158e47e786 100644 --- a/modular_doppler/verbs/code/subtle.dm +++ b/modular_doppler/verbs/code/subtle.dm @@ -39,7 +39,7 @@ in_view -= GLOB.dead_mob_list in_view.Remove(user) - for(var/mob/eye/ai_eye/ai_eye in in_view) + for(var/mob/eye/camera/ai/ai_eye in in_view) in_view.Remove(ai_eye) var/list/targets = list(SUBTLE_ONE_TILE_TEXT, SUBTLE_SAME_TILE_TEXT) + in_view diff --git a/rust_g.dll b/rust_g.dll index d3aebf7121706..157fb64acaf33 100644 Binary files a/rust_g.dll and b/rust_g.dll differ diff --git a/sound/attributions.txt b/sound/attributions.txt index dab6cedf7eb62..ff83a24ab8230 100644 --- a/sound/attributions.txt +++ b/sound/attributions.txt @@ -23,7 +23,6 @@ champagne_pop.ogg is credited to ultradust on freesound https://freesound.org/pe can_open.ogg adapted from https://freesound.org/people/MaxDemianAGL/sounds/130031/ can_shake.ogg adapted from https://freesound.org/people/mcmast/sounds/456703/ - splatter.ogg adapted from https://freesound.org/people/Rocktopus/sounds/233418/ hohoho.ogg and hehe.ogg are cut from a recording by Nanakisan on freesound: https://freesound.org/people/Nanakisan/sounds/253534/ mbox_full.ogg and mbox_end.ogg make use of The Ragtime Drummer by James Lent, in the public domain @@ -50,7 +49,7 @@ https://freesound.org/s/431740/ (CC 0) chainsaw_stop.ogg is adapted from kyles "chainsaw sawing short cuts +stop.flac" (CC 0) https://freesound.org/people/kyles/sounds/453256/ -clock.mp3 is adapted from Tetrisrocker's "Clock", which uses CC Attributions 0 +clock.ogg is adapted from Tetrisrocker's "Clock", which uses CC Attributions 0 https://freesound.org/people/Tetrisrocker/sounds/458627/ ark_activation.ogg is taken from ScottFerguson1's "Cucko Clock edited version", which is licensed under CC Attribution 3.0 @@ -181,8 +180,6 @@ https://freesound.org/people/shw489/sounds/234389/ soup_boil1.ogg through soup_boil5.ogg and soup_boil_end.ogg are taken from Boiling Soup from Freesoung.org (CC4) and converted to OGG / split apart (but is otherwise unchanged): https://freesound.org/people/jorickhoofd/sounds/632783/ - - valve_opening.ogg was made by mixing water flowing samples from: https://freesound.org/people/scriotxstudios/sounds/349111/?attribution=1 and squeaky scrape sound from: https://freesound.org/people/Department64/sounds/669028/ which was modified with lower pitch @@ -191,6 +188,9 @@ liquid_pour2.ogg and liquid_pour3.ogg were cut from https://freesound.org/people/MattRuthSound/sounds/561896/ https://freesound.org/people/MattRuthSound/sounds/561895/ +roaring_fire.ogg made from: 10835 big fire loop.wav by Robinhood76 -- https://freesound.org/s/612277/ -- License: Attribution NonCommercial 4.0 +fire_puff made from: Bonfire Being Lit by samararaine -- https://freesound.org/s/186374/ -- License: Creative Commons 0 + ayylien.ogg was made by remixing: SCIRetro_Energy Swells Synth_Funky Audio_Sonics Spices by Funky_Audio under CC0 -- https://freesound.org/people/realtheremin/sounds/119011/ scifi_scare_a.aiff by realtheremin under CC0 -- https://freesound.org/people/Funky_Audio/sounds/729392/ @@ -209,3 +209,7 @@ https://freesound.org/people/C_Rogers/sounds/203368/ -- glass-shattering-hit_01. https://freesound.org/people/Czarcazas/sounds/330800/ -- Audio reversal/fading of Shattering Glass (Small) by Czarcazas -- https://freesound.org/s/330800/ -- License: Attribution 3.0 sound/effects/bonk.ogg - recorded by oranges on a coke zero bottle, edited by ninjanomnom, released to public domain + +sound\items\weapons\hammer_death_scream.ogg - Undefeatablesos' scream recorded by Niron3206, edited by Niron3206, License: Creative Commons 0 + +sound/machines/sink-faucet.ogg -- https://freesound.org/people/FOSSarts/sounds/740086/ -- by FOSSarts (CC0) diff --git a/sound/effects/changeling_absorb/attribution.txt b/sound/effects/changeling_absorb/attribution.txt new file mode 100644 index 0000000000000..8fb03b4f01c22 --- /dev/null +++ b/sound/effects/changeling_absorb/attribution.txt @@ -0,0 +1,2 @@ +changeling_absorb 1-7 made by sadboysuss +license: CC-BY-SA \ No newline at end of file diff --git a/sound/effects/changeling_absorb/changeling_absorb1.ogg b/sound/effects/changeling_absorb/changeling_absorb1.ogg new file mode 100644 index 0000000000000..1ce7457a2d9a3 Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb1.ogg differ diff --git a/sound/effects/changeling_absorb/changeling_absorb2.ogg b/sound/effects/changeling_absorb/changeling_absorb2.ogg new file mode 100644 index 0000000000000..86bb2495cd1d8 Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb2.ogg differ diff --git a/sound/effects/changeling_absorb/changeling_absorb3.ogg b/sound/effects/changeling_absorb/changeling_absorb3.ogg new file mode 100644 index 0000000000000..2a0dcedaf61bd Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb3.ogg differ diff --git a/sound/effects/changeling_absorb/changeling_absorb4.ogg b/sound/effects/changeling_absorb/changeling_absorb4.ogg new file mode 100644 index 0000000000000..ea3cc51e43bb3 Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb4.ogg differ diff --git a/sound/effects/changeling_absorb/changeling_absorb5.ogg b/sound/effects/changeling_absorb/changeling_absorb5.ogg new file mode 100644 index 0000000000000..761f29a8cd89b Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb5.ogg differ diff --git a/sound/effects/changeling_absorb/changeling_absorb6.ogg b/sound/effects/changeling_absorb/changeling_absorb6.ogg new file mode 100644 index 0000000000000..10e70742e6704 Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb6.ogg differ diff --git a/sound/effects/changeling_absorb/changeling_absorb7.ogg b/sound/effects/changeling_absorb/changeling_absorb7.ogg new file mode 100644 index 0000000000000..7a1fd52fa932f Binary files /dev/null and b/sound/effects/changeling_absorb/changeling_absorb7.ogg differ diff --git a/sound/effects/fire_puff.ogg b/sound/effects/fire_puff.ogg new file mode 100644 index 0000000000000..c238584f55a65 Binary files /dev/null and b/sound/effects/fire_puff.ogg differ diff --git a/sound/effects/fireclip1.ogg b/sound/effects/fireclip1.ogg new file mode 100644 index 0000000000000..89ba2395a4d92 Binary files /dev/null and b/sound/effects/fireclip1.ogg differ diff --git a/sound/effects/fireclip2.ogg b/sound/effects/fireclip2.ogg new file mode 100644 index 0000000000000..c60990cd5bd7e Binary files /dev/null and b/sound/effects/fireclip2.ogg differ diff --git a/sound/effects/fireclip3.ogg b/sound/effects/fireclip3.ogg new file mode 100644 index 0000000000000..cd68608959879 Binary files /dev/null and b/sound/effects/fireclip3.ogg differ diff --git a/sound/effects/fireclip4.ogg b/sound/effects/fireclip4.ogg new file mode 100644 index 0000000000000..9ae01a8d3ade7 Binary files /dev/null and b/sound/effects/fireclip4.ogg differ diff --git a/sound/effects/fireclip5.ogg b/sound/effects/fireclip5.ogg new file mode 100644 index 0000000000000..855cc4b820d5a Binary files /dev/null and b/sound/effects/fireclip5.ogg differ diff --git a/sound/effects/fireclip6.ogg b/sound/effects/fireclip6.ogg new file mode 100644 index 0000000000000..061cc42993d8c Binary files /dev/null and b/sound/effects/fireclip6.ogg differ diff --git a/sound/effects/fireclip7.ogg b/sound/effects/fireclip7.ogg new file mode 100644 index 0000000000000..3a0f9840f3c5e Binary files /dev/null and b/sound/effects/fireclip7.ogg differ diff --git a/sound/effects/magic/attribution.txt b/sound/effects/magic/attribution.txt new file mode 100644 index 0000000000000..448707cd70c76 --- /dev/null +++ b/sound/effects/magic/attribution.txt @@ -0,0 +1,2 @@ +curse.ogg made by sadboysuss +license: CC-BY-SA \ No newline at end of file diff --git a/sound/effects/magic/curse.ogg b/sound/effects/magic/curse.ogg index b6af218a6585a..b9134da2c5a9a 100644 Binary files a/sound/effects/magic/curse.ogg and b/sound/effects/magic/curse.ogg differ diff --git a/sound/effects/roaring_fire.ogg b/sound/effects/roaring_fire.ogg new file mode 100644 index 0000000000000..b3927b69feb87 Binary files /dev/null and b/sound/effects/roaring_fire.ogg differ diff --git a/sound/items/duct_tape/duct_tape_rip.ogg b/sound/items/duct_tape/duct_tape_rip.ogg index bf1746ef7c940..8a5df8ffdd872 100644 Binary files a/sound/items/duct_tape/duct_tape_rip.ogg and b/sound/items/duct_tape/duct_tape_rip.ogg differ diff --git a/sound/items/duct_tape/duct_tape_snap.ogg b/sound/items/duct_tape/duct_tape_snap.ogg index 354061af12152..af253fc7ef24b 100644 Binary files a/sound/items/duct_tape/duct_tape_snap.ogg and b/sound/items/duct_tape/duct_tape_snap.ogg differ diff --git a/sound/items/handling/shoes/sneakers_pickup1.ogg b/sound/items/handling/shoes/sneakers_pickup1.ogg index 9670ec324e372..7d86eaa562f13 100644 Binary files a/sound/items/handling/shoes/sneakers_pickup1.ogg and b/sound/items/handling/shoes/sneakers_pickup1.ogg differ diff --git a/sound/items/weapons/hammer_death_scream.ogg b/sound/items/weapons/hammer_death_scream.ogg new file mode 100644 index 0000000000000..cff35f2328116 Binary files /dev/null and b/sound/items/weapons/hammer_death_scream.ogg differ diff --git a/sound/items/weapons/peashoot.ogg b/sound/items/weapons/peashoot.ogg new file mode 100644 index 0000000000000..de4d5c1e46458 Binary files /dev/null and b/sound/items/weapons/peashoot.ogg differ diff --git a/sound/machines/license.txt b/sound/machines/license.txt index dbccfd7ea096d..69e52c94e4b74 100644 --- a/sound/machines/license.txt +++ b/sound/machines/license.txt @@ -4,3 +4,5 @@ This is licensed under CC-BY 4.0, found at https://creativecommons.org/licenses/ shutter.ogg adapted from Joseph Sardin on BigSoundBank https://bigsoundbank.com/detail-2475-manual-roller-shutter-closing-out-2.html + +mail_sort.ogg adapted from csigusz_foxoup ob Freesound https://freesound.org/people/csigusz_foxoup/sounds/711428/ \ No newline at end of file diff --git a/sound/machines/mail_sort.ogg b/sound/machines/mail_sort.ogg new file mode 100644 index 0000000000000..66ec79468d50b Binary files /dev/null and b/sound/machines/mail_sort.ogg differ diff --git a/sound/machines/sink-faucet.ogg b/sound/machines/sink-faucet.ogg new file mode 100644 index 0000000000000..7102a3940308f Binary files /dev/null and b/sound/machines/sink-faucet.ogg differ diff --git a/sound/misc/escape_menu/attribution.txt b/sound/misc/escape_menu/attribution.txt new file mode 100644 index 0000000000000..c4f5fc0206b0f --- /dev/null +++ b/sound/misc/escape_menu/attribution.txt @@ -0,0 +1,3 @@ +esc_middle, esc_open and esc_close are all modified from the following respectively: +Tape Recorder.wav by Pogotron -- https://freesound.org/s/61075/ -- License: Sampling+ +cassette tape deck slot open close hard nice spring various and spinout end.flac by kyles -- https://freesound.org/s/635487/ -- License: Creative Commons 0 diff --git a/sound/misc/escape_menu/esc_close.ogg b/sound/misc/escape_menu/esc_close.ogg new file mode 100644 index 0000000000000..30946e77edd80 Binary files /dev/null and b/sound/misc/escape_menu/esc_close.ogg differ diff --git a/sound/misc/escape_menu/esc_middle.ogg b/sound/misc/escape_menu/esc_middle.ogg new file mode 100644 index 0000000000000..4a8b3134926df Binary files /dev/null and b/sound/misc/escape_menu/esc_middle.ogg differ diff --git a/sound/misc/escape_menu/esc_open.ogg b/sound/misc/escape_menu/esc_open.ogg new file mode 100644 index 0000000000000..4ad958d0bcb2f Binary files /dev/null and b/sound/misc/escape_menu/esc_open.ogg differ diff --git a/sound/mobs/humanoids/ethereal/credits.txt b/sound/mobs/humanoids/ethereal/credits.txt new file mode 100644 index 0000000000000..a157ceacf9edd --- /dev/null +++ b/sound/mobs/humanoids/ethereal/credits.txt @@ -0,0 +1,2 @@ +ethereal_hiss.ogg majorly edited/mixed by Sothanforax, based off of the original audio: +Remix of 101127__CGEffex__Bug_Zapper_Long_moth_electrocution_Remix.wav by Timbre -- https://freesound.org/s/101334/ -- License: Attribution NonCommercial 4.0 diff --git a/sound/mobs/humanoids/ethereal/ethereal_hiss.ogg b/sound/mobs/humanoids/ethereal/ethereal_hiss.ogg new file mode 100644 index 0000000000000..969944ea4daa8 Binary files /dev/null and b/sound/mobs/humanoids/ethereal/ethereal_hiss.ogg differ diff --git a/sound/mobs/humanoids/felinid/attribution.txt b/sound/mobs/humanoids/felinid/attribution.txt new file mode 100644 index 0000000000000..dfd416150c6b3 --- /dev/null +++ b/sound/mobs/humanoids/felinid/attribution.txt @@ -0,0 +1 @@ +felinid_hiss is catHisses2.wav by Zabuhailo -- https://freesound.org/s/146962/ -- License: Creative Commons 0 \ No newline at end of file diff --git a/sound/mobs/humanoids/felinid/felinid_hiss.ogg b/sound/mobs/humanoids/felinid/felinid_hiss.ogg new file mode 100644 index 0000000000000..f343bd77fd1ff Binary files /dev/null and b/sound/mobs/humanoids/felinid/felinid_hiss.ogg differ diff --git a/sound/mobs/humanoids/human/attribution.txt b/sound/mobs/humanoids/human/attribution.txt index 20b8c14889a06..f56dc03f794ba 100644 --- a/sound/mobs/humanoids/human/attribution.txt +++ b/sound/mobs/humanoids/human/attribution.txt @@ -1,4 +1,5 @@ The male sharp gasps are from https://freesound.org/people/bacruz666/sounds/341908/ and https://freesound.org/people/nettoi/sounds/677540/, the female sharp gasps are from https://freesound.org/people/drotzruhn/sounds/405203/ +human_hiss.ogg is all original work by Sothanforax, hereby licensed under CC BY-SA 3.0 { male_sniff.ogg - https://freesound.org/people/Fluffayfish/sounds/327799/ , License: CC BY-NC 3.0 diff --git a/sound/mobs/humanoids/human/hiss/human_hiss.ogg b/sound/mobs/humanoids/human/hiss/human_hiss.ogg new file mode 100644 index 0000000000000..15f643b422086 Binary files /dev/null and b/sound/mobs/humanoids/human/hiss/human_hiss.ogg differ diff --git a/sound/mobs/humanoids/lizard/credits.txt b/sound/mobs/humanoids/lizard/credits.txt index 814b758f44da9..820a38fb59376 100644 --- a/sound/mobs/humanoids/lizard/credits.txt +++ b/sound/mobs/humanoids/lizard/credits.txt @@ -1,2 +1,3 @@ lizard_scream_1 by n Beats. Lizard_scream_2 and lizard_scream_3 by -sihiL. Lizard_scream_3 edited Lord Saladin. Original PR by super12pl. deathsound.ogg is originally "demon dying.wav" by THE_bizniss. It was converted and compressed into .ogg format. It and a link to its license can be found at https://freesound.org/s/37823/ +lizard_hiss was originally recorded by Garuda1982, minor editing by Sothanforax. license is at https://freesound.org/s/541656/ diff --git a/sound/mobs/humanoids/lizard/lizard_hiss.ogg b/sound/mobs/humanoids/lizard/lizard_hiss.ogg new file mode 100644 index 0000000000000..202c7929a1372 Binary files /dev/null and b/sound/mobs/humanoids/lizard/lizard_hiss.ogg differ diff --git a/sound/music/antag/attribution.txt b/sound/music/antag/attribution.txt index 6ae7cecc51970..d7b444fc909c9 100644 --- a/sound/music/antag/attribution.txt +++ b/sound/music/antag/attribution.txt @@ -1,5 +1,5 @@ sound/instrumental/antag/abductee.ogg is from "Warp SFX" https://freesound.org/people/Breviceps/sounds/453391 (CC0) -sound/instrumental/antag/brainwash.ogg is from "nog.wav" https://freesound.org/people/_NOMINAL_/sounds/124602 (CC-BY 3.0) +sound/instrumental/antag/brainwash.ogg is made by FeiH from https://github.com/OracleStation/OracleStation/pull/1122/commits/b28fbbad715b96db029a8e8df38b1357a58daec1 sound/instrumental/antag/hypnosis.ogg is from "Flashback.wav" https://freesound.org/people/Sclolex/sounds/342103 (CC0) { diff --git a/sound/voice/repairbot/brick.ogg b/sound/voice/repairbot/brick.ogg new file mode 100644 index 0000000000000..78dae8633a3a6 Binary files /dev/null and b/sound/voice/repairbot/brick.ogg differ diff --git a/sound/voice/repairbot/cantanymore.ogg b/sound/voice/repairbot/cantanymore.ogg new file mode 100644 index 0000000000000..4fc4fb216f72f Binary files /dev/null and b/sound/voice/repairbot/cantanymore.ogg differ diff --git a/sound/voice/repairbot/entropy.ogg b/sound/voice/repairbot/entropy.ogg new file mode 100644 index 0000000000000..ab6a4f6a06732 Binary files /dev/null and b/sound/voice/repairbot/entropy.ogg differ diff --git a/sound/voice/repairbot/fixit.ogg b/sound/voice/repairbot/fixit.ogg new file mode 100644 index 0000000000000..20e095589cbb1 Binary files /dev/null and b/sound/voice/repairbot/fixit.ogg differ diff --git a/sound/voice/repairbot/fixtouch.ogg b/sound/voice/repairbot/fixtouch.ogg new file mode 100644 index 0000000000000..86ca24ffe3f95 Binary files /dev/null and b/sound/voice/repairbot/fixtouch.ogg differ diff --git a/sound/voice/repairbot/passionproject.ogg b/sound/voice/repairbot/passionproject.ogg new file mode 100644 index 0000000000000..6f1fba1d45251 Binary files /dev/null and b/sound/voice/repairbot/passionproject.ogg differ diff --git a/sound/voice/repairbot/patchingholes.ogg b/sound/voice/repairbot/patchingholes.ogg new file mode 100644 index 0000000000000..6c65fc22b9627 Binary files /dev/null and b/sound/voice/repairbot/patchingholes.ogg differ diff --git a/sound/voice/repairbot/pay.ogg b/sound/voice/repairbot/pay.ogg new file mode 100644 index 0000000000000..0aa2b68868c96 Binary files /dev/null and b/sound/voice/repairbot/pay.ogg differ diff --git a/sound/voice/repairbot/strings.ogg b/sound/voice/repairbot/strings.ogg new file mode 100644 index 0000000000000..bc897eacccd14 Binary files /dev/null and b/sound/voice/repairbot/strings.ogg differ diff --git a/strings/fishing_tips.txt b/strings/fishing_tips.txt index af67d15e27e70..fd2e0dccc8100 100644 --- a/strings/fishing_tips.txt +++ b/strings/fishing_tips.txt @@ -54,3 +54,6 @@ Fish can grow in size and weight if you fed them somewhat frequently. Giving the Feeding a fish mutagen can triple the probability of generating evolved offsprings, provided it has an evolution. You can print fishing rods of different materials from an autolathe, which can inrease or decrease fishing difficulty, casting range, experience gained and can have other, special effects. Albeit scarcely, it's possible to catch fish made of the same materials of a custom material fishing rod. Equipping a shiny fishing hook and the quality of the bait can improve your odds. +You can use a fishing rod to snatch random organs during the "manipulate organs" step of the "organ manipulation" surgery. +By opening the aquarium panel and turning "Safe Mode" on, you can easily set up a purely decorative aquarium without having to worry about food, temperature and type of water. +Aquariums are also potential fishing spots. Only useful for catching fish you couldn't find in the wild, as a personal achievement and nothing more. \ No newline at end of file diff --git a/strings/tips.txt b/strings/tips.txt index 7d5f9f82ccc2e..5f33cb87bc7fe 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -55,7 +55,9 @@ As a Heretic, the Path of Cosmos allows you to take rightful ownership of the ve As a Janitor Cyborg, you are the bane of all slaughter demons and even Bubblegum himself. Cleaning up blood stains will severely gimp them. As a Janitor, if someone steals your janicart, you can instead use your space cleaner spray, grenades, water sprayer, exact bloody revenge or order another from Cargo. As a Janitor, mousetraps can be used to create bombs or booby-trap containers. +As a Janitor, you can command cleanbots by pointing at a tile and saying mop/clean. As a Medical Cyborg, you can fully perform surgery and even augment people. +As a Medical Doctor, a shower can be used to help recover from sleep, unconsciousness, confusion, drowsiness, jitters, dizziness, and drunkness. As a Medical Doctor, almost every type of wound can be treated at least temporarily with gauze. When in doubt, wrap it up! As a Medical Doctor, corpses placed inside a freezer or morgue tray will have their organs frozen preventing decay. If you don't have time to revive multiple dead bodies, transfer them to the morgue temporarily! As a Medical Doctor, corpses with the "...and their soul has departed" description no longer have a ghost attached to them and can't be revived. @@ -289,3 +291,26 @@ You don't need to destroy a Spacecoin machine to make your funds stop draining. As a Bitrunner, upgrading your quantum server will increase rewards and reduce downtime. As a Bitrunner, your avatar has a domain info ability which will give you clues to help complete virtual domains. Bitrunning is a crime. +You can right click someone with wire cutters, jaws of life, and box cutters to instantly snap cablecuffs or zipties. The jaws can even instantly break handcuffs! +You can alt-click tank transfer valves to remove a tank from them. +You can use a multitool in your hand to track the area's local APC. +Some items, when examined, are labeled as 'crafting components', which means you can smack them with another item to directly construct a recipe. Try using an igniter on a rod! +You can further the cycle of life by having two adult plushies play with eachother, creating a smaller junior child plushie. +Most species have only 32 teeth for use in dental implants. Moths have none. Lizards have seventy five. +As a Changeling, Repurposed Glands will break bolas, disable stuns, and give you a hefty speed boost at the cost of the use of your arms - which includes the ability to open restricted airlocks. +As a Geneticist, you should usually save all mutations you unlock. Negative mutations will increase your genetic stability, allowing you to keep more positive mutations. +You can craft peg limbs and crutches with wood for use in dire circumstances. The latter are also available in medical vendors. +As a Heretic, you can also sacrifice cultists, rewarding you with a knowledge point and one of three unique, powerful rewards. +As a Cultist, if you manage to sacrifice a Heretic, you will unlock one of three powerful and unique items to be created in every one of your cult's forges, archives, or altars. +As a Cultist, when you sacrifice a Heretic, they will be bound inside a powerful haunted longsword. Anyone can then unbind the blade, unlocking its powers and abilities, but also allowing the blade to act of its own free will. +As a Syndicate Monkey, you're explosively allergic to species transformations and should probably avoid them. +Biological armor will protect your limb from a zombie's infective attack, unless the limb's more damaged than the armor value. Armor with thick material, such as firesuits and EVA suits, also partially protects, preventing at least the first attack from infection. +In a pinch, you can reduce bleeding or burn infection with several commonplace reagents - flour, salt, saltwater can all be splashed onto the wound to stall for time, and tea can be drank for a boost to your body's defences. +First-aid analyzers double the speed of wound treatment on injuries, alongside giving out normal and improvised instructions for treatment. +Syndicate Duffelbags are a lot quicker to zip and unzip, have significantly less slowdown, and can carry up to two of various bulky, objective-related items - such as fire axes, guns, or gibtonite. Examine them closely to see all the possibilities. +The Coroner's surgical tools are considered 'cruel implements', which speeds up surgery on corpses but slows it on not-yet-corpses. A few other items also have it. +As a Coroner, remember that your autopsy scanner also works as an advanced health analyzer on right-click, but only for corpses. +As the Captain, your sabre deals extra damage to Assistants (as long as they have their original liver). +You can automatically extract and retract arm implants by 'activating' the empty hand they're on. This includes integrated toolsets, cursed katanas, and vorpal scythes. +You can combine the Carpet reagent with various different reagents, such as Oil and Cyanide, to create unique carpet types. +You can bake a birthday cake and then microwave it to create a legendary cake hat. You can then combine it with an energy sword to create an energy cake. diff --git a/tgstation.dme b/tgstation.dme index 2b1b2bee5ac89..cd81e3073819a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -245,6 +245,7 @@ #include "code\__DEFINES\time.dm" #include "code\__DEFINES\tools.dm" #include "code\__DEFINES\toys.dm" +#include "code\__DEFINES\tracy.dm" #include "code\__DEFINES\trader.dm" #include "code\__DEFINES\transport.dm" #include "code\__DEFINES\tts.dm" @@ -352,6 +353,7 @@ #include "code\__DEFINES\dcs\signals\signals_restaurant.dm" #include "code\__DEFINES\dcs\signals\signals_scangate.dm" #include "code\__DEFINES\dcs\signals\signals_screentips.dm" +#include "code\__DEFINES\dcs\signals\signals_shuttle.dm" #include "code\__DEFINES\dcs\signals\signals_spatial_grid.dm" #include "code\__DEFINES\dcs\signals\signals_species.dm" #include "code\__DEFINES\dcs\signals\signals_spell.dm" @@ -423,6 +425,7 @@ #include "code\__DEFINES\~doppler_defines\mobs.dm" #include "code\__DEFINES\~doppler_defines\mutant_blacklists.dm" #include "code\__DEFINES\~doppler_defines\mutant_variations.dm" +#include "code\__DEFINES\~doppler_defines\ntnrc.dm" #include "code\__DEFINES\~doppler_defines\obj_flags_doppler.dm" #include "code\__DEFINES\~doppler_defines\organ_slots.dm" #include "code\__DEFINES\~doppler_defines\preferences.dm" @@ -442,6 +445,7 @@ #include "code\__DEFINES\~doppler_defines\traits.dm" #include "code\__DEFINES\~doppler_defines\vv.dm" #include "code\__DEFINES\~doppler_defines\wounds.dm" +#include "code\__DEFINES\~doppler_defines\traits\declarations.dm" #include "code\__HELPERS\_auxtools_api.dm" #include "code\__HELPERS\_dreamluau.dm" #include "code\__HELPERS\_lists.dm" @@ -480,6 +484,7 @@ #include "code\__HELPERS\heap.dm" #include "code\__HELPERS\hearted.dm" #include "code\__HELPERS\honkerblast.dm" +#include "code\__HELPERS\hud.dm" #include "code\__HELPERS\icon_smoothing.dm" #include "code\__HELPERS\icons.dm" #include "code\__HELPERS\jatum.dm" @@ -509,6 +514,7 @@ #include "code\__HELPERS\screen_objs.dm" #include "code\__HELPERS\see_through_maps.dm" #include "code\__HELPERS\shell.dm" +#include "code\__HELPERS\shuttle.dm" #include "code\__HELPERS\spatial_info.dm" #include "code\__HELPERS\spawns.dm" #include "code\__HELPERS\stack_trace.dm" @@ -573,6 +579,7 @@ #include "code\_globalvars\lighting.dm" #include "code\_globalvars\logging.dm" #include "code\_globalvars\phobias.dm" +#include "code\_globalvars\pipe_info.dm" #include "code\_globalvars\rcd.dm" #include "code\_globalvars\religion.dm" #include "code\_globalvars\silo.dm" @@ -595,6 +602,7 @@ #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" #include "code\_globalvars\lists\ores_spawned.dm" +#include "code\_globalvars\lists\pipe_recipes.dm" #include "code\_globalvars\lists\plumbing.dm" #include "code\_globalvars\lists\poll_ignore.dm" #include "code\_globalvars\lists\quirks.dm" @@ -1101,6 +1109,7 @@ #include "code\datums\components\amputating_limbs.dm" #include "code\datums\components\anti_magic.dm" #include "code\datums\components\appearance_on_aggro.dm" +#include "code\datums\components\aquarium.dm" #include "code\datums\components\aquarium_content.dm" #include "code\datums\components\area_based_godmode.dm" #include "code\datums\components\area_sound_manager.dm" @@ -1208,6 +1217,7 @@ #include "code\datums\components\interaction_booby_trap.dm" #include "code\datums\components\irradiated.dm" #include "code\datums\components\item_equipped_movement_rustle.dm" +#include "code\datums\components\item_killsound.dm" #include "code\datums\components\itembound.dm" #include "code\datums\components\itempicky.dm" #include "code\datums\components\jetpack.dm" @@ -1344,6 +1354,7 @@ #include "code\datums\components\transforming.dm" #include "code\datums\components\trapdoor.dm" #include "code\datums\components\tree_climber.dm" +#include "code\datums\components\tug_towards.dm" #include "code\datums\components\twohanded.dm" #include "code\datums\components\udder.dm" #include "code\datums\components\unbreakable.dm" @@ -1435,6 +1446,7 @@ #include "code\datums\diseases\rhumba_beat.dm" #include "code\datums\diseases\transformation.dm" #include "code\datums\diseases\tuberculosis.dm" +#include "code\datums\diseases\weightlessness.dm" #include "code\datums\diseases\wizarditis.dm" #include "code\datums\diseases\advance\advance.dm" #include "code\datums\diseases\advance\presets.dm" @@ -1566,7 +1578,6 @@ #include "code\datums\elements\kneecapping.dm" #include "code\datums\elements\kneejerk.dm" #include "code\datums\elements\knockback.dm" -#include "code\datums\elements\lazy_fishing_spot.dm" #include "code\datums\elements\leeching_walk.dm" #include "code\datums\elements\lifesteal.dm" #include "code\datums\elements\light_blocking.dm" @@ -1713,6 +1724,7 @@ #include "code\datums\looping_sounds\acid.dm" #include "code\datums\looping_sounds\breathing.dm" #include "code\datums\looping_sounds\burning.dm" +#include "code\datums\looping_sounds\changeling_absorb.dm" #include "code\datums\looping_sounds\choking.dm" #include "code\datums\looping_sounds\cyborg.dm" #include "code\datums\looping_sounds\item_sounds.dm" @@ -1791,9 +1803,10 @@ #include "code\datums\proximity_monitor\proximity_monitor.dm" #include "code\datums\proximity_monitor\fields\ai_target_tracking.dm" #include "code\datums\proximity_monitor\fields\gravity.dm" -#include "code\datums\proximity_monitor\fields\projectile_dampener.dm" #include "code\datums\proximity_monitor\fields\timestop.dm" #include "code\datums\proximity_monitor\fields\void_storm.dm" +#include "code\datums\proximity_monitor\fields\projectile_dampener\projectile_dampener.dm" +#include "code\datums\proximity_monitor\fields\projectile_dampener\projectile_dampener_effects.dm" #include "code\datums\quirks\_quirk.dm" #include "code\datums\quirks\_quirk_constant_data.dm" #include "code\datums\quirks\negative_quirks\addict.dm" @@ -1931,6 +1944,7 @@ #include "code\datums\status_effects\_status_effect_helpers.dm" #include "code\datums\status_effects\agent_pinpointer.dm" #include "code\datums\status_effects\buffs.dm" +#include "code\datums\status_effects\death_sound.dm" #include "code\datums\status_effects\drug_effects.dm" #include "code\datums\status_effects\gas.dm" #include "code\datums\status_effects\grouped_effect.dm" @@ -2315,6 +2329,7 @@ #include "code\game\objects\effects\poster_motivational.dm" #include "code\game\objects\effects\powerup.dm" #include "code\game\objects\effects\rcd.dm" +#include "code\game\objects\effects\shared_particle_holder.dm" #include "code\game\objects\effects\spiderwebs.dm" #include "code\game\objects\effects\step_triggers.dm" #include "code\game\objects\effects\wanted_poster.dm" @@ -3979,6 +3994,7 @@ #include "code\modules\clothing\head\mind_monkey_helmet.dm" #include "code\modules\clothing\head\moth.dm" #include "code\modules\clothing\head\papersack.dm" +#include "code\modules\clothing\head\perceptomatrix.dm" #include "code\modules\clothing\head\pirate.dm" #include "code\modules\clothing\head\religious.dm" #include "code\modules\clothing\head\soft_caps.dm" @@ -4849,6 +4865,8 @@ #include "code\modules\mob\dead\observer\observer_say.dm" #include "code\modules\mob\dead\observer\orbit.dm" #include "code\modules\mob\eye\eye.dm" +#include "code\modules\mob\eye\camera\camera.dm" +#include "code\modules\mob\eye\camera\remote.dm" #include "code\modules\mob\living\blood.dm" #include "code\modules\mob\living\damage_procs.dm" #include "code\modules\mob\living\death.dm" @@ -4903,6 +4921,9 @@ #include "code\modules\mob\living\basic\bots\hygienebot\hygienebot_ai.dm" #include "code\modules\mob\living\basic\bots\medbot\medbot.dm" #include "code\modules\mob\living\basic\bots\medbot\medbot_ai.dm" +#include "code\modules\mob\living\basic\bots\repairbot\repairbot.dm" +#include "code\modules\mob\living\basic\bots\repairbot\repairbot_abilities.dm" +#include "code\modules\mob\living\basic\bots\repairbot\repairbot_ai.dm" #include "code\modules\mob\living\basic\bots\vibebot\vibebot.dm" #include "code\modules\mob\living\basic\bots\vibebot\vibebot_abilities.dm" #include "code\modules\mob\living\basic\bots\vibebot\vibebot_ai.dm" @@ -5357,7 +5378,6 @@ #include "code\modules\mob\living\simple_animal\bot\bot_announcement.dm" #include "code\modules\mob\living\simple_animal\bot\construction.dm" #include "code\modules\mob\living\simple_animal\bot\ed209bot.dm" -#include "code\modules\mob\living\simple_animal\bot\floorbot.dm" #include "code\modules\mob\living\simple_animal\bot\mulebot.dm" #include "code\modules\mob\living\simple_animal\bot\secbot.dm" #include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm" @@ -5979,28 +5999,32 @@ #include "code\modules\research\xenobiology\vatgrowing\samples\viruses\_virus.dm" #include "code\modules\security_levels\keycard_authentication.dm" #include "code\modules\security_levels\security_level_datums.dm" -#include "code\modules\shuttle\arrivals.dm" -#include "code\modules\shuttle\assault_pod.dm" -#include "code\modules\shuttle\battlecruiser_starfury.dm" -#include "code\modules\shuttle\computer.dm" -#include "code\modules\shuttle\docking.dm" -#include "code\modules\shuttle\elevator.dm" -#include "code\modules\shuttle\emergency.dm" -#include "code\modules\shuttle\ferry.dm" -#include "code\modules\shuttle\infiltrator.dm" -#include "code\modules\shuttle\manipulator.dm" -#include "code\modules\shuttle\medisim.dm" -#include "code\modules\shuttle\monastery.dm" -#include "code\modules\shuttle\navigation_computer.dm" -#include "code\modules\shuttle\on_move.dm" -#include "code\modules\shuttle\ripple.dm" #include "code\modules\shuttle\shuttle.dm" -#include "code\modules\shuttle\shuttle_rotate.dm" -#include "code\modules\shuttle\spaceship_navigation_beacon.dm" -#include "code\modules\shuttle\special.dm" -#include "code\modules\shuttle\supply.dm" -#include "code\modules\shuttle\syndicate.dm" -#include "code\modules\shuttle\white_ship.dm" +#include "code\modules\shuttle\misc\manipulator.dm" +#include "code\modules\shuttle\misc\medisim.dm" +#include "code\modules\shuttle\misc\ripple.dm" +#include "code\modules\shuttle\misc\spaceship_navigation_beacon.dm" +#include "code\modules\shuttle\misc\special.dm" +#include "code\modules\shuttle\mobile_port\mobile_port.dm" +#include "code\modules\shuttle\mobile_port\shuttle_move.dm" +#include "code\modules\shuttle\mobile_port\shuttle_move_callbacks.dm" +#include "code\modules\shuttle\mobile_port\shuttle_rotate_callbacks.dm" +#include "code\modules\shuttle\mobile_port\variants\arrivals.dm" +#include "code\modules\shuttle\mobile_port\variants\assault_pod.dm" +#include "code\modules\shuttle\mobile_port\variants\battlecruiser_starfury.dm" +#include "code\modules\shuttle\mobile_port\variants\elevator.dm" +#include "code\modules\shuttle\mobile_port\variants\ferry.dm" +#include "code\modules\shuttle\mobile_port\variants\infiltrator.dm" +#include "code\modules\shuttle\mobile_port\variants\supply.dm" +#include "code\modules\shuttle\mobile_port\variants\emergency\emergency.dm" +#include "code\modules\shuttle\mobile_port\variants\emergency\emergency_console.dm" +#include "code\modules\shuttle\mobile_port\variants\emergency\emergency_types.dm" +#include "code\modules\shuttle\mobile_port\variants\emergency\pods.dm" +#include "code\modules\shuttle\shuttle_consoles\monastery.dm" +#include "code\modules\shuttle\shuttle_consoles\navigation_computer.dm" +#include "code\modules\shuttle\shuttle_consoles\shuttle_console.dm" +#include "code\modules\shuttle\shuttle_consoles\syndicate.dm" +#include "code\modules\shuttle\shuttle_consoles\white_ship.dm" #include "code\modules\shuttle\shuttle_events\_shuttle_events.dm" #include "code\modules\shuttle\shuttle_events\blackhole.dm" #include "code\modules\shuttle\shuttle_events\carp.dm" @@ -6010,6 +6034,8 @@ #include "code\modules\shuttle\shuttle_events\player_controlled.dm" #include "code\modules\shuttle\shuttle_events\projectile.dm" #include "code\modules\shuttle\shuttle_events\turbulence.dm" +#include "code\modules\shuttle\stationary_port\port_types.dm" +#include "code\modules\shuttle\stationary_port\stationary_port.dm" #include "code\modules\spatial_grid\cell_tracker.dm" #include "code\modules\spells\spell.dm" #include "code\modules\spells\spell_types\madness_curse.dm" @@ -6177,7 +6203,6 @@ #include "code\modules\surgery\organs\external\wings\functional_wings.dm" #include "code\modules\surgery\organs\external\wings\moth_wings.dm" #include "code\modules\surgery\organs\external\wings\wings.dm" -#include "code\modules\surgery\organs\internal\_internal_organ.dm" #include "code\modules\surgery\organs\internal\appendix\_appendix.dm" #include "code\modules\surgery\organs\internal\appendix\appendix_golem.dm" #include "code\modules\surgery\organs\internal\cyberimp\augments_arms.dm" @@ -6362,6 +6387,7 @@ #include "code\modules\vending\liberation.dm" #include "code\modules\vending\liberation_toy.dm" #include "code\modules\vending\magivend.dm" +#include "code\modules\vending\mail.dm" #include "code\modules\vending\medical.dm" #include "code\modules\vending\medical_wall.dm" #include "code\modules\vending\megaseed.dm" @@ -6555,6 +6581,8 @@ #include "modular_doppler\autotransfer\autotransfer_config.dm" #include "modular_doppler\autotransfer\shuttle.dm" #include "modular_doppler\autotransfer\transfer_vote.dm" +#include "modular_doppler\bitrunning_prefs_disks\code\disks\prefs_disk.dm" +#include "modular_doppler\bitrunning_prefs_disks\code\outfit_overrides\bitrunner_outfit_override.dm" #include "modular_doppler\cell_component\code\cell_component.dm" #include "modular_doppler\colony_fabricator\code\cargo_packs.dm" #include "modular_doppler\colony_fabricator\code\colony_fabricator.dm" @@ -6610,21 +6638,21 @@ #include "modular_doppler\cryosleep\code\mood.dm" #include "modular_doppler\cryosleep\code\objective.dm" #include "modular_doppler\cryosleep\code\objects\structures\signs\signs_maps.dm" +#include "modular_doppler\deathmatch\deathmatch_loadouts.dm" +#include "modular_doppler\deathmatch\deathmatch_maps.dm" +#include "modular_doppler\deathmatch\deathmatch_structures.dm" #include "modular_doppler\deforest_medical_items\code\cargo_packs.dm" #include "modular_doppler\deforest_medical_items\code\healing_stack_items.dm" #include "modular_doppler\deforest_medical_items\code\illegal_injectors.dm" #include "modular_doppler\deforest_medical_items\code\injectors.dm" -#include "modular_doppler\deforest_medical_items\code\medstation.dm" #include "modular_doppler\deforest_medical_items\code\storage_items.dm" #include "modular_doppler\deforest_medical_items\code\storage_items_robotics.dm" #include "modular_doppler\deforest_medical_items\code\synth_healing.dm" #include "modular_doppler\deforest_medical_items\code\treatment_zone_projector.dm" #include "modular_doppler\deforest_medical_items\code\vulnerable_status_effect.dm" #include "modular_doppler\deforest_medical_items\code\chemicals\demoneye.dm" -#include "modular_doppler\deforest_medical_items\code\chemicals\twitch.dm" -#include "modular_doppler\deforest_medical_items\code\medstation_designs\blood.dm" -#include "modular_doppler\deforest_medical_items\code\medstation_designs\medical.dm" #include "modular_doppler\disable_suicide\config_entries.dm" +#include "modular_doppler\doppler_command_uniforms\hop\overrides.dm" #include "modular_doppler\dopplerboop\dopplerboops.dm" #include "modular_doppler\dopplerboop\human.dm" #include "modular_doppler\emotes\code\emotes.dm" @@ -6635,6 +6663,26 @@ #include "modular_doppler\emotes\code\overlay_emotes\overlay_emotes.dm" #include "modular_doppler\enterprise_resource_planning\code\breasts.dm" #include "modular_doppler\enterprise_resource_planning\code\erp_prefs.dm" +#include "modular_doppler\epic_loot\code\_basetype.dm" +#include "modular_doppler\epic_loot\code\random_spawners_real.dm" +#include "modular_doppler\epic_loot\code\where_they_spawn.dm" +#include "modular_doppler\epic_loot\code\loot_items\components.dm" +#include "modular_doppler\epic_loot\code\loot_items\electronics.dm" +#include "modular_doppler\epic_loot\code\loot_items\medical.dm" +#include "modular_doppler\epic_loot\code\loot_items\valuables.dm" +#include "modular_doppler\epic_loot\code\loot_structures\ammo_box.dm" +#include "modular_doppler\epic_loot\code\loot_structures\computer_tower.dm" +#include "modular_doppler\epic_loot\code\loot_structures\files.dm" +#include "modular_doppler\epic_loot\code\loot_structures\grenade_box.dm" +#include "modular_doppler\epic_loot\code\loot_structures\gun_case.dm" +#include "modular_doppler\epic_loot\code\loot_structures\large_crate.dm" +#include "modular_doppler\epic_loot\code\loot_structures\medbox.dm" +#include "modular_doppler\epic_loot\code\loot_structures\military_case.dm" +#include "modular_doppler\epic_loot\code\loot_structures\register.dm" +#include "modular_doppler\epic_loot\code\loot_structures\safe.dm" +#include "modular_doppler\epic_loot\code\loot_structures\toolbox.dm" +#include "modular_doppler\epic_loot\code\loot_structures\wall_jackets.dm" +#include "modular_doppler\epic_loot\code\storage_containers\containers.dm" #include "modular_doppler\examinemore\code\examine_more.dm" #include "modular_doppler\face_mouse_preferences\code\face_mouse_pref.dm" #include "modular_doppler\flavortext_and_records\code\defines.dm" @@ -6702,6 +6750,7 @@ #include "modular_doppler\hearthkin\tribal_extended\code\weapons\sword.dm" #include "modular_doppler\height_scaling\code\icons.dm" #include "modular_doppler\height_scaling\code\preferences.dm" +#include "modular_doppler\human_health_maximum\code\to_the_limit.dm" #include "modular_doppler\icspawn\cconsultant_items.dm" #include "modular_doppler\icspawn\observer_spawn.dm" #include "modular_doppler\icspawn\spell.dm" @@ -6800,12 +6849,16 @@ #include "modular_doppler\modular_cosmetics\code\jacket_pockets.dm" #include "modular_doppler\modular_cosmetics\code\towels.dm" #include "modular_doppler\modular_cosmetics\code\uniform_overrides.dm" +#include "modular_doppler\modular_cosmetics\code\belt\crusaderbelt.dm" #include "modular_doppler\modular_cosmetics\code\belt\med_bandolier.dm" #include "modular_doppler\modular_cosmetics\code\face\basemasks.dm" #include "modular_doppler\modular_cosmetics\code\face\glasses.dm" #include "modular_doppler\modular_cosmetics\code\face\masks.dm" +#include "modular_doppler\modular_cosmetics\code\face\papermask.dm" #include "modular_doppler\modular_cosmetics\code\hands\gloves.dm" #include "modular_doppler\modular_cosmetics\code\hands\rings.dm" +#include "modular_doppler\modular_cosmetics\code\hands\special.dm" +#include "modular_doppler\modular_cosmetics\code\hats\civilian.dm" #include "modular_doppler\modular_cosmetics\code\hats\doppler_command_hats.dm" #include "modular_doppler\modular_cosmetics\code\head\bows.dm" #include "modular_doppler\modular_cosmetics\code\head\hair_tie.dm" @@ -6817,6 +6870,7 @@ #include "modular_doppler\modular_cosmetics\code\plushies\plushes.dm" #include "modular_doppler\modular_cosmetics\code\shoes\baseshoes.dm" #include "modular_doppler\modular_cosmetics\code\shoes\gags_shoes.dm" +#include "modular_doppler\modular_cosmetics\code\shoes\galoshes.dm" #include "modular_doppler\modular_cosmetics\code\storage\backpacks.dm" #include "modular_doppler\modular_cosmetics\code\storage\belts.dm" #include "modular_doppler\modular_cosmetics\code\storage\rings.dm" @@ -6828,6 +6882,7 @@ #include "modular_doppler\modular_cosmetics\code\suits\shirts.dm" #include "modular_doppler\modular_cosmetics\code\under\doppler_uniforms.dm" #include "modular_doppler\modular_cosmetics\code\under\dresses.dm" +#include "modular_doppler\modular_cosmetics\code\under\formal.dm" #include "modular_doppler\modular_cosmetics\code\under\medical_extra.dm" #include "modular_doppler\modular_cosmetics\code\under\miscellania.dm" #include "modular_doppler\modular_cosmetics\code\under\pants.dm" @@ -6871,7 +6926,6 @@ #include "modular_doppler\modular_customization\accessories\code\monkey_accessories\monkey_tail.dm" #include "modular_doppler\modular_customization\accessories\code\moth_accessories\moth_antennae.dm" #include "modular_doppler\modular_customization\accessories\code\moth_accessories\moth_fluff.dm" -#include "modular_doppler\modular_customization\accessories\code\moth_accessories\moth_wings.dm" #include "modular_doppler\modular_customization\accessories\code\non_species_specific\avian_accessories\avian_ears.dm" #include "modular_doppler\modular_customization\accessories\code\non_species_specific\avian_accessories\avian_fluff.dm" #include "modular_doppler\modular_customization\accessories\code\non_species_specific\avian_accessories\avian_snout.dm" @@ -6968,6 +7022,7 @@ #include "modular_doppler\modular_items\aac_device.dm" #include "modular_doppler\modular_items\bettermed_overrides.dm" #include "modular_doppler\modular_items\conversion_kits.dm" +#include "modular_doppler\modular_items\emergency_breach_equipment.dm" #include "modular_doppler\modular_items\invisible_gear.dm" #include "modular_doppler\modular_items\shipchem_overrides.dm" #include "modular_doppler\modular_items\hairbrush\code\hairbrush.dm" @@ -7021,14 +7076,18 @@ #include "modular_doppler\modular_quirks\breather\nitrogen_breather\nitrogen_breather.dm" #include "modular_doppler\modular_quirks\breather\nitrogen_breather\nitrogen_tanks.dm" #include "modular_doppler\modular_quirks\breather\water_breather\water_breather.dm" +#include "modular_doppler\modular_quirks\cybernetic_limb_mounts\cybernetic_limb_mounts.dm" #include "modular_doppler\modular_quirks\entombed\code\entombed.dm" #include "modular_doppler\modular_quirks\entombed\code\entombed_alt_actions.dm" #include "modular_doppler\modular_quirks\entombed\code\entombed_mod.dm" +#include "modular_doppler\modular_quirks\evil_replacements\bad_vibes.dm" +#include "modular_doppler\modular_quirks\evil_replacements\unholy_aura.dm" #include "modular_doppler\modular_quirks\excitable\excitable.dm" #include "modular_doppler\modular_quirks\fragility\code\fragile.dm" #include "modular_doppler\modular_quirks\hardened_soles\hardened_soles.dm" #include "modular_doppler\modular_quirks\left_handed\left_handed.dm" #include "modular_doppler\modular_quirks\linguist\linguist.dm" +#include "modular_doppler\modular_quirks\narcolepsy\narcolepsy.dm" #include "modular_doppler\modular_quirks\night_vision\night_vision.dm" #include "modular_doppler\modular_quirks\overwrites\equipping.dm" #include "modular_doppler\modular_quirks\overwrites\musician.dm" @@ -7039,6 +7098,7 @@ #include "modular_doppler\modular_quirks\paycheck_rations\code\tickets.dm" #include "modular_doppler\modular_quirks\permitted_cybernetic\permitted_cybernetic.dm" #include "modular_doppler\modular_quirks\permitted_cybernetic\code\preferences.dm" +#include "modular_doppler\modular_quirks\system_shock\system_shock.dm" #include "modular_doppler\modular_sounds\code\sounds.dm" #include "modular_doppler\modular_species\_species.dm" #include "modular_doppler\modular_species\code\bloodsplatter.dm" @@ -7105,14 +7165,17 @@ #include "modular_doppler\modular_weapons\company_and_or_faction_based\carwo_defense_systems\gunsets.dm" #include "modular_doppler\modular_weapons\manufacturer_examine\code\gun_company_additions.dm" #include "modular_doppler\modular_weapons\manufacturer_examine\code\manufacturer_element.dm" +#include "modular_doppler\ntnrc_for_all\code\common_chat.dm" +#include "modular_doppler\ntnrc_for_all\code\ntnrc_client_edits.dm" +#include "modular_doppler\ntnrc_for_all\code\pda_prefs_edits.dm" +#include "modular_doppler\ntnrc_for_all\code\ss_modular_computers_edits.dm" +#include "modular_doppler\ntnrc_for_all\code\username_prefs.dm" #include "modular_doppler\obj_flags_doppler\code\objs.dm" #include "modular_doppler\objects_and_structures\code\flora.dm" #include "modular_doppler\objects_and_structures\code\icemoon_tiles.dm" #include "modular_doppler\objects_and_structures\code\mannequin.dm" #include "modular_doppler\objects_and_structures\code\sauna_oven.dm" -#include "modular_doppler\objects_and_structures\code\structure.dm" #include "modular_doppler\objects_and_structures\code\towel_bins.dm" -#include "modular_doppler\objects_and_structures\code\trash_pile.dm" #include "modular_doppler\objects_and_structures\code\watercloset.dm" #include "modular_doppler\pixel_shift\living.dm" #include "modular_doppler\pixel_shift\living_movement.dm" @@ -7137,9 +7200,11 @@ #include "modular_doppler\religion\code\mind.dm" #include "modular_doppler\religion\code\religious_sects.dm" #include "modular_doppler\research\designs\limbgrower_designs.dm" +#include "modular_doppler\sprite_swaps\code\bigclosets.dm" #include "modular_doppler\stone\code\ore_veins.dm" #include "modular_doppler\stone\code\stone.dm" #include "modular_doppler\tableflip\tableflip.dm" +#include "modular_doppler\the-business\code\twitch.dm" #include "modular_doppler\time_clock\code\console.dm" #include "modular_doppler\time_clock\code\console_tgui.dm" #include "modular_doppler\time_clock\code\mind.dm" diff --git a/tgui/package.json b/tgui/package.json index 57d02a389d267..f89241c5a3f2e 100644 --- a/tgui/package.json +++ b/tgui/package.json @@ -45,7 +45,7 @@ "mini-css-extract-plugin": "^2.9.2", "prettier": "^3.2.5", "sass": "^1.80.6", - "sass-loader": "^14.2.1", + "sass-loader": "^16.0.3", "style-loader": "^4.0.0", "swc-loader": "^0.2.6", "typescript": "^5.6.3", diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json index 325e2fde7ca48..f761ce3c61681 100644 --- a/tgui/packages/tgui-panel/package.json +++ b/tgui/packages/tgui-panel/package.json @@ -11,6 +11,7 @@ "react-dom": "^18.3.1", "tgui": "workspace:*", "tgui-dev-server": "workspace:*", - "tgui-polyfill": "workspace:*" + "tgui-polyfill": "workspace:*", + "tgui-styles": "^0.0.10" } } diff --git a/tgui/packages/tgui-panel/styles/components/Chat.scss b/tgui/packages/tgui-panel/styles/components/Chat.scss index b439ace8c58f1..882f86a7aaacb 100644 --- a/tgui/packages/tgui-panel/styles/components/Chat.scss +++ b/tgui/packages/tgui-panel/styles/components/Chat.scss @@ -8,7 +8,7 @@ @use '~tgui/styles/base.scss'; @use '~tgui/styles/colors.scss'; -$text-color: #abc6ec !default; +$text-color: hsl(210, 50%, 80%) !default; $color-bg-section: base.$color-bg-section !default; .Chat { @@ -21,11 +21,11 @@ $color-bg-section: base.$color-bg-section !default; font-size: 0.7em; padding: 0.2em 0.3em; line-height: 1; - color: white; + color: hsl(0, 0%, 100%); text-align: center; white-space: nowrap; vertical-align: middle; - background-color: crimson; + background-color: hsl(348, 83%, 47%); border-radius: 10px; transition: font-size 200ms ease-out; @@ -68,12 +68,12 @@ $color-bg-section: base.$color-bg-section !default; } .Chat__highlight { - color: #000; + color: hsl(0, 0%, 0%); } .Chat__highlight--restricted { - color: #fff; - background-color: #a00; + color: hsl(0, 0%, 100%); + background-color: hsl(0, 100%, 33.3%); font-weight: bold; } @@ -83,7 +83,7 @@ $color-bg-section: base.$color-bg-section !default; .ChatMessage--highlighted { position: relative; - border-left: math.div(1em, 6) solid rgba(255, 221, 68); + border-left: math.div(1em, 6) solid hsl(50, 100%, 63.5%); padding-left: 0.5em; &:after { @@ -93,7 +93,7 @@ $color-bg-section: base.$color-bg-section !default; bottom: 0; left: 0; right: 0; - background-color: rgba(255, 221, 68, 0.1); + background-color: hsla(50, 100%, 63.5%, 0.1); // Make this click-through since this is an overlay pointer-events: none; } diff --git a/tgui/packages/tgui-panel/styles/components/Notifications.scss b/tgui/packages/tgui-panel/styles/components/Notifications.scss index f3669967fd70c..2e99e59a20aa0 100644 --- a/tgui/packages/tgui-panel/styles/components/Notifications.scss +++ b/tgui/packages/tgui-panel/styles/components/Notifications.scss @@ -11,8 +11,8 @@ } .Notification { - color: #fff; - background-color: crimson; + color: hsl(0, 0%, 100%); + background-color: hsl(348, 83%, 47%); padding: 0.5em; margin: 1em 0; diff --git a/tgui/packages/tgui-panel/styles/components/Ping.scss b/tgui/packages/tgui-panel/styles/components/Ping.scss index 251b0fd953912..292caf11105e0 100644 --- a/tgui/packages/tgui-panel/styles/components/Ping.scss +++ b/tgui/packages/tgui-panel/styles/components/Ping.scss @@ -23,6 +23,6 @@ $border-color: rgba(140, 140, 140, 0.5) !default; left: 0.5em; width: 0.5em; height: 0.5em; - background-color: #888; + background-color: hsl(0, 0%, 53.3%); border-radius: 0.25em; } diff --git a/tgui/packages/tgui-panel/styles/main.scss b/tgui/packages/tgui-panel/styles/main.scss index 08e60d18ee6a3..60198a654b930 100644 --- a/tgui/packages/tgui-panel/styles/main.scss +++ b/tgui/packages/tgui-panel/styles/main.scss @@ -5,11 +5,13 @@ @use 'sass:meta'; @use 'sass:color'; +// Components +@use 'pkg:tgui-styles'; @use '~tgui/styles/colors.scss'; @use '~tgui/styles/base.scss' with ( - $color-bg: #202020, - $color-bg-section: color.adjust(#202020, $lightness: -5%), + $color-bg: hsl(0, 0%, 12.5%), + $color-bg-section: color.adjust(hsl(0, 0%, 12.5%), $lightness: -5%), $color-bg-grad-spread: 0% ); @@ -23,29 +25,6 @@ @include meta.load-css('~tgui/styles/atomic/outline.scss'); @include meta.load-css('~tgui/styles/atomic/text.scss'); -// Components -@include meta.load-css('~tgui/styles/components/BlockQuote.scss'); -@include meta.load-css('~tgui/styles/components/Button.scss'); -@include meta.load-css('~tgui/styles/components/ColorBox.scss'); -@include meta.load-css('~tgui/styles/components/Dimmer.scss'); -@include meta.load-css('~tgui/styles/components/Divider.scss'); -@include meta.load-css('~tgui/styles/components/Dropdown.scss'); -@include meta.load-css('~tgui/styles/components/Flex.scss'); -@include meta.load-css('~tgui/styles/components/Input.scss'); -@include meta.load-css('~tgui/styles/components/Knob.scss'); -@include meta.load-css('~tgui/styles/components/LabeledList.scss'); -@include meta.load-css('~tgui/styles/components/Modal.scss'); -@include meta.load-css('~tgui/styles/components/NoticeBox.scss'); -@include meta.load-css('~tgui/styles/components/NumberInput.scss'); -@include meta.load-css('~tgui/styles/components/ProgressBar.scss'); -@include meta.load-css('~tgui/styles/components/Section.scss'); -@include meta.load-css('~tgui/styles/components/Slider.scss'); -@include meta.load-css('~tgui/styles/components/Stack.scss'); -@include meta.load-css('~tgui/styles/components/Table.scss'); -@include meta.load-css('~tgui/styles/components/Tabs.scss'); -@include meta.load-css('~tgui/styles/components/TextArea.scss'); -@include meta.load-css('~tgui/styles/components/Tooltip.scss'); - // Components specific to tgui-panel @include meta.load-css('./components/Chat.scss'); @include meta.load-css('./components/Ping.scss'); diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index c1cb06cff3ae2..5329e25487006 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -27,15 +27,15 @@ img.icon { } a { - color: #397ea5; + color: hsl(201.7, 48.6%, 43.5%); } a.visited { - color: #7c00e6; + color: hsl(272.3, 100%, 45.1%); } a:visited { - color: #7c00e6; + color: hsl(272.3, 100%, 45.1%); } a.popt { @@ -139,7 +139,7 @@ a.popt { } .highlightPopup input.highlightColor { - background-color: #ffff00; + background-color: hsl(60, 100%, 50%); } .highlightPopup input.highlightTermSubmit { @@ -199,7 +199,7 @@ a.popt { /* MOTD */ .motd { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); font-family: Verdana, sans-serif; white-space: normal; } @@ -210,7 +210,7 @@ a.popt { .motd h4, .motd h5, .motd h6 { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); text-decoration: underline; } @@ -219,7 +219,7 @@ a.popt { .motd a:visited, .motd a:active, .motd a:hover { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); } /* ADD HERE FOR BOLD */ @@ -255,13 +255,13 @@ h3, h4, h5, h6 { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); font-family: Georgia, Verdana, sans-serif; } h1.alert, h2.alert { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); } em { @@ -270,27 +270,27 @@ em { } .ooc { - color: #cca300; + color: hsl(47.9, 100%, 40%); font-weight: bold; } .adminobserverooc { - color: #0099cc; + color: hsl(195, 100%, 40%); font-weight: bold; } .adminooc { - color: #3d5bc3; + color: hsl(226.6, 52.8%, 50.2%); font-weight: bold; } .adminsay { - color: #ff4500; + color: hsl(16.2, 100%, 50%); font-weight: bold; } .admin { - color: #5975da; + color: hsl(227, 63.5%, 60.2%); font-weight: bold; } @@ -306,91 +306,91 @@ em { } .deadsay { - color: #e2c1ff; + color: hsl(271.9, 100%, 87.8%); } .binarysay { - color: #1e90ff; + color: hsl(209.6, 100%, 55.9%); } .binarysay a { - color: #00ff00; + color: hsl(120, 100%, 50%); } .binarysay a:active, .binarysay a:visited { - color: #88ff88; + color: hsl(120, 100%, 76.7%); } /* RADIO COLORS */ /* IF YOU CHANGE THIS KEEP IT IN SYNC WITH TGUI CONSTANTS */ .radio { - color: #1ecc43; + color: hsl(132.8, 74.4%, 45.9%); } .sciradio { - color: #c68cfa; + color: hsl(271.6, 91.7%, 76.5%); } .comradio { - color: #fcdf03; + color: hsl(53, 97.6%, 50%); } .secradio { - color: #dd3535; + color: hsl(0, 71.2%, 53.7%); } .medradio { - color: #57b8f0; + color: hsl(202, 83.6%, 64.1%); } .engradio { - color: #f37746; + color: hsl(17, 87.8%, 61.4%); } .suppradio { - color: #b88646; + color: hsl(33.7, 44.9%, 49.8%); } .servradio { - color: #6ca729; + color: hsl(88.1, 60.6%, 40.8%); } .syndradio { - color: #8f4a4b; + color: hsl(359.1, 31.8%, 42.5%); } .gangradio { - color: #ac2ea1; + color: hsl(305.2, 57.8%, 42.7%); } .centcomradio { - color: #2681a5; + color: hsl(197, 62.6%, 39.8%); } .aiprivradio { - color: #d65d95; + color: hsl(332.2, 59.6%, 60.2%); } .enteradio { - color: #79c5a8; + color: hsl(157.1, 39.6%, 62.4%); } .redteamradio { - color: #ff4444 !important; + color: hsl(0, 100%, 63.3%) !important; } .blueteamradio { - color: #3434fd !important; + color: hsl(240, 98%, 59.8%) !important; } .greenteamradio { - color: #34fd34 !important; + color: hsl(120, 98%, 59.8%) !important; } .yellowteamradio { - color: #fdfd34 !important; + color: hsl(60, 98%, 59.8%) !important; } .yell { @@ -398,122 +398,122 @@ em { } .alert { - color: #d82020; + color: hsl(0, 74.2%, 48.6%); } .userdanger { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-weight: bold; font-size: 185%; } .bolddanger { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-weight: bold; } .danger { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); } .tinydanger { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-size: 85%; } .smalldanger { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-size: 90%; } .warning { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-style: italic; } .alertwarning { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; } .boldwarning { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-style: italic; font-weight: bold; } .announce { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-weight: bold; } .boldannounce { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-weight: bold; } .minorannounce { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-weight: bold; font-size: 185%; } .minoralert { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); font-size: 125%; } .priorityannounce { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); font-weight: bold; font-size: 225%; } .prioritytitle { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-weight: bold; font-size: 185%; } .priorityalert { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-size: 140%; } .greenannounce { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); font-weight: bold; } .rose { - color: #ff5050; + color: hsl(0, 100%, 65.7%); } .info { - color: #9ab0ff; + color: hsl(226.9, 100%, 80.2%); } .notice { - color: #6685f5; + color: hsl(227, 87.7%, 68%); } .tinynotice { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-size: 85%; } .tinynoticeital { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-style: italic; font-size: 85%; } .smallnotice { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-size: 90%; } .smallnoticeital { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-style: italic; font-size: 90%; } @@ -524,218 +524,218 @@ em { } .boldnotice { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-weight: bold; } .hear { - color: #6685f5; + color: hsl(227, 87.7%, 68%); font-style: italic; } .adminnotice { - color: #6685f5; + color: hsl(227, 87.7%, 68%); } .adminhelp { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; } .unconscious { - color: #a4bad6; + color: hsl(213.6, 37.9%, 74.1%); font-weight: bold; } .suicide { - color: #ff5050; + color: hsl(0, 100%, 65.7%); font-style: italic; } .green { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); } .grey { - color: #838383; + color: hsl(0, 0%, 51.4%); } .red { - color: #ff0000; + color: hsl(0, 100%, 50%); } .blue { - color: #215cff; + color: hsl(224.1, 100%, 56.5%); } .nicegreen { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); } .boldnicegreen { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); font-weight: bold; } .blob { - color: #ee4000; + color: hsl(16.1, 100%, 46.7%); } .blobannounce { - color: #556b2f; + color: hsl(82, 39%, 30.2%); font-weight: bold; font-size: 185%; } .cult { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); } .cult_italic { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-style: italic; } .cult_bold { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-style: italic; font-weight: bold; } .cult_bold_italic { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 185%; } .cult_large { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 185%; } .narsie { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 925%; } .narsiesmall { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 370%; } .colossus { - color: #7f282a; + color: hsl(358.6, 52.1%, 32.7%); font-size: 310%; } .hierophant { - color: #b441ee; + color: hsl(279.9, 83.6%, 59.4%); font-weight: bold; font-style: italic; } .hierophant_warning { - color: #c56bf1; + color: hsl(280.3, 82.7%, 68.2%); font-style: italic; } .purple { - color: #9956d3; + color: hsl(272.2, 58.7%, 58.2%); } .holoparasite { - color: #88809c; + color: hsl(257.1, 12.4%, 55.7%); } .revennotice { - color: #c099e2; + color: hsl(272.1, 55.7%, 74.3%); } .revenboldnotice { - color: #c099e2; + color: hsl(272.1, 55.7%, 74.3%); font-weight: bold; } .revenbignotice { - color: #c099e2; + color: hsl(272.1, 55.7%, 74.3%); font-weight: bold; font-size: 185%; } .revenminor { - color: #823abb; + color: hsl(273.5, 52.7%, 48%); } .revenwarning { - color: #760fbb; + color: hsl(275.9, 85.1%, 39.6%); font-style: italic; } .revendanger { - color: #760fbb; + color: hsl(275.9, 85.1%, 39.6%); font-weight: bold; font-size: 185%; } .deconversion_message { - color: #a947ff; + color: hsl(272, 100%, 63.9%); font-size: 185%; font-style: italic; } .ghostalert { - color: #6600ff; + color: hsl(264, 100%, 50%); font-style: italic; font-weight: bold; } .alien { - color: #855d85; + color: hsl(300, 17.7%, 44.3%); } .noticealien { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); } .alertalien { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); font-weight: bold; } .changeling { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); font-style: italic; } .alertsyndie { - color: #ff0000; + color: hsl(0, 100%, 50%); font-size: 185%; font-weight: bold; } .spiderbroodmother { - color: #8800ff; + color: hsl(272, 100%, 50%); font-weight: bold; font-size: 185%; } .spiderbreacher { - color: #e8b670; + color: hsl(35, 72.3%, 67.5%); font-weight: bold; font-size: 140%; } .spiderscout { - color: #231d98; + color: hsl(242.9, 68%, 35.5%); font-weight: bold; font-size: 120%; } .interface { - color: #750e75; + color: hsl(300, 78.6%, 25.7%); } .sans { @@ -751,7 +751,7 @@ em { } .tape_recorder { - color: #ff0000; + color: hsl(0, 100%, 50%); font-family: 'Courier New', cursive, sans-serif; } @@ -786,17 +786,17 @@ em { } .greentext { - color: #059223; + color: hsl(132.8, 93.4%, 29.6%); font-size: 185%; } .redtext { - color: #c51e1e; + color: hsl(0, 73.6%, 44.5%); font-size: 185%; } .clown { - color: #ff70c1; + color: hsl(326, 100%, 72%); font-size: 160%; font-family: 'Comic Sans MS', cursive, sans-serif; font-weight: bold; @@ -808,13 +808,13 @@ em { } .his_grace { - color: #15d512; + color: hsl(119.1, 84.4%, 45.3%); font-family: 'Courier New', cursive, sans-serif; font-style: italic; } .hypnophrase { - color: #202020; + color: hsl(0, 0%, 12.5%); font-weight: bold; animation: hypnocolor 1500ms infinite; animation-direction: alternate; @@ -822,43 +822,43 @@ em { @keyframes hypnocolor { 0% { - color: #202020; + color: hsl(0, 0%, 12.5%); } 25% { - color: #4b02ac; + color: hsl(265.8, 97.7%, 34.1%); } 50% { - color: #9f41f1; + color: hsl(272, 86.3%, 60%); } 75% { - color: #541c9c; + color: hsl(266.2, 69.6%, 36.1%); } 100% { - color: #7adbf3; + color: hsl(191.9, 83.4%, 71.6%); } } .phobia { - color: #dd0000; + color: hsl(0, 100%, 43.3%); font-weight: bold; animation: phobia 750ms infinite; } @keyframes phobia { 0% { - color: #f75a5a; + color: hsl(0, 90.8%, 66.1%); } 50% { - color: #dd0000; + color: hsl(0, 100%, 43.3%); } 100% { - color: #f75a5a; + color: hsl(0, 90.8%, 66.1%); } } @@ -876,7 +876,7 @@ em { } .memo { - color: #638500; + color: hsl(75.3, 100%, 26.1%); text-align: center; } @@ -886,35 +886,35 @@ em { } .abductor { - color: #c204c2; + color: hsl(300, 96%, 38.8%); font-style: italic; } .mind_control { - color: #df3da9; + color: hsl(320, 71.7%, 55.7%); font-size: 100%; font-weight: bold; font-style: italic; } .slime { - color: #00ced1; + color: hsl(180.9, 100%, 41%); } .drone { - color: #848482; + color: hsl(60, 0.8%, 51.4%); } .monkey { - color: #975032; + color: hsl(17.8, 50.2%, 39.4%); } .swarmer { - color: #2c75ff; + color: hsl(219.2, 100%, 58.6%); } .resonate { - color: #298f85; + color: hsl(174.1, 55.4%, 36.1%); } .upside_down { @@ -938,7 +938,7 @@ em { } .internal.boldnshit { - color: #3d5bc3; + color: hsl(226.6, 52.8%, 50.2%); font-weight: bold; } @@ -967,8 +967,8 @@ em { } .examine_block { - background: #1b1c1e; - border: 1px solid #a4bad6; + background: hsl(220, 5.3%, 11.2%); + border: 1px solid hsl(213.6, 37.9%, 74.1%); margin: 0.5em; padding: 0.5em 0.75em; } @@ -990,7 +990,7 @@ em { .separator::after { content: ''; flex: 1; - border-bottom: 1px solid #a4bad6; + border-bottom: 1px solid hsl(213.6, 37.9%, 74.1%); } .separator:not(:empty)::before { @@ -1040,51 +1040,51 @@ em { /*DOPPLER ADDITION END*/ $alert-stripe-colors: ( - 'default': #00283a, - 'green': #003d00, - 'blue': #00283a, - 'pink': #30001b, - 'yellow': #574a00, - 'orange': #593400, - 'red': #420000, - 'purple': #2c0030, - 'grey': #252525, + 'default': hsl(198.6, 100%, 11.4%), + 'green': hsl(120, 100%, 12%), + 'blue': hsl(198.6, 100%, 11.4%), + 'pink': hsl(326.2, 100%, 9.4%), + 'yellow': hsl(51, 100%, 17.1%), + 'orange': hsl(35.1, 100%, 17.5%), + 'red': hsl(0, 100%, 12.9%), + 'purple': hsl(295, 100%, 9.4%), + 'grey': hsl(0, 0%, 14.5%), ); $alert-stripe-alternate-colors: ( - 'default': #003045, - 'green': #004700, - 'blue': #003045, - 'pink': #400025, - 'yellow': #4d4100, - 'orange': #6b4200, - 'red': #520000, - 'purple': #38003d, - 'grey': #292929, + 'default': hsl(198.3, 100%, 13.5%), + 'green': hsl(120, 100%, 13.9%), + 'blue': hsl(198.3, 100%, 13.5%), + 'pink': hsl(325.3, 100%, 12.5%), + 'yellow': hsl(50.6, 100%, 15.1%), + 'orange': hsl(37, 100%, 21%), + 'red': hsl(0, 100%, 16.1%), + 'purple': hsl(295.1, 100%, 12%), + 'grey': hsl(0, 0%, 16.1%), ); $alert-major-header-colors: ( - 'default': #33d5ff, - 'green': #00ff80, - 'blue': #33d5ff, - 'pink': #ff5297, - 'yellow': #fff4e0, - 'orange': #feefe7, - 'red': #ff5297, - 'purple': #c7a1f7, - 'grey': #ff5297, + 'default': hsl(192.4, 100%, 60%), + 'green': hsl(150.1, 100%, 50%), + 'blue': hsl(192.4, 100%, 60%), + 'pink': hsl(336.1, 100%, 66.1%), + 'yellow': hsl(38.7, 100%, 93.9%), + 'orange': hsl(20.9, 92%, 95.1%), + 'red': hsl(336.1, 100%, 66.1%), + 'purple': hsl(266.5, 84.3%, 80%), + 'grey': hsl(336.1, 100%, 66.1%), ); $alert-subheader-header-colors: ( - 'default': #ff5297, - 'green': #ff85b5, - 'blue': #ff5297, - 'pink': #33d5ff, - 'yellow': #33d5ff, - 'orange': #33d5ff, - 'red': #33d5ff, - 'purple': #33d5ff, - 'grey': #33d5ff, + 'default': hsl(336.1, 100%, 66.1%), + 'green': hsl(336.4, 100%, 76.1%), + 'blue': hsl(336.1, 100%, 66.1%), + 'pink': hsl(192.4, 100%, 60%), + 'yellow': hsl(192.4, 100%, 60%), + 'orange': hsl(192.4, 100%, 60%), + 'red': hsl(192.4, 100%, 60%), + 'purple': hsl(192.4, 100%, 60%), + 'grey': hsl(192.4, 100%, 60%), ); $border-width: 4; @@ -1111,8 +1111,8 @@ $border-width-px: $border-width * 1px; } .major_announcement_text { - color: #eaeaea; - background-color: #131313; + color: hsl(0, 0%, 91.8%); + background-color: hsl(0, 0%, 7.5%); font-weight: bold; font-size: 100%; text-align: left; @@ -1133,8 +1133,8 @@ $border-width-px: $border-width * 1px; } .minor_announcement_text { - background-color: #202020; - color: #eaeaea; + background-color: hsl(0, 0%, 12.5%); + color: hsl(0, 0%, 91.8%); padding: 0.5rem 0.5rem; text-align: left; font-size: 100%; @@ -1147,18 +1147,18 @@ $border-width-px: $border-width * 1px; } .ooc_alert { - background: #4d4100; - border: 1px solid #cca300; + background: hsl(50.6, 100%, 15.1%); + border: 1px solid hsl(47.9, 100%, 40%); margin: 0.5em; padding: 0.5em 0.5em 0.5em 0.2em; - color: #ffffff; + color: hsl(0, 0%, 100%); font-weight: bold; display: flex; flex-direction: column; } .ooc_announcement_text { - color: #cca300; + color: hsl(47.9, 100%, 40%); padding: 0.5em 0 0 0.35em; display: flex; flex-direction: column; @@ -1166,7 +1166,7 @@ $border-width-px: $border-width * 1px; @each $color-name, $color-value in $alert-stripe-colors { .chat_alert_#{$color-name} { - color: #ffffff; + color: hsl(0, 0%, 100%); padding: 0.5rem 0.5rem; box-shadow: none; font-weight: bold; diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index 4efa080ced03a..3db23507b56ae 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -11,7 +11,7 @@ body { padding: 0; margin: 0; height: 100%; - color: #000000; + color: hsl(0, 0%, 0%); } body { @@ -45,15 +45,15 @@ img.icon { } a { - color: #0000ff; + color: hsl(240, 100%, 50%); } a.visited { - color: #ff00ff; + color: hsl(300, 100%, 50%); } a:visited { - color: #ff00ff; + color: hsl(300, 100%, 50%); } a.popt { @@ -157,7 +157,7 @@ a.popt { } .highlightPopup input.highlightColor { - background-color: #ffff00; + background-color: hsl(60, 100%, 50%); } .highlightPopup input.highlightTermSubmit { @@ -217,7 +217,7 @@ a.popt { /* MOTD */ .motd { - color: #638500; + color: hsl(75.3, 100%, 26.1%); font-family: Verdana, sans-serif; white-space: normal; } @@ -228,7 +228,7 @@ a.popt { .motd h4, .motd h5, .motd h6 { - color: #638500; + color: hsl(75.3, 100%, 26.1%); text-decoration: underline; } @@ -237,7 +237,7 @@ a.popt { .motd a:visited, .motd a:active, .motd a:hover { - color: #638500; + color: hsl(75.3, 100%, 26.1%); } /* ADD HERE FOR BOLD */ @@ -273,13 +273,13 @@ h3, h4, h5, h6 { - color: #0000ff; + color: hsl(240, 100%, 50%); font-family: Georgia, Verdana, sans-serif; } h1.alert, h2.alert { - color: #000000; + color: hsl(0, 0%, 0%); } em { @@ -288,27 +288,27 @@ em { } .ooc { - color: #002eb8; + color: hsl(225, 100%, 36.1%); font-weight: bold; } .adminobserverooc { - color: #0099cc; + color: hsl(195, 100%, 40%); font-weight: bold; } .adminooc { - color: #700038; + color: hsl(330, 100%, 22%); font-weight: bold; } .adminsay { - color: #ff4500; + color: hsl(16.2, 100%, 50%); font-weight: bold; } .admin { - color: #4473ff; + color: hsl(224.9, 100%, 63.3%); font-weight: bold; } @@ -324,90 +324,90 @@ em { } .deadsay { - color: #5c00e6; + color: hsl(264, 100%, 45.1%); } .binarysay { - color: #20c20e; - background-color: #000000; + color: hsl(114, 86.5%, 40.8%); + background-color: hsl(0, 0%, 0%); display: block; } .binarysay a { - color: #00ff00; + color: hsl(120, 100%, 50%); } .binarysay a:active, .binarysay a:visited { - color: #88ff88; + color: hsl(120, 100%, 76.7%); } .radio { - color: #008000; + color: hsl(120, 100%, 25.1%); } .sciradio { - color: #993399; + color: hsl(300, 50%, 40%); } .comradio { - color: #948f02; + color: hsl(57.9, 97.3%, 29.4%); } .secradio { - color: #a30000; + color: hsl(0, 100%, 32%); } .medradio { - color: #337296; + color: hsl(201.8, 49.3%, 39.4%); } .engradio { - color: #fb5613; + color: hsl(17.3, 96.7%, 52.9%); } .suppradio { - color: #a8732b; + color: hsl(34.6, 59.2%, 41.4%); } .servradio { - color: #6eaa2c; + color: hsl(88.6, 58.9%, 42%); } .syndradio { - color: #6d3f40; + color: hsl(358.7, 26.7%, 33.7%); } .gangradio { - color: #ac2ea1; + color: hsl(305.2, 57.8%, 42.7%); } .centcomradio { - color: #686868; + color: hsl(0, 0%, 40.8%); } .aiprivradio { - color: #ff00ff; + color: hsl(300, 100%, 50%); } .enteradio { - color: #5c8a87; + color: hsl(176.1, 20%, 45.1%); } .redteamradio { - color: #ff0000 !important; + color: hsl(0, 100%, 50%) !important; } .blueteamradio { - color: #0000ff !important; + color: hsl(240, 100%, 50%) !important; } .greenteamradio { - color: #00ff00 !important; + color: hsl(120, 100%, 50%) !important; } .yellowteamradio { - color: #d1ba22 !important; + color: hsl(52.1, 72%, 47.6%) !important; } .yell { @@ -415,345 +415,345 @@ em { } .alert { - color: #ff0000; + color: hsl(0, 100%, 50%); } h1.alert, h2.alert { - color: #000000; + color: hsl(0, 0%, 0%); } .userdanger { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; font-size: 185%; } .bolddanger { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; } .danger { - color: #ff0000; + color: hsl(0, 100%, 50%); } .tinydanger { - color: #ff0000; + color: hsl(0, 100%, 50%); font-size: 85%; } .smalldanger { - color: #ff0000; + color: hsl(0, 100%, 50%); font-size: 90%; } .warning { - color: #ff0000; + color: hsl(0, 100%, 50%); font-style: italic; } .alertwarning { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; } .boldwarning { - color: #ff0000; + color: hsl(0, 100%, 50%); font-style: italic; font-weight: bold; } .announce { - color: #228b22; + color: hsl(120, 60.7%, 33.9%); font-weight: bold; } .boldannounce { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; } .minorannounce { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; font-size: 185%; } .minoralert { - color: #000000; + color: hsl(0, 0%, 0%); font-size: 125%; } .priorityannounce { - color: #000000; + color: hsl(0, 0%, 0%); font-weight: bold; font-size: 225%; } .prioritytitle { - color: #0000ff; + color: hsl(240, 100%, 50%); font-weight: bold; font-size: 185%; } .priorityalert { - color: #ff0000; + color: hsl(0, 100%, 50%); font-size: 140%; } .greenannounce { - color: #00ff00; + color: hsl(120, 100%, 50%); font-weight: bold; } .rose { - color: #ff5050; + color: hsl(0, 100%, 65.7%); } .info { - color: #0000cc; + color: hsl(240, 100%, 40%); } .notice { - color: #000099; + color: hsl(240, 100%, 30%); } .tinynotice { - color: #000099; + color: hsl(240, 100%, 30%); font-size: 85%; } .tinynoticeital { - color: #000099; + color: hsl(240, 100%, 30%); font-style: italic; font-size: 85%; } .smallnotice { - color: #000099; + color: hsl(240, 100%, 30%); font-size: 90%; } .smallnoticeital { - color: #000099; + color: hsl(240, 100%, 30%); font-style: italic; font-size: 90%; } .boldnotice { - color: #000099; + color: hsl(240, 100%, 30%); font-weight: bold; } .hear { - color: #000099; + color: hsl(240, 100%, 30%); font-style: italic; } .adminnotice { - color: #0000ff; + color: hsl(240, 100%, 50%); } .adminhelp { - color: #ff0000; + color: hsl(0, 100%, 50%); font-weight: bold; } .unconscious { - color: #0000ff; + color: hsl(240, 100%, 50%); font-weight: bold; } .suicide { - color: #ff5050; + color: hsl(0, 100%, 65.7%); font-style: italic; } .green { - color: #03ff39; + color: hsl(132.9, 100%, 50.6%); } .grey { - color: #838383; + color: hsl(0, 0%, 51.4%); } .red { - color: #ff0000; + color: hsl(0, 100%, 50%); } .blue { - color: #0000ff; + color: hsl(240, 100%, 50%); } .nicegreen { - color: #14a833; + color: hsl(132.6, 78.7%, 36.9%); } .boldnicegreen { - color: #14a833; + color: hsl(132.6, 78.7%, 36.9%); font-weight: bold; } .cult { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); } .cultitalic { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-style: italic; } .cult_bold { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-style: italic; font-weight: bold; } .cult_bold_italic { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 185%; } .cult_large { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 185%; } .blob { - color: #ee4000; + color: hsl(16.1, 100%, 46.7%); } .blobannounce { - color: #323f1c; + color: hsl(82.3, 38.5%, 17.8%); font-weight: bold; font-size: 185%; } .narsie { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 925%; } .narsiesmall { - color: #973e3b; + color: hsl(2, 43.8%, 41.2%); font-weight: bold; font-size: 370%; } .colossus { - color: #7f282a; + color: hsl(358.6, 52.1%, 32.7%); font-size: 310%; } .hierophant { - color: #660099; + color: hsl(280, 100%, 30%); font-weight: bold; font-style: italic; } .hierophant_warning { - color: #660099; + color: hsl(280, 100%, 30%); font-style: italic; } .purple { - color: #5e2d79; + color: hsl(278.7, 45.8%, 32.5%); } .holoparasite { - color: #35333a; + color: hsl(257.1, 6.4%, 21.4%); } .revennotice { - color: #1d2953; + color: hsl(226.7, 48.2%, 22%); } .revenboldnotice { - color: #1d2953; + color: hsl(226.7, 48.2%, 22%); font-weight: bold; } .revenbignotice { - color: #1d2953; + color: hsl(226.7, 48.2%, 22%); font-weight: bold; font-size: 185%; } .revenminor { - color: #823abb; + color: hsl(273.5, 52.7%, 48%); } .revenwarning { - color: #760fbb; + color: hsl(275.9, 85.1%, 39.6%); font-style: italic; } .revendanger { - color: #760fbb; + color: hsl(275.9, 85.1%, 39.6%); font-weight: bold; font-size: 185%; } .deconversion_message { - color: #5000a0; + color: hsl(270, 100%, 31.4%); font-size: 185%; font-style: italic; } .ghostalert { - color: #5c00e6; + color: hsl(264, 100%, 45.1%); font-style: italic; font-weight: bold; } .alien { - color: #543354; + color: hsl(300, 24.4%, 26.5%); } .noticealien { - color: #00c000; + color: hsl(120, 100%, 37.6%); } .alertalien { - color: #00c000; + color: hsl(120, 100%, 37.6%); font-weight: bold; } .changeling { - color: #800080; + color: hsl(300, 100%, 25.1%); font-style: italic; } .alertsyndie { - color: #ff0000; + color: hsl(0, 100%, 50%); font-size: 185%; font-weight: bold; } .spiderbroodmother { - color: #4d004d; + color: hsl(300, 100%, 15.1%); font-weight: bold; font-size: 185%; } .spiderbreacher { - color: #804b02; + color: hsl(34.8, 96.9%, 25.5%); font-weight: bold; font-size: 140%; } .spiderscout { - color: #0c0674; + color: hsl(243.3, 90.2%, 23.9%); font-weight: bold; font-size: 120%; } .interface { - color: #330033; + color: hsl(300, 100%, 10%); } .sans { @@ -769,7 +769,7 @@ h2.alert { } .tape_recorder { - color: #800000; + color: hsl(0, 100%, 25.1%); font-family: 'Courier New', cursive, sans-serif; } @@ -804,17 +804,17 @@ h2.alert { } .greentext { - color: #00ff00; + color: hsl(120, 100%, 50%); font-size: 185%; } .redtext { - color: #ff0000; + color: hsl(0, 100%, 50%); font-size: 185%; } .clown { - color: #ff69bf; + color: hsl(325.6, 100%, 70.6%); font-size: 160%; font-family: 'Comic Sans MS', cursive, sans-serif; font-weight: bold; @@ -826,13 +826,13 @@ h2.alert { } .his_grace { - color: #15d512; + color: hsl(119.1, 84.4%, 45.3%); font-family: 'Courier New', cursive, sans-serif; font-style: italic; } .hypnophrase { - color: #0d0d0d; + color: hsl(0, 0%, 5.1%); font-weight: bold; animation: hypnocolor 1500ms infinite; animation-direction: alternate; @@ -840,43 +840,43 @@ h2.alert { @keyframes hypnocolor { 0% { - color: #0d0d0d; + color: hsl(0, 0%, 5.1%); } 25% { - color: #410194; + color: hsl(266.1, 98.7%, 29.2%); } 50% { - color: #7f17d8; + color: hsl(272.3, 80.8%, 46.9%); } 75% { - color: #410194; + color: hsl(266.1, 98.7%, 29.2%); } 100% { - color: #3bb5d3; + color: hsl(191.8, 63.3%, 52.9%); } } .phobia { - color: #dd0000; + color: hsl(0, 100%, 43.3%); font-weight: bold; animation: phobia 750ms infinite; } @keyframes phobia { 0% { - color: #0d0d0d; + color: hsl(0, 0%, 5.1%); } 50% { - color: #dd0000; + color: hsl(0, 100%, 43.3%); } 100% { - color: #0d0d0d; + color: hsl(0, 0%, 5.1%); } } @@ -894,7 +894,7 @@ h2.alert { } .memo { - color: #638500; + color: hsl(75.3, 100%, 26.1%); text-align: center; } @@ -904,35 +904,35 @@ h2.alert { } .abductor { - color: #800080; + color: hsl(300, 100%, 25.1%); font-style: italic; } .mind_control { - color: #a00d6f; + color: hsl(320, 85%, 33.9%); font-size: 100%; font-weight: bold; font-style: italic; } .slime { - color: #00ced1; + color: hsl(180.9, 100%, 41%); } .drone { - color: #848482; + color: hsl(60, 0.8%, 51.4%); } .monkey { - color: #975032; + color: hsl(17.8, 50.2%, 39.4%); } .swarmer { - color: #2c75ff; + color: hsl(219.2, 100%, 58.6%); } .resonate { - color: #298f85; + color: hsl(174.1, 55.4%, 36.1%); } .upside_down { @@ -985,8 +985,8 @@ h2.alert { } .examine_block { - background: #f2f7fa; - border: 1px solid #111a27; + background: hsl(202.5, 44.4%, 96.5%); + border: 1px solid hsl(215.5, 39.3%, 11%); margin: 0.5em; padding: 0.5em 0.75em; } @@ -1008,7 +1008,7 @@ h2.alert { .separator::after { content: ''; flex: 1; - border-bottom: 1px solid #111a27; + border-bottom: 1px solid hsl(215.5, 39.3%, 11%); } .separator:not(:empty)::before { @@ -1059,51 +1059,51 @@ h2.alert { /*DOPPLER ADDITION END*/ $alert-stripe-colors: ( - 'default': #b3bfff, - 'green': #adffad, - 'blue': #b3bfff, - 'pink': #ffb3df, - 'yellow': #fff3b3, - 'orange': #ffe2b3, - 'red': #ffb3b3, - 'purple': #fac2ff, - 'grey': #e3e3e3, + 'default': hsl(230.5, 100%, 85.1%), + 'green': hsl(120, 100%, 83.9%), + 'blue': hsl(230.5, 100%, 85.1%), + 'pink': hsl(325.3, 100%, 85.1%), + 'yellow': hsl(50.5, 100%, 85.1%), + 'orange': hsl(37.1, 100%, 85.1%), + 'red': hsl(0, 100%, 85.1%), + 'purple': hsl(295.1, 100%, 88%), + 'grey': hsl(0, 0%, 89%), ); $alert-stripe-alternate-colors: ( - 'default': #bdc8ff, - 'green': #bdffbd, - 'blue': #bdc8ff, - 'pink': #ffc2e5, - 'yellow': #fff5c2, - 'orange': #ffe8c2, - 'red': #ffc2c2, - 'purple': #fbd1ff, - 'grey': #ebebeb, + 'default': hsl(230, 100%, 87.1%), + 'green': hsl(120, 100%, 87.1%), + 'blue': hsl(230, 100%, 87.1%), + 'pink': hsl(325.6, 100%, 88%), + 'yellow': hsl(50.2, 100%, 88%), + 'orange': hsl(37.4, 100%, 88%), + 'red': hsl(0, 100%, 88%), + 'purple': hsl(294.8, 100%, 91%), + 'grey': hsl(0, 0%, 92.2%), ); $alert-major-header-colors: ( - 'default': #003061, - 'green': #005229, - 'blue': #003061, - 'pink': #800033, - 'yellow': #754900, - 'orange': #823208, - 'red': #800029, - 'purple': #450d8c, - 'grey': #800033, + 'default': hsl(210.3, 100%, 19%), + 'green': hsl(150, 100%, 16.1%), + 'blue': hsl(210.3, 100%, 19%), + 'pink': hsl(336.1, 100%, 25.1%), + 'yellow': hsl(37.4, 100%, 22.9%), + 'orange': hsl(20.7, 88.4%, 27.1%), + 'red': hsl(340.8, 100%, 25.1%), + 'purple': hsl(266.5, 83%, 30%), + 'grey': hsl(336.1, 100%, 25.1%), ); $alert-subheader-header-colors: ( - 'default': #6b0020, - 'green': #6b0020, - 'blue': #6b0020, - 'pink': #002c85, - 'yellow': #002c85, - 'orange': #002c85, - 'red': #002c85, - 'purple': #002c85, - 'grey': #002c85, + 'default': hsl(342.1, 100%, 21%), + 'green': hsl(342.1, 100%, 21%), + 'blue': hsl(342.1, 100%, 21%), + 'pink': hsl(220.2, 100%, 26.1%), + 'yellow': hsl(220.2, 100%, 26.1%), + 'orange': hsl(220.2, 100%, 26.1%), + 'red': hsl(220.2, 100%, 26.1%), + 'purple': hsl(220.2, 100%, 26.1%), + 'grey': hsl(220.2, 100%, 26.1%), ); $border-width: 4; @@ -1130,8 +1130,8 @@ $border-width-px: $border-width * 1px; } .major_announcement_text { - color: #131313; - background-color: #eaeaea; + color: hsl(0, 0%, 7.5%); + background-color: hsl(0, 0%, 91.8%); font-weight: bold; font-size: 100%; text-align: left; @@ -1152,8 +1152,8 @@ $border-width-px: $border-width * 1px; } .minor_announcement_text { - background-color: #eaeaea; - color: #202020; + background-color: hsl(0, 0%, 91.8%); + color: hsl(0, 0%, 12.5%); padding: 0.5rem 0.5rem; text-align: left; font-size: 100%; @@ -1166,18 +1166,18 @@ $border-width-px: $border-width * 1px; } .ooc_alert { - background: #bdc8ff; - border: 1px solid #002eb8; + background: hsl(230, 100%, 87.1%); + border: 1px solid hsl(225, 100%, 36.1%); margin: 0.5em; padding: 0.5em 0.5em 0.5em 0.2em; - color: #00283a; + color: hsl(198.6, 100%, 11.4%); font-weight: bold; display: flex; flex-direction: column; } .ooc_announcement_text { - color: #002eb8; + color: hsl(225, 100%, 36.1%); padding: 0.5em 0 0 0.35em; display: flex; flex-direction: column; @@ -1185,7 +1185,7 @@ $border-width-px: $border-width * 1px; @each $color-name, $color-value in $alert-stripe-colors { .chat_alert_#{$color-name} { - color: #ffffff; + color: hsl(0, 0%, 100%); padding: 0.5rem 0.5rem; box-shadow: none; font-weight: bold; diff --git a/tgui/packages/tgui-panel/styles/themes/light.scss b/tgui/packages/tgui-panel/styles/themes/light.scss index f8bfd67ee934f..0d8e301001f29 100644 --- a/tgui/packages/tgui-panel/styles/themes/light.scss +++ b/tgui/packages/tgui-panel/styles/themes/light.scss @@ -7,21 +7,20 @@ @use 'sass:meta'; @use '~tgui/styles/colors.scss' with ( - $primary: #ffffff, + $primary: hsl(0, 0%, 100%), $bg-lightness: -25%, $fg-lightness: -10%, - $label: #3b3b3b, + $label: hsl(0, 0%, 23.1%), // Makes button look actually grey due to weird maths. - $grey: #ffffff, + $grey: hsl(0, 0%, 100%), // Commenting out color maps will adjust all colors based on the lightness // settings above, but will add extra 10KB to the theme. // $fg-map-keys: (), // $bg-map-keys: (), ); @use '~tgui/styles/base.scss' with ( - $color-fg: #000000, - $color-bg: #eeeeee, - $color-bg-section: #ffffff, + $color-fg: hsl(0, 0%, 0%), + $color-bg: hsl(0, 0%, 93.3%), $color-bg-grad-spread: 0% ); @@ -33,7 +32,7 @@ // Components @include meta.load-css( - '~tgui/styles/components/Tabs.scss', + 'pkg:tgui-styles/components/Tabs', $with: ( 'text-color': rgba(0, 0, 0, 0.5), 'color-default': rgba(0, 0, 0, 1), @@ -41,35 +40,39 @@ 'tab-color-hovered': rgba(0, 0, 0, 0.075) ) ); - @include meta.load-css('~tgui/styles/components/Section.scss'); @include meta.load-css( - '~tgui/styles/components/Button.scss', + 'pkg:tgui-styles/components/Section', + $with: ('background-color': hsl(0, 0%, 100%)) + ); + + @include meta.load-css( + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #bbbbbb, - 'color-disabled': #363636, - 'color-selected': #0668b8, - 'color-caution': #be6209, - 'color-danger': #9a9d00, + 'color-default': hsl(0, 0%, 73.3%), + 'color-disabled': hsl(0, 0%, 21.2%), + 'color-selected': hsl(204, 94%, 35.3%), + 'color-caution': hsl(28, 91%, 38.2%), + 'color-danger': hsl(62, 100%, 30.2%), 'color-transparent-text': rgba(0, 0, 0, 0.5) ) ); @include meta.load-css( - '~tgui/styles/components/Input.scss', + 'pkg:tgui-styles/components/Input', $with: ( 'border-color': colors.fg(colors.$label), - 'background-color': #e6e6e6 + 'background-color': hsl(0, 0%, 90.2%) ) ); - @include meta.load-css('~tgui/styles/components/NumberInput.scss'); - @include meta.load-css('~tgui/styles/components/TextArea.scss'); - @include meta.load-css('~tgui/styles/components/Knob.scss'); - @include meta.load-css('~tgui/styles/components/Slider.scss'); - @include meta.load-css('~tgui/styles/components/ProgressBar.scss'); + @include meta.load-css('pkg:tgui-styles/components/NumberInput'); + @include meta.load-css('pkg:tgui-styles/components/TextArea'); + @include meta.load-css('pkg:tgui-styles/components/Knob'); + @include meta.load-css('pkg:tgui-styles/components/Slider'); + @include meta.load-css('pkg:tgui-styles/components/ProgressBar'); // Components specific to tgui-panel @include meta.load-css( '../components/Chat.scss', - $with: ('text-color': #000000) + $with: ('text-color': hsl(0, 0%, 0%)) ); // Layouts diff --git a/tgui/packages/tgui-say/TguiSay.tsx b/tgui/packages/tgui-say/TguiSay.tsx index c06e72405d4f1..1dea8c58cae44 100644 --- a/tgui/packages/tgui-say/TguiSay.tsx +++ b/tgui/packages/tgui-say/TguiSay.tsx @@ -23,7 +23,7 @@ type State = { size: WINDOW_SIZES; }; -const CHANNEL_REGEX = /^:\w\s/; +const CHANNEL_REGEX = /^[:.]\w\s/; export class TguiSay extends Component<{}, State> { private channelIterator: ChannelIterator; diff --git a/tgui/packages/tgui-say/package.json b/tgui/packages/tgui-say/package.json index 5c8eaf390a96c..d8c09604c1b26 100644 --- a/tgui/packages/tgui-say/package.json +++ b/tgui/packages/tgui-say/package.json @@ -9,6 +9,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "tgui": "workspace:*", - "tgui-polyfill": "workspace:*" + "tgui-polyfill": "workspace:*", + "tgui-styles": "^0.0.10" } } diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss index 9a6c1beb265ad..05cef9b550991 100644 --- a/tgui/packages/tgui-say/styles/colors.scss +++ b/tgui/packages/tgui-say/styles/colors.scss @@ -1,31 +1,31 @@ @use 'sass:map'; -$background: #131313; -$button: #1f1f1f; -$lightMode: #ffffff; -$lightBorder: #bbbbbb; -$lightHover: #eaeaea; +$background: hsl(0, 0%, 7.5%); +$button: hsl(0, 0%, 12.2%); +$lightMode: hsl(0, 0%, 100%); +$lightBorder: hsl(0, 0%, 73.3%); +$lightHover: hsl(0, 0%, 91.8%); $_channel_map: ( - 'Admin': #ffbbff, - 'AI': #d65d95, - 'CCom': #2681a5, - 'Cling': #4c701f, - 'Cmd': #fcdf03, - 'Engi': #f37746, - 'Hive': #855d85, - 'io': #1e90ff, - 'Me': #5975da, - 'Med': #57b8f0, - 'OOC': #cca300, - 'Ent': #5c8a87, - 'Radio': #1ecc43, - 'Say': #a4bad6, - 'Sci': #c68cfa, - 'Sec': #dd3535, - 'Supp': #b88646, - 'Svc': #6ca729, - 'Synd': #8f4a4b, + 'Admin': hsl(300, 100%, 86.7%), + 'AI': hsl(332.2, 59.6%, 60.2%), + 'CCom': hsl(197, 62.6%, 39.8%), + 'Cling': hsl(86.7, 56.6%, 28%), + 'Cmd': hsl(53, 97.6%, 50%), + 'Engi': hsl(17, 87.8%, 61.4%), + 'Hive': hsl(300, 17.7%, 44.3%), + 'io': hsl(209.6, 100%, 55.9%), + 'Me': hsl(227, 63.5%, 60.2%), + 'Med': hsl(202, 83.6%, 64.1%), + 'OOC': hsl(47.9, 100%, 40%), + 'Ent': hsl(176.1, 20%, 45.1%), + 'Radio': hsl(132.8, 74.4%, 45.9%), + 'Say': hsl(213.6, 37.9%, 74.1%), + 'Sci': hsl(271.6, 91.7%, 76.5%), + 'Sec': hsl(0, 71.2%, 53.7%), + 'Supp': hsl(33.7, 44.9%, 49.8%), + 'Svc': hsl(88.1, 60.6%, 40.8%), + 'Synd': hsl(359.1, 31.8%, 42.5%), // DOPPLER EDIT ADDITION START 'Whis': #7c7fd9, 'LOOC': #ffceb6, diff --git a/tgui/packages/tgui-say/styles/main.scss b/tgui/packages/tgui-say/styles/main.scss index 8c7ca885c9047..8e164aa21fa7f 100644 --- a/tgui/packages/tgui-say/styles/main.scss +++ b/tgui/packages/tgui-say/styles/main.scss @@ -7,7 +7,7 @@ // Atomic styles @include meta.load-css('~tgui/styles/atomic/text.scss'); // External styles -@include meta.load-css('~tgui/styles/components/TextArea.scss'); +@include meta.load-css('pkg:tgui-styles/components/TextArea'); // Local styles @include meta.load-css('./button.scss'); @include meta.load-css('./content.scss'); diff --git a/tgui/packages/tgui/interfaces/ApcControl.jsx b/tgui/packages/tgui/interfaces/ApcControl.jsx index caeb5ee1bed6e..16c74b8d955c4 100644 --- a/tgui/packages/tgui/interfaces/ApcControl.jsx +++ b/tgui/packages/tgui/interfaces/ApcControl.jsx @@ -1,5 +1,4 @@ import { map, sortBy } from 'common/collections'; -import { flow } from 'common/fp'; import { useState } from 'react'; import { Box, @@ -11,6 +10,7 @@ import { Table, Tabs, } from 'tgui-core/components'; +import { flow } from 'tgui-core/fp'; import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/Aquarium.tsx b/tgui/packages/tgui/interfaces/Aquarium.tsx index 592a2af2ea839..c5eb08e564419 100644 --- a/tgui/packages/tgui/interfaces/Aquarium.tsx +++ b/tgui/packages/tgui/interfaces/Aquarium.tsx @@ -1,4 +1,3 @@ -import { capitalizeFirst } from 'common/string'; import { Box, Button, @@ -12,6 +11,7 @@ import { Stack, } from 'tgui-core/components'; import { BooleanLike } from 'tgui-core/react'; +import { capitalizeFirst } from 'tgui-core/string'; import { useBackend } from '../backend'; import { Window } from '../layouts'; @@ -24,7 +24,7 @@ type Data = { fluidTypes: string[]; fishData: FishData[]; propData: PropData[]; - allowBreeding: BooleanLike; + safe_mode: BooleanLike; feedingInterval: number; heartIcon: string; heartIconState: string; @@ -270,7 +270,7 @@ const Settings = (props) => { maxTemperature, fluidTypes, fluidType, - allowBreeding, + safe_mode, feedingInterval, } = data; @@ -319,13 +319,14 @@ const Settings = (props) => {
- + ))} diff --git a/tgui/packages/tgui/interfaces/CrewManifest.jsx b/tgui/packages/tgui/interfaces/CrewManifest.jsx index 6557dda31f4b9..4039eb8fc3a2f 100644 --- a/tgui/packages/tgui/interfaces/CrewManifest.jsx +++ b/tgui/packages/tgui/interfaces/CrewManifest.jsx @@ -1,5 +1,5 @@ import { Icon, Section, Table, Tooltip } from 'tgui-core/components'; -import { classes } from '../../common/react'; +import { classes } from 'tgui-core/react'; import { useBackend } from '../backend'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx b/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx index e7b66093d2099..113704af7e64d 100644 --- a/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx +++ b/tgui/packages/tgui/interfaces/DeathmatchLobby.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -14,7 +11,10 @@ import { Stack, Table, Tooltip, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { ButtonCheckbox } from '../components/Button'; import { Window } from '../layouts'; diff --git a/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx b/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx index 252a6e5123113..3731d927c03b3 100644 --- a/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx +++ b/tgui/packages/tgui/interfaces/DeathmatchPanel.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Button, Dropdown, @@ -10,7 +7,10 @@ import { Stack, Table, Tooltip, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Lobby = { diff --git a/tgui/packages/tgui/interfaces/DecalPainter.tsx b/tgui/packages/tgui/interfaces/DecalPainter.tsx index dd835773960c7..5b45db3a4ddad 100644 --- a/tgui/packages/tgui/interfaces/DecalPainter.tsx +++ b/tgui/packages/tgui/interfaces/DecalPainter.tsx @@ -1,5 +1,6 @@ +import { Button, ColorBox, Flex, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, ColorBox, Flex, Section } from '../components'; import { Window } from '../layouts'; type DecalInfo = { diff --git a/tgui/packages/tgui/interfaces/DestinationTagger.tsx b/tgui/packages/tgui/interfaces/DestinationTagger.tsx index 5326f93e01bac..37fe5d3c1553f 100644 --- a/tgui/packages/tgui/interfaces/DestinationTagger.tsx +++ b/tgui/packages/tgui/interfaces/DestinationTagger.tsx @@ -1,7 +1,7 @@ import { map, sortBy } from 'common/collections'; +import { Button, Section, Stack } from 'tgui-core/components'; import { useBackend } from '../backend'; -import { Button, Section, Stack } from '../components'; import { Window } from '../layouts'; type DestinationTaggerData = { diff --git a/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx b/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx index 85a895a03e975..fda2dd32c8896 100644 --- a/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx +++ b/tgui/packages/tgui/interfaces/DestructiveAnalyzer.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Box, Button, Image, NoticeBox, Section } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Button, Image, NoticeBox, Section } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/DisposalUnit.jsx b/tgui/packages/tgui/interfaces/DisposalUnit.jsx index f163c3c1c2c22..08bb0a9ad19ca 100644 --- a/tgui/packages/tgui/interfaces/DisposalUnit.jsx +++ b/tgui/packages/tgui/interfaces/DisposalUnit.jsx @@ -1,5 +1,11 @@ +import { + Button, + LabeledList, + ProgressBar, + Section, +} from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, LabeledList, ProgressBar, Section } from '../components'; import { Window } from '../layouts'; export const DisposalUnit = (props) => { diff --git a/tgui/packages/tgui/interfaces/DnaVault.tsx b/tgui/packages/tgui/interfaces/DnaVault.tsx index 2b6781d6cf747..42220a7076015 100644 --- a/tgui/packages/tgui/interfaces/DnaVault.tsx +++ b/tgui/packages/tgui/interfaces/DnaVault.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -8,7 +5,10 @@ import { ProgressBar, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/DopplerArray.jsx b/tgui/packages/tgui/interfaces/DopplerArray.jsx index f62fa8de56b71..14bd9b160dfe4 100644 --- a/tgui/packages/tgui/interfaces/DopplerArray.jsx +++ b/tgui/packages/tgui/interfaces/DopplerArray.jsx @@ -1,4 +1,3 @@ -import { useBackend, useSharedState } from '../backend'; import { Box, Button, @@ -8,7 +7,9 @@ import { Section, Stack, Tabs, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend, useSharedState } from '../backend'; import { Window } from '../layouts'; export const DopplerArray = (props) => { diff --git a/tgui/packages/tgui/interfaces/EightBallVote.tsx b/tgui/packages/tgui/interfaces/EightBallVote.tsx index f85b8724ffefb..c129ae0b083a7 100644 --- a/tgui/packages/tgui/interfaces/EightBallVote.tsx +++ b/tgui/packages/tgui/interfaces/EightBallVote.tsx @@ -1,8 +1,16 @@ -import { BooleanLike } from 'common/react'; -import { toTitleCase } from 'common/string'; +import { + Box, + Button, + Divider, + Flex, + NoticeBox, + Section, + Stack, +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; +import { toTitleCase } from 'tgui-core/string'; import { useBackend } from '../backend'; -import { Box, Button, NoticeBox, Section, Stack } from '../components'; import { Window } from '../layouts'; type Data = { @@ -21,12 +29,22 @@ export function EightBallVote(props) { const { data } = useBackend(); const { shaking } = data; + const idealHeight = shaking ? 265 : 70; return ( - - - {(shaking && ( - No question is currently being asked. - )) || } + + + {!shaking ? ( + + No question is currently being asked. + + ) : ( + <> + + A question is currently being asked! + + + + )} ); @@ -34,19 +52,25 @@ export function EightBallVote(props) { function EightBallVoteQuestion(props) { const { act, data } = useBackend(); - const { question, answers = [] } = data; + const { shaking, question, answers = [] } = data; return ( -
- - "{question}" - +
+ + " + {question} + " + + + + {answers.map((answer) => (
diff --git a/tgui/packages/tgui/interfaces/LanguageMenu.jsx b/tgui/packages/tgui/interfaces/LanguageMenu.jsx index fc5a43feb6133..404ac8484ef99 100644 --- a/tgui/packages/tgui/interfaces/LanguageMenu.jsx +++ b/tgui/packages/tgui/interfaces/LanguageMenu.jsx @@ -1,5 +1,6 @@ +import { Button, LabeledList, Section } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; import { Window } from '../layouts'; export const LanguageMenu = (props) => { diff --git a/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx b/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx index fdad995589449..e584a9deed0ce 100644 --- a/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx +++ b/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx @@ -1,4 +1,3 @@ -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +8,9 @@ import { Section, Stack, Tabs, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx b/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx index 5e7d1ba8516b4..8dfa89318eda5 100644 --- a/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx +++ b/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { NoticeBox } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { NoticeBox } from '../components'; import { Window } from '../layouts'; import { LaunchpadControl } from './LaunchpadConsole'; diff --git a/tgui/packages/tgui/interfaces/Lawpanel.tsx b/tgui/packages/tgui/interfaces/Lawpanel.tsx index 3ce64868ff8aa..7d72c527ab25a 100644 --- a/tgui/packages/tgui/interfaces/Lawpanel.tsx +++ b/tgui/packages/tgui/interfaces/Lawpanel.tsx @@ -1,6 +1,3 @@ -import { BooleanLike } from 'common/react'; - -import { useBackend } from '../backend'; import { Button, Collapsible, @@ -11,7 +8,10 @@ import { NoticeBox, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; const lawtype_to_color = { diff --git a/tgui/packages/tgui/interfaces/LibraryAdmin.tsx b/tgui/packages/tgui/interfaces/LibraryAdmin.tsx index fd88fdc48fb2f..5e9ead80a6054 100644 --- a/tgui/packages/tgui/interfaces/LibraryAdmin.tsx +++ b/tgui/packages/tgui/interfaces/LibraryAdmin.tsx @@ -1,8 +1,5 @@ import { map, sortBy } from 'common/collections'; -import { capitalize } from 'common/string'; import { useState } from 'react'; - -import { useBackend, useLocalState } from '../backend'; import { Box, Button, @@ -13,7 +10,10 @@ import { Stack, Table, TextArea, -} from '../components'; +} from 'tgui-core/components'; +import { capitalize } from 'tgui-core/string'; + +import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; import { PageSelect } from './LibraryConsole'; diff --git a/tgui/packages/tgui/interfaces/LibraryConsole.jsx b/tgui/packages/tgui/interfaces/LibraryConsole.jsx index de10b3a2e86b0..87d87f9bac84f 100644 --- a/tgui/packages/tgui/interfaces/LibraryConsole.jsx +++ b/tgui/packages/tgui/interfaces/LibraryConsole.jsx @@ -1,8 +1,5 @@ import { map, sortBy } from 'common/collections'; -import { classes } from 'common/react'; import { useState } from 'react'; - -import { useBackend, useLocalState } from '../backend'; import { Box, Button, @@ -16,7 +13,10 @@ import { Section, Stack, Table, -} from '../components'; +} from 'tgui-core/components'; +import { classes } from 'tgui-core/react'; + +import { useBackend, useLocalState } from '../backend'; import { Window } from '../layouts'; import { sanitizeText } from '../sanitize'; diff --git a/tgui/packages/tgui/interfaces/LibraryScanner.jsx b/tgui/packages/tgui/interfaces/LibraryScanner.jsx index efa7156abfbee..3f06b7b3ab36f 100644 --- a/tgui/packages/tgui/interfaces/LibraryScanner.jsx +++ b/tgui/packages/tgui/interfaces/LibraryScanner.jsx @@ -1,5 +1,6 @@ +import { Button, NoticeBox, Section, Stack } from 'tgui-core/components'; + import { useBackend } from '../backend'; -import { Button, NoticeBox, Section, Stack } from '../components'; import { Window } from '../layouts'; export const LibraryScanner = (props) => { diff --git a/tgui/packages/tgui/interfaces/LibraryVisitor.jsx b/tgui/packages/tgui/interfaces/LibraryVisitor.jsx index cb27e42704d98..50ea9bad108c0 100644 --- a/tgui/packages/tgui/interfaces/LibraryVisitor.jsx +++ b/tgui/packages/tgui/interfaces/LibraryVisitor.jsx @@ -1,6 +1,4 @@ import { map, sortBy } from 'common/collections'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -10,7 +8,9 @@ import { Section, Stack, Table, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; import { PageSelect } from './LibraryConsole'; diff --git a/tgui/packages/tgui/interfaces/LightController.tsx b/tgui/packages/tgui/interfaces/LightController.tsx index 810b644f90f6b..e65104fd9c5a1 100644 --- a/tgui/packages/tgui/interfaces/LightController.tsx +++ b/tgui/packages/tgui/interfaces/LightController.tsx @@ -1,9 +1,17 @@ import { useState } from 'react'; +import { + Box, + Button, + Knob, + Section, + Slider, + Stack, + Tabs, +} from 'tgui-core/components'; import { round } from '../../common/math'; import { BooleanLike, classes } from '../../common/react'; import { useBackend } from '../backend'; -import { Box, Button, Knob, Section, Slider, Stack, Tabs } from '../components'; import { Window } from '../layouts'; enum Direction { diff --git a/tgui/packages/tgui/interfaces/LightSpawn.tsx b/tgui/packages/tgui/interfaces/LightSpawn.tsx index 68e3430d8178e..75c1f2cf07d6c 100644 --- a/tgui/packages/tgui/interfaces/LightSpawn.tsx +++ b/tgui/packages/tgui/interfaces/LightSpawn.tsx @@ -1,8 +1,16 @@ import { useState } from 'react'; +import { + Box, + Button, + Knob, + Section, + Slider, + Stack, + Tabs, +} from 'tgui-core/components'; import { classes } from '../../common/react'; import { useBackend, useLocalState } from '../backend'; -import { Box, Button, Knob, Section, Slider, Stack, Tabs } from '../components'; import { Window } from '../layouts'; enum Direction { diff --git a/tgui/packages/tgui/interfaces/Limbgrower.jsx b/tgui/packages/tgui/interfaces/Limbgrower.jsx index 363b416f12fde..8ee02d086b78e 100644 --- a/tgui/packages/tgui/interfaces/Limbgrower.jsx +++ b/tgui/packages/tgui/interfaces/Limbgrower.jsx @@ -1,4 +1,3 @@ -import { useBackend, useSharedState } from '../backend'; import { Box, Button, @@ -7,7 +6,9 @@ import { LabeledList, Section, Tabs, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend, useSharedState } from '../backend'; import { Window } from '../layouts'; export const Limbgrower = (props) => { diff --git a/tgui/packages/tgui/interfaces/LingMMITalk.tsx b/tgui/packages/tgui/interfaces/LingMMITalk.tsx index 9f4effb2e663a..fc1f0da7c9e80 100644 --- a/tgui/packages/tgui/interfaces/LingMMITalk.tsx +++ b/tgui/packages/tgui/interfaces/LingMMITalk.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; +import { Button, ByondUi, Stack, TextArea } from 'tgui-core/components'; import { useBackend } from '../backend'; -import { Button, ByondUi, Stack, TextArea } from '../components'; import { Window } from '../layouts'; type Data = { diff --git a/tgui/packages/tgui/interfaces/LockedSafe.tsx b/tgui/packages/tgui/interfaces/LockedSafe.tsx index ba8d6bc966140..77d042912afe1 100644 --- a/tgui/packages/tgui/interfaces/LockedSafe.tsx +++ b/tgui/packages/tgui/interfaces/LockedSafe.tsx @@ -1,7 +1,7 @@ -import { BooleanLike } from 'common/react'; +import { Box, Flex } from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; -import { Box, Flex } from '../components'; import { Window } from '../layouts'; import { NukeKeypad } from './NuclearBomb'; diff --git a/tgui/packages/tgui/interfaces/LogViewer.tsx b/tgui/packages/tgui/interfaces/LogViewer.tsx index ffdd18a730fe1..0fe5daf5ec783 100644 --- a/tgui/packages/tgui/interfaces/LogViewer.tsx +++ b/tgui/packages/tgui/interfaces/LogViewer.tsx @@ -1,6 +1,4 @@ import { useState } from 'react'; - -import { useBackend } from '../backend'; import { Button, Collapsible, @@ -8,7 +6,9 @@ import { NoticeBox, Section, Stack, -} from '../components'; +} from 'tgui-core/components'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; type LogViewerData = { diff --git a/tgui/packages/tgui/interfaces/MODpaint.jsx b/tgui/packages/tgui/interfaces/MODpaint.jsx index 7a047b384260c..0d9a56e459eb5 100644 --- a/tgui/packages/tgui/interfaces/MODpaint.jsx +++ b/tgui/packages/tgui/interfaces/MODpaint.jsx @@ -1,6 +1,3 @@ -import { capitalize } from 'common/string'; - -import { useBackend } from '../backend'; import { Box, Button, @@ -9,7 +6,10 @@ import { Section, Slider, Stack, -} from '../components'; +} from 'tgui-core/components'; +import { capitalize } from 'tgui-core/string'; + +import { useBackend } from '../backend'; import { Window } from '../layouts'; const colorToMatrix = (param) => { diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx index 11d1e294824aa..d2b96a7735c0f 100644 --- a/tgui/packages/tgui/interfaces/MODsuit.tsx +++ b/tgui/packages/tgui/interfaces/MODsuit.tsx @@ -1,7 +1,4 @@ -import { BooleanLike } from 'common/react'; import { useState } from 'react'; - -import { useBackend } from '../backend'; import { AnimatedNumber, Box, @@ -18,32 +15,39 @@ import { Section, Stack, Table, -} from '../components'; +} from 'tgui-core/components'; +import { BooleanLike } from 'tgui-core/react'; + +import { useBackend } from '../backend'; import { formatSiUnit } from '../format'; import { Window } from '../layouts'; type MODsuitData = { // Static ui_theme: string; - control: string; complexity_max: number; - parts: PartData[]; // Dynamic suit_status: SuitStatus; user_status: UserStatus; module_custom_status: ModuleCustomStatus; module_info: Module[]; + control: string; + parts: PartData[]; }; type PartData = { slot: string; name: string; + deployed: BooleanLike; + ref: string; }; type SuitStatus = { core_name: string; - cell_charge_current: number; - cell_charge_max: number; + charge_current: number; + charge_max: number; + chargebar_color: string; + chargebar_string: string; active: BooleanLike; open: BooleanLike; seconds_electrified: number; @@ -53,8 +57,8 @@ type SuitStatus = { complexity: number; selected_module: string; ai_name: string; - has_pai: boolean; - is_ai: boolean; + has_pai: BooleanLike; + is_ai: BooleanLike; link_id: string; link_freq: string; link_call: string; @@ -257,6 +261,20 @@ const ConfigurePinEntry = (props) => { ); }; +// fuck u smartkar configs werent meant to be used as actions 🖕🖕🖕 +// and really u couldnt be bothered to make this and instead used +// the pin entry? 🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕 +const ConfigureButtonEntry = (props) => { + const { name, value, module_ref } = props; + const { act } = useBackend(); + return ( + + + ))} + +
+ ); +} diff --git a/tgui/packages/tgui/interfaces/RepairbotResources.tsx b/tgui/packages/tgui/interfaces/RepairbotResources.tsx new file mode 100644 index 0000000000000..0e82b83d30ad3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RepairbotResources.tsx @@ -0,0 +1,106 @@ +import { useBackend } from '../backend'; +import { + Button, + DmIcon, + Flex, + ProgressBar, + Section, + Stack, +} from '../components'; +import { Window } from '../layouts'; + +type Data = { + stacks: Stacks[]; + repairbot_icon: string; + repairbot_icon_state: string; +}; + +type Stacks = { + stack_name: string; + stack_amount: number; + stack_maximum_amount: number; + stack_icon: string; + stack_icon_state: string; + stack_reference: string; +}; +export const RepairbotResources = (props) => { + const { act, data } = useBackend(); + const { stacks, repairbot_icon, repairbot_icon_state } = data; + return ( + + +
+ } + > + + {stacks.map((stack) => ( + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/ScannerGate.jsx b/tgui/packages/tgui/interfaces/ScannerGate.jsx index 51e32cbdc6e67..8eb61cea7f270 100644 --- a/tgui/packages/tgui/interfaces/ScannerGate.jsx +++ b/tgui/packages/tgui/interfaces/ScannerGate.jsx @@ -67,10 +67,6 @@ const SCANNER_GATE_ROUTES = { title: 'Scanner Mode: Nutrition', component: () => ScannerGateNutrition, }, - Contraband: { - title: 'Scanner Mode: Contraband', - component: () => ScannerGateContraband, - }, }; const ScannerGateControl = (props) => { @@ -98,7 +94,6 @@ const ScannerGateControl = (props) => { const ScannerGateOff = (props) => { const { act, data } = useBackend(); - const { contraband_enabled } = data; return ( <> Select a scanning mode below. @@ -127,11 +122,6 @@ const ScannerGateOff = (props) => { content="Nutrition" onClick={() => act('set_mode', { new_mode: 'Nutrition' })} /> - + } + > + + + + act('regulate', { + regulate: value * 0.01, + }) + } + /> + + + + + + {data.rpm} RPM + + + {data.max_rpm} RPM + + + {data.temp} K + + + {data.max_temperature} K + + + {formatPower(data.power)} + + +
); - const parts_not_ready = data.parts_linked && !data.parts_ready && ( +}; + +const OutOfService = (props) => { + return ( - - { - 'Some parts have open maintenance hatchet, please close them before starting' - } - + + + + { + 'Parts not connected, close all mantainence panels/use a multitool on the rotor before trying again' + } + + + ); +}; + +export const TurbineComputer = (props) => { + const { data } = useBackend(); + return ( -
= 1000) || !data.parts_linked} - onClick={() => act('toggle_power')} - /> - } - > - {parts_not_connected} - {parts_not_ready} - - - - act('regulate', { - regulate: value * 0.01, - }) - } - /> - - - - - - {data.rpm} RPM - - - {data.max_rpm} RPM - - - {data.temp} K - - - {data.max_temperature} K - - - {data.power * 4 * 0.001} kW - - -
+ {data.connected ? : }
); diff --git a/tgui/packages/tgui/interfaces/Uplink/index.tsx b/tgui/packages/tgui/interfaces/Uplink/index.tsx index 124d6f3d5050e..0bfc05728f37f 100644 --- a/tgui/packages/tgui/interfaces/Uplink/index.tsx +++ b/tgui/packages/tgui/interfaces/Uplink/index.tsx @@ -341,7 +341,7 @@ export class Uplink extends Component<{}, UplinkState> { )} - {(primary_objectives || has_objectives) && ( + {!!(primary_objectives || has_objectives) && ( {primary_objectives && ( diff --git a/tgui/packages/tgui/package.json b/tgui/packages/tgui/package.json index aa9db580db7de..cc47bc939fb90 100644 --- a/tgui/packages/tgui/package.json +++ b/tgui/packages/tgui/package.json @@ -18,8 +18,9 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-popper": "^2.3.0", - "tgui-core": "^1.2.0", + "tgui-core": "^1.3.0", "tgui-dev-server": "workspace:*", - "tgui-polyfill": "workspace:*" + "tgui-polyfill": "workspace:*", + "tgui-styles": "^0.0.10" } } diff --git a/tgui/packages/tgui/styles/atomic/candystripe.scss b/tgui/packages/tgui/styles/atomic/candystripe.scss index 30159bf99c306..ff46280ea51e4 100644 --- a/tgui/packages/tgui/styles/atomic/candystripe.scss +++ b/tgui/packages/tgui/styles/atomic/candystripe.scss @@ -4,5 +4,5 @@ */ .candystripe:nth-child(odd) { - background-color: rgba(0, 0, 0, 0.25); + background-color: hsla(0, 0%, 0%, 0.25); } diff --git a/tgui/packages/tgui/styles/atomic/debug-layout.scss b/tgui/packages/tgui/styles/atomic/debug-layout.scss index d015185927adb..0b0a2b7f4b2b2 100644 --- a/tgui/packages/tgui/styles/atomic/debug-layout.scss +++ b/tgui/packages/tgui/styles/atomic/debug-layout.scss @@ -5,13 +5,13 @@ .debug-layout, .debug-layout *:not(g):not(path) { - color: rgba(255, 255, 255, 0.9) !important; + color: hsla(0, 0%, 100%, 0.9) !important; background: transparent !important; - outline: 1px solid rgba(255, 255, 255, 0.5) !important; + outline: 1px solid hsla(0, 0%, 100%, 0.5) !important; box-shadow: none !important; filter: none !important; &:hover { - outline-color: rgba(255, 255, 255, 0.8) !important; + outline-color: hsla(0, 0%, 100%, 0.8) !important; } } diff --git a/tgui/packages/tgui/styles/base.scss b/tgui/packages/tgui/styles/base.scss index b3d5dd944d008..5d85f31e2fa17 100644 --- a/tgui/packages/tgui/styles/base.scss +++ b/tgui/packages/tgui/styles/base.scss @@ -6,9 +6,9 @@ @use 'sass:color'; @use 'sass:math'; -$color-fg: #ffffff !default; -$color-bg: #1e4c4c !default; -$color-bg-section: #0e2525 !default; +$color-fg: hsl(0, 0%, 100%) !default; +$color-bg: hsl(180, 43%, 21%) !default; +$color-bg-section: hsl(180, 45%, 10%) !default; $color-bg-grad-spread: 2% !default; $color-bg-start: color.adjust( $color-bg, diff --git a/tgui/packages/tgui/styles/colors.scss b/tgui/packages/tgui/styles/colors.scss index 82c26ed1f247e..61d77a7472647 100644 --- a/tgui/packages/tgui/styles/colors.scss +++ b/tgui/packages/tgui/styles/colors.scss @@ -9,27 +9,27 @@ // Base colors -$black: #000000 !default; -$white: #ffffff !default; -$red: #ff1205 !default; -$orange: #ed9550 !default; -$yellow: #eff792 !default; -$olive: #8d9770 !default; -$green: #83bc78 !default; -$teal: #cef2ec !default; -$blue: #a7b4f6 !default; -$violet: #92839f !default; -$purple: #bfa9da !default; -$pink: #edc1d5 !default; -$brown: #b59d7e !default; -$grey: #8b8b8b !default; -$light-grey: #c5c5c5 !default; +$black: hsl(0, 0%, 0%) !default; +$white: hsl(0, 0%, 100%) !default; +$red: hsl(3, 100%, 51%) !default; +$orange: hsl(26, 81%, 62%) !default; +$yellow: hsl(65, 86%, 77%) !default; +$olive: hsl(75, 16%, 52%) !default; +$green: hsl(110, 34%, 60%) !default; +$teal: hsl(170, 58%, 88%) !default; +$blue: hsl(230, 81%, 81%) !default; +$violet: hsl(272, 13%, 57%) !default; +$purple: hsl(267, 40%, 76%) !default; +$pink: hsl(333, 55%, 84%) !default; +$brown: hsl(34, 27%, 60%) !default; +$grey: hsl(0, 0%, 55%) !default; +$light-grey: hsl(0, 0%, 77%) !default; -$primary: #306f94 !default; -$good: #7ce176 !default; -$average: #eebe66 !default; -$bad: #ed6762 !default; -$label: #92e4ff !default; +$primary: hsl(202, 51%, 38%) !default; +$good: hsl(117, 64%, 67%) !default; +$average: hsl(39, 80%, 67%) !default; +$bad: hsl(2, 79%, 66%) !default; +$label: hsl(195, 100%, 79%) !default; // Background and foreground color lightness ratios $bg-lightness: -15% !default; @@ -75,7 +75,7 @@ $bg-map-keys: map.keys($_gen_map) !default; $fg-map: (); @each $color-name in $fg-map-keys { // prettier-ignore - $fg-map: map-merge($fg-map, ( + $fg-map: map.merge($fg-map, ( $color-name: fg(map.get($_gen_map, $color-name)), )); } @@ -83,7 +83,7 @@ $fg-map: (); $bg-map: (); @each $color-name in $bg-map-keys { // prettier-ignore - $bg-map: map-merge($bg-map, ( + $bg-map: map.merge($bg-map, ( $color-name: bg(map.get($_gen_map, $color-name)), )); } diff --git a/tgui/packages/tgui/styles/components/BlockQuote.scss b/tgui/packages/tgui/styles/components/BlockQuote.scss deleted file mode 100644 index 4e54030e5b65c..0000000000000 --- a/tgui/packages/tgui/styles/components/BlockQuote.scss +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../colors.scss'; - -$color-default: colors.fg(colors.$label) !default; - -.BlockQuote { - color: $color-default; - border-left: base.em(2px) solid $color-default; - padding-left: 0.5em; - margin-bottom: 0.5em; - - &:last-child { - margin-bottom: 0; - } -} diff --git a/tgui/packages/tgui/styles/components/Button.scss b/tgui/packages/tgui/styles/components/Button.scss deleted file mode 100644 index fe777e9d3ef52..0000000000000 --- a/tgui/packages/tgui/styles/components/Button.scss +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../colors.scss'; -@use '../functions.scss' as *; - -$color-default: colors.bg(colors.$primary) !default; -$color-disabled: #999999 !default; -$color-selected: colors.bg(colors.$green) !default; -$color-caution: colors.bg(colors.$yellow) !default; -$color-danger: colors.bg(colors.$red) !default; -$color-transparent-text: rgba(255, 255, 255, 0.5) !default; -$border-radius: base.$border-radius !default; -$bg-map: colors.$bg-map !default; - -@mixin button-color($color) { - // Adapt text color to background luminance to ensure high contast - $luminance: luminance($color); - $text-color: if($luminance > 0.4, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); - - transition: - color 50ms, - background-color 50ms; - background-color: $color; - color: $text-color; - - &:focus { - transition: - color 100ms, - background-color 100ms; - } - - &:hover { - background-color: lighten($color, 30%); - color: $text-color; - } -} - -.Button { - position: relative; - display: inline-block; - line-height: 1.667em; - padding: 0 0.5em; - margin-right: base.em(2px); - white-space: nowrap; - outline: 0; - border-radius: $border-radius; - margin-bottom: base.em(2px); - // Disable selection in buttons - user-select: none; - -ms-user-select: none; - - &:last-child { - margin-right: 0; - margin-bottom: 0; - } - - .fa, - .fas, - .far { - margin-left: -0.25em; - margin-right: -0.25em; - min-width: 1.333em; - text-align: center; - } -} - -.Button--dropdown { - line-height: base.em(16px); - height: base.em(22px); - padding: 0.2rem 0.5rem; -} - -.Button--hasContent { - // Add a margin to the icon to keep it separate from the text - .fa, - .fas, - .far { - margin-right: 0.25em; - } -} - -.Button--hasContent.Button--iconPosition--right { - .fa, - .fas, - .far { - margin-right: 0px; - margin-left: 3px; - } -} - -.Button--ellipsis { - display: block; - text-overflow: ellipsis; - overflow: hidden; -} - -.Button--fluid { - display: block; - margin-left: 0; - margin-right: 0; -} - -.Button--circular { - border-radius: 50%; -} - -.Button--compact { - padding: 0 0.25em; - line-height: 1.333em; -} - -@each $color-name, $color-value in $bg-map { - .Button--color--#{$color-name} { - @include button-color($color-value); - } -} - -.Button--color--default { - @include button-color($color-default); -} - -.Button--color--caution { - @include button-color($color-caution); -} - -.Button--color--danger { - @include button-color($color-danger); -} - -.Button--color--transparent { - @include button-color(base.$color-bg); - background-color: rgba(base.$color-bg, 0); - color: $color-transparent-text; -} - -.Button--disabled { - background-color: $color-disabled !important; -} - -.Button--selected { - @include button-color($color-selected); -} - -.Button--flex { - display: inline-flex; //Inline even for fluid - flex-direction: column; -} - -.Button--flex--fluid { - width: 100%; -} - -.Button--verticalAlignContent--top { - justify-content: flex-start; -} - -.Button--verticalAlignContent--middle { - justify-content: center; -} - -.Button--verticalAlignContent--bottom { - justify-content: flex-end; -} - -.Button__content { - display: block; - align-self: stretch; -} - -.Button__textMargin { - margin-left: 0.4rem; -} diff --git a/tgui/packages/tgui/styles/components/ColorBox.scss b/tgui/packages/tgui/styles/components/ColorBox.scss deleted file mode 100644 index 739cacee0e45c..0000000000000 --- a/tgui/packages/tgui/styles/components/ColorBox.scss +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -.ColorBox { - display: inline-block; - width: 1em; - height: 1em; - line-height: 1em; - text-align: center; -} diff --git a/tgui/packages/tgui/styles/components/Dialog.scss b/tgui/packages/tgui/styles/components/Dialog.scss deleted file mode 100644 index c7b7fd13261f7..0000000000000 --- a/tgui/packages/tgui/styles/components/Dialog.scss +++ /dev/null @@ -1,105 +0,0 @@ -@use '../base'; - -$background-color: base.$color-bg !default; - -.Dialog { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.5); - display: flex; - align-items: center; - justify-content: center; -} - -.Dialog__content { - background-color: $background-color; - font-family: Consolas, monospace; - font-size: base.em(14px); - display: flex; - flex-direction: column; -} - -.Dialog__header { - display: flex; - height: 2em; - line-height: 1.928em; - background-color: rgba(0, 0, 0, 0.5); - user-select: none; - -ms-user-select: none; -} - -.Dialog__title { - display: inline; - font-style: italic; - margin-left: 1rem; - margin-right: 2rem; - flex-grow: 1; - opacity: 0.33; -} - -.Dialog__body { - margin: 2rem 1rem 2rem 1rem; - flex-grow: 1; -} - -.Dialog__footer { - display: flex; - flex-direction: row; - justify-content: flex-end; - padding: 1rem; - background-color: rgba(0, 0, 0, 0.25); -} - -.Dialog__button { - margin: 0 1rem 0 1rem; - height: 2rem; - min-width: 6rem; - text-align: center; -} - -.SaveAsDialog__inputs { - display: flex; - flex-direction: row; - align-items: center; - padding-left: 3rem; - justify-content: flex-end; - margin-right: 1rem; -} - -.SaveAsDialog__input { - margin-left: 1rem; - width: 80%; -} - -.SaveAsDialog__label { - vertical-align: center; -} - -.Dialog__FileList { - position: relative; - display: flex; - flex-wrap: wrap; - flex-grow: 1; - align-content: flex-start; - max-height: 20rem; - overflow: auto; - overflow-y: scroll; -} - -.Dialog__FileEntry { - text-align: center; - margin: 1rem; -} - -.Dialog__FileIcon { - display: inline-block; - margin: 0 0 1rem 0; - position: relative; - width: 6vh; - height: auto; - text-align: center; - cursor: default; -} diff --git a/tgui/packages/tgui/styles/components/Dimmer.scss b/tgui/packages/tgui/styles/components/Dimmer.scss deleted file mode 100644 index 32a43ce509e2f..0000000000000 --- a/tgui/packages/tgui/styles/components/Dimmer.scss +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ -$background-dimness: 0.75 !default; - -.Dimmer { - // Align everything in the middle. - // A fat middle finger for anything less than IE11. - display: flex; - justify-content: center; - align-items: center; - // Fill positioned parent - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - // Dim everything around it - background-color: rgba(0, 0, 0, $background-dimness); - z-index: 1; -} diff --git a/tgui/packages/tgui/styles/components/Divider.scss b/tgui/packages/tgui/styles/components/Divider.scss deleted file mode 100644 index e4df190e62c4b..0000000000000 --- a/tgui/packages/tgui/styles/components/Divider.scss +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; - -$color: rgba(255, 255, 255, 0.1) !default; -$thickness: base.em(2px) !default; -$spacing: 0.5em; - -.Divider--horizontal { - margin: $spacing 0; - - &:not(.Divider--hidden) { - border-top: $thickness solid $color; - } -} - -.Divider--vertical { - height: 100%; - margin: 0 $spacing; - - &:not(.Divider--hidden) { - border-left: $thickness solid $color; - } -} diff --git a/tgui/packages/tgui/styles/components/Dropdown.scss b/tgui/packages/tgui/styles/components/Dropdown.scss deleted file mode 100644 index 7989f6109a232..0000000000000 --- a/tgui/packages/tgui/styles/components/Dropdown.scss +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; - -.Dropdown { - display: flex; - align-items: flex-start; -} - -.Dropdown__control { - flex: 1; - font-family: Verdana, sans-serif; - font-size: base.em(12px); - overflow: hidden; - user-select: none; - width: base.em(100px); -} - -.Dropdown__arrow-button { - float: right; - padding-left: 0.35em; - width: 1.2em; - border-left: base.em(1px) solid rgba(0, 0, 0, 0.25); -} - -.Dropdown__menu { - overflow-y: auto; - align-items: center; - max-height: base.em(200px); - border-radius: 0 0 base.em(2px) base.em(2px); - color: #fff; - background-color: #000; - background-color: rgba(0, 0, 0, 0.75); -} - -.Dropdown__menu-scroll { - overflow-y: scroll; -} - -.Dropdown__menuentry { - padding: base.em(2px) base.em(4px); - font-family: Verdana, sans-serif; - font-size: base.em(12px); - line-height: base.em(17px); - transition: background-color 100ms ease-out; - - &.selected { - background-color: rgba(255, 255, 255, 0.5) !important; - transition: background-color 0ms; - } - - &:hover { - background-color: rgba(255, 255, 255, 0.2); - transition: background-color 0ms; - } -} - -.Dropdown__over { - top: auto; - bottom: 100%; -} - -.Dropdown__selected-text { - display: inline-block; - text-overflow: ellipsis; - white-space: nowrap; - height: base.em(17px); - width: calc(100% - 1.2em); -} diff --git a/tgui/packages/tgui/styles/components/Flex.scss b/tgui/packages/tgui/styles/components/Flex.scss deleted file mode 100644 index d4b6b8ec3889e..0000000000000 --- a/tgui/packages/tgui/styles/components/Flex.scss +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -.Flex { - display: -ms-flexbox; - display: flex; -} - -.Flex--inline { - display: inline-flex; -} - -.Flex--iefix { - display: block; -} - -.Flex--iefix.Flex--inline { - display: inline-block; -} - -.Flex__item--iefix { - display: inline-block; -} - -.Flex--iefix--column { - & > .Flex__item--iefix { - display: block; - } -} diff --git a/tgui/packages/tgui/styles/components/Icon.scss b/tgui/packages/tgui/styles/components/Icon.scss deleted file mode 100644 index 320117a65f3e0..0000000000000 --- a/tgui/packages/tgui/styles/components/Icon.scss +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @file - * @copyright 2020 - * @author ThePotato97 (https://github.com/ThePotato97) - * @license ISC - */ - -.IconStack > .Icon { - position: absolute; - width: 100%; - text-align: center; -} - -.IconStack { - position: relative; - display: inline-block; - height: 1.2em; - line-height: 2em; - vertical-align: middle; - - &:after { - color: transparent; - content: '.'; - } -} diff --git a/tgui/packages/tgui/styles/components/Input.scss b/tgui/packages/tgui/styles/components/Input.scss deleted file mode 100644 index c2e779529f97a..0000000000000 --- a/tgui/packages/tgui/styles/components/Input.scss +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../functions.scss' as *; - -$text-color: base.$color-fg !default; -$background-color: #0a0a0a !default; -$border-color: #88bfff !default; -$border-radius: base.$border-radius !default; - -.Input { - position: relative; - display: inline-block; - width: base.em(120px); - border: base.em(1px) solid $border-color; - border: base.em(1px) solid rgba($border-color, 0.75); - border-radius: $border-radius; - color: $text-color; - background-color: $background-color; - padding: 0 base.em(4px); - margin-right: base.em(2px); - line-height: base.em(17px); - overflow: visible; -} - -.Input--fluid { - display: block; - width: auto; -} - -.Input__baseline { - display: inline-block; - color: transparent; -} - -.Input__input { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - border: 0; - outline: 0; - width: 100%; - font-size: base.em(12px); - line-height: base.em(17px); - height: base.em(17px); - margin: 0; - padding: 0 0.5em; - font-family: Verdana, sans-serif; - background-color: transparent; - color: $text-color; - color: inherit; - - &:-ms-input-placeholder { - font-style: italic; - color: #777; - color: rgba(255, 255, 255, 0.45); - } -} - -.Input--monospace .Input__input { - font-family: 'Consolas', monospace; -} diff --git a/tgui/packages/tgui/styles/components/Knob.scss b/tgui/packages/tgui/styles/components/Knob.scss deleted file mode 100644 index 1a5f0d10a998a..0000000000000 --- a/tgui/packages/tgui/styles/components/Knob.scss +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../colors.scss'; -@use '../functions.scss' as *; - -$bg-map: colors.$bg-map !default; -$fg-map: colors.$fg-map !default; -$ring-color: #6a96c9 !default; -$knob-color: #333333 !default; -$popup-background-color: #000000 !default; -$popup-text-color: #ffffff !default; - -$inner-padding: 0.1em; - -.Knob { - position: relative; - font-size: 1rem; - width: 2.6em; - height: 2.6em; - margin: 0 auto; - margin-bottom: -0.2em; - cursor: n-resize; - - // Adjusts a baseline in a way, that makes knob middle-aligned - // when it flows with the text. - &:after { - content: '.'; - color: transparent; - line-height: 2.5em; - } -} - -.Knob__circle { - position: absolute; - top: $inner-padding; - bottom: $inner-padding; - left: $inner-padding; - right: $inner-padding; - margin: 0.3em; - background-color: $knob-color; - background-image: linear-gradient( - to bottom, - rgba(255, 255, 255, 0.15) 0%, - rgba(255, 255, 255, 0) 100% - ); - border-radius: 50%; - box-shadow: 0 0.05em 0.5em 0 rgba(0, 0, 0, 0.5); -} - -.Knob__cursorBox { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.Knob__cursor { - position: relative; - top: 0.05em; - margin: 0 auto; - width: 0.2em; - height: 0.8em; - background-color: rgba(255, 255, 255, 0.9); -} - -.Knob__popupValue { - position: absolute; - top: -2rem; - right: 50%; - font-size: 1rem; - text-align: center; - padding: 0.25rem 0.5rem; - color: $popup-text-color; - background-color: $popup-background-color; - transform: translateX(50%); - white-space: nowrap; -} - -.Knob__ring { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - padding: $inner-padding; -} - -$pi: 3.1416; - -.Knob__ringTrackPivot { - transform: rotateZ(135deg); -} - -.Knob__ringTrack { - // transform-origin: 50% 50%; - fill: transparent; - stroke: rgba(255, 255, 255, 0.1); - stroke-width: 8; - stroke-linecap: round; - stroke-dasharray: 75 * $pi; -} - -.Knob__ringFillPivot { - transform: rotateZ(135deg); -} - -.Knob--bipolar .Knob__ringFillPivot { - transform: rotateZ(270deg); -} - -.Knob__ringFill { - fill: transparent; - stroke: $ring-color; - stroke-width: 8; - stroke-linecap: round; - stroke-dasharray: 100 * $pi; - transition: stroke 50ms ease-out; -} - -@each $color-name, $color-value in $fg-map { - .Knob--color--#{$color-name} { - .Knob__ringFill { - stroke: $color-value; - } - } -} diff --git a/tgui/packages/tgui/styles/components/LabeledList.scss b/tgui/packages/tgui/styles/components/LabeledList.scss deleted file mode 100644 index 94adf932549d5..0000000000000 --- a/tgui/packages/tgui/styles/components/LabeledList.scss +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; - -.LabeledList { - display: table; - // IE8: Does not support calc - width: 100%; - // Compensate for negative margin - width: calc(100% + 1em); - border-collapse: collapse; - border-spacing: 0; - margin: -0.25em -0.5em; - margin-bottom: 0; - padding: 0; -} - -.LabeledList__row { - display: table-row; -} - -.LabeledList__row:last-child .LabeledList__cell { - padding-bottom: 0; -} - -.LabeledList__cell { - display: table-cell; - margin: 0; - padding: 0.25em 0.5em; - border: 0; - text-align: left; -} - -.LabeledList__label--nowrap { - width: 1%; - white-space: nowrap; - min-width: 5em; -} - -.LabeledList__buttons { - width: 0.1%; - white-space: nowrap; - text-align: right; - padding-top: base.em(1px); - padding-bottom: 0; -} diff --git a/tgui/packages/tgui/styles/components/MenuBar.scss b/tgui/packages/tgui/styles/components/MenuBar.scss deleted file mode 100644 index 0f5eb47380cdb..0000000000000 --- a/tgui/packages/tgui/styles/components/MenuBar.scss +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; - -$separator-color: base.$color-bg-section; -$background-color: base.$color-bg !default; -$dropdown-z-index: 5; - -.MenuBar { - display: flex; -} - -.MenuBar__font { - font-family: Verdana, sans-serif; - font-size: base.em(12px); - line-height: base.em(17px); -} - -.MenuBar__hover { - &:hover { - background-color: lighten($background-color, 30%); - transition: background-color 0ms; - } -} - -.MenuBar__MenuBarButton { - padding: 0.2rem 0.5rem 0.2rem 0.5rem; -} - -.MenuBar__menu { - position: absolute; - z-index: $dropdown-z-index; - background-color: $background-color; - padding: 0.3rem 0.3rem 0.3rem 0.3rem; - box-shadow: 4px 6px 5px -2px rgba(0, 0, 0, 0.55); -} - -.MenuBar__MenuItem { - z-index: $dropdown-z-index; - transition: background-color 100ms ease-out; - background-color: $background-color; - white-space: nowrap; - padding: 0.3rem 2rem 0.3rem 3rem; -} - -.MenuBar__MenuItemToggle { - padding: 0.3rem 2rem 0.3rem 0; -} - -.MenuBar__MenuItemToggle__check { - display: inline-block; - vertical-align: middle; - min-width: 3rem; - margin-left: 0.3rem; -} - -.MenuBar__over { - top: auto; - bottom: 100%; -} - -.MenuBar__MenuBarButton-text { - text-overflow: clip; - white-space: nowrap; - height: base.em(17px); -} - -.MenuBar__Separator { - display: block; - margin: 0.3rem 0.3rem 0.3rem 2.3rem; - border-top: 1px solid $separator-color; -} diff --git a/tgui/packages/tgui/styles/components/Modal.scss b/tgui/packages/tgui/styles/components/Modal.scss deleted file mode 100644 index 005ffe316563f..0000000000000 --- a/tgui/packages/tgui/styles/components/Modal.scss +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; - -$background-color: base.$color-bg !default; - -.Modal { - background-color: $background-color; - max-width: calc(100% - 1rem); - padding: 1rem; -} diff --git a/tgui/packages/tgui/styles/components/NoticeBox.scss b/tgui/packages/tgui/styles/components/NoticeBox.scss deleted file mode 100644 index 0394ffaa660bb..0000000000000 --- a/tgui/packages/tgui/styles/components/NoticeBox.scss +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use 'sass:color'; -@use '../base.scss'; -@use '../colors.scss'; -@use '../functions.scss' as *; - -// NoticeBox -$background-color: #bb9b68 !default; -$color-stripes: rgba(0, 0, 0, 0.1) !default; -$color-border: #272727 !default; -$bg-map: colors.$bg-map !default; - -.NoticeBox { - // Adapt text color to background luminance to ensure high contast - $luminance: luminance($background-color); - $text-color: if($luminance > 0.35, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); - - padding: 0.33em 0.5em; - margin-bottom: 0.5em; - box-shadow: none; - font-weight: bold; - font-style: italic; - color: $text-color; - background-color: $background-color; - background-image: repeating-linear-gradient( - -45deg, - transparent, - transparent base.em(10px), - $color-stripes base.em(10px), - $color-stripes base.em(20px) - ); -} - -@mixin box-color($color) { - $luminance: luminance($color); - $text-color: if($luminance > 0.35, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); - color: $text-color; - background-color: color.adjust($color, $saturation: -15%, $lightness: -15%); -} - -@each $color-name, $color-value in $bg-map { - .NoticeBox--color--#{$color-name} { - @include box-color($color-value); - } -} - -.NoticeBox--type--info { - @include box-color(colors.$blue); -} - -.NoticeBox--type--success { - @include box-color(colors.$green); -} - -.NoticeBox--type--warning { - @include box-color(colors.$orange); -} - -.NoticeBox--type--danger { - @include box-color(colors.$red); -} diff --git a/tgui/packages/tgui/styles/components/NumberInput.scss b/tgui/packages/tgui/styles/components/NumberInput.scss deleted file mode 100644 index ef2aba4d47464..0000000000000 --- a/tgui/packages/tgui/styles/components/NumberInput.scss +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use 'sass:color'; -@use '../base.scss'; -@use '../functions.scss' as *; -@use './Input.scss'; - -$text-color: Input.$text-color !default; -$background-color: Input.$background-color !default; -$border-color: Input.$border-color !default; -$border-radius: Input.$border-radius !default; - -.NumberInput { - position: relative; - display: inline-block; - border: base.em(1px) solid $border-color; - border: base.em(1px) solid rgba($border-color, 0.75); - border-radius: $border-radius; - color: $border-color; - background-color: $background-color; - padding: 0 base.em(4px); - margin-right: base.em(2px); - line-height: base.em(17px); - text-align: right; - overflow: visible; - cursor: n-resize; -} - -.NumberInput--fluid { - display: block; -} - -.NumberInput__content { - margin-left: 0.5em; -} - -.NumberInput__barContainer { - position: absolute; - top: base.em(2px); - bottom: base.em(2px); - left: base.em(2px); -} - -.NumberInput__bar { - position: absolute; - bottom: 0; - left: 0; - width: base.em(3px); - box-sizing: border-box; - border-bottom: base.em(1px) solid $border-color; - background-color: $border-color; -} - -.NumberInput__input { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - border: 0; - outline: 0; - width: 100%; - font-size: base.em(12px); - line-height: base.em(17px); - height: base.em(17px); - margin: 0; - padding: 0 0.5em; - font-family: Verdana, sans-serif; - background-color: $background-color; - color: $text-color; - text-align: right; -} diff --git a/tgui/packages/tgui/styles/components/ProgressBar.scss b/tgui/packages/tgui/styles/components/ProgressBar.scss deleted file mode 100644 index e13d25e837599..0000000000000 --- a/tgui/packages/tgui/styles/components/ProgressBar.scss +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../colors.scss'; -@use '../functions.scss' as *; - -$color-default-fill: colors.bg(colors.$primary) !default; -$background-color: rgba(0, 0, 0, 0) !default; -$border-radius: base.$border-radius !default; -$bg-map: colors.$bg-map !default; - -.ProgressBar { - display: inline-block; - position: relative; - width: 100%; - padding: 0 0.5em; - border-width: base.em(1px) !important; - border-style: solid !important; - border-radius: $border-radius; - background-color: $background-color; - transition: border-color 900ms ease-out; -} - -.ProgressBar__fill { - position: absolute; - top: -0.5px; - left: 0px; - bottom: -0.5px; -} - -.ProgressBar__fill--animated { - transition: - background-color 900ms ease-out, - width 900ms ease-out; -} - -.ProgressBar__content { - position: relative; - line-height: base.em(17px); - width: 100%; - text-align: right; -} - -.ProgressBar--color--default { - border: base.em(1px) solid $color-default-fill; - - .ProgressBar__fill { - background-color: $color-default-fill; - } -} - -@each $color-name, $color-value in $bg-map { - .ProgressBar--color--#{$color-name} { - border-color: $color-value !important; - - .ProgressBar__fill { - background-color: $color-value; - } - } -} diff --git a/tgui/packages/tgui/styles/components/RoundGauge.scss b/tgui/packages/tgui/styles/components/RoundGauge.scss deleted file mode 100644 index be95519d64613..0000000000000 --- a/tgui/packages/tgui/styles/components/RoundGauge.scss +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Copyright (c) 2020 bobbahbrown (https://github.com/bobbahbrown) - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../colors.scss'; -@use '../functions.scss' as *; - -$fg-map: colors.$fg-map !default; -$ring-color: #6a96c9 !default; - -.RoundGauge { - font-size: 1rem; - width: 2.6em; - height: 1.3em; - margin: 0 auto; - margin-bottom: 0.2em; -} - -$pi: 3.1416; - -.RoundGauge__ringTrack { - fill: transparent; - stroke: rgba(255, 255, 255, 0.1); - stroke-width: 10; - stroke-dasharray: 50 * $pi; - stroke-dashoffset: 50 * $pi; -} - -.RoundGauge__ringFill { - fill: transparent; - stroke: $ring-color; - stroke-width: 10; - stroke-dasharray: 100 * $pi; - transition: stroke 50ms ease-out; -} - -.RoundGauge__needle, -.RoundGauge__ringFill { - transition: transform 50ms ease-in-out; -} - -.RoundGauge__needleLine, -.RoundGauge__needleMiddle { - fill: colors.$bad; -} - -.RoundGauge__alert { - fill-rule: evenodd; - clip-rule: evenodd; - stroke-linejoin: round; - stroke-miterlimit: 2; - fill: rgba(255, 255, 255, 0.1); -} - -.RoundGauge__alert.max { - fill: colors.$bad; -} - -@each $color-name, $color-value in $fg-map { - .RoundGauge--color--#{$color-name}.RoundGauge__ringFill { - stroke: $color-value; - } -} - -@each $color-name, $color-value in $fg-map { - .RoundGauge__alert--#{$color-name} { - fill: $color-value; - transition: opacity 0.6s cubic-bezier(0.25, 1, 0.5, 1); - animation: RoundGauge__alertAnim - 1s - cubic-bezier(0.34, 1.56, 0.64, 1) - infinite; - } -} - -@keyframes RoundGauge__alertAnim { - 0% { - opacity: 0.1; - } - 50% { - opacity: 1; - } - 100% { - opacity: 0.1; - } -} diff --git a/tgui/packages/tgui/styles/components/Section.scss b/tgui/packages/tgui/styles/components/Section.scss deleted file mode 100644 index d1f81b1f76692..0000000000000 --- a/tgui/packages/tgui/styles/components/Section.scss +++ /dev/null @@ -1,143 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use 'sass:color'; -@use '../base.scss'; -@use '../colors.scss'; -@use '../functions.scss'; - -$title-text-color: base.$color-fg !default; -$background-color: base.$color-bg-section !default; -$separator-color: colors.$primary !default; - -.Section { - position: relative; - margin-bottom: 0.5em; - background-color: functions.fake-alpha($background-color, base.$color-bg); - background-color: $background-color; - box-sizing: border-box; - - &:last-child { - margin-bottom: 0; - } -} - -.Section__title { - position: relative; - padding: 0.5em; - border-bottom: base.em(2px) solid $separator-color; -} - -.Section__titleText { - font-size: base.em(14px); - font-weight: bold; - color: $title-text-color; -} - -.Section__buttons { - position: absolute; - display: inline-block; - right: 0.5em; - margin-top: base.em(-1px); -} - -.Section__rest { - position: relative; -} - -.Section__content { - padding: 0.66em 0.5em; -} - -.Section--fitted > .Section__rest > .Section__content { - padding: 0; -} - -.Section--fill { - display: flex; - flex-direction: column; - height: 100%; -} - -.Section--fill > .Section__rest { - flex-grow: 1; -} - -.Section--fill > .Section__rest > .Section__content { - height: 100%; -} - -.Section--fill.Section--scrollable > .Section__rest > .Section__content { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.Section--fill.Section--iefix { - display: table !important; - width: 100% !important; - height: 100% !important; - border-collapse: collapse; - border-spacing: 0; - - & > .Section__rest { - display: table-row !important; - height: 100% !important; - } -} - -.Section--scrollable { - overflow-x: hidden; - overflow-y: hidden; - - & > .Section__rest > .Section__content { - overflow-y: scroll; - overflow-x: hidden; - } -} - -.Section--scrollableHorizontal { - overflow-x: hidden; - overflow-y: hidden; - - & > .Section__rest > .Section__content { - overflow-y: hidden; - overflow-x: scroll; - } -} - -.Section--scrollable.Section--scrollableHorizontal { - overflow-x: hidden; - overflow-y: hidden; - - & > .Section__rest > .Section__content { - overflow-y: scroll; - overflow-x: scroll; - } -} - -// Nested sections -.Section .Section { - background-color: transparent; - margin-left: -0.5em; - margin-right: -0.5em; - - // Remove extra space above the first nested section - &:first-child { - margin-top: -0.5em; - } -} - -// Level 2 section title -.Section .Section .Section__titleText { - font-size: base.em(13px); -} - -// Level 3 section title -.Section .Section .Section .Section__titleText { - font-size: base.em(12px); -} diff --git a/tgui/packages/tgui/styles/components/Slider.scss b/tgui/packages/tgui/styles/components/Slider.scss deleted file mode 100644 index 83baf71dc0991..0000000000000 --- a/tgui/packages/tgui/styles/components/Slider.scss +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; - -$cursor-color: base.$color-fg !default; -$popup-background-color: #000000 !default; -$popup-text-color: #ffffff !default; - -.Slider { - cursor: e-resize; -} - -.Slider__cursorOffset { - position: absolute; - top: 0; - left: 0; - bottom: 0; - transition: none !important; -} - -.Slider__cursor { - position: absolute; - top: 0; - right: base.em(-1px); - bottom: 0; - width: 0; - border-left: base.em(2px) solid $cursor-color; -} - -.Slider__pointer { - position: absolute; - right: base.em(-5px); - bottom: base.em(-4px); - width: 0; - height: 0; - border-left: base.em(5px) solid transparent; - border-right: base.em(5px) solid transparent; - border-bottom: base.em(5px) solid $cursor-color; -} - -.Slider__popupValue { - position: absolute; - right: 0; - top: -2rem; - font-size: 1rem; - padding: 0.25rem 0.5rem; - color: $popup-text-color; - background-color: $popup-background-color; - transform: translateX(50%); - white-space: nowrap; -} diff --git a/tgui/packages/tgui/styles/components/Stack.scss b/tgui/packages/tgui/styles/components/Stack.scss deleted file mode 100644 index 3529c70018390..0000000000000 --- a/tgui/packages/tgui/styles/components/Stack.scss +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright (c) 2021 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use './Divider.scss'; - -$zebra-background-color: base.$color-bg-section !default; - -.Stack--fill { - height: 100%; -} - -.Stack--horizontal > .Stack__item { - margin-left: 0.5em; - - &:first-child { - margin-left: 0; - } -} - -.Stack--vertical > .Stack__item { - margin-top: 0.5em; - - &:first-child { - margin-top: 0; - } -} - -.Stack--reverse > .Stack__item { - margin-left: 0; - margin-right: 0.5em; - - &:first-child { - margin-right: 0; - } -} - -.Stack--reverse--vertical > .Stack__item { - margin-top: 0; - margin-bottom: 0.5em; - - &:first-child { - margin-bottom: 0; - } -} - -.Stack--zebra > .Stack__item:nth-child(even) { - background-color: $zebra-background-color; -} - -.Stack--horizontal > .Stack__divider:not(.Stack__divider--hidden) { - border-left: Divider.$thickness solid Divider.$color; -} - -.Stack--vertical > .Stack__divider:not(.Stack__divider--hidden) { - border-top: Divider.$thickness solid Divider.$color; -} diff --git a/tgui/packages/tgui/styles/components/Table.scss b/tgui/packages/tgui/styles/components/Table.scss deleted file mode 100644 index ecc47e5ba9a7a..0000000000000 --- a/tgui/packages/tgui/styles/components/Table.scss +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -.Table { - display: table; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - margin: 0; -} - -.Table--collapsing { - width: auto; -} - -.Table__row { - display: table-row; -} - -.Table__cell { - display: table-cell; - padding: 0 0.25em; - - &:first-child { - padding-left: 0; - } - - &:last-child { - padding-right: 0; - } -} - -.Table__row--header .Table__cell, -.Table__cell--header { - font-weight: bold; - padding-bottom: 0.5em; -} - -.Table__cell--collapsing { - width: 1%; - white-space: nowrap; -} diff --git a/tgui/packages/tgui/styles/components/Tabs.scss b/tgui/packages/tgui/styles/components/Tabs.scss deleted file mode 100644 index 2ab0912502711..0000000000000 --- a/tgui/packages/tgui/styles/components/Tabs.scss +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use 'sass:color'; -@use 'sass:math'; -@use '../base.scss'; -@use '../colors.scss'; - -$color-default: color.scale( - colors.fg(colors.$primary), - $lightness: 75% -) !default; -$text-color: rgba(255, 255, 255, 0.5) !default; -$text-color-selected: color.scale($color-default, $lightness: 25%) !default; -$tab-color: transparent !default; -$tab-color-hovered: rgba(255, 255, 255, 0.075) !default; -$tab-color-selected: rgba(255, 255, 255, 0.125) !default; -$border-radius: base.$border-radius !default; -$fg-map: colors.$fg-map !default; - -.Tabs { - display: flex; - align-items: stretch; - overflow: hidden; - background-color: base.$color-bg-section; -} - -.Tabs--fill { - height: 100%; -} - -// Interoperability with sections -.Section .Tabs { - background-color: transparent; -} - -.Section:not(.Section--fitted) .Tabs { - margin: 0 -0.5em 0.5em; - - &:first-child { - margin-top: -0.5em; - } -} - -.Tabs--vertical { - flex-direction: column; - padding: 0.25em 0 0.25em 0.25em; -} - -.Tabs--horizontal { - margin-bottom: 0.5em; - padding: 0.25em 0.25em 0 0.25em; - - &:last-child { - margin-bottom: 0; - } -} - -.Tabs__Tab { - flex-grow: 0; -} - -.Tabs--fluid .Tabs__Tab { - flex-grow: 1; -} - -.Tab { - display: flex; - align-items: center; - justify-content: space-between; - background-color: $tab-color; - color: $text-color; - min-height: 2.25em; - min-width: 4em; -} - -.Tab:not(.Tab--selected):hover { - background-color: $tab-color-hovered; -} - -.Tab--selected { - background-color: $tab-color-selected; - color: $text-color-selected; -} - -.Tab__text { - flex-grow: 1; - margin: 0 0.5em; -} - -.Tab__left { - min-width: 1.5em; - text-align: center; - margin-left: 0.25em; -} - -.Tab__right { - min-width: 1.5em; - text-align: center; - margin-right: 0.25em; -} - -.Tabs--horizontal { - .Tab { - border-top: math.div(1em, 6) solid transparent; - border-bottom: math.div(1em, 6) solid transparent; - border-top-left-radius: 0.25em; - border-top-right-radius: 0.25em; - } - - .Tab--selected { - border-bottom: math.div(1em, 6) solid $color-default; - } -} - -.Tabs--vertical { - .Tab { - min-height: 2em; - border-left: math.div(1em, 6) solid transparent; - border-right: math.div(1em, 6) solid transparent; - border-top-left-radius: 0.25em; - border-bottom-left-radius: 0.25em; - } - - .Tab--selected { - border-right: math.div(1em, 6) solid $color-default; - } -} - -@each $color-name, $color-value in $fg-map { - .Tab--selected.Tab--color--#{$color-name} { - color: color.scale($color-value, $lightness: 25%); - } - - .Tabs--horizontal .Tab--selected.Tab--color--#{$color-name} { - border-bottom-color: $color-value; - } - - .Tabs--vertical .Tab--selected.Tab--color--#{$color-name} { - border-right-color: $color-value; - } -} diff --git a/tgui/packages/tgui/styles/components/TextArea.scss b/tgui/packages/tgui/styles/components/TextArea.scss deleted file mode 100644 index fa45857ed9b2f..0000000000000 --- a/tgui/packages/tgui/styles/components/TextArea.scss +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../functions.scss' as *; -@use './Input.scss'; - -$text-color: Input.$text-color !default; -$background-color: Input.$background-color !default; -$border-color: Input.$border-color !default; -$border-radius: Input.$border-radius !default; - -.TextArea { - position: relative; - display: inline-block; - border: base.em(1px) solid $border-color; - border: base.em(1px) solid rgba($border-color, 0.75); - border-radius: $border-radius; - background-color: $background-color; - margin-right: base.em(2px); - line-height: base.em(17px); - box-sizing: border-box; - width: 100%; -} - -.TextArea--fluid { - display: block; - width: auto; - height: auto; -} - -.TextArea--noborder { - border: 0px; -} - -.TextArea__textarea.TextArea__textarea--scrollable { - overflow: auto; - overflow-x: hidden; - overflow-y: scroll; -} - -.TextArea__textarea { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - border: 0; - outline: 0; - width: 100%; - height: 100%; - font-size: 1em; - line-height: base.em(17px); - min-height: base.em(17px); - margin: 0; - padding: 0 0.5em; - font-family: inherit; - background-color: transparent; - color: inherit; - box-sizing: border-box; - // Make sure the div and the textarea wrap words in the same way - word-wrap: break-word; - overflow: hidden; - - &:-ms-input-placeholder { - font-style: italic; - color: #777; - color: rgba(255, 255, 255, 0.45); - } -} - -.TextArea__textarea_custom { - overflow: visible; - white-space: pre-wrap; -} - -.TextArea__nowrap { - white-space: nowrap; - overflow-wrap: normal; - overflow-x: scroll; -} diff --git a/tgui/packages/tgui/styles/components/Tooltip.scss b/tgui/packages/tgui/styles/components/Tooltip.scss deleted file mode 100644 index 497813a206d0c..0000000000000 --- a/tgui/packages/tgui/styles/components/Tooltip.scss +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -@use '../base.scss'; -@use '../functions.scss' as *; - -$color: #ffffff !default; -$background-color: #000000 !default; -$border-radius: base.$border-radius !default; - -.Tooltip { - z-index: 2; - padding: 0.5em 0.75em; - pointer-events: none; - text-align: left; - transition: opacity 150ms ease-out; - background-color: $background-color; - color: $color; - box-shadow: 0.1em 0.1em 1.25em -0.1em rgba(0, 0, 0, 0.5); - border-radius: $border-radius; - max-width: base.em(250px); -} diff --git a/tgui/packages/tgui/styles/functions.scss b/tgui/packages/tgui/styles/functions.scss index 1c8d65e3a1756..403d43c7b4bcb 100644 --- a/tgui/packages/tgui/styles/functions.scss +++ b/tgui/packages/tgui/styles/functions.scss @@ -29,11 +29,11 @@ // Increases perceptual color lightness. @function lighten($color, $percent) { $scaled: hsl( - color.hue($color), - color.saturation($color), - color.lightness($color) * (1 + num($percent)) + color.channel($color, 'hue', $space: hsl), + color.channel($color, 'saturation', $space: hsl), + color.channel($color, 'lightness', $space: hsl) * (1 + num($percent)) ); - $mixed: color.mix(#ffffff, $color, 100% * num($percent)); + $mixed: color.mix(hsl(0, 0%, 100%), $color, 100% * num($percent)); @return color.mix($scaled, $mixed, 75%); } @@ -41,9 +41,9 @@ // 1 is pure white, 0 is pure black. @function luminance($color) { $colors: ( - 'red': color.red($color), - 'green': color.green($color), - 'blue': color.blue($color), + 'red': color.channel($color, 'red', $space: rgb), + 'green': color.channel($color, 'green', $space: rgb), + 'blue': color.channel($color, 'blue', $space: rgb), ); @each $name, $value in $colors { diff --git a/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss b/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss index 8aa8aae48bb1d..7f9c1f7a46155 100644 --- a/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss +++ b/tgui/packages/tgui/styles/interfaces/DetectiveBoard.scss @@ -26,8 +26,8 @@ } .BoardTab__Selected { - background-color: #edcf64; - border-bottom: 1px solid #edcf64; + background-color: hsl(45, 82%, 66%); + border-bottom: 1px solid hsl(45, 82%, 66%); transition: all 0.2s; } @@ -37,21 +37,21 @@ overflow: hidden; } .Evidence__Pin { - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - background-color: #db2828; + box-shadow: 0 0 10px hsla(0, 0%, 0%, 0.2); + background-color: hsl(0, 72%, 50%); border-radius: 20px; width: 15px; height: 15px; } .Evidence__Box { - box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); + box-shadow: 0 0 10px hsla(0, 0%, 0%, 0.4); padding: 5px; color: black; min-width: 200px; max-width: 300px; - background-color: white; - border: 2px solid grey; + background-color: hsl(0, 0%, 100%); + border: 2px solid hsl(0, 0%, 50%); -ms-user-select: none; user-select: none; text-wrap: wrap; @@ -59,7 +59,7 @@ } .Evidence__Box__TextBox { - border-top: 1px solid #eaeaea; + border-top: 1px solid hsl(0, 0%, 92%); text-wrap: wrap; padding: 5px 0; margin-top: 5px; @@ -74,7 +74,7 @@ .Board__Content { position: relative; - background-color: #edcf64; + background-color: hsl(45, 82%, 66%); padding: 5px; overflow: hidden; height: 95%; @@ -82,7 +82,7 @@ .Evidence__Icon { margin-top: 5px; - border: 5px solid #e0e0e0; + border: 5px solid hsl(0, 0%, 88%); width: 100%; } diff --git a/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss b/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss index b4265b1fba5d0..4b218b397ef5d 100644 --- a/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss +++ b/tgui/packages/tgui/styles/interfaces/ExperimentConfigure.scss @@ -1,12 +1,12 @@ .ExperimentTechwebServer__Web, .ExperimentConfigure__ExperimentPanel { - background: #000000; - border: 1px solid #40628a; + background: hsl(0, 0%, 0%); + border: 1px solid hsl(210, 33%, 41%); margin: 3px 0; } .ExperimentTechwebServer__WebHeader { - background: #40628a; + background: hsl(210, 33%, 41%); padding: 2px; } @@ -81,5 +81,5 @@ height: 100%; right: 0; top: 0; - color: rgba(255, 255, 255, 0.5); + color: hsla(0, 0%, 100%, 0.5); } diff --git a/tgui/packages/tgui/styles/interfaces/Fabricator.scss b/tgui/packages/tgui/styles/interfaces/Fabricator.scss index a7488f50a2c98..5016094c64667 100644 --- a/tgui/packages/tgui/styles/interfaces/Fabricator.scss +++ b/tgui/packages/tgui/styles/interfaces/Fabricator.scss @@ -3,8 +3,8 @@ @use '../base.scss'; @use '../colors.scss'; @use '../functions.scss' as *; -@use '../components/Button.scss' as button; -@use '../components/Tabs.scss' as tabs; +@use 'pkg:tgui-styles/components/Button' as button; +@use 'pkg:tgui-styles/components/Tabs' as tabs; .Fabricator__Recipe { padding: 0.25em 0; @@ -66,6 +66,7 @@ } .MaterialDock--active .MaterialDock__Dock { + animation: materialdock-open 0.125s ease-out; @keyframes materialdock-open { 0% { opacity: 0; @@ -75,8 +76,6 @@ opacity: 1; } } - - animation: materialdock-open 0.125s ease-out; } .MaterialDock__Button { diff --git a/tgui/packages/tgui/styles/interfaces/Fishing.scss b/tgui/packages/tgui/styles/interfaces/Fishing.scss index f9967b2cb82e6..d65ddf27393ec 100644 --- a/tgui/packages/tgui/styles/interfaces/Fishing.scss +++ b/tgui/packages/tgui/styles/interfaces/Fishing.scss @@ -45,8 +45,8 @@ width: 100%; top: 0%; left: 0; - background: #4d5f2b; - border: 0px #4d5f2b; + background: hsl(80.8, 37.7%, 27.1%); + border: 0px hsl(80.8, 37.7%, 27.1%); border-radius: 10px; } @@ -71,7 +71,7 @@ .fishing .completion .bar { position: absolute; width: 100%; - background: #7cb413; + background: hsl(80.9, 80.9%, 39%); bottom: 0; border-radius: 5px; } diff --git a/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss b/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss index 7cfecb250acc4..c3fabf9f0212b 100644 --- a/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss +++ b/tgui/packages/tgui/styles/interfaces/IntegratedCircuit.scss @@ -62,7 +62,7 @@ $fg-map: colors.$fg-map !default; } } -$border-color: #88bfff !default; +$border-color: hsl(210, 100%, 73%) !default; $border-radius: base.$border-radius !default; .IntegratedCircuit__BlueBorder { diff --git a/tgui/packages/tgui/styles/components/SearchItem.scss b/tgui/packages/tgui/styles/interfaces/LootPanel.scss similarity index 93% rename from tgui/packages/tgui/styles/components/SearchItem.scss rename to tgui/packages/tgui/styles/interfaces/LootPanel.scss index 5dadcdf8d6aea..bd6af021e2d27 100644 --- a/tgui/packages/tgui/styles/components/SearchItem.scss +++ b/tgui/packages/tgui/styles/interfaces/LootPanel.scss @@ -9,7 +9,7 @@ .SearchItem--box { background: black; - border: thin solid #212121; + border: thin solid hsl(0, 0%, 12.9%); display: flex; align-items: center; justify-content: center; diff --git a/tgui/packages/tgui/styles/interfaces/Mecha.scss b/tgui/packages/tgui/styles/interfaces/Mecha.scss index 8795c8cb69da7..30e33d43b4a64 100644 --- a/tgui/packages/tgui/styles/interfaces/Mecha.scss +++ b/tgui/packages/tgui/styles/interfaces/Mecha.scss @@ -2,21 +2,21 @@ @use '../colors.scss'; @use '../functions.scss' as *; -$color-danger: #c92020 !default; +$color-danger: hsl(0, 74%, 45%) !default; .Mecha__displayBox { - background-color: #002003; - border: 0.167em inset #e8e4c9; - color: #03e017; + background-color: hsl(150, 100%, 1%); + border: 0.167em inset hsl(50, 33%, 91%); + color: hsl(132, 100%, 45%); font-size: 2em; font-family: monospace; padding: 0.25em; } .Mecha__displayBoxRed { - background-color: #002003; - border: 0.167em inset #e8e4c9; - color: #f54b4b; + background-color: hsl(150, 100%, 1%); + border: 0.167em inset hsl(50, 33%, 91%); + color: hsl(0, 89%, 64%); font-size: 2em; font-family: monospace; padding: 0.25em; diff --git a/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss b/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss index cc55e53678c6f..5a29d77f4647e 100644 --- a/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss +++ b/tgui/packages/tgui/styles/interfaces/NtosMessenger.scss @@ -19,10 +19,10 @@ $msgpadding: 0.7rem; border-radius: 0; - background-color: lighten($msgcolor-incoming, 10%); + background-color: color.adjust($msgcolor-incoming, $lightness: 10%); &_outgoing { - border-color: lighten($msgcolor-outgoing, 20%); - background-color: lighten($msgcolor-outgoing, 30%); + border-color: color.adjust($msgcolor-outgoing, $lightness: 20%); + background-color: color.adjust($msgcolor-outgoing, $lightness: 30%); } } diff --git a/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss b/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss index 615a3f696afa2..d27311e3f5e60 100644 --- a/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss +++ b/tgui/packages/tgui/styles/interfaces/NuclearBomb.scss @@ -5,12 +5,12 @@ $color-danger: colors.bg(colors.$red) !default; $color-caution: colors.bg(colors.$yellow) !default; -$background-beige: #e8e4c9; +$background-beige: hsl(50, 33%, 84%); .NuclearBomb__displayBox { - background-color: #002003; + background-color: hsl(150, 100%, 1%); border: 0.167em inset $background-beige; - color: #03e017; + color: hsl(132, 100%, 45%); font-size: 2em; font-family: monospace; padding: 0.25em; @@ -33,9 +33,9 @@ $background-beige: #e8e4c9; } .NuclearBomb__Button--1 { - background-color: #d3cfb7 !important; - border-color: #d3cfb7 !important; - color: #a9a692 !important; + background-color: hsl(50, 33%, 78%) !important; + border-color: hsl(50, 33%, 78%) !important; + color: hsl(50, 10%, 70%) !important; } .NuclearBomb__Button--E { diff --git a/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss b/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss index ec06d9fd1ba59..0acbafa742e19 100644 --- a/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss +++ b/tgui/packages/tgui/styles/interfaces/PersonalCrafting.scss @@ -36,7 +36,7 @@ .PersonalCraftingGridItem__content { position: relative; - color: #888; + color: hsl(0, 0%, 53.3%); padding: 0.5em 0.5em 2.5em 0.5em; min-height: 100%; pointer-events: none; @@ -57,7 +57,7 @@ right: 0; left: 0; padding: 0.5em; - color: #fff; + color: hsl(0, 0%, 100%); background-color: rgba(255, 0, 0, 0.1); text-align: center; visibility: hidden; @@ -76,21 +76,21 @@ overflow: hidden; font-weight: bold; margin-bottom: 0.5em; - color: #aaa; + color: hsl(0, 0%, 66.7%); } .PersonalCraftingGridItem--craftable .PersonalCraftingGridItem__name { - color: #fff; + color: hsl(0, 0%, 100%); } .PersonalCraftingGridItem__prereq { - color: #777; + color: hsl(0, 0%, 46.7%); overflow: hidden; white-space: nowrap; } .PersonalCraftingGridItem--craftable .PersonalCraftingGridItem__prereq { - color: #bbb; + color: hsl(0, 0%, 73.3%); } .PersonalCraftingGridItem__extra { diff --git a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss index 6a1d241b83fec..cbaf1c9e6765d 100644 --- a/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss +++ b/tgui/packages/tgui/styles/interfaces/PreferencesMenu.scss @@ -1,6 +1,5 @@ @use 'sass:color'; @use 'sass:map'; -@use '../components/Button.scss'; @use '../colors.scss'; @use '../base.scss'; @@ -10,7 +9,7 @@ $department_map: ( 'Cargo': colors.$brown, 'Command': colors.$yellow, 'Security': colors.$red, - 'Engineering': #f1a839, + 'Engineering': hsl(36, 89%, 60%), 'Medical': colors.$teal, 'Science': colors.fg(colors.$purple), 'Service': colors.$green, @@ -110,7 +109,7 @@ $department_map: ( .antagonist-days-left { text-align: center; - text-shadow: 1px 1px 1px #222; + text-shadow: 1px 1px 1px hsl(0, 0%, 13.3%); width: 100%; @@ -140,9 +139,9 @@ $department_map: ( } background: colors.fg($color-value); - border-bottom: 2px solid rgba(0, 0, 0, 0.3); - border-left: 2px solid rgba(0, 0, 0, 0.3); - border-right: 2px solid rgba(0, 0, 0, 0.3); + border-bottom: 2px solid hsla(0, 0%, 0%, 0.3); + border-left: 2px solid hsla(0, 0%, 0%, 0.3); + border-right: 2px solid hsla(0, 0%, 0%, 0.3); color: black; > * { @@ -151,20 +150,20 @@ $department_map: ( } &:first-child { - border-top: 2px solid rgba(0, 0, 0, 0.3); + border-top: 2px solid hsla(0, 0%, 0%, 0.3); } .options { - background: rgba(0, 0, 0, 0.2); + background: hsla(0, 0%, 0%, 0.2); height: 100%; } } &--Captain { - border: 3px solid rgba(200, 200, 0, 1); + border: 3px solid hsla(60, 100%, 39.2%, 1); &:first-child { - border-top: 3px solid rgba(200, 200, 0, 1); + border-top: 3px solid hsla(60, 100%, 39.2%, 1); } .job-name { @@ -174,12 +173,12 @@ $department_map: ( } &__priority { - border: 1px solid rgba(0, 0, 0, 0.3); + border: 1px solid hsla(0, 0%, 0%, 0.3); &--off::after { content: ''; - background: rgba(0, 0, 0, 0.2); + background: hsla(0, 0%, 0%, 0.2); display: block; height: 80%; left: 50%; @@ -209,7 +208,7 @@ $department_map: ( &__quirk { background-color: colors.$white; border-bottom: 1px solid black; - color: #111; + color: hsl(0, 0%, 6.7%); transition: background-color 0.1s ease-in; $quality_map: ( diff --git a/tgui/packages/tgui/styles/interfaces/Safe.scss b/tgui/packages/tgui/styles/interfaces/Safe.scss index 2f9f3d9d3613b..706d1b3f965ec 100644 --- a/tgui/packages/tgui/styles/interfaces/Safe.scss +++ b/tgui/packages/tgui/styles/interfaces/Safe.scss @@ -4,18 +4,18 @@ height: 96%; left: 2.5%; top: 2%; - border: 5px outset #3e4f6a; + border: 5px outset hsl(217, 27%, 34%); padding: 5px; text-align: center; } .Safe__engraving-arrow { - color: #35435a; + color: hsl(217, 27%, 27%); } .Safe__engraving-hinge { content: ' '; - background-color: #191f2a; + background-color: hsl(217, 27%, 15%); width: 25px; height: 40px; position: absolute; @@ -39,17 +39,17 @@ } .Safe__dialer-number { - color: #bbbbbb; + color: hsl(0, 0%, 73.3%); display: inline; - background-color: #191f2a; + background-color: hsl(217, 27%, 15%); font-size: 1.5rem; font-weight: bold; padding: 0 0.5rem; } .Safe__contents { - border: 10px solid #191f2a; - background-color: #0f131a; + border: 10px solid hsl(217, 27%, 15%); + background-color: hsl(217, 27%, 10%); height: calc(85% + 7.5px); text-align: left; padding: 5px; @@ -64,8 +64,12 @@ font-family: 'Comic Sans MS', cursive, sans-serif; font-style: italic; color: black; - box-shadow: 5px 5px #111111; - background-image: linear-gradient(to bottom, #b2ae74 0%, #8e8b5d 100%); + box-shadow: 5px 5px hsl(0, 0%, 6.7%); + background-image: linear-gradient( + to bottom, + hsl(50, 20%, 58.8%) 0%, + hsl(50, 6%, 45.5%) 100% + ); transform: rotate(-1deg); &:before { @@ -73,8 +77,12 @@ display: block; width: 24px; height: 40px; - background-image: linear-gradient(to bottom, transparent 0%, #ffffff 100%); - box-shadow: 1px 1px #111111; + background-image: linear-gradient( + to bottom, + transparent 0%, + hsl(0, 0%, 100%) 100% + ); + box-shadow: 1px 1px hsl(0, 0%, 6.7%); opacity: 0.2; position: absolute; top: -30px; diff --git a/tgui/packages/tgui/styles/interfaces/Techweb.scss b/tgui/packages/tgui/styles/interfaces/Techweb.scss index 684267185d104..f73aaa6ca7a5d 100644 --- a/tgui/packages/tgui/styles/interfaces/Techweb.scss +++ b/tgui/packages/tgui/styles/interfaces/Techweb.scss @@ -23,7 +23,7 @@ .Techweb__HeaderContent { background-color: black; padding: 6px; - border: 1px solid #40628a; + border: 1px solid hsl(210, 33%, 41%); } .Techweb__HeaderContent > * > :not(:last-child) { @@ -33,13 +33,13 @@ .Techweb__HeaderSectionTabs { margin-top: 8px; background-color: black; - border: 1px solid #40628a; + border: 1px solid hsl(210, 33%, 41%); padding-left: 5px; padding-right: 5px; } .Techweb__HeaderTabTitle { - border-right: 1px solid #40628a; + border-right: 1px solid hsl(210, 33%, 41%); padding-right: 0.5em; margin-right: 0.5em; font-weight: bold; diff --git a/tgui/packages/tgui/styles/interfaces/Uplink.scss b/tgui/packages/tgui/styles/interfaces/Uplink.scss index 58cf956a9027a..bb3d2834bb994 100644 --- a/tgui/packages/tgui/styles/interfaces/Uplink.scss +++ b/tgui/packages/tgui/styles/interfaces/Uplink.scss @@ -1,9 +1,39 @@ -$badGradient: linear-gradient(to right, #9c1e1e, #6c2828, #9c1e1e); -$normalGradient: linear-gradient(to right, #5d5041, #40372d, #5d5041); -$goodGradient: linear-gradient(to right, #515d6c, #252a30, #515d6c); -$veryGoodGradient: linear-gradient(to right, #977949, #534328, #977949); -$superGoodGradient: linear-gradient(to right, #9d9948, #777437, #9d9948); -$bestGradient: linear-gradient(to right, #9d486b, #57283c, #9d486b); +$badGradient: linear-gradient( + to right, + hsl(0, 67%, 37%), + hsl(0, 43%, 28%), + hsl(0, 67%, 37%) +); +$normalGradient: linear-gradient( + to right, + hsl(30, 14%, 34%), + hsl(30, 20%, 19%), + hsl(30, 14%, 34%) +); +$goodGradient: linear-gradient( + to right, + hsl(210, 11%, 37%), + hsl(210, 14%, 17%), + hsl(210, 11%, 37%) +); +$veryGoodGradient: linear-gradient( + to right, + hsl(36, 38%, 44%), + hsl(36, 33%, 19%), + hsl(36, 38%, 44%) +); +$superGoodGradient: linear-gradient( + to right, + hsl(60, 39%, 45%), + hsl(60, 35%, 34%), + hsl(60, 39%, 45%) +); +$bestGradient: linear-gradient( + to right, + hsl(330, 34%, 45%), + hsl(330, 43%, 26%), + hsl(330, 34%, 45%) +); $_rep_map: ( 'bad': $badGradient, diff --git a/tgui/packages/tgui/styles/layouts/Layout.scss b/tgui/packages/tgui/styles/layouts/Layout.scss index eaadcd9a6978b..ecf750ecc0740 100644 --- a/tgui/packages/tgui/styles/layouts/Layout.scss +++ b/tgui/packages/tgui/styles/layouts/Layout.scss @@ -4,7 +4,7 @@ */ @use 'sass:color'; -@use '../base.scss'; +@use '../base'; $scrollbar-color-multiplier: 1 !default; diff --git a/tgui/packages/tgui/styles/layouts/NtosWindow.scss b/tgui/packages/tgui/styles/layouts/NtosWindow.scss index bed4abab53cec..7c75cdfafe9c3 100644 --- a/tgui/packages/tgui/styles/layouts/NtosWindow.scss +++ b/tgui/packages/tgui/styles/layouts/NtosWindow.scss @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT */ -@use '../base.scss'; +@use '../base'; .NtosWindow__header { position: absolute; @@ -12,7 +12,7 @@ right: 0; height: 2em; line-height: 1.928em; - background-color: rgba(0, 0, 0, 0.5); + background-color: hsla(0, 0, 0, 0.5); font-family: Consolas, monospace; font-size: base.em(14px); user-select: none; diff --git a/tgui/packages/tgui/styles/layouts/TitleBar.scss b/tgui/packages/tgui/styles/layouts/TitleBar.scss index 1a26dd9e29ebf..517f2b8ad811e 100644 --- a/tgui/packages/tgui/styles/layouts/TitleBar.scss +++ b/tgui/packages/tgui/styles/layouts/TitleBar.scss @@ -4,13 +4,13 @@ */ @use 'sass:color'; -@use '../base.scss'; -@use '../colors.scss'; +@use '../base'; +@use '../colors'; -$text-color: rgba(255, 255, 255, 0.75) !default; -$background-color: #363636 !default; -$shadow-color-core: #161616 !default; -$shadow-color: rgba(0, 0, 0, 0.1) !default; +$text-color: hsla(0, 0%, 100%, 0.75) !default; +$background-color: hsl(0, 0%, 21%) !default; +$shadow-color-core: hsl(0, 0%, 8.6%) !default; +$shadow-color: hsla(0, 0%, 0%, 0.1) !default; .TitleBar { background-color: $background-color; @@ -30,7 +30,7 @@ $shadow-color: rgba(0, 0, 0, 0.1) !default; &:hover { color: rgba(255, 255, 255, 1); - background-color: #cc0000; + background-color: hsl(0, 100%, 40%); transition: color 0ms, background-color 0ms; @@ -105,7 +105,7 @@ $shadow-color: rgba(0, 0, 0, 0.1) !default; min-width: base.rem(20px); padding: 2px 4px; padding: base.rem(2px) base.rem(4px); - background-color: rgba(colors.$good, 0.75); - color: #fff; + background-color: darken(colors.$good, 10%); + color: hsl(120, 100%, 100%); text-align: center; } diff --git a/tgui/packages/tgui/styles/layouts/Window.scss b/tgui/packages/tgui/styles/layouts/Window.scss index 232dd8396bbf2..1bb1e2acd6975 100644 --- a/tgui/packages/tgui/styles/layouts/Window.scss +++ b/tgui/packages/tgui/styles/layouts/Window.scss @@ -4,8 +4,8 @@ */ @use 'sass:color'; -@use '../base.scss'; -@use '../functions.scss' as *; +@use '../base'; +@use '../functions' as *; .Window { position: fixed; diff --git a/tgui/packages/tgui/styles/main.scss b/tgui/packages/tgui/styles/main.scss index 53cd615871141..8372dd3171b7f 100644 --- a/tgui/packages/tgui/styles/main.scss +++ b/tgui/packages/tgui/styles/main.scss @@ -4,7 +4,8 @@ */ @use 'sass:meta'; -@use './base.scss'; +@use 'base'; +@use 'pkg:tgui-styles'; // Core styles @include meta.load-css('./reset.scss'); @@ -19,34 +20,6 @@ @include meta.load-css('./atomic/outline.scss'); @include meta.load-css('./atomic/text.scss'); -// Components -@include meta.load-css('./components/BlockQuote.scss'); -@include meta.load-css('./components/Button.scss'); -@include meta.load-css('./components/ColorBox.scss'); -@include meta.load-css('./components/Dialog.scss'); -@include meta.load-css('./components/Dimmer.scss'); -@include meta.load-css('./components/Divider.scss'); -@include meta.load-css('./components/Dropdown.scss'); -@include meta.load-css('./components/Flex.scss'); -@include meta.load-css('./components/Icon.scss'); -@include meta.load-css('./components/Input.scss'); -@include meta.load-css('./components/Knob.scss'); -@include meta.load-css('./components/LabeledList.scss'); -@include meta.load-css('./components/MenuBar.scss'); -@include meta.load-css('./components/Modal.scss'); -@include meta.load-css('./components/NoticeBox.scss'); -@include meta.load-css('./components/NumberInput.scss'); -@include meta.load-css('./components/ProgressBar.scss'); -@include meta.load-css('./components/RoundGauge.scss'); -@include meta.load-css('./components/SearchItem.scss'); -@include meta.load-css('./components/Section.scss'); -@include meta.load-css('./components/Slider.scss'); -@include meta.load-css('./components/Stack.scss'); -@include meta.load-css('./components/Table.scss'); -@include meta.load-css('./components/Tabs.scss'); -@include meta.load-css('./components/TextArea.scss'); -@include meta.load-css('./components/Tooltip.scss'); - // Interfaces @include meta.load-css('./interfaces/AlertModal.scss'); @include meta.load-css('./interfaces/Changelog.scss'); @@ -62,6 +35,7 @@ @include meta.load-css('./interfaces/LibraryAdmin.scss'); @include meta.load-css('./interfaces/LibraryComputer.scss'); @include meta.load-css('./interfaces/ListInput.scss'); +@include meta.load-css('./interfaces/LootPanel.scss'); @include meta.load-css('./interfaces/Mecha.scss'); @include meta.load-css('./interfaces/NtosMessenger.scss'); @include meta.load-css('./interfaces/NtosNotepad.scss'); diff --git a/tgui/packages/tgui/styles/reset.scss b/tgui/packages/tgui/styles/reset.scss index e7fff7f936dae..69d03ce4801af 100644 --- a/tgui/packages/tgui/styles/reset.scss +++ b/tgui/packages/tgui/styles/reset.scss @@ -3,7 +3,7 @@ * SPDX-License-Identifier: MIT */ -@use './base.scss'; +@use 'base'; html, body { diff --git a/tgui/packages/tgui/styles/themes/abductor.scss b/tgui/packages/tgui/styles/themes/abductor.scss index 39dac5773c063..c80bacf0fa0ac 100644 --- a/tgui/packages/tgui/styles/themes/abductor.scss +++ b/tgui/packages/tgui/styles/themes/abductor.scss @@ -6,13 +6,13 @@ @use 'sass:color'; @use 'sass:meta'; -@use '../colors.scss' with ( - $primary: #ad2350, +@use '../colors' with ( + $primary: hsl(340, 67%, 41%), $fg-map-keys: (), $bg-map-keys: () ); -@use '../base.scss' with ( - $color-bg: #2a314a, +@use '../base' with ( + $color-bg: hsl(227, 29%, 23%), $color-bg-grad-spread: 6%, $border-radius: 2px ); @@ -23,35 +23,35 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': colors.$primary, - 'color-disabled': #363636, - 'color-selected': #465899, - 'color-caution': #be6209, - 'color-danger': #9a9d00 + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(227, 37%, 45%), + 'color-caution': hsl(30, 88%, 39%), + 'color-danger': hsl(62, 100%, 30%) ) ); @include meta.load-css( - '../components/Input.scss', - $with: ('border-color': #404b6e) + 'pkg:tgui-styles/components/Input', + $with: ('border-color': hsl(227, 29%, 27%)) ); @include meta.load-css( - '../components/NoticeBox.scss', - $with: ('background-color': #a82d55) + 'pkg:tgui-styles/components/NoticeBox', + $with: ('background-color': hsl(340, 67%, 41%)) ); @include meta.load-css( - '../components/NumberInput.scss', - $with: ('border-color': #404b6e) + 'pkg:tgui-styles/components/NumberInput', + $with: ('border-color': hsl(227, 29%, 27%)) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('background-color': rgba(0, 0, 0, 0.5)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('background-color': hsla(0, 0%, 0%, 0.5)) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #a82d55) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(340, 67%, 41%)) ); // Layouts @@ -59,7 +59,7 @@ @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #9e1b46) + $with: ('background-color': hsl(340, 71%, 36%)) ); .Layout__content { diff --git a/tgui/packages/tgui/styles/themes/admin.scss b/tgui/packages/tgui/styles/themes/admin.scss index c36d5305beffb..73940e47f9cd6 100644 --- a/tgui/packages/tgui/styles/themes/admin.scss +++ b/tgui/packages/tgui/styles/themes/admin.scss @@ -7,12 +7,13 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #1596b6, + // convert to hsl + $primary: hsl(191.93, 79.31%, 39.8%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #29333a, + $color-bg: hsl(204.7, 17.2%, 19.4%), $color-bg-grad-spread: 6%, $border-radius: 2px ); diff --git a/tgui/packages/tgui/styles/themes/cardtable.scss b/tgui/packages/tgui/styles/themes/cardtable.scss index e5047e2e2f0c7..ba1f2bcf1a991 100644 --- a/tgui/packages/tgui/styles/themes/cardtable.scss +++ b/tgui/packages/tgui/styles/themes/cardtable.scss @@ -6,13 +6,13 @@ @use 'sass:color'; @use 'sass:meta'; -@use '../colors.scss' with ( - $primary: #000000, +@use '../colors' with ( + $primary: hsl(0, 0%, 0%), $fg-map-keys: (), $bg-map-keys: () ); -@use '../base.scss' with ( - $color-bg: #117039, +@use '../base' with ( + $color-bg: hsl(145.26, 73.64%, 25.29%), $color-bg-grad-spread: 0%, $border-radius: 0 ); @@ -24,31 +24,31 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #117039, - 'color-disabled': #363636, - 'color-selected': #9d0808, - 'color-caution': #be6209, - 'color-danger': #9a9d00 + 'color-default': hsl(145.26, 73.64%, 25.29%), + 'color-disabled': hsl(0, 0%, 21.18%), + 'color-selected': hsl(0, 90.3%, 32.35%), + 'color-caution': hsl(29.5, 90.95%, 39.02%), + 'color-danger': hsl(61.15, 100%, 30.78%) ) ); @include meta.load-css( - '../components/NumberInput.scss', + 'pkg:tgui-styles/components/NumberInput', $with: ('border-color': #fff) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ('background-color': rgba(0, 0, 0, 0.5)) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #381608) + $with: ('background-color': hsl(17.5, 75%, 12.5%)) ); .Button { diff --git a/tgui/packages/tgui/styles/themes/hackerman.scss b/tgui/packages/tgui/styles/themes/hackerman.scss index 51befcf1b3668..25c6956fc3d87 100644 --- a/tgui/packages/tgui/styles/themes/hackerman.scss +++ b/tgui/packages/tgui/styles/themes/hackerman.scss @@ -7,12 +7,12 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #00ff00, + $primary: hsl(120, 100%, 50%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #121b12, + $color-bg: hsl(120, 20%, 8.8%), $color-bg-grad-spread: 0% ); @@ -22,34 +22,34 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': colors.$primary, - 'color-disabled': #4a6a4a, - 'color-selected': #00ff00 + 'color-disabled': hsl(120, 17.78%, 35.29%), + 'color-selected': hsl(120, 100%, 50%) ) ); @include meta.load-css( - '../components/Tabs.scss', + 'pkg:tgui-styles/components/Tabs', $with: ( 'color-default': colors.$primary, - 'tab-color-selected': #00ff003f, - 'text-color': #e7e7e7 + 'tab-color-selected': hsla(120, 100%, 50%, 0.25), + 'text-color': hsl(0, 0%, 90.59%) ) ); @include meta.load-css( - '../components/Input.scss', + 'pkg:tgui-styles/components/Input', $with: ('border-color': colors.$primary) ); - @include meta.load-css('../components/Modal.scss'); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Modal'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #223d22) + $with: ('background-color': hsl(120, 28.4%, 18.6%)) ); .Layout__content { @@ -60,7 +60,7 @@ font-family: monospace; border-width: base.em(2px); border-style: outset; - border-color: #00aa00; + border-color: hsl(120, 100%, 33.33%); outline: base.em(1px) solid rgb(0, 122, 0); } diff --git a/tgui/packages/tgui/styles/themes/malfunction.scss b/tgui/packages/tgui/styles/themes/malfunction.scss index d32113ba5e661..9e2abe451a65d 100644 --- a/tgui/packages/tgui/styles/themes/malfunction.scss +++ b/tgui/packages/tgui/styles/themes/malfunction.scss @@ -7,12 +7,12 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #910101, + $primary: hsl(0, 99%, 29%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #1b3443, + $color-bg: hsl(204, 43%, 19%), $color-bg-grad-spread: 6% ); @@ -22,35 +22,35 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': colors.$primary, - 'color-disabled': #363636, - 'color-selected': #1e5881, - 'color-caution': #be6209, - 'color-danger': #9a9d00 + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(204, 61%, 31%), + 'color-caution': hsl(30, 88%, 39%), + 'color-danger': hsl(62, 100%, 30%) ) ); @include meta.load-css( - '../components/Input.scss', - $with: ('border-color': #910101) + 'pkg:tgui-styles/components/Input', + $with: ('border-color': hsl(0, 99%, 29%)) ); @include meta.load-css( - '../components/NoticeBox.scss', - $with: ('background-color': #1a3f57) + 'pkg:tgui-styles/components/NoticeBox', + $with: ('background-color': hsl(204, 54%, 23%)) ); @include meta.load-css( - '../components/NumberInput.scss', - $with: ('border-color': #910101) + 'pkg:tgui-styles/components/NumberInput', + $with: ('border-color': hsl(0, 99%, 29%)) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('background-color': rgba(0, 0, 0, 0.5)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('background-color': hsla(0, 0%, 0%, 0.5)) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #235577) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(204, 54%, 29%)) ); // Layouts @@ -58,7 +58,7 @@ @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #1a3f57) + $with: ('background-color': hsl(204, 54%, 23%)) ); .Layout__content { diff --git a/tgui/packages/tgui/styles/themes/neutral.scss b/tgui/packages/tgui/styles/themes/neutral.scss index e8ed3ca7da98b..6665a6673c44d 100644 --- a/tgui/packages/tgui/styles/themes/neutral.scss +++ b/tgui/packages/tgui/styles/themes/neutral.scss @@ -6,7 +6,7 @@ @use 'sass:color'; @use 'sass:meta'; -$neutral: #ffb300; +$neutral: hsl(42.12, 100%, 50%); @use '../colors.scss' with ( $primary: $neutral, @@ -21,20 +21,20 @@ $neutral: #ffb300; .theme-neutral { // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': color.scale($neutral, $lightness: -30%), 'color-transparent-text': color.scale($neutral, $lightness: 30%) ) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ( 'color-default-fill': $neutral, 'background-color': rgba(0, 0, 0, 0.5) ) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); diff --git a/tgui/packages/tgui/styles/themes/ntOS95.scss b/tgui/packages/tgui/styles/themes/ntOS95.scss index df541bf18a44e..90c0d3ed76504 100644 --- a/tgui/packages/tgui/styles/themes/ntOS95.scss +++ b/tgui/packages/tgui/styles/themes/ntOS95.scss @@ -6,19 +6,19 @@ @use 'sass:color'; @use 'sass:meta'; -$light-gray: #c3c3c3; -$dark-gray: #858585; +$light-gray: hsl(0, 0%, 76%); +$dark-gray: hsl(0, 0%, 52%); $scrollbar-color-multiplier: 1; @use '../colors.scss' with ( - $primary: #000000, - $good: #007c11, - $average: #f0ec11, - $bad: #db2828, - $label: #000000 + $primary: hsl(0, 0%, 0%), + $good: hsl(134, 100%, 24.3%), + $average: hsl(56, 88%, 50%), + $bad: hsl(0, 72%, 50%), + $label: hsl(0, 0%, 0%) ); @use '../base.scss' with ( - $color-bg: #008081, + $color-bg: hsl(180, 100%, 25.3%), $color-bg-grad-spread: 0%, $border-radius: 0 ); @@ -29,59 +29,59 @@ $scrollbar-color-multiplier: 1; // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #e8e4c9, - 'color-disabled': #707070, - 'color-selected': #007c11, - 'color-caution': #be6209, - 'color-danger': #9d0808 + 'color-default': hsl(52.3, 40.3%, 84.9%), + 'color-disabled': hsl(0, 0%, 43.9%), + 'color-selected': hsl(128.2, 100%, 24.3%), + 'color-caution': hsl(29.5, 91%, 39%), + 'color-danger': hsl(0, 90.3%, 32.4%) ) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ('background-color': rgba(0, 0, 0, 0.5)) ); @include meta.load-css( - '../components/Section.scss', + 'pkg:tgui-styles/components/Section', $with: ('background-color': rgba(0, 0, 0, 0.4)) ); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #ecee9e) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(61.5, 70.2%, 77.6%)) ); // Layouts @include meta.load-css('../layouts/Layout.scss'); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #000080) + $with: ('background-color': hsl(240, 100%, 25.1%)) ); .Button { - color: #161613; - background-color: #c2c2c2; - //border: base.em(2px) outset #E8E4C9; - outline: base.em(2px) outset #c3c3c3; + color: hsl(60, 7.3%, 8%); + background-color: hsl(0, 0%, 76.1%); + //border: base.em(2px) outset hsl(52.3, 40.3%, 84.9%); + outline: base.em(2px) outset hsl(0, 0%, 76.5%); } .Button:hover { - background-color: #002ead; + background-color: hsl(224, 100%, 33.9%); transition: 0.1s; } .Section { + color: black; + background-color: hsl(0, 0%, 75.3%); + outline: base.em(2px) outset hsl(0, 0%, 76.5%); &__titleText { color: black; } - color: black; - background-color: #c0c0c0; - outline: base.em(2px) outset #c3c3c3; } .Input { background-color: white; - outline: base.em(2px) inset #c3c3c3; + outline: base.em(2px) inset hsl(0, 0%, 76.5%); color: black; &__input:-ms-input-placeholder { color: black; @@ -90,7 +90,7 @@ $scrollbar-color-multiplier: 1; .TextArea { background-color: white; - outline: base.em(2px) inset #c3c3c3; + outline: base.em(2px) inset hsl(0, 0%, 76.5%); } .Layout__content { @@ -131,13 +131,13 @@ $scrollbar-color-multiplier: 1; } .Tab { - color: #000000; - background-color: #ecee9e; + color: hsl(0, 0%, 0%); + background-color: hsl(61.5, 70.2%, 77.6%); } .Tab--selected { - color: #9d0808; - background-color: #c3c3c3; + color: hsl(0, 90.3%, 32.4%); + background-color: hsl(0, 0%, 76.5%); } body { @@ -151,11 +151,11 @@ $scrollbar-color-multiplier: 1; .Table__cell { display: table-cell; padding: 0 0.25em; - background-color: #c3c3c3; - //outline: base.em(3px) outset #c0c0c0 + background-color: hsl(0, 0%, 76.5%); + //outline: base.em(3px) outset hsl(0.0, 0.0%, 75.3%) } .Box { - outline: base.em(3px) outset #c0c0c0; + outline: base.em(3px) outset hsl(0, 0%, 75.3%); } .Tooltip { color: black; diff --git a/tgui/packages/tgui/styles/themes/ntos.scss b/tgui/packages/tgui/styles/themes/ntos.scss index 8b102b4777813..a43210b616aea 100644 --- a/tgui/packages/tgui/styles/themes/ntos.scss +++ b/tgui/packages/tgui/styles/themes/ntos.scss @@ -6,7 +6,7 @@ @use 'sass:color'; @use 'sass:meta'; -$nanotrasen: #384e68; +$nanotrasen: hsl(213, 30%, 32%); @use '../colors.scss' with ( $fg-map-keys: (), @@ -19,20 +19,20 @@ $nanotrasen: #384e68; .theme-ntos { // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': $nanotrasen, 'color-transparent-text': rgba(227, 240, 255, 0.75) ) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ( 'color-default-fill': $nanotrasen, 'background-color': rgba(0, 0, 0, 0.5) ) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); diff --git a/tgui/packages/tgui/styles/themes/ntos_cat.scss b/tgui/packages/tgui/styles/themes/ntos_cat.scss index ae6236b5aa39c..f09bbbf5c0d15 100644 --- a/tgui/packages/tgui/styles/themes/ntos_cat.scss +++ b/tgui/packages/tgui/styles/themes/ntos_cat.scss @@ -8,27 +8,26 @@ //@use 'sass:map'; //palette -$cyan: #5edba5; -$pink: #ed12f5; -$orange: #ff9900; -$purple: #463191; +$cyan: hsl(156, 65%, 60%); +$pink: hsl(300, 91%, 52%); +$orange: hsl(36, 100%, 50%); +$purple: hsl(248, 47%, 37%); -$light-gray: #c3c3c3; -$dark-gray: #858585; +$light-gray: hsl(0, 0%, 76%); +$dark-gray: hsl(0, 0%, 52%); $scrollbar-color-multiplier: 0.5; @use '../colors.scss' with ( $primary: black, - $label: rgb(255, 132, 153), - $good: pink, - + $label: hsl(350, 100%, 76.5%), + $good: hsl(300, 91%, 52%), $bad: red, // $fg-map-keys: (), // $bg-map-keys: (), ); @use '../base.scss' with ( - $color-bg: orange, + $color-bg: hsl(36, 100%, 50%), $color-bg-grad-spread: 12%, //$border-radius: 0, ); @@ -39,26 +38,26 @@ $scrollbar-color-multiplier: 0.5; // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': pink, - 'color-transparent-text': rgba(227, 240, 255, 0.75), - 'color-disabled': #363636, - 'color-selected': #465899, - 'color-caution': #be6209 + 'color-default': hsl(300, 91%, 52%), + 'color-transparent-text': hsla(210, 100%, 94%, 0.75), + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(227, 37%, 45%), + 'color-caution': hsl(30, 88%, 39%) ) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('color-default-fill': rgb(255, 132, 153, 0.75)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('color-default-fill': hsla(350, 100%, 76.5%, 0.75)) ); @include meta.load-css( - '../components/Section.scss', - $with: ('background-color': rgba(124, 62, 34, 0.75)) + 'pkg:tgui-styles/components/Section', + $with: ('background-color': hsla(24, 56%, 31%, 0.75)) ); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': rgba(255, 153, 0, 0.75)) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsla(36, 100%, 50%, 0.75)) ); // Layouts @@ -66,16 +65,16 @@ $scrollbar-color-multiplier: 0.5; @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': rgb(255, 132, 153, 0.75)) + $with: ('background-color': hsla(350, 100%, 76.5%, 0.75)) ); .Section { color: black; - outline: base.em(2px) inset rgb(255, 132, 153); + outline: base.em(2px) inset hsl(350, 100%, 76.5%); } .Button { - color: rgb(255, 132, 153); - background-color: rgb(255, 255, 255); + color: hsl(350, 100%, 76.5%); + background-color: hsl(0, 0%, 100%); } .ProgressBar { @@ -91,58 +90,58 @@ $scrollbar-color-multiplier: 0.5; .Layout * { // Fancy scrollbar scrollbar-base-color: color.scale( - #454255, + hsl(248, 17%, 27%), $lightness: -25% * $scrollbar-color-multiplier ); scrollbar-face-color: color.scale( - #454255, + hsl(248, 17%, 27%), $lightness: 10% * $scrollbar-color-multiplier ); scrollbar-3dlight-color: color.scale( - orange, + hsl(36, 100%, 50%), $lightness: 0% * $scrollbar-color-multiplier ); scrollbar-highlight-color: color.scale( - orange, + hsl(36, 100%, 50%), $lightness: 0% * $scrollbar-color-multiplier ); scrollbar-track-color: color.scale( - #ba753a, + hsl(30, 47%, 47%), $lightness: -25% * $scrollbar-color-multiplier ); scrollbar-arrow-color: color.scale( - orange, + hsl(36, 100%, 50%), $lightness: 50% * $scrollbar-color-multiplier ); scrollbar-shadow-color: color.scale( - #454255, + hsl(248, 17%, 27%), $lightness: 10% * $scrollbar-color-multiplier ); } .Tab { - color: rgb(255, 132, 153); - background-color: rgba(255, 255, 255, 0.5); + color: hsl(350, 100%, 76.5%); + background-color: hsla(0, 0%, 100%, 0.5); } .Tab--selected { color: black; - background-color: rgb(255, 132, 153); + background-color: hsl(350, 100%, 76.5%); } .Box { - outline: base.em(3px) outset #c0c0c0; + outline: base.em(3px) outset hsl(0, 0%, 76%); } .Tooltip { color: black; } .Input { - background-color: white; - outline: base.em(2px) inset rgb(255, 132, 153); + background-color: hsl(0, 0%, 100%); + outline: base.em(2px) inset hsl(350, 100%, 76.5%); } .NtosWindow__header { - background-color: #454255; + background-color: hsl(248, 17%, 27%); } .Flex { - color: white; - background-color: rgba(0, 0, 0, 0); + color: hsl(0, 0%, 100%); + background-color: hsla(0, 0%, 0%, 0); } } diff --git a/tgui/packages/tgui/styles/themes/ntos_darkmode.scss b/tgui/packages/tgui/styles/themes/ntos_darkmode.scss index b22ad60fc3f2f..0e3ec116f071f 100644 --- a/tgui/packages/tgui/styles/themes/ntos_darkmode.scss +++ b/tgui/packages/tgui/styles/themes/ntos_darkmode.scss @@ -6,7 +6,7 @@ @use 'sass:color'; @use 'sass:meta'; -$nanotrasen: #2c2c2c; +$nanotrasen: hsl(0, 0%, 17.25%); @use '../colors.scss' with ( $fg-map-keys: (), @@ -19,20 +19,20 @@ $nanotrasen: #2c2c2c; .theme-ntos_darkmode { // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': $nanotrasen, 'color-transparent-text': rgba(227, 240, 255, 0.75) ) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ( 'color-default-fill': $nanotrasen, 'background-color': rgba(0, 0, 0, 0.5) ) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); diff --git a/tgui/packages/tgui/styles/themes/ntos_lightmode.scss b/tgui/packages/tgui/styles/themes/ntos_lightmode.scss index 9cf1a647b778d..797fa101a9986 100644 --- a/tgui/packages/tgui/styles/themes/ntos_lightmode.scss +++ b/tgui/packages/tgui/styles/themes/ntos_lightmode.scss @@ -6,37 +6,37 @@ @use 'sass:color'; @use 'sass:meta'; -$nanotrasen: #ffffff; +$nanotrasen: hsl(0, 0%, 100%); @use '../colors.scss' with ( - $primary: #000000, - $label: #000000 + $primary: hsl(0, 0%, 0%), + $label: hsl(0, 0%, 0%) ); @use '../base.scss' with ( - $color-bg: white + $color-bg: hsl(0, 0%, 100%) ); .theme-ntos_lightmode { @include meta.load-css('../atomic/color.scss', $with: ()); // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ('color-default': $nanotrasen) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ( 'color-default-fill': $nanotrasen, - 'background-color': rgba(0, 0, 0, 0.5) + 'background-color': hsla(0, 0%, 0%, 0.5) ) ); @include meta.load-css( - '../components/Section.scss', - $with: ('background-color': rgba(119, 119, 119, 0.4)) + 'pkg:tgui-styles/components/Section', + $with: ('background-color': hsla(0, 0%, 47%, 0.4)) ); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': white) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(0, 0%, 100%)) ); // Layouts @@ -44,24 +44,24 @@ $nanotrasen: #ffffff; @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': gray) + $with: ('background-color': hsl(0, 0%, 50%)) ); .Button { - color: #161613; + color: hsl(45, 6%, 8%); } .Button:hover { - background-color: #777777; + background-color: hsl(0, 0%, 47%); transition: 0.1s; } .Section { - color: black; + color: hsl(0, 0%, 0%); } .Tab { - color: black; + color: hsl(0, 0%, 0%); } .Tab--selected { - color: white; - background-color: darkgray; + color: hsl(0, 0%, 100%); + background-color: hsl(0, 0%, 66%); } } diff --git a/tgui/packages/tgui/styles/themes/ntos_spooky.scss b/tgui/packages/tgui/styles/themes/ntos_spooky.scss index 147464218568c..5d1243c0b4133 100644 --- a/tgui/packages/tgui/styles/themes/ntos_spooky.scss +++ b/tgui/packages/tgui/styles/themes/ntos_spooky.scss @@ -3,12 +3,12 @@ @use 'sass:map'; @use '../colors.scss' with ( - $primary: #3f021a, - $good: #e62626, - $bad: #970934 + $primary: hsl(345, 96%, 12%), + $good: hsl(0, 82%, 52%), + $bad: hsl(340, 91%, 32%) ); @use '../base.scss' with ( - $color-bg: #240101, + $color-bg: hsl(0, 98%, 7%), $color-bg-grad-spread: 12% ); @@ -18,40 +18,40 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #7e0322, - 'color-disabled': #363636, - 'color-selected': #610a0a, - 'color-caution': #1416a3, - 'color-danger': #5c1e80 + 'color-default': hsl(345, 96%, 25%), + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(0, 85%, 21%), + 'color-caution': hsl(240, 80%, 35%), + 'color-danger': hsl(282, 61%, 30%) ) ); @include meta.load-css( - '../components/Dimmer.scss', + 'pkg:tgui-styles/components/Dimmer', $with: ('background-dimness': 0.45) ); @include meta.load-css( - '../components/Input.scss', - $with: ('border-color': #473a37) + 'pkg:tgui-styles/components/Input', + $with: ('border-color': hsl(15, 14%, 26%)) ); - @include meta.load-css('../components/Modal.scss'); + @include meta.load-css('pkg:tgui-styles/components/Modal'); @include meta.load-css( - '../components/NoticeBox.scss', - $with: ('background-color': #740707) + 'pkg:tgui-styles/components/NoticeBox', + $with: ('background-color': hsl(0, 90%, 23%)) ); - @include meta.load-css('../components/NumberInput.scss'); - @include meta.load-css('../components/Section.scss'); - @include meta.load-css('../components/Table.scss'); + @include meta.load-css('pkg:tgui-styles/components/NumberInput'); + @include meta.load-css('pkg:tgui-styles/components/Section'); + @include meta.load-css('pkg:tgui-styles/components/Table'); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #000000) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(0, 0%, 0%)) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ( - 'color-default-fill': rgba(190, 0, 0, 0.75), - 'background-color': rgba(34, 1, 1, 0.5) + 'color-default-fill': hsla(0, 100%, 37%, 0.75), + 'background-color': hsla(0, 97%, 7%, 0.5) ) ); @@ -60,7 +60,7 @@ @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #6b0808) + $with: ('background-color': hsl(0, 88%, 23%)) ); .Layout__content { diff --git a/tgui/packages/tgui/styles/themes/ntos_synth.scss b/tgui/packages/tgui/styles/themes/ntos_synth.scss index 5085308dd3bcd..5cc6209489545 100644 --- a/tgui/packages/tgui/styles/themes/ntos_synth.scss +++ b/tgui/packages/tgui/styles/themes/ntos_synth.scss @@ -8,10 +8,10 @@ //@use 'sass:map'; //palette -$cyan: #5edba5; -$pink: #ed12f5; -$orange: #ff9900; -$purple: #463191; +$cyan: hsl(156, 65%, 60%); +$pink: hsl(300, 91%, 52%); +$orange: hsl(36, 100%, 50%); +$purple: hsl(248, 47%, 37%); @use '../colors.scss' with ( $primary: $pink, @@ -32,26 +32,26 @@ $purple: #463191; // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': $cyan, - 'color-transparent-text': rgba(227, 240, 255, 0.75), - 'color-disabled': #363636, - 'color-selected': #465899, - 'color-caution': #be6209 + 'color-transparent-text': hsla(210, 100%, 94%, 0.75), + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(227, 37%, 45%), + 'color-caution': hsl(30, 88%, 39%) ) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('color-default-fill': rgba(237, 18, 245, 0.75)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('color-default-fill': hsla(300, 91%, 52%, 0.75)) ); @include meta.load-css( - '../components/Section.scss', - $with: ('background-color': rgba(0, 0, 0, 0.3)) + 'pkg:tgui-styles/components/Section', + $with: ('background-color': hsla(0, 0%, 0%, 0.3)) ); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': rgba(255, 153, 0, 0.75)) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsla(36, 100%, 50%, 0.75)) ); // Layouts @@ -59,15 +59,15 @@ $purple: #463191; @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': rgba(3, 100, 117, 0.75)) + $with: ('background-color': hsla(185, 95%, 23%, 0.75)) ); .Section { color: $cyan; background-image: linear-gradient( to right, - rgba(194, 0, 219, 0.75), - rgba(3, 100, 117, 0.75) + hsla(300, 100%, 42%, 0.75), + hsla(185, 95%, 23%, 0.75) ); } .Button { @@ -89,8 +89,8 @@ $purple: #463191; color: $cyan; background-image: linear-gradient( to right, - rgba(255, 153, 0, 0.4), - rgba(194, 0, 219, 0.75) + hsla(36, 100%, 50%, 0.4), + hsla(300, 100%, 42%, 0.75) ); } .Tab--selected { diff --git a/tgui/packages/tgui/styles/themes/ntos_terminal.scss b/tgui/packages/tgui/styles/themes/ntos_terminal.scss index 234e20fce7605..3d9230c20887e 100644 --- a/tgui/packages/tgui/styles/themes/ntos_terminal.scss +++ b/tgui/packages/tgui/styles/themes/ntos_terminal.scss @@ -7,14 +7,14 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #24e87e, - $label: #24e87e, - $good: rgba(36, 232, 127, 0.5), + $primary: hsl(146, 82%, 53%), + $label: hsl(146, 82%, 53%), + $good: hsla(146, 82%, 53%, 0.5), // $fg-map-keys: (), // $bg-map-keys: (), ); @use '../base.scss' with ( - $color-bg: #121b12, + $color-bg: hsl(120, 10%, 9%), $color-bg-grad-spread: 0% ); @@ -24,89 +24,89 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': rgba(0, 0, 0, 0), - 'color-disabled': #4a6a4a, - 'color-selected': rgba(36, 232, 127, 0.25) + 'color-disabled': hsl(120, 18%, 35%), + 'color-selected': hsla(146, 82%, 53%, 0.25) ) ); @include meta.load-css( - '../components/Input.scss', + 'pkg:tgui-styles/components/Input', $with: ('border-color': colors.$primary) ); @include meta.load-css( - '../components/ProgressBar.scss', + 'pkg:tgui-styles/components/ProgressBar', $with: ( - 'background-color': rgba(0, 0, 0, 0.5), - 'color-default-fill': rgba(36, 232, 127, 0.5) + 'background-color': hsla(0, 0%, 0%, 0.5), + 'color-default-fill': hsla(146, 82%, 53%, 0.5) ) ); - @include meta.load-css('../components/Modal.scss'); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Modal'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': rgba(0, 97, 0, 0.25)) + $with: ('background-color': hsla(120, 100%, 19%, 0.25)) ); .Layout__content { //background-image: none; background-image: repeating-linear-gradient( 0deg, - rgba(black, 0.15), - rgba(black, 0.15) 1px, + hsla(0, 0%, 0%, 0.15), + hsla(0, 0%, 0%, 0.15) 1px, transparent 2.5px, transparent 5px ), - radial-gradient(rgba(0, 97, 0, 0.75), black 120%); + radial-gradient(hsla(120, 100%, 19%, 0.75), black 120%); background-size: 100%, 100%; background-position: center, center; } .Button { font: Inconsolata; - color: #24e87e; - text-shadow: 0 0 2px #24e87e; + color: hsl(146, 82%, 53%); + text-shadow: 0 0 2px hsl(146, 82%, 53%); } .Button:hover { - background-color: rgba(36, 232, 127, 0.25); + background-color: hsla(146, 82%, 53%, 0.25); transition: 0.1s; } .Button--selected { - color: #24e87e; + color: hsl(146, 82%, 53%); } body { //background-color: black; - color: white; + color: hsl(0, 0%, 100%); font: 1.3rem Inconsolata; - text-shadow: 0 0 2px #24e87e; + text-shadow: 0 0 2px hsl(146, 82%, 53%); //font: bold 12px Arial, 'Helvetica Neue', Helvetica, sans-serif; } .Section { - color: rgb(36, 232, 126); + color: hsl(146, 82%, 53%); } .Tab { - color: #24e87e; + color: hsl(146, 82%, 53%); } .Tab--selected { - color: #24e87e; - border: 2px solid #24e87e; - background-color: rgba(36, 232, 127, 0.25); + color: hsl(146, 82%, 53%); + border: 2px solid hsl(146, 82%, 53%); + background-color: hsla(146, 82%, 53%, 0.25); } ::selection { - background: #0080ff; + background: hsl(210, 100%, 50%); text-shadow: none; } .Table { - text-shadow: 0 0 2px #24e87e; + text-shadow: 0 0 2px hsl(146, 82%, 53%); } .Flex { - text-shadow: 0 0 2px #24e87e; + text-shadow: 0 0 2px hsl(146, 82%, 53%); } } diff --git a/tgui/packages/tgui/styles/themes/paper.scss b/tgui/packages/tgui/styles/themes/paper.scss index 2f9fa6e16f2bd..65b23a93136cf 100644 --- a/tgui/packages/tgui/styles/themes/paper.scss +++ b/tgui/packages/tgui/styles/themes/paper.scss @@ -7,7 +7,7 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #ffffff, + $primary: hsl(0, 0%, 100%), $bg-lightness: 25%, $fg-lightness: -10%, // Commenting out color maps will adjust all colors based on the lightness @@ -16,8 +16,8 @@ $bg-map-keys: () ); @use '../base.scss' with ( - $color-fg: #000000, - $color-bg: #dfdfdf, + $color-fg: hsl(0, 0%, 0%), + $color-bg: hsl(0, 0%, 87%), $color-bg-grad-spread: 0% ); @@ -30,20 +30,20 @@ $font-size: 24px; @include meta.load-css('../atomic/color.scss'); // Components - @include meta.load-css('../components/Tabs.scss'); + @include meta.load-css('pkg:tgui-styles/components/Tabs'); @include meta.load-css( - '../components/Section.scss', - $with: ('background-color': rgba(0, 0, 0, 0.1)) + 'pkg:tgui-styles/components/Section', + $with: ('background-color': hsla(0, 0%, 0%, 0.1)) ); @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #e8e4c9, - 'color-disabled': #363636, - 'color-selected': #9d0808, - 'color-caution': #be6209, - 'color-danger': #9a9d00, - 'color-transparent-text': rgba(0, 0, 0, 0.5) + 'color-default': hsl(50, 50%, 90%), + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(0, 100%, 30%), + 'color-caution': hsl(30, 90%, 40%), + 'color-danger': hsl(60, 100%, 30%), + 'color-transparent-text': hsla(0, 0%, 0%, 0.5) ) ); @@ -56,9 +56,9 @@ $font-size: 24px; @include meta.load-css( '../layouts/TitleBar.scss', $with: ( - 'text-color': rgba(0, 0, 0, 0.75), + 'text-color': hsla(0, 0%, 0%, 0.75), 'background-color': base.$color-bg, - 'shadow-color-core': rgba(0, 0, 0, 0.25) + 'shadow-color-core': hsla(0, 0%, 0%, 0.25) ) ); @@ -68,9 +68,9 @@ $font-size: 24px; width: 120px; border: none; background: transparent; - border-bottom: 1px solid #000; + border-bottom: 1px solid hsl(0, 0%, 0%); outline: none; - background-color: rgba(255, 255, 62, 0.8); + background-color: hsla(60, 100%, 60%, 0.8); padding: 0 4px; margin-right: 2px; line-height: 17px; @@ -99,13 +99,13 @@ $font-size: 24px; padding: 0 6px; font-family: Verdana, sans-serif; background-color: transparent; - color: #fff; + color: hsl(0, 0%, 100%); color: inherit; &:-ms-input-placeholder { font-style: italic; - color: #777; - color: rgba(255, 255, 255, 0.45); + color: hsl(0, 0%, 47%); + color: hsla(0, 0%, 100%, 0.45); } } @@ -124,9 +124,9 @@ $font-size: 24px; display: inline-block; border: none; background: transparent; - border-bottom: 1px solid #000; + border-bottom: 1px solid hsl(0, 0%, 0%); outline: none; - background-color: rgba(255, 255, 62, 0.8); + background-color: hsla(60, 100%, 60%, 0.8); padding: 0 4px; margin-right: 2px; line-height: 17px; @@ -138,9 +138,9 @@ $font-size: 24px; display: inline-block; border: none; background: transparent; - border-bottom: 1px solid #000; + border-bottom: 1px solid hsl(0, 0%, 0%); outline: none; - background-color: rgba(255, 255, 62, 0.8); + background-color: hsla(60, 100%, 60%, 0.8); padding: 0 4px; margin-right: 2px; line-height: 17px; @@ -158,9 +158,9 @@ $font-size: 24px; border: none; background: transparent; - border-bottom: 1px solid #000; + border-bottom: 1px solid hsl(0, 0%, 0%); outline: none; - background-color: rgba(255, 255, 62, 0.8); + background-color: hsla(60, 100%, 60%, 0.8); padding: 0 4px; margin-right: 2px; line-height: 17px; @@ -172,9 +172,9 @@ $font-size: 24px; border: none; background: transparent; - border-bottom: 1px solid #000; + border-bottom: 1px solid hsl(0, 0%, 0%); outline: none; - background-color: rgba(255, 255, 62, 0.8); + background-color: hsla(60, 100%, 60%, 0.8); padding: 0 4px; margin-right: 2px; line-height: 17px; diff --git a/tgui/packages/tgui/styles/themes/retro.scss b/tgui/packages/tgui/styles/themes/retro.scss index 9e08c8b9caef6..f36aaa5c8ac13 100644 --- a/tgui/packages/tgui/styles/themes/retro.scss +++ b/tgui/packages/tgui/styles/themes/retro.scss @@ -7,12 +7,12 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #000000, + $primary: hsl(0, 0%, 0%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #e8e4c9, + $color-bg: hsl(48, 38%, 84%), $color-bg-grad-spread: 0%, $border-radius: 0 ); @@ -25,44 +25,44 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #e8e4c9, - 'color-disabled': #505046, - 'color-selected': #9d0808, - 'color-caution': #be6209, - 'color-danger': #9a9d00 + 'color-default': hsl(48, 38%, 84%), + 'color-disabled': hsl(60, 6%, 28%), + 'color-selected': hsl(0, 91%, 31%), + 'color-caution': hsl(28, 87%, 39%), + 'color-danger': hsl(61, 100%, 30%) ) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('background-color': rgba(0, 0, 0, 0.5)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('background-color': hsla(0, 0%, 0%, 0.5)) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); // Layouts @include meta.load-css('../layouts/Layout.scss'); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #585337) + $with: ('background-color': hsl(48, 10%, 28%)) ); .Button { font-family: monospace; - color: #161613; - border: base.em(2px) outset #e8e4c9; - outline: base.em(1px) solid #161613; + color: hsl(60, 6%, 8%); + border: base.em(2px) outset hsl(48, 38%, 84%); + outline: base.em(1px) solid hsl(60, 6%, 8%); } .Button--disabled { - color: #c5c5c2; + color: hsl(60, 6%, 77%); font-family: monospace; &:hover { - color: #ffffff; + color: hsl(0, 0%, 100%); } &:focus { - color: #ffffff; + color: hsl(0, 0%, 100%); } } diff --git a/tgui/packages/tgui/styles/themes/spookyconsole.scss b/tgui/packages/tgui/styles/themes/spookyconsole.scss index 07fd5b4dbe3d8..a15cf23aa1119 100644 --- a/tgui/packages/tgui/styles/themes/spookyconsole.scss +++ b/tgui/packages/tgui/styles/themes/spookyconsole.scss @@ -3,14 +3,14 @@ @use 'sass:map'; @use '../colors.scss' with ( - $primary: #3f021a, - $good: #010005, - $bad: #970934, + $primary: hsl(345, 96%, 12%), + $good: hsl(240, 100%, 1%), + $bad: hsl(340, 91%, 32%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #240101, + $color-bg: hsl(0, 100%, 7%), $color-bg-grad-spread: 12% ); @@ -28,35 +28,35 @@ $updated-bg-map: map.set($updated-bg-map, 'bad', colors.$bad); // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( - 'color-default': #7e0322, - 'color-disabled': #363636, - 'color-selected': #610a0a, - 'color-caution': #1416a3, - 'color-danger': #5c1e80, + 'color-default': hsl(345, 96%, 25%), + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(0, 85%, 21%), + 'color-caution': hsl(240, 80%, 35%), + 'color-danger': hsl(282, 61%, 30%), 'bg-map': $updated-bg-map ) ); @include meta.load-css( - '../components/Dimmer.scss', + 'pkg:tgui-styles/components/Dimmer', $with: ('background-dimness': 0.45) ); @include meta.load-css( - '../components/Input.scss', - $with: ('border-color': #473a37) + 'pkg:tgui-styles/components/Input', + $with: ('border-color': hsl(15, 14%, 26%)) ); - @include meta.load-css('../components/Modal.scss'); + @include meta.load-css('pkg:tgui-styles/components/Modal'); @include meta.load-css( - '../components/NoticeBox.scss', - $with: ('background-color': #740707) + 'pkg:tgui-styles/components/NoticeBox', + $with: ('background-color': hsl(0, 90%, 23%)) ); - @include meta.load-css('../components/NumberInput.scss'); - @include meta.load-css('../components/Section.scss'); - @include meta.load-css('../components/Table.scss'); + @include meta.load-css('pkg:tgui-styles/components/NumberInput'); + @include meta.load-css('pkg:tgui-styles/components/Section'); + @include meta.load-css('pkg:tgui-styles/components/Table'); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #000000) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(0, 0%, 0%)) ); // Layouts @@ -64,7 +64,7 @@ $updated-bg-map: map.set($updated-bg-map, 'bad', colors.$bad); @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #6b0808) + $with: ('background-color': hsl(0, 88%, 23%)) ); .Layout__content { diff --git a/tgui/packages/tgui/styles/themes/syndicate.scss b/tgui/packages/tgui/styles/themes/syndicate.scss index 4a547edef9b66..f4f82a6c171aa 100644 --- a/tgui/packages/tgui/styles/themes/syndicate.scss +++ b/tgui/packages/tgui/styles/themes/syndicate.scss @@ -7,12 +7,12 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #397439, + $primary: hsl(120, 34%, 35%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #550202, + $color-bg: hsl(0, 96%, 17%), $color-bg-grad-spread: 6% ); @@ -22,35 +22,35 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': colors.$primary, - 'color-disabled': #363636, - 'color-selected': #9d0808, - 'color-caution': #be6209, - 'color-danger': #9a9d00 + 'color-disabled': hsl(0, 0%, 21%), + 'color-selected': hsl(0, 91%, 31%), + 'color-caution': hsl(28, 87%, 39%), + 'color-danger': hsl(61, 100%, 30%) ) ); @include meta.load-css( - '../components/Input.scss', - $with: ('border-color': #87ce87) + 'pkg:tgui-styles/components/Input', + $with: ('border-color': hsl(120, 60%, 70%)) ); @include meta.load-css( - '../components/NoticeBox.scss', - $with: ('background-color': #910101) + 'pkg:tgui-styles/components/NoticeBox', + $with: ('background-color': hsl(0, 98%, 28%)) ); @include meta.load-css( - '../components/NumberInput.scss', - $with: ('border-color': #87ce87) + 'pkg:tgui-styles/components/NumberInput', + $with: ('border-color': hsl(120, 60%, 70%)) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('background-color': rgba(0, 0, 0, 0.5)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('background-color': hsla(0, 0%, 0%, 0.5)) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #4a0202) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(0, 96%, 14%)) ); // Layouts @@ -58,7 +58,7 @@ @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #910101) + $with: ('background-color': hsl(0, 98%, 28%)) ); .Layout__content { diff --git a/tgui/packages/tgui/styles/themes/wizard.scss b/tgui/packages/tgui/styles/themes/wizard.scss index 9c4056cc1289a..3de051e8e635f 100644 --- a/tgui/packages/tgui/styles/themes/wizard.scss +++ b/tgui/packages/tgui/styles/themes/wizard.scss @@ -7,12 +7,12 @@ @use 'sass:meta'; @use '../colors.scss' with ( - $primary: #1596b6, + $primary: hsl(191, 79%, 41%), $fg-map-keys: (), $bg-map-keys: () ); @use '../base.scss' with ( - $color-bg: #213e4e, + $color-bg: hsl(204, 40%, 21%), $color-bg-grad-spread: 6%, $border-radius: 2px ); @@ -23,35 +23,35 @@ // Components @include meta.load-css( - '../components/Button.scss', + 'pkg:tgui-styles/components/Button', $with: ( 'color-default': colors.$primary, - 'color-disabled': #02426d, - 'color-selected': #465899, - 'color-caution': #be6209, - 'color-danger': #b30707 + 'color-disabled': hsl(204, 97%, 21%), + 'color-selected': hsl(227, 40%, 44%), + 'color-caution': hsl(28, 89%, 39%), + 'color-danger': hsl(0, 91%, 35%) ) ); @include meta.load-css( - '../components/Input.scss', - $with: ('border-color': #404b6e) + 'pkg:tgui-styles/components/Input', + $with: ('border-color': hsl(227, 25%, 34%)) ); @include meta.load-css( - '../components/NoticeBox.scss', - $with: ('background-color': #a82d55) + 'pkg:tgui-styles/components/NoticeBox', + $with: ('background-color': hsl(340, 58%, 41%)) ); @include meta.load-css( - '../components/NumberInput.scss', - $with: ('border-color': #404b6e) + 'pkg:tgui-styles/components/NumberInput', + $with: ('border-color': hsl(227, 25%, 34%)) ); @include meta.load-css( - '../components/ProgressBar.scss', - $with: ('background-color': rgba(0, 0, 0, 0.5)) + 'pkg:tgui-styles/components/ProgressBar', + $with: ('background-color': hsla(0, 0%, 0%, 0.5)) ); - @include meta.load-css('../components/Section.scss'); + @include meta.load-css('pkg:tgui-styles/components/Section'); @include meta.load-css( - '../components/Tooltip.scss', - $with: ('background-color': #2da848) + 'pkg:tgui-styles/components/Tooltip', + $with: ('background-color': hsl(134, 61%, 42%)) ); // Layouts @@ -59,7 +59,7 @@ @include meta.load-css('../layouts/Window.scss'); @include meta.load-css( '../layouts/TitleBar.scss', - $with: ('background-color': #1b9e26) + $with: ('background-color': hsl(134, 71%, 31%)) ); .Layout__content { diff --git a/tgui/yarn.lock b/tgui/yarn.lock index b41f103989440..21779bbe5e8eb 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -17137,9 +17137,9 @@ __metadata: languageName: node linkType: hard -"sass-loader@npm:^14.2.1": - version: 14.2.1 - resolution: "sass-loader@npm:14.2.1" +"sass-loader@npm:^16.0.3": + version: 16.0.3 + resolution: "sass-loader@npm:16.0.3" dependencies: neo-async: "npm:^2.6.2" peerDependencies: @@ -17159,7 +17159,7 @@ __metadata: optional: true webpack: optional: true - checksum: 10c0/9a48d454584d96d6c562eb323bb9e3c6808e930eeaaa916975b97d45831e0b87936a8655cdb3a4512a25abc9587dea65a9616e42396be0d7e7c507a4795a8146 + checksum: 10c0/2dc188dd0d5276ed0251eee7f245848ccf9df6ec121227462403f322c17a3dbe100fb60d47968f078e585e4aced452eb7fa1a8e55b415d5de3151fa1bbf2d561 languageName: node linkType: hard @@ -18724,13 +18724,13 @@ __metadata: languageName: unknown linkType: soft -"tgui-core@npm:^1.2.0": - version: 1.2.0 - resolution: "tgui-core@npm:1.2.0" +"tgui-core@npm:^1.3.0": + version: 1.3.0 + resolution: "tgui-core@npm:1.3.0" peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 - checksum: 10c0/1eead0edbe0df5c49bfa88f0d2caa5df743057be75e9c526d0afd838b8def072c67fe60435c66cba52551c4ef70749d60d68094fa103542187008998002714f7 + checksum: 10c0/448c38a23149a13f80dcbe3688f3edba8dbe25dd65fc1b48036627f6e992996107a7962cd7bca6194f41959dc3aad531fdf3fbe032decaac7989c32721ad99a1 languageName: node linkType: hard @@ -18760,6 +18760,7 @@ __metadata: tgui: "workspace:*" tgui-dev-server: "workspace:*" tgui-polyfill: "workspace:*" + tgui-styles: "npm:^0.0.10" languageName: unknown linkType: soft @@ -18785,9 +18786,17 @@ __metadata: react-dom: "npm:^18.3.1" tgui: "workspace:*" tgui-polyfill: "workspace:*" + tgui-styles: "npm:^0.0.10" languageName: unknown linkType: soft +"tgui-styles@npm:^0.0.10": + version: 0.0.10 + resolution: "tgui-styles@npm:0.0.10" + checksum: 10c0/90d3c9d891680289e79fd1f44dcf15a0cc956345e0337b2f89a64ceb1c5192da217dd8ac64566731471684b6bb6d3b4fc92ff6a072f9d8138e71d423c94821a6 + languageName: node + linkType: hard + "tgui-workspace@workspace:.": version: 0.0.0-use.local resolution: "tgui-workspace@workspace:." @@ -18815,7 +18824,7 @@ __metadata: mini-css-extract-plugin: "npm:^2.9.2" prettier: "npm:^3.2.5" sass: "npm:^1.80.6" - sass-loader: "npm:^14.2.1" + sass-loader: "npm:^16.0.3" style-loader: "npm:^4.0.0" swc-loader: "npm:^0.2.6" typescript: "npm:^5.6.3" @@ -18845,9 +18854,10 @@ __metadata: react: "npm:^18.3.1" react-dom: "npm:^18.3.1" react-popper: "npm:^2.3.0" - tgui-core: "npm:^1.2.0" + tgui-core: "npm:^1.3.0" tgui-dev-server: "workspace:*" tgui-polyfill: "workspace:*" + tgui-styles: "npm:^0.0.10" languageName: unknown linkType: soft diff --git a/tools/UpdatePaths/Scripts/86084_replace_floorbots.txt b/tools/UpdatePaths/Scripts/86084_replace_floorbots.txt new file mode 100644 index 0000000000000..711e01207ea43 --- /dev/null +++ b/tools/UpdatePaths/Scripts/86084_replace_floorbots.txt @@ -0,0 +1,2 @@ +/mob/living/simple_animal/bot/floorbot : /mob/living/basic/bot/repairbot {@OLD} +/obj/item/bot_assembly/floorbot : /obj/item/bot_assembly/repairbot {@OLD} \ No newline at end of file diff --git a/tools/UpdatePaths/Scripts/87828_exofab_directions.txt b/tools/UpdatePaths/Scripts/87828_exofab_directions.txt new file mode 100644 index 0000000000000..468bc23847a98 --- /dev/null +++ b/tools/UpdatePaths/Scripts/87828_exofab_directions.txt @@ -0,0 +1 @@ +/obj/machinery/mecha_part_fabricator/@SUBTYPES{dir = @ANY} : /obj/machinery/mecha_part_fabricator/@SUBTYPES{@OLD;dir=@SKIP;drop_direction=@OLD:dir} diff --git a/tools/UpdatePaths/Scripts/87866_fish_tanks.txt b/tools/UpdatePaths/Scripts/87866_fish_tanks.txt new file mode 100644 index 0000000000000..a0762acacf27a --- /dev/null +++ b/tools/UpdatePaths/Scripts/87866_fish_tanks.txt @@ -0,0 +1 @@ +/obj/structure/aquarium/lawyer : /obj/item/fish_tank/lawyer diff --git a/tools/UpdatePaths/Scripts/repaths_a357_to_c357.txt b/tools/UpdatePaths/Scripts/repaths_a357_to_c357.txt new file mode 100644 index 0000000000000..28ad97efff1ab --- /dev/null +++ b/tools/UpdatePaths/Scripts/repaths_a357_to_c357.txt @@ -0,0 +1,3 @@ +#comment Repaths instances of a357 with c357, so as to acknowledge that it is consistent with other casings. + +/obj/item/ammo_casing/c357 : /obj/item/ammo_casing/a357{@OLD} diff --git a/tools/ci/ci_config.txt b/tools/ci/ci_config.txt index 51e08e6328ba1..1e6f19eb692c9 100644 --- a/tools/ci/ci_config.txt +++ b/tools/ci/ci_config.txt @@ -5,6 +5,4 @@ FEEDBACK_DATABASE tg_ci FEEDBACK_TABLEPREFIX FEEDBACK_LOGIN root FEEDBACK_PASSWORD -LAVALAND_BUDGET 0 -SPACE_BUDGET 0 AUXTOOLS_ENABLED diff --git a/tools/hslify/README.md b/tools/hslify/README.md new file mode 100644 index 0000000000000..cc6937ed4f69c --- /dev/null +++ b/tools/hslify/README.md @@ -0,0 +1,21 @@ +# HSLify + +This is a simple Python script that converts all hex colors in a directory to their corresponding HSL values. + +## Usage + +1. Install the required dependencies: + +```bash +pip install colormath +``` + +2. Move files so that hslify is in the same directory as the files you want to process. That can be in this folder, or by moving this folder to the same directory as the files you want to process. + +3. Run the script: + +```bash +py hslify.py +``` + +4. Formatting is strange, so it may be necessary to save the file manually for prettier to format it. diff --git a/tools/hslify/hslify.py b/tools/hslify/hslify.py new file mode 100644 index 0000000000000..9a87ad4415710 --- /dev/null +++ b/tools/hslify/hslify.py @@ -0,0 +1,27 @@ +import re +import glob +from colormath.color_objects import sRGBColor, HSLColor +from colormath.color_conversions import convert_color + +def hex_to_hsl(hex_color): + rgb = sRGBColor.new_from_rgb_hex(hex_color) + hsl = convert_color(rgb, HSLColor) + return f"hsl({hsl.hsl_h:.1f}, {hsl.hsl_s * 100:.1f}%, {hsl.hsl_l * 100:.1f}%)" + +def replace_hex_with_hsl(file_path): + with open(file_path, 'r') as file: + content = file.read() + + hex_pattern = re.compile(r'#([0-9a-fA-F]{6})') + updated_content = hex_pattern.sub(lambda match: hex_to_hsl(match.group(0)), content) + + with open(file_path, 'w') as file: + file.write(updated_content) + +def process_all_scss_files(): + scss_files = glob.glob('*.scss') + for scss_file in scss_files: + replace_hex_with_hsl(scss_file) + +if __name__ == "__main__": + process_all_scss_files()