diff --git a/.github/workflows/discord_discussions.yml b/.github/workflows/discord_discussions.yml new file mode 100644 index 0000000000000..439315cbb9546 --- /dev/null +++ b/.github/workflows/discord_discussions.yml @@ -0,0 +1,52 @@ +name: Discord Discussions + +on: + pull_request_target: + types: + - opened + - reopened + - edited + - labeled + - closed + branches: + - master + +concurrency: + group: "discord-discussions-${{ github.head_ref }}" + cancel-in-progress: true + +jobs: + manage-discord-discussion: + name: Manage Discord Discussion + runs-on: ubuntu-latest + if: contains(github.event.pull_request.labels.*.name, 'Discord Discussion') + steps: + - name: Fail if vars.DISCORD_DISCUSSIONS_CHANNEL_ID is unset + if: ${{ vars.DISCORD_DISCUSSIONS_CHANNEL_ID == '' }} + run: | + echo "vars.DISCORD_DISCUSSIONS_CHANNEL_ID (${{ vars.DISCORD_DISCUSSIONS_CHANNEL_ID }}) must be set to use this label!" + exit 1 + + - name: Setup dotnet + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + dotnet-quality: ga + + - name: Checkout + uses: actions/checkout@v4 + + - name: Build Tgstation.DiscordDiscussions + run: dotnet publish -c Release -o discord_discussions_bins tools/Tgstation.DiscordDiscussions/Tgstation.DiscordDiscussions.csproj + + - name: Generate App Token + id: app-token-generation + uses: getsentry/action-github-app-token@d4b5da6c5e37703f8c3b3e43abb5705b46e159cc + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.APP_PRIVATE_KEY }} + + - name: Run Tgstation.DiscordDiscussions + run: dotnet discord_discussions_bins/Tgstation.DiscordDiscussions.dll ${{ steps.app-token-generation.outputs.token }} ${{ github.repository_owner }} ${{ github.event.repository.name }} ${{ github.event.pull_request.number }} ${{ github.event.pull_request.merged && 'merged' || github.event.pull_request.state }} ${{ secrets.DISCORD_DISCUSSIONS_TOKEN }} ${{ vars.DISCORD_DISCUSSIONS_CHANNEL_ID }} ${{ github.event.action == 'reopened' && 'true' || 'false' }} ${{ vars.DISCORD_JOIN_LINK }} + env: + GITHUB_PULL_REQUEST_TITLE: ${{ github.event.pull_request.title }} diff --git a/.gitignore b/.gitignore index 8ef9946abc935..28e074442df9c 100644 --- a/.gitignore +++ b/.gitignore @@ -180,6 +180,10 @@ Temporary Items /tools/MapAtmosFixer/MapAtmosFixer/bin/* /tools/CreditsTool/bin/* /tools/CreditsTool/obj/* +/tools/Tgstation.DiscordDiscussions/.vs/* +/tools/Tgstation.DiscordDiscussions/bin/* +/tools/Tgstation.DiscordDiscussions/obj/* +/tools/Tgstation.DiscordDiscussions/Properties/launchSettings.json #GitHub Atom .atom-build.json diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index 7b7cec2c72a05..35492d9e9f2e0 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -63,12 +63,7 @@ /obj/item/cult_shift, /obj/effect/decal/remains/human, /obj/item/melee/cultblade/dagger, -/obj/effect/step_trigger/sound_effect{ - happens_once = 1; - name = "\proper a grave mistake"; - sound = 'sound/effects/hallucinations/i_see_you1.ogg'; - triggerer_only = 1 - }, +/obj/effect/step_trigger/sound_effect/lavaland_cult_altar, /obj/effect/step_trigger/message{ message = "You've made a grave mistake, haven't you?"; name = "ohfuck" diff --git a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm index df3c3ca64277e..9efa8cd365454 100644 --- a/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/hauntedtradingpost.dmm @@ -5468,11 +5468,9 @@ /area/ruin/space/has_grav/hauntedtradingpost/employees/breakroom) "Vl" = ( /obj/structure/table/wood, -/obj/item/toy/figure/wizard{ +/obj/item/toy/figure/wizard/special{ pixel_y = 9; pixel_x = -4; - toysay = "CLANG!"; - toysound = 'sound/effects/clang.ogg' }, /obj/item/toy/figure/warden{ name = "\improper Knight action figure"; diff --git a/_maps/map_files/biodome/biodome.dmm b/_maps/map_files/biodome/biodome.dmm index af482870377b7..9f4e9989c0fb2 100644 --- a/_maps/map_files/biodome/biodome.dmm +++ b/_maps/map_files/biodome/biodome.dmm @@ -33,6 +33,13 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"aaG" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Cold Loop to Gas" + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "aaH" = ( /obj/effect/turf_decal/trimline/red/warning{ dir = 8 @@ -40,13 +47,6 @@ /obj/structure/table, /turf/open/floor/iron/dark/smooth_half, /area/station/security/brig) -"aaI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/wood/large, -/area/station/biodome/fore) "aaP" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/door/window/left/directional/north{ @@ -188,24 +188,6 @@ /mob/living/basic/cockroach, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) -"adG" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/incident_display/delam/directional/north, -/turf/open/floor/iron, -/area/station/engineering/lobby) -"adI" = ( -/obj/effect/turf_decal/siding/green{ - dir = 10 - }, -/obj/structure/table/glass, -/obj/item/storage/bag/plants/portaseeder, -/obj/item/plant_analyzer, -/obj/item/secateurs, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "adK" = ( /obj/machinery/duct, /obj/effect/spawner/random/trash/hobo_squat, @@ -300,10 +282,6 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos/project) -"afo" = ( -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/plating, -/area/station/biodome/fore) "afs" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 10 @@ -360,20 +338,6 @@ /obj/effect/spawner/random/trash/box, /turf/open/floor/plating, /area/station/maintenance/department/science) -"agt" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/elevator_control_panel/directional/east{ - linked_elevator_id = "biodome_medbay_lift"; - name = "Medbay Lift Control Panel"; - preset_destination_names = list("2"="LowerMedbay","3"="UpperMedbay") - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/mirror/directional/south, -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/medbay/central) "agy" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/effect/spawner/random/engineering/vending_restock, @@ -462,6 +426,13 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/engineering/atmos/mix) +"aic" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/reagent_dispensers/wall/peppertank/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "aip" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -511,6 +482,24 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"ajm" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = 5 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden, +/turf/open/floor/iron/dark, +/area/station/engineering/storage) "ajs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -683,6 +672,10 @@ /obj/structure/cable, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) +"alA" = ( +/obj/effect/turf_decal/trimline/red/filled/corner, +/turf/open/floor/iron/smooth_large, +/area/station/security/brig) "alG" = ( /turf/open/floor/iron, /area/station/engineering/main) @@ -923,6 +916,12 @@ }, /turf/open/floor/wood, /area/station/cargo/office) +"apn" = ( +/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/security/lockers) "apt" = ( /obj/structure/chair/stool/directional/west, /obj/effect/turf_decal/tile/yellow/diagonal_edge, @@ -1102,6 +1101,17 @@ /obj/machinery/holopad, /turf/open/floor/iron, /area/station/security/office) +"asO" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/item/food/grown/potato/sweet{ + desc = "Ooooooooough."; + name = "Yam" + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/jungle/biodome, +/area/station/biodome/aft) "asP" = ( /obj/machinery/light/directional/west, /obj/structure/cable, @@ -1181,6 +1191,12 @@ /obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron, /area/station/science/research) +"atI" = ( +/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/command/bridge) "atJ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/blood/footprints, @@ -1329,25 +1345,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"awl" = ( -/obj/structure/sign/directions/supply/directional/south{ - pixel_y = -42 - }, -/obj/structure/sign/directions/security/directional/south{ - pixel_y = -35 - }, -/obj/structure/sign/directions/medical/directional/south{ - pixel_y = -28 - }, -/obj/structure/sign/directions/engineering{ - pixel_y = -21 - }, -/obj/effect/turf_decal/trimline/blue/arrow_ccw, -/obj/effect/turf_decal/trimline/red/real_red/arrow_cw{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/chapel) "awm" = ( /obj/machinery/computer/communications{ dir = 4 @@ -1369,11 +1366,18 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/command/bridge) -"awT" = ( -/obj/effect/turf_decal/tile/blue, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) +"awq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"awR" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "axh" = ( /obj/structure/cable, /obj/structure/falsewall, @@ -1468,6 +1472,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"ayv" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/effect/landmark/navigate_destination/atmos, +/turf/open/floor/iron/terracotta, +/area/station/hallway/primary/aft) "ayy" = ( /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/misc/asteroid/airless, @@ -1502,12 +1516,29 @@ "aza" = ( /turf/open/floor/wood/large, /area/station/hallway/secondary/service) +"azu" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Service - Museum Lounge" + }, +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "azH" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/carpet/red, /area/station/hallway/secondary/exit/departure_lounge) +"azI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/mineral_door/paperframe{ + name = "Bar" + }, +/obj/structure/cable, +/turf/open/floor/bamboo/tatami{ + dir = 4 + }, +/area/station/commons/lounge) "azL" = ( /obj/machinery/modular_computer/preset/id{ dir = 8 @@ -1538,6 +1569,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/misc/asteroid, /area/station/cargo/miningdock) +"azS" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/space/openspace, +/area/space/nearstation) "aAb" = ( /obj/structure/table, /obj/item/clothing/gloves/latex, @@ -1548,16 +1586,6 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) -"aAj" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/dark_green{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "aAt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1596,6 +1624,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"aBl" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/floor/iron, +/area/station/engineering/main) "aBm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/ash, @@ -1848,6 +1884,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"aFD" = ( +/obj/structure/cable, +/obj/structure/cable/layer1, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "aFI" = ( /obj/effect/landmark/start/assistant, /obj/structure/chair/sofa/bench/solo, @@ -1931,6 +1973,13 @@ }, /turf/open/floor/iron/smooth_half, /area/station/security/brig) +"aGK" = ( +/obj/structure/table, +/obj/item/analyzer, +/obj/item/pipe_dispenser, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "aHu" = ( /obj/effect/landmark/start/medical_doctor, /obj/effect/turf_decal/trimline/blue/line{ @@ -1953,15 +2002,6 @@ /obj/structure/cable/layer1, /turf/open/floor/grass/fairy, /area/station/ai_monitored/turret_protected/ai) -"aHK" = ( -/obj/structure/chair/office, -/turf/open/floor/wood, -/area/station/security/brig) -"aHS" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/effect/landmark/start/hangover, -/turf/open/floor/grass, -/area/station/biodome/fore) "aHZ" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1973,6 +2013,12 @@ /obj/structure/ladder, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) +"aIi" = ( +/obj/machinery/duct, +/obj/machinery/light/small/directional/south, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "aIy" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -2007,6 +2053,20 @@ /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, /area/station/service/hydroponics) +"aJb" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/item/hand_labeler{ + pixel_x = 8; + pixel_y = 10 + }, +/obj/item/storage/box/evidence, +/turf/open/floor/iron, +/area/station/security/processing) "aJm" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -2044,6 +2104,30 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"aJK" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/table, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/obj/item/inspector{ + pixel_x = -5; + pixel_y = 12 + }, +/obj/item/inspector{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/poster/random_official{ + pixel_y = 10 + }, +/obj/item/poster/random_official{ + pixel_y = 6 + }, +/obj/item/poster/random_official{ + pixel_y = 1 + }, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "aJL" = ( /obj/structure/disposaloutlet{ dir = 8 @@ -2059,6 +2143,16 @@ }, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"aJR" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/interrogation/directional/north, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "aKd" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/office) @@ -2159,17 +2253,6 @@ dir = 8 }, /area/station/biodome/aft) -"aLA" = ( -/obj/machinery/door/airlock/hydroponics{ - name = "Hydroponics" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/effect/landmark/navigate_destination/hydro, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/stone, -/area/station/service/hydroponics) "aLG" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -2263,6 +2346,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) +"aMR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/turf/open/floor/stone, +/area/station/biodome/fore) "aMV" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -2329,12 +2418,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/command/gateway) -"aNX" = ( -/obj/machinery/light/dim/directional/south, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "aOh" = ( /obj/effect/spawner/random/trash/garbage, /obj/effect/turf_decal/siding/wood, @@ -2381,6 +2464,14 @@ /obj/structure/window/spawner/directional/north, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) +"aOU" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/blueshield) "aOX" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -2578,6 +2669,14 @@ /obj/machinery/air_sensor/plasma_tank, /turf/open/floor/engine/plasma, /area/station/engineering/atmos) +"aRG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor_switch/oneway{ + id = "mining"; + dir = 1 + }, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) "aRL" = ( /obj/machinery/door/airlock/public/glass{ name = "Funeral Parlour" @@ -2834,9 +2933,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"aWy" = ( -/turf/open/floor/wood, -/area/station/security/brig) "aWC" = ( /obj/machinery/plumbing/receiver{ dir = 1 @@ -2942,13 +3038,6 @@ "aYz" = ( /turf/closed/wall, /area/station/medical/cryo) -"aYB" = ( -/obj/structure/bed/dogbed/mcgriff{ - name = "Beepsky's bed" - }, -/obj/item/pillow, -/turf/open/floor/carpet/blue, -/area/station/security/brig) "aYJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3004,18 +3093,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"aZR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/obj/structure/railing/wooden_fencing{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/biodome/aft) "aZZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/rnd/server/master, @@ -3197,6 +3274,12 @@ }, /turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) +"bcS" = ( +/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ + dir = 5 + }, +/turf/closed/wall/r_wall/fakewood, +/area/station/command/gateway) "bdd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -3336,6 +3419,19 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/engineering/main) +"bfM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Service - Diner" + }, +/obj/effect/turf_decal/siding/dark_green/corner{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "bgm" = ( /turf/closed/wall, /area/station/engineering/storage/tech) @@ -3361,6 +3457,14 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"bhe" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/structure/cable, +/mob/living/basic/pet/dog/corgi/borgi, +/turf/open/floor/iron/white/diagonal, +/area/station/science/robotics/lab) "bhk" = ( /obj/machinery/door/airlock/public/glass, /obj/machinery/door/firedoor, @@ -3382,11 +3486,6 @@ /obj/effect/turf_decal/stripes/asteroid/line, /turf/open/floor/engine/hull, /area/station/asteroid) -"bhN" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/space/basic, -/area/space/nearstation) "bhV" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3411,6 +3510,15 @@ dir = 1 }, /area/station/science/lab) +"bik" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "bim" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -3580,6 +3688,14 @@ /obj/structure/cable, /turf/open/floor/iron/smooth_large, /area/station/security/lockers) +"bkA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/plating, +/area/station/hallway/primary/central) "bkB" = ( /obj/machinery/door/airlock/atmos/glass{ name = "Distribution Loop" @@ -3592,6 +3708,11 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"bkG" = ( +/obj/machinery/airalarm/directional/east, +/obj/machinery/power/shieldwallgen, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "bkL" = ( /obj/structure/chair/office/light{ dir = 4 @@ -3714,6 +3835,12 @@ "bmc" = ( /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain) +"bme" = ( +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_nineteen, +/turf/open/floor/plating, +/area/station/service/library/lounge) "bmm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -3741,14 +3868,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"bnd" = ( -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_y = 8 - }, -/obj/effect/turf_decal/weather/dirt, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "bnk" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/spawner/random/structure/tank_holder, @@ -3817,14 +3936,14 @@ /obj/item/clothing/head/utility/radiation, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"bpz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +"bps" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/transit_tube/curved, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "bpD" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/effect/turf_decal/siding/wood{ @@ -3880,6 +3999,9 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/smooth_large, /area/station/medical/virology) +"bqb" = ( +/turf/open/openspace, +/area/station/service/kitchen/coldroom) "bqd" = ( /turf/closed/wall, /area/station/commons/fitness) @@ -3902,6 +4024,25 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) +"bqJ" = ( +/obj/structure/table, +/obj/item/book/manual/hydroponics_pod_people, +/obj/item/clothing/accessory/armband/hydro, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/paper/guides/jobs/hydroponics, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/terracotta/small, +/area/station/service/hydroponics) "bqQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3916,13 +4057,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark/smooth_half, /area/station/security/prison) -"brl" = ( -/obj/structure/sign/departments/lawyer/directional/east, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/stone, -/area/station/hallway/primary/starboard) "brn" = ( /obj/effect/spawner/random/trash/caution_sign, /turf/open/floor/plating, @@ -4290,6 +4424,14 @@ }, /turf/open/water/jungle/biodome, /area/station/biodome/fore) +"bye" = ( +/obj/structure/chair/sofa/bench/solo{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "byj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/junction/yjunction{ @@ -4337,10 +4479,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/maintenance/department/security/brig) -"byV" = ( -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "bzb" = ( /obj/structure/table, /obj/machinery/computer/security/telescreen/research/directional/north, @@ -4352,6 +4490,12 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/security/brig) +"bzf" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "bzj" = ( /obj/machinery/duct, /turf/open/floor/plating, @@ -4436,6 +4580,13 @@ }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) +"bAe" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/bush/reed/style_random, +/turf/open/water/jungle/biodome, +/area/station/biodome/aft) "bAp" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 4 @@ -4572,14 +4723,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/smooth_large, /area/station/ai_monitored/security/armory) +"bDk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/biodome/aft) "bDy" = ( /obj/structure/closet/crate/grave, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"bDH" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "bDR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4617,6 +4770,10 @@ /obj/machinery/light/small/blacklight/directional/east, /turf/closed/wall, /area/station/command/heads_quarters/qm) +"bEJ" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall, +/area/station/command/heads_quarters/nt_rep) "bES" = ( /obj/item/plate, /obj/item/food/meat/slab, @@ -4647,6 +4804,16 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"bFL" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 8; + pixel_x = -2; + pixel_y = 1 + }, +/obj/structure/cable, +/obj/effect/landmark/start/bouncer, +/turf/open/floor/bamboo/tatami, +/area/station/hallway/secondary/service) "bGc" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -4801,6 +4968,13 @@ /obj/effect/turf_decal/trimline/purple/line, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"bJd" = ( +/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/nanotrasen_consultant, +/turf/open/floor/wood, +/area/station/command/bridge) "bJf" = ( /turf/closed/mineral/random/stationside/asteroid/porus, /area/station/maintenance/port/central) @@ -4818,15 +4992,6 @@ /obj/structure/ladder, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"bJy" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "bJK" = ( /obj/structure/sign/departments/medbay/alt, /turf/closed/wall/r_wall, @@ -5003,15 +5168,6 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) -"bNa" = ( -/obj/structure/chair/sofa/bench/solo{ - dir = 8 - }, -/obj/effect/turf_decal/weather/dirt, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "bNk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/grass/fairy, @@ -5142,6 +5298,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/central) +"bOV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 1 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "bPb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, @@ -5222,13 +5388,6 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) -"bPZ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Gas to Chamber" - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "bQd" = ( /obj/structure/sign/warning/radiation/rad_area/directional/north, /obj/effect/turf_decal/bot_white, @@ -5376,14 +5535,11 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"bSG" = ( -/obj/effect/turf_decal/bot, -/obj/effect/landmark/start/botanist, -/obj/effect/turf_decal/siding/brown{ - dir = 9 - }, -/turf/open/floor/iron/terracotta/small, -/area/station/service/hydroponics) +"bSt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "bSQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5427,13 +5583,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/science/research) -"bTF" = ( -/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/primary/port) "bTJ" = ( /obj/item/emptysandbag, /turf/open/misc/sandy_dirt, @@ -5442,12 +5591,6 @@ /obj/structure/grille, /turf/closed/wall/r_wall, /area/station/engineering/atmos) -"bTP" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/openspace, -/area/station/biodome/fore) "bTR" = ( /obj/machinery/vending/coffee, /turf/open/floor/wood/large, @@ -5500,10 +5643,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/disposal) -"bUw" = ( -/obj/structure/sign/poster/random/directional/east, -/turf/open/floor/plating, -/area/station/biodome/aft) "bUG" = ( /obj/structure/rack, /obj/item/clothing/suit/hooded/wintercoat, @@ -5857,13 +5996,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"cbU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/biodome/fore) "cbX" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/iron/smooth, @@ -5909,6 +6041,13 @@ /obj/machinery/vending/wallmed/directional/south, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"cdl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, +/area/station/engineering/transit_tube) "cdp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -5920,12 +6059,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) -"cdD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/security/processing) "cdF" = ( /obj/machinery/button/door/directional/north{ id = "Dorm3"; @@ -5958,11 +6091,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/storage) -"cdX" = ( -/obj/structure/table, -/obj/machinery/coffeemaker, -/turf/open/floor/wood, -/area/station/security/brig) "cel" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -5971,6 +6099,13 @@ /obj/item/food/oven_baked_corn, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) +"ceo" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/blueshield) "ceA" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6027,6 +6162,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/smooth_large, /area/station/medical/surgery/aft) +"ceR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/machinery/light/dim/directional/south, +/turf/open/water/jungle/biodome, +/area/station/biodome/aft) "cfe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -6038,15 +6180,6 @@ /obj/effect/turf_decal/tile/neutral/diagonal_centre, /turf/open/floor/iron, /area/station/commons/locker) -"cfo" = ( -/obj/structure/railing, -/obj/machinery/elevator_control_panel/directional/north{ - linked_elevator_id = "biodome_engie_lift"; - name = "Engineering's Lifts Control Panel"; - preset_destination_names = list("2"="EngineeringAccess","3"="StorageZone") - }, -/turf/open/openspace, -/area/station/hallway/primary/aft) "cfF" = ( /obj/machinery/newscaster/directional/south, /obj/structure/chair/sofa/middle/brown{ @@ -6108,6 +6241,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) +"cgE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/sign/departments/restroom/directional/east, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "cgH" = ( /obj/structure/ladder, /turf/open/floor/iron/smooth, @@ -6178,19 +6317,14 @@ /obj/structure/curtain/cloth/prison, /turf/open/floor/carpet/blue, /area/station/security/prison) -"chB" = ( -/obj/effect/turf_decal/trimline/dark_blue/arrow_cw{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/dark_blue/corner{ - dir = 4 - }, -/obj/effect/spawner/random/engineering/tracking_beacon, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "chE" = ( /turf/open/water/jungle/biodome, /area/station/biodome/fore) +"chI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/obj/machinery/meter, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "chZ" = ( /obj/machinery/light/directional/south, /obj/effect/turf_decal/tile/blue{ @@ -6199,14 +6333,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"cin" = ( -/obj/machinery/pdapainter/research, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/tile/purple/anticorner{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/rd) "cip" = ( /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; @@ -6369,13 +6495,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"ckM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "clm" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 @@ -6468,6 +6587,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"cnI" = ( +/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/stone, +/area/station/biodome/aft) "cnW" = ( /obj/machinery/shower/directional/east, /turf/open/floor/iron/freezer, @@ -6495,6 +6623,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"coI" = ( +/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/orderly, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) "coK" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible, /obj/effect/spawner/structure/window, @@ -6587,14 +6722,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"cqh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "cqj" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -6735,6 +6862,10 @@ /obj/structure/fluff/clockwork/clockgolem_remains, /turf/open/misc/ashplanet/wateryrock/biodome, /area/station/maintenance/central/greater) +"cse" = ( +/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/turf/open/floor/iron/white, +/area/station/service/kitchen/coldroom) "csm" = ( /obj/structure/window/spawner/directional/north, /obj/effect/turf_decal/siding/dark{ @@ -6780,6 +6911,14 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) +"csW" = ( +/obj/machinery/firealarm/directional/west, +/obj/vehicle/sealed/mecha/ripley/paddy/preset, +/obj/machinery/camera/directional/west{ + c_tag = "Security - Office - Port" + }, +/turf/open/floor/iron/recharge_floor, +/area/station/security/mechbay) "ctd" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 1 @@ -6798,25 +6937,12 @@ }, /turf/open/floor/wood/large, /area/station/service/library) -"ctt" = ( -/obj/effect/turf_decal/delivery/red, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/station/service/library/lounge) "ctv" = ( /obj/structure/railing, /turf/open/floor/iron/stairs/right{ dir = 8 }, /area/station/hallway/secondary/construction/engineering) -"ctI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/sign/warning/electric_shock{ - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/station/maintenance/department/crew_quarters/bar) "ctJ" = ( /obj/structure/transit_tube/horizontal, /turf/open/openspace, @@ -6846,6 +6972,15 @@ }, /turf/open/floor/iron/smooth_half, /area/station/security/brig) +"cun" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/machinery/door/firedoor, +/obj/structure/cable/layer1, +/turf/open/floor/iron, +/area/station/engineering/engine_smes) "cus" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/plumbing/synthesizer/beer{ @@ -6865,14 +7000,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/herringbone, /area/station/service/chapel) -"cuw" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/hallway/primary/central) "cuy" = ( /turf/open/floor/iron/smooth_half, /area/station/security/warden) @@ -6932,6 +7059,14 @@ /obj/structure/cable, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) +"cvu" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "cvz" = ( /obj/item/relic, /obj/item/bedsheet/black{ @@ -6959,16 +7094,6 @@ /obj/item/flashlight/lamp, /turf/open/floor/carpet/neon/simple/blue, /area/station/commons/dorms) -"cvV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 1 - }, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "cvW" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -7044,6 +7169,18 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/station/hallway/primary/aft) +"cwE" = ( +/obj/structure/table, +/obj/item/assembly/timer, +/obj/item/restraints/handcuffs, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/security/office) "cwL" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -7151,6 +7288,17 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/glass, /area/station/hallway/secondary/service) +"cxQ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "experilab"; + name = "Experimentation Chamber Lockdown" + }, +/obj/machinery/door/window/left/directional/east{ + name = "Maximum Security Test Chamber"; + req_access = list("science") + }, +/turf/open/floor/iron/dark, +/area/station/science/circuits) "cxT" = ( /obj/machinery/ai_slipper{ uses = 10 @@ -7399,11 +7547,6 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet) -"cBP" = ( -/obj/effect/turf_decal/delivery/red, -/obj/structure/bookcase/random/adult, -/turf/open/floor/bronze, -/area/station/service/library/lounge) "cBQ" = ( /obj/structure/chair/sofa/bench/left, /turf/open/floor/iron/dark, @@ -7532,6 +7675,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/large, /area/station/commons/storage/primary) +"cEz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) "cEC" = ( /obj/structure/table, /obj/item/exodrone{ @@ -7624,6 +7774,10 @@ /obj/effect/mapping_helpers/mail_sorting/supply/qm_office, /turf/open/floor/wood, /area/station/cargo/office) +"cFk" = ( +/obj/structure/cable, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "cFs" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/structure/cable, @@ -7696,12 +7850,17 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) -"cGX" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/structure/reagent_dispensers/wall/peppertank/directional/north, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) +"cHd" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/bed/dogbed/mcgriff{ + name = "Beepsky's bed"; + desc = "Beepsky's bed, because even crimefighters sometimes need a nap." + }, +/obj/item/pillow, +/turf/open/floor/iron/dark/small, +/area/station/security/mechbay) "cHh" = ( /obj/effect/turf_decal/tile/dark_green/full, /obj/machinery/holopad, @@ -7712,6 +7871,10 @@ /obj/effect/spawner/random/trash/moisture_trap, /turf/open/water/jungle/biodome, /area/station/maintenance/fore/greater) +"cHn" = ( +/obj/structure/sign/departments/botany/directional/north, +/turf/open/floor/grass, +/area/station/biodome/fore) "cHp" = ( /obj/structure/disposalpipe/trunk/multiz/down{ dir = 8 @@ -7742,13 +7905,6 @@ /obj/effect/spawner/random/structure/chair_maintenance, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"cHN" = ( -/obj/machinery/restaurant_portal/bar, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "cHU" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 @@ -7854,6 +8010,14 @@ /obj/effect/turf_decal/siding/dark, /turf/open/floor/iron, /area/station/security/prison) +"cJG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "cJN" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, @@ -7879,11 +8043,6 @@ /obj/effect/turf_decal/tile/green/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/virology) -"cJX" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "cJZ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7909,10 +8068,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"cKp" = ( -/obj/effect/spawner/random/structure/grille, -/turf/open/floor/grass, -/area/station/biodome/aft) "cKv" = ( /obj/structure/stairs/wood, /obj/structure/railing{ @@ -7935,6 +8090,13 @@ }, /turf/open/floor/iron/smooth_half, /area/station/security/brig) +"cKX" = ( +/obj/effect/turf_decal/trimline/dark_blue/arrow_cw{ + dir = 10 + }, +/obj/effect/spawner/random/engineering/tracking_beacon, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "cLd" = ( /obj/structure/chair/office/light{ dir = 8 @@ -8194,6 +8356,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/commons/fitness) +"cPM" = ( +/obj/structure/sign/directions/dorms/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "cPP" = ( /obj/effect/turf_decal/siding/dark{ dir = 8 @@ -8237,17 +8403,30 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/science/research) -"cQY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/smooth_large, -/area/station/security/brig) "cRc" = ( /obj/structure/sign/calendar/directional/south, /obj/machinery/vending/wardrobe/det_wardrobe, /turf/open/floor/carpet, /area/station/security/detectives_office) +"cRp" = ( +/obj/machinery/smartfridge, +/obj/machinery/door/firedoor, +/turf/open/floor/stone, +/area/station/service/hydroponics) +"cRs" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) +"cRA" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "cRL" = ( /obj/machinery/status_display/evac/directional/south, /obj/machinery/holopad, @@ -8317,6 +8496,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"cSI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/biodome/fore) "cTq" = ( /obj/machinery/door/firedoor/border_only{ dir = 4 @@ -8332,15 +8517,6 @@ "cTA" = ( /turf/open/floor/wood/large, /area/station/commons/lounge) -"cTB" = ( -/obj/structure/table, -/obj/item/assembly/timer, -/obj/item/restraints/handcuffs, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/security/office) "cTF" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/plating, @@ -8435,6 +8611,10 @@ /obj/structure/stone_tile/cracked, /turf/open/floor/plating, /area/station/cargo/miningdock) +"cVo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/stone, +/area/station/biodome/aft) "cVq" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/binary/pump{ @@ -8618,17 +8798,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/grass, /area/station/service/hydroponics/garden) -"cZo" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) -"cZt" = ( -/obj/structure/railing{ - dir = 10 - }, -/turf/open/openspace, -/area/station/hallway/primary/aft) "cZA" = ( /obj/structure/destructible/cult/item_dispenser/archives/library, /obj/item/book/codex_gigas, @@ -8656,9 +8825,13 @@ /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/floor/plating, /area/station/maintenance/port/central) -"dae" = ( -/obj/machinery/smartfridge, -/turf/open/floor/stone, +"dad" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/structure/railing, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/iron/white/smooth_large, /area/station/service/hydroponics) "dah" = ( /obj/structure/cable, @@ -8789,6 +8962,17 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"dcj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Engineering External Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "dct" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -8960,10 +9144,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"dfu" = ( -/obj/structure/sign/poster/official/moth_hardhat, -/turf/closed/wall/mineral/wood, -/area/station/biodome) "dfx" = ( /obj/machinery/smartfridge/extract/preloaded, /turf/open/floor/iron, @@ -8997,16 +9177,6 @@ /obj/effect/spawner/random/trash/mopbucket, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"dfO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/transit_tube) -"dgb" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 4 - }, -/area/station/engineering/transit_tube) "dgf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9017,13 +9187,6 @@ }, /turf/open/floor/iron/dark/smooth_half, /area/station/security/office) -"dgl" = ( -/obj/machinery/light/floor, -/obj/machinery/camera/directional/east{ - c_tag = "Cargo - Warehouse" - }, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "dgz" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1; @@ -9073,15 +9236,6 @@ dir = 4 }, /area/station/biodome) -"dhs" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/light/directional/west, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/security/brig) "dht" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/iron, @@ -9179,6 +9333,19 @@ /obj/structure/bookcase/random, /turf/open/floor/iron, /area/station/security/prison) +"dje" = ( +/obj/machinery/door/airlock/hydroponics{ + name = "Hydroponics" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/effect/landmark/navigate_destination/hydro, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/stone, +/area/station/service/hydroponics) "djt" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -9186,12 +9353,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/commons/storage/emergency/starboard) -"dju" = ( -/obj/machinery/holopad, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "djE" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -9220,16 +9381,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"djQ" = ( -/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 = 10 - }, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) "dka" = ( /obj/effect/turf_decal/tile/yellow/diagonal_edge, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -9328,13 +9479,6 @@ /obj/structure/chair/sofa/bench/solo, /turf/open/floor/iron/dark, /area/station/hallway/primary/starboard) -"dmh" = ( -/obj/item/bouquet/sunflower, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "dmn" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -9378,6 +9522,12 @@ /obj/structure/transit_tube/crossing, /turf/open/floor/plating/airless, /area/space/nearstation) +"dnd" = ( +/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/primary/central/aft) "dng" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -9414,9 +9564,6 @@ /obj/structure/railing, /turf/open/openspace, /area/station/biodome/fore) -"dnJ" = ( -/turf/open/floor/carpet/executive, -/area/station/commons/locker) "dnM" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9429,13 +9576,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/glass/reinforced, /area/station/security/lockers) -"dod" = ( -/obj/structure/cable, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/supply) "doi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9470,6 +9610,19 @@ "doz" = ( /turf/closed/wall/r_wall, /area/station/science/breakroom) +"doA" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Gas to Chamber" + }, +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, +/obj/effect/mapping_helpers/airalarm/engine_access, +/obj/effect/mapping_helpers/airalarm/link{ + chamber_id = "engine" + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "doI" = ( /obj/machinery/status_display/evac/directional/north, /obj/machinery/light/directional/north, @@ -9492,6 +9645,23 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) +"dpt" = ( +/obj/machinery/status_display/evac/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) +"dpD" = ( +/obj/structure/closet/bombcloset, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/white, +/area/station/science/ordnance) "dpE" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/flora/bush/lavendergrass/style_random, @@ -9554,13 +9724,6 @@ }, /turf/open/floor/wood/large, /area/station/cargo/miningdock) -"dqI" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/machinery/light/small/directional/north, -/turf/open/openspace, -/area/station/maintenance/port/greater) "dqM" = ( /obj/effect/turf_decal/bot, /obj/effect/landmark/event_spawn, @@ -9653,17 +9816,6 @@ /obj/item/clothing/suit/leatherapron, /turf/open/floor/stone, /area/station/maintenance/department/cargo) -"dss" = ( -/obj/structure/table, -/obj/item/radio/off, -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron/checker{ - dir = 1 - }, -/area/station/security/office) "dsy" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -9855,6 +10007,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"dvy" = ( +/obj/machinery/gulag_item_reclaimer{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/processing) "dvD" = ( /obj/machinery/atmospherics/pipe/bridge_pipe/green/visible{ dir = 4 @@ -9886,10 +10046,6 @@ }, /turf/open/floor/grass, /area/station/biodome/fore) -"dwf" = ( -/obj/structure/railing, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "dwk" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -9937,6 +10093,18 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/commons/dorms) +"dxc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/table/wood/fancy/cyan, +/obj/machinery/recharger{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/storage/fancy/donut_box{ + pixel_y = 16 + }, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "dxp" = ( /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/plating, @@ -10008,6 +10176,18 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/tcommsat/computer) +"dyA" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/right/directional/north{ + name = "Kitchen Desk"; + req_access = list("hydroponics") + }, +/obj/machinery/door/window/right/directional/south{ + name = "Kitchen Desk"; + req_access = list("kitchen") + }, +/turf/open/floor/wood/large, +/area/station/service/kitchen/coldroom) "dyL" = ( /obj/machinery/firealarm/directional/east, /turf/open/floor/wood/large, @@ -10142,6 +10322,12 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/hos) +"dAX" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "dBh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10175,15 +10361,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"dBz" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/analyzer, -/obj/item/pipe_dispenser, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) "dBC" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -10323,6 +10500,24 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron/smooth_half, /area/station/security/warden) +"dEC" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Civilian - Mining Base and Garden Junction" + }, +/obj/structure/sign/directions/science/directional/north{ + dir = 4; + pixel_y = 35 + }, +/obj/structure/sign/directions/evac/directional/north{ + dir = 4; + pixel_y = 28 + }, +/obj/structure/sign/directions/supply/directional/north{ + dir = 4; + pixel_y = 21 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "dEH" = ( /obj/effect/spawner/random/bureaucracy/paper, /turf/open/misc/asteroid/airless, @@ -10361,13 +10556,6 @@ /obj/structure/cable, /turf/open/space/basic, /area/station/solars/port/aft) -"dFm" = ( -/obj/item/toy/plush/beeplushie, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "dFr" = ( /obj/structure/table, /obj/effect/turf_decal/tile/dark_green/full, @@ -10422,6 +10610,18 @@ /obj/machinery/door/firedoor, /turf/open/floor/wood/large, /area/station/commons/storage/primary) +"dGk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering - Supermatter Starboard"; + network = list("ss13","engine") + }, +/obj/structure/sign/warning/fire/directional/west, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "dGl" = ( /obj/effect/turf_decal/trimline/red/real_red/line{ dir = 4 @@ -10451,13 +10651,6 @@ /obj/effect/turf_decal/stripes/asteroid/line, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"dGy" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Gas to Cold Loop" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "dGD" = ( /obj/structure/table, /obj/item/stamp{ @@ -10470,19 +10663,6 @@ }, /turf/open/floor/carpet, /area/station/cargo/office) -"dGE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/camera/directional/west{ - c_tag = "Engineering - Supermatter Starboard"; - network = list("ss13","engine") - }, -/obj/structure/sign/warning/fire/directional/west, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "dGI" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -10750,6 +10930,13 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"dLP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable/layer1, +/turf/open/floor/iron, +/area/station/engineering/engine_smes) "dMg" = ( /obj/machinery/ore_silo, /turf/open/floor/circuit/green{ @@ -10832,6 +11019,10 @@ /obj/machinery/deepfryer, /turf/open/floor/iron/white, /area/station/service/kitchen) +"dNv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/station/cargo/miningdock) "dNw" = ( /obj/item/stack/rods/fifty, /obj/structure/rack, @@ -10908,6 +11099,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/service/barber) +"dOX" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "dPe" = ( /obj/structure/toilet{ dir = 4 @@ -10966,14 +11162,10 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"dQi" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/dark_green/corner, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) +"dQq" = ( +/obj/machinery/rnd/experimentor, +/turf/open/floor/engine, +/area/station/science/circuits) "dQs" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -10985,6 +11177,31 @@ /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plating, /area/station/service/janitor) +"dQx" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/smooth_large, +/area/station/security/brig) +"dQE" = ( +/obj/structure/sign/directions/command/directional/south{ + dir = 4; + pixel_y = -28 + }, +/turf/open/water/jungle/biodome, +/area/station/biodome/aft) "dQH" = ( /turf/closed/wall/r_wall, /area/station/engineering/transit_tube) @@ -11132,6 +11349,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"dSr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/table/wood, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "dSG" = ( /obj/structure/sign/poster/random/directional/east, /obj/effect/spawner/structure/window, @@ -11160,12 +11384,6 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/reinforced, /area/station/maintenance/central/greater) -"dTc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/fore) "dTo" = ( /obj/structure/railing{ dir = 4 @@ -11665,19 +11883,6 @@ /obj/structure/closet/secure_closet/freezer/kitchen, /turf/open/floor/iron/white, /area/station/service/kitchen) -"ebO" = ( -/obj/structure/table, -/obj/item/storage/box/hug{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/razor{ - pixel_x = -8; - pixel_y = 3 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron, -/area/station/security/processing) "ebT" = ( /obj/item/stack/sheet/iron/five, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -11719,6 +11924,13 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"ecs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "ecB" = ( /obj/effect/turf_decal/weather/dirt{ dir = 10 @@ -11735,11 +11947,6 @@ }, /turf/open/water/jungle/biodome, /area/station/biodome) -"ecV" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "edg" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -11770,6 +11977,13 @@ /obj/structure/hedge, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"edu" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/customs_agent, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/supply) "edA" = ( /obj/structure/closet/boxinggloves, /obj/effect/landmark/start/hangover/closet, @@ -11882,17 +12096,20 @@ }, /turf/open/floor/iron/dark, /area/station/medical/cryo) -"efu" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "efI" = ( /obj/effect/spawner/random/structure/table, /obj/machinery/microwave, /turf/open/floor/plating, /area/station/asteroid) +"ege" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/smooth_large, +/area/station/security/brig) "egm" = ( /turf/closed/wall, /area/station/security/office) @@ -11914,13 +12131,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/engineering/atmos) -"egz" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/station/service/hydroponics) "egJ" = ( /obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay" @@ -11949,6 +12159,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/central) +"ehE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/biodome/fore) "ehR" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/plating, @@ -12006,13 +12222,6 @@ "eiw" = ( /turf/open/floor/bamboo/tatami, /area/station/hallway/secondary/service) -"eiO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 9 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "ejf" = ( /turf/open/floor/iron/white, /area/station/medical/virology) @@ -12140,17 +12349,15 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/science/research) -"emt" = ( -/obj/machinery/gulag_item_reclaimer{ - pixel_y = 32 - }, -/turf/open/floor/iron, -/area/station/security/processing) "emA" = ( /obj/machinery/light/directional/south, /obj/machinery/airalarm/directional/south, /turf/open/floor/carpet/donk, /area/station/security/prison/mess) +"emG" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/stone, +/area/station/biodome/aft) "end" = ( /obj/structure/railing, /obj/structure/table, @@ -12210,11 +12417,11 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/science/xenobiology) -"enR" = ( -/obj/structure/chair/sofa/bamboo/right{ - dir = 1 - }, -/turf/open/floor/grass, +"enu" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/wood/large, /area/station/biodome/aft) "enS" = ( /obj/structure/table, @@ -12302,6 +12509,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/locker) +"epa" = ( +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/turf/open/floor/iron/checker{ + dir = 1 + }, +/area/station/security/office) "epk" = ( /obj/effect/spawner/random/engineering/material_cheap, /turf/open/floor/stone, @@ -12400,18 +12617,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/tcommsat/computer) -"erU" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4; - name = "sorting disposal pipe (Hydroponics)" - }, -/obj/effect/mapping_helpers/mail_sorting/service/hydroponics, -/obj/machinery/duct, -/turf/open/floor/stone, -/area/station/biodome/fore) "esq" = ( /obj/structure/table, /obj/item/training_toolbox, @@ -12540,12 +12745,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/freezer, /area/station/commons/toilet/auxiliary) -"etY" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/computer/security/telescreen/entertainment/directional/south, -/obj/effect/landmark/start/hangover, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "eud" = ( /obj/effect/turf_decal/siding/wideplating_new{ dir = 10 @@ -12596,6 +12795,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/command/gateway) +"evb" = ( +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/misc/asteroid/dug{ + initial_gas_mix = "TEMP=2.7" + }, +/area/station/asteroid) "eve" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -12725,6 +12930,15 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"exy" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "exH" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/bot{ @@ -12815,11 +13029,6 @@ /obj/structure/flora/bush/large/style_random, /turf/open/floor/grass, /area/station/biodome/fore) -"eyK" = ( -/obj/machinery/atmospherics/components/unary/passive_vent/layer2, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "eyX" = ( /obj/machinery/mineral/ore_redemption{ input_dir = 2; @@ -12837,6 +13046,21 @@ /obj/structure/chair/stool/bar/directional/north, /turf/open/floor/iron, /area/station/security/prison) +"ezl" = ( +/obj/structure/reflector/single/anchored{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) +"ezo" = ( +/obj/effect/landmark/navigate_destination/library, +/obj/machinery/door/airlock/wood{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "ezD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -12893,26 +13117,11 @@ /obj/item/food/grown/ash_flora/mushroom_cap, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"eAH" = ( -/obj/machinery/computer/warrant{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/interrogation, -/turf/open/floor/wood, -/area/station/security/brig) "eAT" = ( /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/ordnance) -"eAU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "eBf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -13079,28 +13288,10 @@ }, /turf/open/floor/iron, /area/station/science/research) -"eEl" = ( -/obj/machinery/modular_computer/preset/cargochat/security{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "eEI" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/bamboo, /area/station/maintenance/starboard/central) -"eEK" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Service - Service Hall" - }, -/obj/machinery/light_switch/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) "eEL" = ( /obj/structure/flora/rock/pile, /obj/machinery/light/small/directional/south, @@ -13239,6 +13430,10 @@ /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, /area/station/service/theater) +"eGv" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "eGw" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -13279,21 +13474,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/xenobiology) -"eHg" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/loading_area/white, -/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/science/research) -"eHk" = ( -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) "eHm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -13531,14 +13711,6 @@ }, /turf/open/floor/iron, /area/station/science/research) -"eKw" = ( -/obj/effect/landmark/start/depsec/medical, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/medical) "eKy" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 5 @@ -13574,6 +13746,10 @@ /obj/item/circular_saw, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) +"eLb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/stone, +/area/station/biodome/aft) "eLn" = ( /obj/machinery/atmospherics/pipe/multiz/violet/visible{ dir = 8 @@ -13714,6 +13890,17 @@ "eNd" = ( /turf/closed/wall/r_wall/fakewood, /area/station/tcommsat/server) +"eNg" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating_new/terracotta, +/obj/effect/landmark/navigate_destination/engineering, +/turf/open/floor/iron/terracotta, +/area/station/hallway/primary/aft) "eNi" = ( /obj/structure/table/glass, /obj/machinery/fax{ @@ -13745,11 +13932,6 @@ }, /turf/open/floor/wood, /area/station/cargo/lobby) -"eNE" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "eNO" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 5 @@ -13786,6 +13968,10 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) +"eOA" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/plating, +/area/station/maintenance/aft/upper) "eOC" = ( /obj/item/soulstone/anybody/chaplain, /obj/item/book/granter/action/spell/smoke/lesser{ @@ -13899,6 +14085,11 @@ }, /turf/open/floor/iron/herringbone, /area/station/service/chapel) +"ePO" = ( +/obj/structure/closet/radiation, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "ePP" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -13959,13 +14150,14 @@ /obj/structure/marker_beacon/purple, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"eQy" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 5 +"eQF" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/contraband/blood_geometer/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "eQG" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 6 @@ -13983,13 +14175,6 @@ /obj/structure/chair/plastic, /turf/open/floor/carpet/green, /area/station/command/heads_quarters/nt_rep) -"eRd" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 10 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "eRj" = ( /obj/item/taperecorder, /obj/structure/table/wood, @@ -14042,6 +14227,12 @@ /obj/structure/ladder, /turf/open/floor/iron/smooth, /area/station/maintenance/department/crew_quarters/bar) +"eRt" = ( +/obj/structure/table, +/obj/item/electropack, +/obj/item/assembly/signaler, +/turf/open/floor/iron, +/area/station/security/processing) "eRw" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -14075,6 +14266,13 @@ /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2, /turf/open/floor/plating, /area/station/hallway/primary/central/fore) +"eRW" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "eSd" = ( /obj/structure/flora/bush/jungle/b/style_random, /obj/machinery/camera/directional/north{ @@ -14160,11 +14358,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/wood, /area/station/command/heads_quarters/nt_rep) -"eTO" = ( -/obj/machinery/smartfridge, -/obj/machinery/door/firedoor, -/turf/open/floor/plating/rust, -/area/station/hallway/secondary/service) "eTQ" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -14234,10 +14427,10 @@ /obj/effect/spawner/random/food_or_drink/seed_rare, /turf/open/misc/asteroid, /area/station/maintenance/central/greater) -"eVG" = ( -/obj/machinery/status_display/evac/directional/north, -/turf/open/floor/grass, -/area/station/biodome/fore) +"eWf" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/room) "eWk" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -14429,6 +14622,15 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron, /area/station/science/genetics) +"eZn" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/landmark/start/customs_agent, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/supply) "eZx" = ( /obj/structure/chair/office/light{ dir = 4 @@ -14473,10 +14675,6 @@ }, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"eZQ" = ( -/obj/structure/cable, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "eZU" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -14550,16 +14748,6 @@ /obj/effect/landmark/navigate_destination/autoname, /turf/open/floor/stone, /area/station/cargo/blacksmith) -"faL" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/structure/sign/directions/command/directional/south{ - dir = 4; - pixel_y = -28 - }, -/turf/open/water/jungle/biodome, -/area/station/biodome/aft) "faO" = ( /obj/machinery/light/directional/north, /obj/structure/chair/sofa/bamboo/right, @@ -14749,6 +14937,11 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/station/maintenance/department/electrical) +"fen" = ( +/obj/machinery/computer/order_console/mining, +/obj/machinery/light/directional/south, +/turf/open/floor/wood/large, +/area/station/cargo/miningdock) "fev" = ( /obj/structure/railing/corner{ dir = 4 @@ -14823,12 +15016,6 @@ /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating/foam, /area/station/maintenance/aft/upper) -"ffO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/aft) "fgk" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -14842,17 +15029,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"fgL" = ( -/obj/machinery/door/airlock/external{ - name = "External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/minisat, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/transit_tube) "fgO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14896,11 +15072,17 @@ /obj/item/kirbyplants/random, /turf/open/floor/carpet/purple, /area/station/security/prison/work) -"fhN" = ( -/obj/machinery/vending/autodrobe, -/obj/effect/turf_decal/tile/neutral/half, -/turf/open/floor/iron, -/area/station/commons/locker) +"fhH" = ( +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/computer/warrant{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "fhR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14996,12 +15178,6 @@ }, /turf/open/floor/carpet/neon/simple/red, /area/station/commons/dorms) -"fjh" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "fjm" = ( /obj/structure/chair/office{ dir = 1 @@ -15018,6 +15194,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"fjD" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/structure/window/spawner/directional/north, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "fjN" = ( /obj/item/radio/intercom/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -15209,6 +15390,13 @@ /obj/structure/marker_beacon/burgundy, /turf/open/misc/asteroid/airless, /area/station/asteroid) +"fnY" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/maintenance, +/obj/item/screwdriver, +/obj/item/crowbar, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) "fnZ" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/open/space, @@ -15446,13 +15634,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) -"frT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/transit_tube, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) "frU" = ( /obj/structure/bookcase/random/fiction, /obj/effect/turf_decal/siding/wood{ @@ -15567,6 +15748,11 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/break_room) +"ftA" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "ftG" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -15683,6 +15869,11 @@ }, /turf/open/floor/iron, /area/station/science/circuits) +"fvl" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/floor, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "fvp" = ( /obj/effect/spawner/random/trash/grime, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -15761,23 +15952,21 @@ "fwM" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/security/armory) -"fwY" = ( -/obj/structure/railing{ +"fwT" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/airalarm/directional/north, +/obj/machinery/light/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "fxf" = ( /obj/structure/lattice/catwalk, /turf/open/space/openspace, /area/space/nearstation) -"fxi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 4 - }, -/obj/structure/closet/radiation, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) "fxn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -15818,6 +16007,14 @@ }, /turf/open/floor/wood/large, /area/station/commons/storage/primary) +"fyB" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "fyH" = ( /obj/machinery/camera/directional/east{ c_tag = "Biodome - Aft Lake" @@ -15977,6 +16174,14 @@ }, /turf/open/floor/iron/terracotta, /area/station/hallway/secondary/construction/engineering) +"fAQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "fAY" = ( /turf/closed/wall/r_wall/fakewood, /area/station/command/heads_quarters/hop) @@ -16025,6 +16230,14 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood/large, /area/station/hallway/primary/aft) +"fBt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/stone, +/area/station/biodome/fore) "fBz" = ( /obj/machinery/vending/wardrobe/sec_wardrobe/red, /turf/open/floor/iron/smooth_half, @@ -16070,6 +16283,26 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) +"fCH" = ( +/obj/structure/table, +/obj/item/storage/box/beakers{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = -8 + }, +/obj/item/grenade/chem_grenade{ + pixel_x = -8 + }, +/obj/machinery/light/directional/north, +/obj/machinery/button/door{ + id = "experilab"; + name = "Chamber Shutters"; + pixel_x = 7 + }, +/turf/open/floor/iron, +/area/station/science/circuits) "fCL" = ( /obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -16151,6 +16384,17 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/service/hydroponics) +"fEO" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + name = "sorting disposal pipe (Hydroponics)" + }, +/obj/machinery/duct, +/turf/open/floor/stone, +/area/station/biodome/fore) "fEU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -16237,11 +16481,6 @@ /obj/item/chair/stool, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"fGr" = ( -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/warehouse) "fGu" = ( /obj/machinery/holopad, /obj/structure/cable, @@ -16309,17 +16548,6 @@ }, /turf/open/floor/iron/white/smooth_corner, /area/station/science/robotics/lab) -"fIL" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/obj/structure/flora/rock/pile/jungle/style_random, -/obj/item/food/grown/potato/sweet{ - desc = "Ooooooooough."; - name = "Yam" - }, -/turf/open/water/jungle/biodome, -/area/station/biodome/aft) "fIP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply, /turf/open/floor/plating, @@ -16362,23 +16590,10 @@ "fJC" = ( /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"fJF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/fore) "fJL" = ( /obj/machinery/light_switch/directional/east, /turf/open/floor/plating, /area/station/engineering/storage/tech) -"fJO" = ( -/obj/structure/table, -/obj/item/shovel, -/obj/item/storage/box/emptysandbags, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "fJZ" = ( /obj/structure/railing{ dir = 4 @@ -16436,15 +16651,6 @@ }, /turf/closed/wall/r_wall, /area/station/science/ordnance/burnchamber) -"fLq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "fLr" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/disposalpipe/trunk{ @@ -16458,6 +16664,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) +"fLA" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/turf/open/floor/plating, +/area/station/biodome/fore) "fLO" = ( /obj/structure/closet/athletic_mixed, /obj/effect/landmark/start/hangover/closet, @@ -16487,10 +16700,6 @@ /obj/structure/chair/sofa/bench/left, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"fLX" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "fMa" = ( /obj/structure/chair/plastic{ dir = 4 @@ -16649,6 +16858,17 @@ /obj/machinery/vending/wardrobe/sec_wardrobe, /turf/open/floor/iron, /area/station/security/checkpoint/customs) +"fOl" = ( +/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/mail_sorting/service/hydroponics, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + name = "sorting disposal pipe (Hydroponics)" + }, +/turf/open/floor/stone, +/area/station/biodome/fore) "fOn" = ( /obj/effect/turf_decal/siding/dark{ dir = 1 @@ -16806,6 +17026,16 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) +"fQi" = ( +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/window{ + id = "secmechbay"; + name = "Security Mech Bay Shutters" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured_large, +/area/station/security/mechbay) "fQl" = ( /obj/machinery/camera/directional/north{ c_tag = "Hallway - Zoo Starboard" @@ -16887,11 +17117,6 @@ /obj/item/wirecutters, /turf/open/floor/plating, /area/station/construction) -"fRK" = ( -/obj/structure/beebox, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/grass, -/area/station/service/hydroponics) "fRR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -16944,6 +17169,15 @@ }, /turf/open/floor/stone, /area/station/biodome/fore) +"fSh" = ( +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) +"fSp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/stone, +/area/station/biodome) "fSu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -17064,6 +17298,13 @@ }, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"fUh" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/landmark/start/bouncer, +/turf/open/floor/bamboo/tatami/black{ + dir = 4 + }, +/area/station/service/bar) "fUq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17133,18 +17374,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/glass, /area/station/maintenance/port/greater) +"fVn" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "fVv" = ( /obj/machinery/recharge_station, /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/foyer) -"fVB" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood, -/area/station/service/lawoffice) "fVD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17185,16 +17428,6 @@ }, /turf/open/floor/iron, /area/station/engineering/engine_smes) -"fVU" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/delivery, -/obj/structure/mirror/directional/west, -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/security/brig) "fWa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -17246,10 +17479,13 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"fWD" = ( -/obj/machinery/power/floodlight, -/turf/open/floor/grass, -/area/station/biodome/aft) +"fWA" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 1 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plating, +/area/station/security/mechbay) "fWF" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -17348,6 +17584,14 @@ }, /turf/open/floor/iron/dark, /area/station/command/teleporter) +"fYp" = ( +/obj/machinery/door/poddoor/shutters/radiation/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/structure/cable/layer1, +/turf/open/floor/plating, +/area/station/engineering/supermatter) "fYr" = ( /obj/structure/railing{ dir = 9 @@ -17441,6 +17685,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/storage) +"fZB" = ( +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) "fZS" = ( /obj/effect/spawner/random/structure/table_or_rack, /obj/item/food/hotdog, @@ -17549,11 +17800,6 @@ }, /turf/open/floor/carpet/blue, /area/station/security/prison) -"gbK" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "gbY" = ( /obj/structure/railing/corner{ dir = 1 @@ -17561,10 +17807,29 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science) +"gch" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "gcl" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"gcs" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters and Consultant's Office" + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/turf/open/floor/wood, +/area/station/command/bridge) "gct" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ dir = 9 @@ -17727,16 +17992,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay/lobby) -"gfL" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 +"gfN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 }, -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/trimline/red/filled/mid_joiner, -/turf/open/floor/iron/smooth_half, -/area/station/security/brig) +/obj/effect/turf_decal/siding/dark_green{ + dir = 4 + }, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "gfQ" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -17750,6 +18014,12 @@ /obj/structure/sign/clock/directional/west, /turf/open/floor/grass, /area/station/security/courtroom) +"gfW" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/table, +/obj/machinery/coffeemaker, +/turf/open/floor/iron/smooth_large, +/area/station/security/brig) "gfX" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer2{ dir = 8 @@ -17757,6 +18027,10 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron/white, /area/station/science/ordnance) +"gfY" = ( +/obj/effect/turf_decal/tile/blue, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "gga" = ( /obj/structure/showcase/machinery/tv/broken, /turf/open/misc/asteroid/airless, @@ -17859,15 +18133,6 @@ }, /turf/open/floor/plating, /area/station/command/heads_quarters/nt_rep) -"gif" = ( -/obj/structure/cable/layer3, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) "gig" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -17882,10 +18147,6 @@ /obj/machinery/vending/wallmed/directional/west, /turf/open/openspace, /area/station/medical/medbay/central) -"giG" = ( -/obj/item/stack/rods/twentyfive, -/turf/open/floor/grass, -/area/station/biodome/aft) "giK" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -17944,6 +18205,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"gjN" = ( +/obj/structure/chair/sofa/bamboo/left{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/biodome/aft) "gjU" = ( /obj/machinery/duct, /turf/open/floor/plating, @@ -17959,6 +18226,22 @@ /obj/structure/floodlight_frame, /turf/open/floor/engine/hull, /area/station/asteroid) +"gkr" = ( +/obj/structure/sign/directions/security/directional/south{ + pixel_y = -35 + }, +/obj/structure/sign/directions/medical/directional/south{ + pixel_y = -28 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = -21 + }, +/obj/effect/turf_decal/trimline/blue/arrow_ccw, +/obj/effect/turf_decal/trimline/red/real_red/arrow_cw{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/service/chapel) "gkC" = ( /obj/structure/table, /obj/item/surgical_drapes, @@ -18189,6 +18472,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/stone, /area/station/maintenance/department/security/brig) +"goY" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/grass, +/area/station/biodome/aft) "gpa" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18204,6 +18491,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/station/hallway/primary/aft) +"gpk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/plating, +/area/station/engineering/storage) "gpp" = ( /obj/machinery/door/window/left/directional/south{ name = "Gateway Chamber"; @@ -18219,6 +18512,18 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) +"gpA" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"gpD" = ( +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "gpL" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18259,6 +18564,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"gqx" = ( +/obj/structure/chair/comfy/brown, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "gqA" = ( /obj/structure/broken_flooring/singular/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18286,16 +18595,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/science/cytology) -"gqX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/landmark/start/depsec/engineering, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) "gqY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -18404,13 +18703,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"gsG" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 1 +"gsH" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 24; + name = "SS13: Auxiliary Dock, Station-Port"; + shuttle_id = "whiteship_home"; + width = 35 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/space/openspace, +/area/space) "gsS" = ( /obj/effect/turf_decal/trimline/purple/arrow_ccw, /obj/effect/turf_decal/trimline/red/arrow_cw{ @@ -18461,14 +18764,6 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"gtH" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix Bypass" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "gtN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, @@ -18552,6 +18847,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) +"guD" = ( +/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, +/obj/machinery/duct, +/obj/machinery/light/directional/south, +/turf/open/floor/stone, +/area/station/biodome/fore) "guG" = ( /obj/machinery/door/airlock/hatch{ name = "Morgue" @@ -18676,12 +18982,11 @@ /obj/structure/flora/bush/jungle/c/style_random, /turf/open/floor/grass, /area/station/biodome/fore) -"gwP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome) +"gxa" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "gxh" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -18699,12 +19004,6 @@ }, /turf/open/floor/iron, /area/station/command/bridge) -"gxn" = ( -/obj/structure/railing{ - dir = 9 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "gxo" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -18742,6 +19041,13 @@ /obj/vehicle/sealed/mecha/ripley/cargo, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"gxW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/processing) "gyb" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18751,14 +19057,6 @@ "gyj" = ( /turf/open/floor/iron, /area/station/security/office) -"gym" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "gyq" = ( /obj/structure/closet/firecloset, /turf/open/floor/iron/terracotta, @@ -19058,6 +19356,18 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"gDO" = ( +/obj/machinery/door/airlock/external{ + name = "External Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + 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/engineering/transit_tube) "gDP" = ( /obj/structure/table, /obj/item/aicard, @@ -19141,6 +19451,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/commons/lounge) +"gEZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/landmark/navigate_destination/autoname, +/turf/open/floor/iron, +/area/station/commons/locker) "gFa" = ( /obj/structure/chair/pew/left, /obj/effect/turf_decal/siding/dark{ @@ -19150,6 +19465,13 @@ dir = 1 }, /area/station/service/chapel) +"gFj" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/service/hydroponics/garden) "gFC" = ( /obj/structure/railing{ dir = 1 @@ -19337,6 +19659,11 @@ /obj/effect/turf_decal/tile/dark_green/opposingcorners, /turf/open/floor/iron/white, /area/station/service/kitchen) +"gIP" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon/burgundy, +/turf/open/space/openspace, +/area/space/nearstation) "gIS" = ( /obj/effect/turf_decal/sand/plating, /turf/closed/wall, @@ -19419,10 +19746,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"gKH" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/wood, -/area/station/maintenance/fore/greater) "gKL" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 4; @@ -19514,6 +19837,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"gMz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/biodome/fore) "gMF" = ( /obj/machinery/computer/records/medical, /turf/open/floor/iron/white/smooth_large, @@ -19534,13 +19864,6 @@ /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"gNo" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) "gNu" = ( /obj/structure/table/reinforced, /obj/item/storage/medkit/brute{ @@ -19661,6 +19984,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"gPQ" = ( +/obj/machinery/light/small/directional/north, +/turf/open/openspace, +/area/station/maintenance/port/greater) "gPT" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 10 @@ -19740,6 +20067,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/large, /area/station/cargo/miningdock) +"gQK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/biodome/fore) "gQU" = ( /obj/machinery/modular_computer/preset/id, /obj/effect/turf_decal/tile/purple/half/contrasted{ @@ -19751,11 +20084,13 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/security/prison/safe) -"gQY" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner, -/turf/open/openspace, -/area/station/service/hydroponics/garden) +"gRd" = ( +/obj/structure/closet/secure_closet/tac{ + req_access = list("captain") + }, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "gRe" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/reinforced, @@ -19783,6 +20118,12 @@ "gRq" = ( /turf/closed/wall/r_wall, /area/station/engineering/atmos/mix) +"gRz" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/newscaster/directional/south, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "gRD" = ( /turf/open/floor/iron/dark, /area/station/command/bridge) @@ -19843,6 +20184,10 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"gSk" = ( +/obj/structure/chair/stool/directional/west, +/turf/open/floor/iron/dark/small, +/area/station/security/mechbay) "gSn" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /obj/effect/turf_decal/siding/dark{ @@ -19946,6 +20291,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"gUE" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/water/jungle/biodome, +/area/station/biodome/aft) "gVj" = ( /obj/item/storage/toolbox/mechanical{ pixel_x = -2; @@ -20005,6 +20357,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/red, /area/station/service/theater) +"gVV" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "gWm" = ( /obj/structure/transit_tube/horizontal, /obj/structure/lattice, @@ -20024,6 +20381,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"gWJ" = ( +/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/stone, +/area/station/biodome/aft) "gXk" = ( /obj/effect/turf_decal/sand/plating, /obj/item/clothing/gloves/color/plasmaman/radio, @@ -20286,6 +20652,12 @@ /obj/machinery/light/warm/directional/west, /turf/open/floor/grass, /area/station/biodome/aft) +"hbG" = ( +/obj/effect/turf_decal/siding/dark, +/obj/machinery/recharge_station, +/obj/machinery/computer/cryopod/directional/north, +/turf/open/floor/iron, +/area/station/security/prison) "hbH" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue/opposingcorners, @@ -20324,6 +20696,23 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"hcD" = ( +/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/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/radio/off, +/obj/item/pen, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "hcN" = ( /obj/machinery/camera/motion/directional/south{ c_tag = "Vault"; @@ -20430,6 +20819,18 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/central) +"hee" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/science_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/science) +"heh" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/wood, +/area/station/maintenance/fore/greater) "hei" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20448,6 +20849,14 @@ /obj/structure/lattice, /turf/open/openspace, /area/station/biodome/fore) +"heG" = ( +/obj/machinery/vending/wardrobe/chem_wardrobe, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/medical/chemistry) "heJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -20469,18 +20878,19 @@ /obj/effect/mapping_helpers/requests_console/assistance, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"heP" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 6 + }, +/obj/machinery/vending/dorms/prison, +/turf/open/floor/iron, +/area/station/security/prison) "heY" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/wood, /area/station/cargo/office) -"hfm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/security/processing) "hfI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20523,6 +20933,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"hgy" = ( +/obj/machinery/door/airlock/external{ + name = "External Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/minisat, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/engineering/transit_tube) "hgN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20574,17 +20996,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/grass, /area/station/science/genetics) -"hhx" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wideplating_new/terracotta, -/obj/effect/landmark/navigate_destination/atmos, -/turf/open/floor/iron/terracotta, -/area/station/hallway/primary/aft) "hhy" = ( /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible{ dir = 8 @@ -20656,6 +21067,14 @@ /obj/structure/chair/sofa/bamboo/right, /turf/open/floor/grass, /area/station/biodome/fore) +"hjn" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/machinery/gbp_redemption, +/turf/open/floor/iron, +/area/station/cargo/lobby) "hjr" = ( /turf/open/floor/bamboo/tatami/black{ dir = 8 @@ -20679,6 +21098,10 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) +"hjE" = ( +/obj/structure/sign/directions/cryo/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "hjH" = ( /obj/structure/railing{ dir = 9 @@ -20755,15 +21178,6 @@ /obj/structure/filingcabinet, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) -"hlb" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/structure/rack, -/obj/item/storage/box/evidence, -/obj/item/storage/box/evidence, -/obj/item/storage/box/evidence, -/turf/open/floor/iron, -/area/station/security/processing) "hle" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 8 @@ -20780,12 +21194,17 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"hlp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 +"hlo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/mechbay) "hlu" = ( /obj/machinery/door/poddoor/shutters{ id = "mechbay"; @@ -20797,14 +21216,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/circuit, /area/station/science/robotics/mechbay) -"hlw" = ( -/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/event_spawn, -/turf/open/floor/stone, -/area/station/biodome/aft) "hlC" = ( /obj/structure/railing{ dir = 6 @@ -20832,10 +21243,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) -"hmh" = ( -/obj/effect/turf_decal/tile/red/full, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "hml" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -20875,6 +21282,14 @@ "hmV" = ( /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"hnb" = ( +/obj/structure/filingcabinet/security, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/machinery/computer/security/telescreen/interrogation/directional/south, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "hnc" = ( /obj/machinery/light/directional/south, /obj/item/kirbyplants/random, @@ -20924,6 +21339,12 @@ /obj/structure/flora/rock/style_random, /turf/open/floor/grass, /area/station/biodome/aft) +"hnD" = ( +/obj/machinery/camera/directional/east{ + c_tag = "Cargo - Warehouse" + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "hoa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -20948,13 +21369,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"hoE" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 10 - }, -/turf/open/space/basic, -/area/space/nearstation) "hoH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21061,14 +21475,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/research) -"hqK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/wood{ - name = "Library" - }, -/obj/effect/landmark/navigate_destination/library, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "hqZ" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/dark_blue/anticorner{ @@ -21160,19 +21566,13 @@ dir = 8 }, /area/station/science/robotics/lab) -"htc" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/construction/plumbing, -/obj/item/construction/plumbing{ - pixel_y = -5 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 +"hsG" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 }, -/area/station/medical/chemistry) +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron/dark/side, +/area/station/security/mechbay) "htx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -21261,6 +21661,14 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/grass, /area/station/biodome) +"hvz" = ( +/obj/structure/table/glass, +/obj/item/storage/bag/plants/portaseeder, +/obj/item/plant_analyzer, +/obj/item/secateurs, +/obj/effect/turf_decal/siding/green, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) "hvF" = ( /obj/structure/transit_tube/curved/flipped{ dir = 1 @@ -21278,6 +21686,10 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/engineering/atmos/mix) +"hvP" = ( +/obj/structure/bookcase/random/adult, +/turf/open/floor/plating, +/area/station/service/library/lounge) "hvX" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21300,11 +21712,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/engineering/atmos) -"hwu" = ( -/obj/structure/flora/bush/jungle/a/style_random, -/obj/item/stack/rods/twentyfive, -/turf/open/floor/grass, -/area/station/biodome/fore) "hwI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -21382,12 +21789,6 @@ /obj/effect/turf_decal/trimline/red/filled/mid_joiner, /turf/open/floor/iron/smooth_half, /area/station/security/brig) -"hyg" = ( -/obj/structure/railing{ - dir = 9 - }, -/turf/open/openspace, -/area/station/hallway/primary/aft) "hyx" = ( /obj/item/shovel/spade, /turf/open/misc/asteroid/dug, @@ -21561,6 +21962,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"hCf" = ( +/obj/structure/transit_tube, +/obj/structure/lattice, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "hCI" = ( /obj/structure/flora/bush/lavendergrass/style_random, /mob/living/basic/butterfly, @@ -21579,6 +21988,13 @@ }, /turf/open/floor/plating, /area/station/engineering/engine_smes) +"hDa" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/mineral/wood, +/area/station/biodome/fore) "hDi" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -21684,21 +22100,6 @@ }, /turf/open/floor/iron/herringbone, /area/station/service/chapel/office) -"hEN" = ( -/obj/machinery/button/elevator/directional/north{ - id = "biodome_engie_lift" - }, -/obj/machinery/lift_indicator/directional/north{ - linked_elevator_id = "biodome_engie_lift" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/iron/terracotta, -/area/station/hallway/primary/aft) "hER" = ( /turf/open/misc/beach/coast/corner{ dir = 1 @@ -21794,14 +22195,6 @@ }, /turf/open/floor/carpet/black, /area/station/service/chapel/funeral) -"hGF" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/weather/dirt{ - dir = 5 - }, -/obj/machinery/light/directional/south, -/turf/open/floor/plating, -/area/station/cargo/miningdock) "hGL" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 10 @@ -21937,6 +22330,12 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/carpet, /area/station/service/chapel/funeral) +"hJd" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/space/basic, +/area/space/nearstation) "hJi" = ( /obj/machinery/status_display/evac/directional/south, /turf/open/floor/iron, @@ -22032,12 +22431,6 @@ dir = 4 }, /area/station/hallway/secondary/service) -"hLn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome) "hLq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, @@ -22089,6 +22482,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/security) +"hMn" = ( +/obj/machinery/door/airlock/hydroponics{ + name = "Hydroponics" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "hMo" = ( /obj/structure/chair/comfy/black, /obj/machinery/light_switch/directional/north, @@ -22223,6 +22624,13 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"hPS" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/obj/effect/landmark/start/hangover, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "hPX" = ( /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron/dark, @@ -22327,6 +22735,15 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"hSo" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/orderly, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) "hSy" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/red/real_red/line, @@ -22388,6 +22805,10 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) +"hTY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "hUa" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/donkpockets, @@ -22471,15 +22892,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"hUJ" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Equipment Room" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/security/brig, -/obj/structure/cable, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "hUL" = ( /turf/open/floor/wood/large, /area/station/hallway/primary/aft) @@ -22554,6 +22966,14 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"hWe" = ( +/obj/machinery/door/window/left/directional/south{ + name = "Apiary"; + req_access = list("hydroponics") + }, +/mob/living/basic/pet/bumbles, +/turf/open/floor/grass, +/area/station/service/hydroponics) "hWk" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 4 @@ -22709,6 +23129,16 @@ /obj/structure/railing, /turf/open/openspace, /area/station/biodome) +"hYD" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden, +/turf/open/floor/iron, +/area/station/engineering/storage) "hYE" = ( /obj/effect/landmark/start/assistant, /obj/effect/turf_decal/siding/wood, @@ -22777,6 +23207,23 @@ /obj/item/storage/fancy/cigarettes/dromedaryco, /turf/open/floor/plating, /area/station/maintenance/fore/greater) +"hZJ" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = -1 + }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden, +/turf/open/floor/iron/dark, +/area/station/engineering/storage) "hZU" = ( /obj/machinery/computer/robotics{ dir = 1 @@ -22797,17 +23244,31 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"iav" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/hallway/primary/central) "iaB" = ( /obj/item/pillow, /turf/open/floor/bamboo, /area/station/maintenance/starboard/central) +"iaF" = ( +/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/stone, +/area/station/biodome/aft) +"iaH" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/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/structure/cable, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "iaK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -22862,10 +23323,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) -"ibv" = ( -/obj/effect/landmark/start/hangover, -/turf/open/water/jungle/biodome, -/area/station/biodome/aft) "ibC" = ( /obj/machinery/door/airlock{ name = "Janitor's Closet" @@ -23131,10 +23588,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai_upload) -"igj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, -/turf/closed/wall/r_wall, -/area/station/engineering/supermatter/room) "ign" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23213,12 +23666,6 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/virology, /turf/open/floor/iron/dark, /area/station/medical/virology) -"ihh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "ihk" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -23295,6 +23742,19 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos) +"iis" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/effect/landmark/start/engineering_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "iiH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -23385,12 +23845,6 @@ }, /turf/open/floor/wood/large, /area/station/service/theater) -"ikE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/stone, -/area/station/biodome/fore) "ikH" = ( /obj/structure/closet/crate/solarpanel_small, /obj/effect/turf_decal/bot{ @@ -23459,6 +23913,19 @@ }, /turf/open/floor/iron/dark, /area/station/security/checkpoint/engineering) +"imD" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "imJ" = ( /obj/effect/decal/cleanable/insectguts, /obj/effect/decal/cleanable/blood/gibs/limb, @@ -23530,6 +23997,10 @@ }, /turf/open/floor/plating, /area/station/science/xenobiology) +"ioi" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "ioj" = ( /obj/structure/railing/corner{ dir = 1 @@ -23701,12 +24172,6 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron, /area/station/science/ordnance) -"iqy" = ( -/obj/structure/railing{ - dir = 6 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "iqE" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -23817,29 +24282,16 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) -"isp" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Cooling Loop Bypass" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"isx" = ( -/obj/structure/railing{ - dir = 10 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "isA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, /turf/open/floor/plating, /area/station/maintenance/department/science) +"isE" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/iron/dark, +/area/station/science/circuits) "isM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -23999,6 +24451,10 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/neon/simple/cyan/nodots, /area/station/science/server) +"ivL" = ( +/obj/machinery/computer/order_console/mining, +/turf/open/floor/wood/large, +/area/station/cargo/miningdock) "ivO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -24060,6 +24516,10 @@ }, /turf/open/floor/iron/dark/airless, /area/station/science/ordnance/freezerchamber) +"iwE" = ( +/obj/machinery/newscaster/directional/east, +/turf/open/floor/wood, +/area/station/command/bridge) "iwR" = ( /obj/machinery/computer/upload/ai, /obj/machinery/airalarm/directional/north, @@ -24111,12 +24571,6 @@ }, /turf/open/misc/asteroid, /area/station/cargo/miningdock) -"ixY" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "iyl" = ( /obj/item/food/grown/moonflower, /obj/structure/flora/bush/flowers_yw, @@ -24194,13 +24648,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"izR" = ( -/obj/structure/cable, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/supply) "iAd" = ( /obj/structure/transit_tube/curved{ dir = 4 @@ -24249,17 +24696,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"iAY" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/loading_area/white, -/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, -/area/station/science/research) "iBf" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -24362,6 +24798,12 @@ "iCJ" = ( /turf/closed/wall/r_wall/fakewood, /area/station/biodome/aft) +"iCP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "iCX" = ( /obj/effect/spawner/random/structure/table, /obj/item/paper/pamphlet/radstorm, @@ -24577,6 +25019,35 @@ /obj/effect/decal/cleanable/oil/streak, /turf/open/misc/asteroid, /area/station/maintenance/central/greater) +"iGW" = ( +/obj/structure/table, +/obj/effect/spawner/random/engineering/tool{ + pixel_x = -11 + }, +/obj/effect/spawner/random/engineering/tool{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/item/paper/fluff/jobs/security/beepsky_mom{ + pixel_y = 6 + }, +/obj/item/stock_parts/power_store/cell/potato{ + name = "\improper Beepsky's emergency battery" + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark/small, +/area/station/security/mechbay) +"iHk" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/incident_display/delam/directional/north, +/obj/structure/table/glass, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_y = 3 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "iHt" = ( /obj/machinery/camera/directional/east{ c_tag = "Service - Chapel Office" @@ -24616,6 +25087,15 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white/smooth_large, /area/station/medical/surgery/aft) +"iHQ" = ( +/obj/structure/table, +/obj/item/trash/can/food/pine_nuts, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/stone_tile/block, +/obj/machinery/light/directional/north, +/turf/open/floor/plating, +/area/station/cargo/miningdock) "iHV" = ( /obj/machinery/photocopier, /obj/machinery/light/directional/east, @@ -24657,10 +25137,6 @@ }, /turf/open/misc/asteroid, /area/station/cargo/miningdock) -"iIL" = ( -/obj/effect/decal/cleanable/blood/gibs/torso, -/turf/open/misc/asteroid/dug, -/area/station/asteroid) "iIV" = ( /obj/effect/landmark/navigate_destination/bar, /turf/open/floor/bamboo/tatami{ @@ -24755,20 +25231,6 @@ /obj/effect/spawner/random/maintenance/two, /turf/open/floor/glass/reinforced, /area/station/maintenance/starboard/lesser) -"iKE" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{ - dir = 5 - }, -/turf/open/space/basic, -/area/space/nearstation) -"iKJ" = ( -/obj/machinery/duct, -/obj/machinery/light/small/directional/south, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "iKP" = ( /obj/structure/table, /obj/item/hemostat{ @@ -24787,6 +25249,12 @@ /obj/machinery/vending/games, /turf/open/floor/wood/large, /area/station/service/library/lounge) +"iKW" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/landmark/start/hangover, +/obj/machinery/light/directional/north, +/turf/open/floor/grass, +/area/station/biodome/fore) "iLd" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -24897,6 +25365,14 @@ "iMD" = ( /turf/closed/wall/mineral/wood, /area/station/service/bar) +"iMN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "iMV" = ( /obj/machinery/door/airlock/maintenance, /turf/open/floor/plating, @@ -24953,6 +25429,12 @@ /obj/machinery/light/directional/east, /turf/open/floor/engine, /area/station/science/xenobiology) +"iOB" = ( +/obj/effect/decal/cleanable/ants/fire, +/turf/open/misc/asteroid/dug{ + initial_gas_mix = "TEMP=2.7" + }, +/area/station/asteroid) "iOH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -24992,6 +25474,13 @@ /obj/effect/decal/cleanable/oil, /turf/open/misc/asteroid/airless, /area/station/asteroid) +"iPX" = ( +/obj/machinery/door/window/left/directional/south{ + name = "Plant Isolation"; + req_access = list("hydroponics") + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "iPY" = ( /obj/machinery/door/poddoor/shutters{ id = "teleportershutters"; @@ -25088,6 +25577,21 @@ }, /turf/open/floor/iron, /area/station/commons/fitness) +"iRg" = ( +/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/cable, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/landmark/start/customs_agent, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/supply) "iRw" = ( /obj/machinery/door/airlock/mining{ name = "Mining Maintenance" @@ -25128,6 +25632,10 @@ /obj/effect/mapping_helpers/airlock/access/any/service/maintenance, /turf/open/floor/catwalk_floor, /area/station/maintenance/department/crew_quarters/bar) +"iRI" = ( +/obj/effect/turf_decal/tile/dark_red/half, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "iRL" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/event_spawn, @@ -25140,6 +25648,9 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/main) +"iSv" = ( +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "iSK" = ( /obj/machinery/conveyor/auto{ dir = 9; @@ -25163,6 +25674,14 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"iTw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "mining" + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "iTy" = ( /obj/effect/spawner/random/trash/moisture, /turf/open/floor/plating, @@ -25186,6 +25705,18 @@ /obj/machinery/light/directional/west, /turf/open/openspace, /area/station/biodome) +"iTM" = ( +/obj/structure/table, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -3 + }, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "iTN" = ( /obj/effect/mapping_helpers/airlock/access/all/science/general, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -25325,12 +25856,6 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/smooth_large, /area/station/medical/virology) -"iXd" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "iXi" = ( /obj/machinery/door/window/right/directional/north, /obj/machinery/door/window/right/directional/south, @@ -25475,6 +26000,13 @@ /obj/effect/turf_decal/tile/dark_green/full, /turf/open/floor/iron/dark/small, /area/station/service/hydroponics) +"iZv" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Biodome - Library Back Alley" + }, +/obj/item/stack/rods/twentyfive, +/turf/open/floor/grass, +/area/station/biodome/aft) "iZy" = ( /obj/machinery/newscaster/directional/north, /obj/machinery/light_switch/directional/west, @@ -25487,6 +26019,24 @@ }, /turf/open/floor/wood, /area/station/commons/vacant_room/office) +"iZE" = ( +/obj/structure/table, +/obj/item/food/donut/plain{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/storage/fancy/coffee_cart_rack{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner{ + dir = 8 + }, +/turf/open/floor/iron/smooth_large, +/area/station/security/brig) "iZK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25532,6 +26082,14 @@ /obj/machinery/light/directional/east, /turf/open/floor/grass, /area/station/security/courtroom) +"jam" = ( +/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/effect/landmark/start/science_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/science) "jau" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/siding/wood{ @@ -25589,6 +26147,11 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"jbA" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/space/basic, +/area/space/nearstation) "jbB" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -25647,13 +26210,6 @@ /obj/structure/table/reinforced, /turf/open/floor/plating, /area/station/cargo/blacksmith) -"jcq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/transit_tube/crossing, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) "jct" = ( /obj/effect/turf_decal/siding/dark{ dir = 4 @@ -25668,13 +26224,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"jcG" = ( -/obj/structure/table, -/obj/item/electropack, -/obj/item/assembly/signaler, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron, -/area/station/security/processing) "jcM" = ( /obj/machinery/power/solar{ id = "aicore"; @@ -25800,11 +26349,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) -"jeH" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "jeJ" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 9 @@ -25915,10 +26459,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"jgn" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/grass, -/area/station/biodome/fore) "jgr" = ( /turf/open/floor/plating, /area/station/cargo/drone_bay) @@ -26028,6 +26568,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay/lobby) +"jiE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "jiG" = ( /turf/open/floor/iron/chapel{ dir = 1 @@ -26111,12 +26658,21 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"jjW" = ( -/obj/structure/reflector/single/anchored{ - dir = 10 +"jkn" = ( +/obj/structure/sign/directions/engineering/directional/north{ + pixel_y = 35; + dir = 4 }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) +/obj/structure/sign/directions/medical/directional/north{ + pixel_y = 28; + dir = 4 + }, +/obj/structure/sign/directions/security/directional/north{ + pixel_y = 21; + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "jko" = ( /turf/open/floor/iron/dark/smooth_large, /area/station/security/brig) @@ -26201,6 +26757,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"jmB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/railing/wooden_fencing{ + 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/wood/large, +/area/station/biodome/aft) "jmI" = ( /obj/machinery/door/airlock/command/glass{ name = "Bridge" @@ -26273,6 +26842,13 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"joK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/research) "joP" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/computer/order_console/mining, @@ -26345,11 +26921,6 @@ /obj/structure/table/wood/poker, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"jpW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "jqn" = ( /obj/structure/table, /obj/item/computer_disk{ @@ -26485,16 +27056,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/brig/entrance) -"jrI" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/red/filled/mid_joiner, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/smooth_half, -/area/station/security/brig) "jrK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -26541,11 +27102,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/department/science) -"jsF" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) +"jsJ" = ( +/obj/effect/spawner/random/trash/garbage{ + spawn_scatter_radius = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "jsO" = ( /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) @@ -26634,12 +27199,6 @@ }, /turf/open/floor/wood, /area/station/cargo/office) -"juR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "juY" = ( /obj/machinery/door/airlock{ id_tag = "Dorm8"; @@ -26904,6 +27463,18 @@ }, /turf/open/floor/iron/terracotta/small, /area/station/service/barber) +"jzL" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/right/directional/north{ + name = "Hydroponics Desk"; + req_access = list("hydroponics") + }, +/obj/structure/desk_bell{ + pixel_x = 7 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/stone, +/area/station/service/hydroponics) "jzR" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance, @@ -27038,6 +27609,13 @@ }, /turf/open/openspace, /area/station/ai_monitored/turret_protected/ai) +"jCm" = ( +/obj/structure/transit_tube, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "jCu" = ( /turf/open/floor/stone, /area/station/maintenance/department/security/brig) @@ -27084,10 +27662,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) -"jDs" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/grass, -/area/station/biodome/aft) "jDt" = ( /obj/machinery/door/airlock{ name = "Cleaning Closet" @@ -27253,10 +27827,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/storage) -"jGx" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/stone, -/area/station/hallway/primary/starboard) "jGz" = ( /obj/structure/table/wood, /obj/item/bouquet/rose, @@ -27369,12 +27939,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"jIl" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/engineering/storage) "jIp" = ( /obj/machinery/door/airlock/security/glass{ name = "Permabrig Visitation" @@ -27463,15 +28027,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white/small, /area/station/maintenance/central/greater) -"jKG" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/effect/turf_decal/trimline/red/filled/mid_joiner, -/turf/open/floor/iron/smooth_half, -/area/station/security/brig) "jKM" = ( /turf/closed/wall, /area/station/commons/vacant_room/commissary) @@ -27756,6 +28311,21 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"jPb" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/loading_area/white, +/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, +/obj/machinery/door/window/elevator/left/directional/north{ + elevator_mode = 1; + transport_linked_id = "biodome_science_lift" + }, +/turf/open/floor/iron/dark, +/area/station/science/research) "jPg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27864,6 +28434,13 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/service/hydroponics) +"jRC" = ( +/obj/effect/turf_decal/siding/dark_green/corner, +/obj/effect/turf_decal/siding/dark_green/corner{ + dir = 8 + }, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "jRX" = ( /turf/open/floor/iron/terracotta, /area/station/hallway/primary/aft) @@ -27933,18 +28510,6 @@ dir = 1 }, /area/station/science/lab) -"jSF" = ( -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Service - Museum Lounge" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "jSN" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth_large, @@ -28056,12 +28621,6 @@ }, /turf/open/floor/iron/terracotta, /area/station/hallway/secondary/construction/engineering) -"jUO" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Hallway - Checkpoint" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "jUR" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 @@ -28081,16 +28640,6 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"jVe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/machinery/door/airlock/wood{ - name = "Library" - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "jVi" = ( /obj/structure/rack, /obj/item/storage/box/lights/tubes, @@ -28133,12 +28682,6 @@ dir = 4 }, /area/station/commons/fitness) -"jVT" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/hallway/primary/aft) "jVW" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/door/poddoor/shutters/window/preopen{ @@ -28229,14 +28772,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"jXA" = ( -/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ - dir = 4 - }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/power/shieldwallgen, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "jXI" = ( /obj/machinery/door/window/left/directional/south{ name = "Incoming Mail"; @@ -28296,6 +28831,11 @@ /obj/effect/turf_decal/box/corners, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"jYg" = ( +/obj/structure/sign/warning/cold_temp/directional/north, +/obj/machinery/chem_master/condimaster, +/turf/open/floor/iron/white, +/area/station/service/kitchen/coldroom) "jYi" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -28434,6 +28974,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"kaz" = ( +/obj/structure/sign/departments/lawyer/directional/east, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/stone, +/area/station/hallway/primary/starboard) "kaG" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/machinery/light/small/directional/west, @@ -28459,17 +29007,21 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"kaT" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "kaV" = ( /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/toilet) +"kbb" = ( +/obj/machinery/duct, +/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/firealarm/directional/south, +/turf/open/floor/stone, +/area/station/biodome/fore) "kbd" = ( /obj/structure/cable, /obj/effect/spawner/random/trash/garbage{ @@ -28485,6 +29037,15 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"kbs" = ( +/obj/structure/transit_tube/curved/flipped{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "kbF" = ( /turf/open/floor/bamboo/tatami, /area/station/commons/lounge) @@ -28500,13 +29061,6 @@ /obj/item/stack/sheet/animalhide/lizard, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"kcb" = ( -/obj/effect/turf_decal/bot, -/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/smooth_large, -/area/station/cargo/warehouse) "kcg" = ( /turf/open/floor/plating/airless, /area/station/asteroid) @@ -28650,17 +29204,6 @@ }, /turf/open/floor/plating/rust, /area/station/cargo/miningdock) -"keR" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/right/directional/north{ - name = "Hydroponics Desk"; - req_access = list("hydroponics") - }, -/obj/structure/desk_bell{ - pixel_x = 7 - }, -/turf/open/floor/stone, -/area/station/service/hydroponics) "keU" = ( /obj/machinery/camera/directional/south{ c_tag = "Engineering - Equipment" @@ -28671,6 +29214,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/storage) +"keY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kfd" = ( /obj/structure/lattice, /obj/structure/transit_tube/horizontal, @@ -28765,6 +29315,10 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) +"kgq" = ( +/obj/effect/landmark/start/bouncer, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "kgx" = ( /obj/machinery/rnd/experimentor, /turf/open/floor/engine, @@ -28938,11 +29492,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/iron/checker, /area/station/service/bar/backroom) -"kjC" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "kjE" = ( /obj/structure/table/wood, /mob/living/carbon/human/species/monkey/punpun, @@ -29026,11 +29575,6 @@ /obj/machinery/duct, /turf/open/floor/iron/dark, /area/station/science/research) -"kkB" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "kkE" = ( /obj/machinery/duct, /obj/effect/landmark/start/botanist, @@ -29200,6 +29744,11 @@ luminosity = 2 }, /area/station/ai_monitored/command/nuke_storage) +"kmw" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/grass, +/area/station/service/hydroponics) "kmB" = ( /obj/item/toy/plush/lizard_plushie{ name = "Crows-the-nest" @@ -29252,6 +29801,11 @@ }, /turf/open/openspace, /area/station/science/xenobiology) +"knt" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/sign/warning/gas_mask/directional/south, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "knC" = ( /obj/effect/spawner/random/trash/moisture_trap, /obj/effect/decal/cleanable/glitter/white, @@ -29430,6 +29984,13 @@ }, /turf/open/floor/iron/smooth_half, /area/station/security/brig) +"kqa" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "kqp" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -29453,6 +30014,18 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"kqH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing/wooden_fencing{ + 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/wood/large, +/area/station/biodome/aft) "kqP" = ( /obj/structure/rack, /obj/item/crowbar/red, @@ -29460,15 +30033,15 @@ /obj/item/wrench, /turf/open/floor/plating, /area/station/medical/virology) -"kqS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, +"kqQ" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/engineering/transit_tube) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/spawner/random/maintenance/five, +/obj/effect/spawner/random/structure/closet_empty/crate, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) "kqT" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot_red, @@ -29519,12 +30092,6 @@ }, /turf/open/floor/grass, /area/station/hallway/primary/central/aft) -"krW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/fore) "krZ" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/east{ @@ -29554,6 +30121,19 @@ /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"ksA" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/elevator_control_panel/directional/east{ + linked_elevator_id = "biodome_medbay_lift"; + name = "Medbay Lift Control Panel"; + preset_destination_names = list("2"="LowerMedbay","3"="UpperMedbay") + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/transport/linear/public, +/turf/open/floor/plating/elevatorshaft, +/area/station/medical/medbay/central) "ksO" = ( /obj/structure/barricade/wooden, /turf/open/misc/asteroid, @@ -29591,26 +30171,6 @@ }, /turf/open/misc/asteroid, /area/station/cargo/miningdock) -"kty" = ( -/obj/effect/turf_decal/delivery, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/light/cold/directional/south, -/obj/structure/transport/linear/public, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/medbay/central) -"ktI" = ( -/obj/structure/ladder{ - name = "Cold Room Access" - }, -/obj/machinery/door/window/right/directional/south{ - name = "Freezer"; - req_access = list("kitchen") - }, -/obj/structure/sign/warning/cold_temp/directional/north, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "ktL" = ( /obj/machinery/holopad, /obj/machinery/keycard_auth{ @@ -29724,6 +30284,12 @@ /obj/structure/transport/linear/public, /turf/open/floor/plating/elevatorshaft, /area/station/hallway/secondary/construction/engineering) +"kvv" = ( +/obj/effect/turf_decal/siding/green{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) "kvz" = ( /obj/machinery/requests_console/auto_name/directional/north, /turf/open/floor/wood/large, @@ -29804,13 +30370,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"kwB" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/station/service/hydroponics) "kwM" = ( /obj/effect/decal/cleanable/oil/slippery, /turf/open/floor/plating, @@ -29838,19 +30397,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) -"kxg" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/trimline/dark_green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "kxj" = ( /obj/structure/transit_tube/diagonal{ dir = 8 @@ -29875,6 +30421,13 @@ /obj/effect/spawner/random/food_or_drink/booze, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/cargo) +"kxP" = ( +/obj/effect/turf_decal/tile/neutral/half{ + dir = 4 + }, +/obj/machinery/vending/dorms, +/turf/open/floor/iron, +/area/station/commons/locker) "kxR" = ( /obj/item/radio/intercom/directional/west, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -29909,6 +30462,14 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"kyj" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/landmark/start/engineering_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "kym" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -29951,6 +30512,13 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"kyP" = ( +/obj/machinery/door/airlock/external{ + name = "Common Mining Dock" + }, +/obj/effect/landmark/navigate_destination/dockpublicmining, +/turf/open/floor/plating, +/area/station/hallway/secondary/exit/departure_lounge) "kze" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 4 @@ -29958,18 +30526,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/foyer) -"kzz" = ( -/obj/structure/closet/radiation, -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) -"kzF" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "kzM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -29982,10 +30538,6 @@ /obj/structure/chair/sofa/bench/left, /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen/diner) -"kzZ" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/iron, -/area/station/security/processing) "kAb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -30062,14 +30614,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"kBa" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "kBd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30174,6 +30718,13 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"kDa" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "kDe" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -30194,6 +30745,11 @@ }, /turf/open/floor/iron, /area/station/science/research) +"kDk" = ( +/obj/structure/sign/warning/gas_mask/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "kDp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment{ @@ -30212,12 +30768,6 @@ /mob/living/basic/mining/hivelord, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"kDJ" = ( -/obj/effect/turf_decal/bot, -/obj/item/crowbar, -/obj/item/screwdriver, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/warehouse) "kDK" = ( /obj/structure/sign/warning/directional/east, /turf/open/openspace, @@ -30232,13 +30782,6 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) -"kDP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "kDV" = ( /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/iron/white, @@ -30260,14 +30803,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/commons/dorms) -"kEE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/depsec/science, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) "kEG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -30340,6 +30875,12 @@ "kFW" = ( /turf/closed/wall/r_wall, /area/station/science/server) +"kGn" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "kGp" = ( /obj/effect/mapping_helpers/airlock/access/all/command/general, /obj/machinery/door/airlock/command{ @@ -30351,6 +30892,29 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/command/meeting_room) +"kGu" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/closet{ + name = "Beekeeper Uniform" + }, +/obj/item/melee/flyswatter, +/obj/item/clothing/head/utility/beekeeper_head, +/obj/item/clothing/suit/utility/beekeeper_suit, +/obj/effect/turf_decal/trimline/dark_green/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/railing, +/obj/item/bee_smoker, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "kGO" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -30526,15 +31090,6 @@ /obj/item/binoculars, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"kIW" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 8; - pixel_x = -2; - pixel_y = 1 - }, -/obj/structure/cable, -/turf/open/floor/bamboo/tatami, -/area/station/hallway/secondary/service) "kJc" = ( /obj/machinery/door/airlock/public/glass{ name = "Courtroom" @@ -30557,14 +31112,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/cargo/storage) -"kJu" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Atmos to Loop" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "kJF" = ( /obj/structure/sign/gym/mirrored/right, /turf/closed/wall, @@ -30587,6 +31134,19 @@ /obj/item/paper_bin/bundlenatural, /turf/open/misc/asteroid/airless, /area/station/asteroid) +"kJV" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "kJY" = ( /obj/effect/turf_decal/weather/dirt{ dir = 8 @@ -30723,6 +31283,10 @@ /obj/structure/cable, /turf/open/floor/stone, /area/station/biodome/aft) +"kMk" = ( +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating, +/area/station/biodome/aft) "kMo" = ( /obj/machinery/camera/directional/east{ c_tag = "Service - Cold Room" @@ -30790,13 +31354,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"kNc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/plating, -/area/station/hallway/primary/central) "kNf" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -30804,6 +31361,14 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/chemistry) +"kNg" = ( +/obj/structure/table, +/obj/item/shovel, +/obj/item/storage/box/emptysandbags, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/structure/sign/warning/secure_area/directional/north, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "kNm" = ( /obj/machinery/button/door/directional/south{ id = "nsminingdorm2"; @@ -30891,6 +31456,12 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/aft) +"kOA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "kOE" = ( /obj/item/stack/tile/carpet/stellar, /turf/open/floor/plating, @@ -30929,14 +31500,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/carpet/black, /area/station/security/prison) -"kPl" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "kPB" = ( /obj/structure/closet/firecloset, /turf/open/floor/iron, @@ -31277,6 +31840,14 @@ }, /turf/open/floor/carpet, /area/station/command/heads_quarters/qm) +"kUp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "kUt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31312,6 +31883,15 @@ }, /turf/open/floor/wood/large, /area/station/hallway/secondary/service) +"kUX" = ( +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/donkpockets{ + pixel_y = 8 + }, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/cable, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "kUY" = ( /turf/open/floor/wood/large, /area/station/maintenance/starboard/central) @@ -31367,11 +31947,6 @@ /obj/machinery/telecomms/bus/preset_four, /turf/open/floor/iron/dark/telecomms, /area/station/tcommsat/server) -"kXb" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) "kXn" = ( /obj/machinery/airalarm/directional/east, /obj/structure/table, @@ -31406,6 +31981,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/biodome/fore) +"kXY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/mechbay) "kYa" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -31475,11 +32056,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) -"kZi" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "kZk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -31517,6 +32093,13 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"kZH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/wood/large, +/area/station/hallway/secondary/service) "kZL" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -31571,6 +32154,12 @@ }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"laI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/biodome) "lbc" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31591,6 +32180,15 @@ }, /turf/open/floor/grass, /area/station/biodome/fore) +"lbH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/warning/electric_shock{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/bouncer, +/turf/open/floor/catwalk_floor/iron_smooth, +/area/station/maintenance/department/crew_quarters/bar) "lbL" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/camera/motion/directional/west{ @@ -31598,6 +32196,15 @@ }, /turf/open/floor/iron/stairs/medium, /area/station/command/gateway) +"lbQ" = ( +/obj/structure/railing, +/obj/machinery/conveyor{ + id = "mining"; + dir = 1 + }, +/obj/machinery/brm, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "lbS" = ( /obj/effect/spawner/structure/window, /obj/structure/railing, @@ -31693,6 +32300,11 @@ /obj/structure/tank_holder/oxygen, /turf/open/floor/iron, /area/station/tcommsat/computer) +"ldB" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/structure/window/spawner/directional/north, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "ldC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -31718,6 +32330,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/disposal) +"ldQ" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "ldW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/trimline/green/line, @@ -31742,6 +32361,12 @@ /obj/structure/cable, /turf/open/floor/iron/dark/smooth_large, /area/station/maintenance/radshelter/civil) +"lei" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "lek" = ( /obj/structure/bonfire/dense, /turf/open/misc/asteroid/airless, @@ -31769,36 +32394,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet/black, /area/station/service/chapel/funeral) -"lex" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/robotics_cyborgs{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/reagent_containers/cup/beaker/large, -/obj/item/storage/medkit{ - pixel_x = 7; - pixel_y = -3 - }, -/obj/item/storage/medkit{ - pixel_x = 7; - pixel_y = -3 - }, -/obj/item/healthanalyzer{ - pixel_x = -3; - pixel_y = -4 - }, -/obj/item/healthanalyzer{ - pixel_x = -3; - pixel_y = -4 - }, -/obj/effect/turf_decal/tile/dark_red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/white/smooth_edge{ - dir = 4 - }, -/area/station/science/robotics/lab) "ley" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31840,6 +32435,28 @@ }, /turf/open/floor/wood/large, /area/station/commons/lounge) +"lfc" = ( +/obj/effect/turf_decal/siding/wood{ + 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/wood/large, +/area/station/biodome/aft) +"lfd" = ( +/obj/effect/turf_decal/loading_area/white, +/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/window/elevator/left/directional/north{ + elevator_mode = 1; + transport_linked_id = "biodome_science_lift" + }, +/turf/open/floor/iron/dark, +/area/station/science/research) "lfp" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/iron/white, @@ -31992,6 +32609,13 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/science/ordnance/office) +"lip" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/closet/secure_closet/security_medic, +/turf/open/floor/iron/white, +/area/station/security/medical) "liq" = ( /obj/structure/cable, /obj/machinery/firealarm/directional/north, @@ -32004,6 +32628,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/maintenance/department/chapel) +"liQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + id = "mining"; + dir = 8 + }, +/obj/machinery/bouldertech/refinery, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "liW" = ( /obj/machinery/atmospherics/components/binary/tank_compressor, /obj/effect/turf_decal/delivery, @@ -32095,6 +32728,12 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/grass, /area/station/biodome/fore) +"lkf" = ( +/obj/structure/closet/secure_closet/blueshield, +/obj/item/storage/medkit/tactical/blueshield, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "lkg" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -32142,17 +32781,6 @@ }, /turf/open/floor/iron/dark/smooth_edge, /area/station/engineering/transit_tube) -"lkY" = ( -/obj/machinery/door/airlock/external{ - name = "External Access" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/minisat, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/engineering/transit_tube) "lla" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 @@ -32174,16 +32802,6 @@ /obj/structure/cable, /turf/open/floor/grass, /area/station/biodome/fore) -"lli" = ( -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/turf/open/floor/wood, -/area/station/command/bridge) "llr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -32315,9 +32933,6 @@ "loB" = ( /turf/closed/wall/r_wall/fakewood, /area/station/security/brig/entrance) -"loD" = ( -/turf/open/floor/carpet/blue, -/area/station/security/processing) "loH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -32628,11 +33243,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"lsD" = ( -/obj/machinery/chem_master/condimaster, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "lsE" = ( /obj/effect/spawner/random/structure/crate, /turf/open/floor/plating, @@ -32652,12 +33262,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/brig) -"ltx" = ( -/obj/effect/spawner/random/trash/garbage, -/obj/effect/turf_decal/delivery/red, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "lty" = ( /turf/open/floor/plating/plasma, /area/station/maintenance/space_hut/plasmaman) @@ -32672,23 +33276,12 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) -"lua" = ( -/obj/structure/ladder{ - name = "Cold Room Access" - }, -/obj/effect/turf_decal/tile/dark_green/opposingcorners, -/turf/open/floor/iron/white, -/area/station/service/kitchen) "lue" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 5 }, /turf/open/floor/iron, /area/station/engineering/atmos) -"lul" = ( -/obj/structure/sign/poster/official/obey/directional/north, -/turf/open/floor/iron, -/area/station/security/processing) "lun" = ( /turf/open/floor/glass/reinforced, /area/station/maintenance/aft/upper) @@ -32897,11 +33490,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/station/maintenance/department/science) -"lxV" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/trimline/red/filled/corner, -/turf/open/floor/iron/smooth_large, -/area/station/security/brig) "lxZ" = ( /obj/machinery/camera/directional/west{ c_tag = "AI Minisat - Upper Chamber Port"; @@ -32923,6 +33511,11 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/central) +"lyh" = ( +/obj/machinery/photocopier, +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/station/service/lawoffice) "lyi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /turf/open/floor/circuit/telecomms/server, @@ -32974,6 +33567,12 @@ dir = 4 }, /area/station/medical/medbay/central) +"lyA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing/corner, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "lyC" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/grass, @@ -33032,12 +33631,15 @@ }, /turf/open/floor/iron/smooth_large, /area/station/security/brig) -"lzr" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 6 +"lzl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/camera/directional/south{ + c_tag = "Hallway - Checkpoint" }, /turf/open/floor/iron, -/area/station/security/prison) +/area/station/hallway/primary/port) "lzw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/closed/wall/r_wall, @@ -33061,19 +33663,6 @@ /obj/item/shovel/spade, /turf/open/misc/asteroid, /area/station/security/prison/garden) -"lzQ" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_x = -5; - pixel_y = -3 - }, -/obj/item/hand_labeler{ - pixel_x = 8; - pixel_y = 10 - }, -/turf/open/floor/iron, -/area/station/security/processing) "lzU" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -33091,6 +33680,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/central) +"lAb" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/siding/dark_green/corner{ + dir = 8 + }, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "lAe" = ( /obj/structure/marker_beacon/jade, /turf/open/floor/plating/airless, @@ -33107,6 +33705,18 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/station/engineering/atmos) +"lAC" = ( +/obj/machinery/camera/directional/north{ + c_tag = "Security Post - Medbay" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/landmark/start/orderly, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) "lAD" = ( /obj/effect/turf_decal/siding/dark{ dir = 9 @@ -33114,6 +33724,10 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"lAH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "lAL" = ( /obj/machinery/door/airlock/medical/glass{ name = "Break Room" @@ -33177,6 +33791,17 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/grass, /area/station/biodome) +"lBS" = ( +/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, +/obj/machinery/duct, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/stone, +/area/station/biodome/fore) "lBW" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -33322,13 +33947,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"lDV" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/fore) "lDW" = ( /obj/structure/spider/stickyweb, /turf/open/openspace, @@ -33393,13 +34011,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) -"lEZ" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 5 - }, -/turf/open/space/basic, -/area/space/nearstation) "lFj" = ( /obj/structure/railing{ dir = 8 @@ -33507,15 +34118,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) -"lGt" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/right{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/hallway/primary/central) "lGA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -33534,14 +34136,6 @@ }, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) -"lGQ" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/banner/command/mundane, -/turf/open/floor/wood, -/area/station/command/bridge) "lGR" = ( /obj/machinery/light/small/directional/east, /obj/effect/spawner/random/trash/janitor_supplies, @@ -33609,11 +34203,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"lHu" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/obj/structure/sign/departments/botany/directional/north, -/turf/open/floor/grass, -/area/station/biodome/fore) "lHw" = ( /obj/item/trash/champagne_cork/sabrage, /turf/open/water/jungle/biodome, @@ -33683,6 +34272,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/terracotta, /area/station/hallway/secondary/construction/engineering) +"lJs" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/transport/linear/public, +/turf/open/floor/plating/elevatorshaft, +/area/station/security/brig) "lJu" = ( /obj/structure/chair/office/light{ dir = 4 @@ -33714,6 +34311,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2, /turf/open/floor/plating/airless, /area/station/asteroid) +"lJF" = ( +/obj/effect/landmark/start/security_medic, +/turf/open/floor/iron/white, +/area/station/security/medical) "lJT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33727,21 +34328,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) -"lKb" = ( -/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/cable, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/supply) "lKo" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -33750,15 +34336,6 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) -"lKy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "lKG" = ( /obj/structure/marker_beacon/indigo, /turf/open/floor/engine/hull/reinforced, @@ -33842,6 +34419,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/large, /area/station/hallway/primary/aft) +"lNp" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/plating, +/area/station/service/library/lounge) "lNr" = ( /obj/structure/chair/sofa/bench/left{ dir = 8 @@ -34072,12 +34657,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"lQH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/aft) "lQM" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical{ @@ -34187,6 +34766,15 @@ /obj/structure/marker_beacon/olive, /turf/open/space/openspace, /area/space/nearstation) +"lSS" = ( +/obj/effect/turf_decal/trimline/dark/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/aft) "lTm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/firedoor/heavy, @@ -34224,13 +34812,6 @@ /obj/structure/cable, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos) -"lTT" = ( -/obj/machinery/door/airlock/external{ - name = "Common Mining Dock" - }, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/plating, -/area/station/hallway/secondary/exit/departure_lounge) "lTW" = ( /obj/item/bedsheet/medical{ dir = 8 @@ -34244,6 +34825,16 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/smooth_large, /area/station/medical/virology) +"lUd" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Cooling Loop Bypass" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "lUf" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -34366,18 +34957,18 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) -"lWj" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/iron/white/diagonal, -/area/station/science/robotics/lab) "lWl" = ( /obj/effect/spawner/random/engineering/vending_restock, /obj/effect/spawner/random/engineering/vending_restock, /turf/open/floor/plating, /area/station/maintenance/department/science) +"lWy" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/catwalk_floor/iron, +/area/station/biodome/aft) "lWz" = ( /obj/structure/table, /obj/item/stack/medical/mesh, @@ -34429,12 +35020,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"lXe" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/filled/mid_joiner, -/turf/open/floor/iron/smooth_large, -/area/station/security/brig) "lXk" = ( /obj/structure/broken_flooring/corner/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -34458,11 +35043,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay/lobby) -"lXt" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "lXz" = ( /obj/docking_port/stationary{ dheight = 1; @@ -34521,14 +35101,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"lYf" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/landmark/start/depsec/engineering, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) "lYh" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34576,26 +35148,20 @@ }, /turf/open/floor/iron, /area/station/science/research) -"lZs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/camera/directional/east{ - c_tag = "Engineering - Supermatter Port"; - network = list("ss13","engine") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/engine_access, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter) "lZD" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 }, /turf/open/floor/iron, /area/station/engineering/lobby) +"lZP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/landmark/start/orderly, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/medical) "lZQ" = ( /obj/structure/table/glass, /obj/item/stack/medical/gauze{ @@ -34781,10 +35347,12 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/dark/textured, /area/station/security/interrogation) -"mbI" = ( -/obj/docking_port/stationary/escape_pod, -/turf/open/space/basic, -/area/space) +"mbM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/biodome/fore) "mbY" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 4 @@ -34798,6 +35366,12 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/station/engineering/atmos/mix) +"mcy" = ( +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/bot, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "mcE" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 8 @@ -34966,15 +35540,6 @@ /obj/effect/spawner/random/medical/two_percent_xeno_egg_spawner, /turf/open/floor/engine, /area/station/science/xenobiology) -"meW" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/light/directional/west, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "meX" = ( /obj/item/shard, /obj/item/shard, @@ -34997,23 +35562,10 @@ /obj/effect/turf_decal/weather/sand, /turf/open/floor/wood/large, /area/station/biodome/fore) -"mfv" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/iron/white, -/area/station/science/ordnance) "mfx" = ( /obj/machinery/monkey_recycler, /turf/open/floor/iron, /area/station/science/xenobiology) -"mfE" = ( -/obj/effect/turf_decal/trimline/dark_blue/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "mfK" = ( /obj/structure/sign/poster/official/safety_eye_protection/directional/north, /obj/item/kirbyplants/random, @@ -35079,6 +35631,15 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"mgO" = ( +/obj/machinery/pdapainter/research, +/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/tile/purple/anticorner{ + dir = 1 + }, +/obj/machinery/posialert/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/rd) "mgZ" = ( /mob/living/basic/pig, /obj/structure/cable, @@ -35184,6 +35745,16 @@ dir = 4 }, /area/station/commons/lounge) +"miR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/landmark/start/engineering_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "mjk" = ( /obj/machinery/button/door/directional/east{ id = "maintwarehouse"; @@ -35254,20 +35825,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"mjF" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/engineering/main) -"mjV" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/openspace, -/area/station/hallway/primary/aft) "mkb" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 @@ -35334,12 +35891,6 @@ /obj/effect/spawner/random/food_or_drink/condiment, /turf/open/floor/stone, /area/station/maintenance/fore/greater) -"mlo" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/five, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/warehouse) "mlP" = ( /obj/structure/rack, /obj/item/clothing/gloves/color/fyellow, @@ -35405,10 +35956,6 @@ }, /turf/open/floor/plating, /area/station/construction/mining/aux_base) -"mmP" = ( -/obj/effect/landmark/start/security_officer, -/turf/open/floor/iron/smooth_large, -/area/station/security/lockers) "mmT" = ( /obj/structure/table, /turf/open/floor/iron/dark, @@ -35583,12 +36130,6 @@ dir = 1 }, /area/station/science/lab) -"mqf" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/biodome/aft) "mqk" = ( /obj/item/trash/can/food/pine_nuts, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -35623,11 +36164,6 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/wood, /area/station/commons/vacant_room/office) -"mqy" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/dark_green, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "mqA" = ( /obj/machinery/camera/directional/west{ c_tag = "Civilian - Disposals" @@ -35695,17 +36231,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/main) -"mrL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "msd" = ( /obj/effect/turf_decal/trimline/red/real_red/line{ dir = 4 @@ -35858,19 +36383,6 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"mvc" = ( -/obj/structure/table, -/obj/item/poster/random_official{ - pixel_y = 1 - }, -/obj/item/poster/random_official{ - pixel_y = 6 - }, -/obj/item/poster/random_official{ - pixel_y = 10 - }, -/turf/open/floor/wood, -/area/station/security/brig) "mvg" = ( /obj/docking_port/stationary{ dir = 8; @@ -35891,6 +36403,13 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"mvB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/cloth{ + color = "#404040" + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "mvF" = ( /obj/item/shovel, /turf/open/misc/beach/sand, @@ -36054,22 +36573,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"myU" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -1; - pixel_y = -1 - }, -/obj/item/clothing/glasses/meson/engine, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage) "mzh" = ( /obj/structure/sign/warning/electric_shock/directional/south, /obj/structure/hedge, @@ -36118,6 +36621,15 @@ /obj/machinery/vending/engivend, /turf/open/floor/iron, /area/station/engineering/main) +"mzx" = ( +/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/stone, +/area/station/biodome/aft) "mzW" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, @@ -36190,9 +36702,32 @@ "mBc" = ( /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"mBd" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/delivery, +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/transport/linear/public, +/turf/open/floor/plating/elevatorshaft, +/area/station/security/brig) "mBf" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/security/brig) +"mBm" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/construction/plumbing, +/obj/item/construction/plumbing{ + pixel_y = -5 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/medical/chemistry) "mBn" = ( /obj/effect/spawner/random/trash/moisture, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -36200,6 +36735,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"mBy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "mBE" = ( /obj/structure/table, /obj/item/aicard{ @@ -36229,11 +36770,6 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"mBX" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/space/basic, -/area/space/nearstation) "mCj" = ( /obj/item/paper/natural, /turf/open/misc/asteroid/airless, @@ -36262,6 +36798,16 @@ }, /turf/open/floor/engine/hull/reinforced, /area/space/nearstation) +"mCT" = ( +/obj/structure/sign/directions/vault/directional/north{ + dir = 4 + }, +/obj/structure/sign/directions/command/directional/north{ + pixel_y = 25; + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "mDd" = ( /obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics Testing Room" @@ -36282,11 +36828,18 @@ /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"mDE" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/station/commons/lounge) +"mDB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/camera/directional/east{ + c_tag = "Engineering - Supermatter Port"; + network = list("ss13","engine") + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "mDF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -36319,6 +36872,14 @@ luminosity = 2 }, /area/station/ai_monitored/command/nuke_storage) +"mEe" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/mob/living/basic/pet/poppy, +/turf/open/floor/iron, +/area/station/engineering/lobby) "mEp" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -36383,6 +36944,10 @@ /obj/effect/turf_decal/weather/dirt, /turf/open/water/jungle/biodome, /area/station/biodome) +"mGd" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "mGf" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/trimline/green/filled/warning{ @@ -36424,16 +36989,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"mGA" = ( -/obj/machinery/power/floodlight, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/chemistry) "mGK" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -36567,18 +37122,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/station/ai_monitored/turret_protected/ai_upload) -"mIQ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"mJi" = ( -/obj/structure/stairs/wood, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) "mJo" = ( /obj/item/fishing_rod, /obj/machinery/camera/directional/north{ @@ -36807,6 +37350,14 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"mNa" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "mNl" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -36881,6 +37432,15 @@ /obj/effect/turf_decal/tile/dark_blue/full, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/cmo) +"mOo" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Engineering - Supermatter Aft"; + network = list("ss13","engine") + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "mOx" = ( /obj/effect/turf_decal/siding/wideplating_new{ dir = 8 @@ -37023,6 +37583,11 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"mRb" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "mRe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -37254,6 +37819,14 @@ /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, /area/station/asteroid) +"mVe" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "mVu" = ( /obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ dir = 1 @@ -37322,6 +37895,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/lesser) +"mWV" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/item/stack/rods/twentyfive, +/obj/machinery/light/directional/east, +/turf/open/floor/grass, +/area/station/biodome/fore) "mXf" = ( /obj/machinery/door/airlock/research{ name = "Research Division Access" @@ -37351,10 +37930,26 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"mXk" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "mXn" = ( /obj/machinery/firealarm/directional/south, /turf/open/floor/glass/reinforced, /area/station/service/chapel) +"mXt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "mXu" = ( /obj/item/paperplane{ dir = 4 @@ -37457,15 +38052,6 @@ /obj/machinery/duct, /turf/open/floor/plating, /area/station/commons/toilet) -"mZn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/biodome/aft) "mZo" = ( /obj/machinery/requests_console/directional/east, /obj/effect/turf_decal/tile/neutral/full, @@ -37493,12 +38079,6 @@ /obj/effect/turf_decal/tile/green/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/virology) -"mZS" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Biodome - Library Back Alley" - }, -/turf/open/floor/grass, -/area/station/biodome/aft) "mZX" = ( /obj/machinery/computer/rdconsole{ dir = 4 @@ -37513,6 +38093,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/science) +"naq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/service/hydroponics/garden) "naC" = ( /obj/machinery/camera/motion/directional/north{ network = list("minisat") @@ -37616,13 +38205,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"ncp" = ( -/obj/machinery/newscaster/directional/east, -/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/command/bridge) "nct" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random/bureaucracy, @@ -37663,11 +38245,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/xenobiology/hallway) -"ncM" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "ncS" = ( /obj/structure/chair{ dir = 8 @@ -37809,6 +38386,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"neq" = ( +/obj/item/bouquet/sunflower, +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/structure/railing, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "ner" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -37882,15 +38467,6 @@ }, /turf/open/floor/plating, /area/station/cargo/storage) -"nft" = ( -/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ - dir = 5 - }, -/obj/machinery/light_switch/directional/east, -/obj/structure/sign/warning/secure_area/directional/north, -/obj/machinery/power/shieldwallgen, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "nfx" = ( /obj/structure/table, /obj/item/stack/sheet/plasteel{ @@ -37991,10 +38567,6 @@ }, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"ngQ" = ( -/obj/machinery/vending/boozeomat, -/turf/closed/wall, -/area/station/command/heads_quarters/nt_rep) "nha" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 4 @@ -38124,11 +38696,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/closed/wall/r_wall, /area/station/maintenance/disposal/incinerator) -"niY" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "nja" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38144,6 +38711,11 @@ }, /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) +"njG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "njP" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue/half/contrasted{ @@ -38241,6 +38813,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"nlS" = ( +/obj/effect/turf_decal/tile/red/half/contrasted, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "nme" = ( /obj/structure/cable, /turf/open/floor/stone, @@ -38252,6 +38828,23 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) +"nmo" = ( +/obj/machinery/requests_console/directional/west{ + department = "Engineering"; + name = "Engineering Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 8 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker + }, +/obj/structure/flatpack_cart, +/obj/item/multitool, +/turf/open/floor/iron, +/area/station/engineering/lobby) "nmy" = ( /obj/structure/lattice, /obj/machinery/door/poddoor/massdriver_trash, @@ -38286,22 +38879,25 @@ /obj/effect/decal/cleanable/fuel_pool, /turf/open/floor/iron/terracotta, /area/station/hallway/secondary/construction/engineering) -"nnC" = ( -/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 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "nnO" = ( /obj/item/storage/bag/trash, /turf/open/floor/plating, /area/station/security/prison/safe) +"nnW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/biodome) +"nog" = ( +/obj/structure/bookcase/random/religion, +/obj/structure/sign/painting/library{ + pixel_x = -32 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/wood/large, +/area/station/service/library) "noi" = ( /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/tile/yellow/fourcorners, @@ -38410,14 +39006,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) -"noZ" = ( -/obj/machinery/airalarm/directional/north, -/obj/item/chair, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/lobby) "npe" = ( /obj/effect/turf_decal/sand/plating, /obj/item/food/grown/ash_flora/mushroom_cap, @@ -38437,19 +39025,10 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"npt" = ( -/obj/docking_port/stationary/random{ - name = "lavaland"; - shuttle_id = "pod_lavaland" - }, -/turf/open/space, -/area/space) -"npL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome) +"npD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/openspace, +/area/station/maintenance/port/greater) "npP" = ( /obj/effect/turf_decal/box/white{ color = "#9FED58" @@ -38489,6 +39068,13 @@ }, /turf/open/floor/stone, /area/station/security/courtroom) +"nqp" = ( +/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/stone, +/area/station/biodome/aft) "nqu" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -38518,6 +39104,17 @@ /obj/machinery/light/directional/west, /turf/open/floor/grass, /area/station/service/kitchen/diner) +"nqJ" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/obj/item/clothing/head/utility/welding, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/medical/chemistry) "nqN" = ( /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating, @@ -38539,15 +39136,6 @@ /obj/machinery/meter, /turf/closed/wall/r_wall, /area/station/engineering/supermatter) -"nrf" = ( -/obj/machinery/door/airlock/hydroponics{ - name = "Hydroponics Storage" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_green/full, -/turf/open/floor/iron/dark/small, -/area/station/service/hydroponics) "nrm" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -38608,15 +39196,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/biodome) -"nsm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/transit_tube/curved/flipped{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) "nso" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/circuit, @@ -38636,12 +39215,6 @@ /obj/structure/chair/sofa/right/brown, /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) -"nsD" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "nsF" = ( /obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, @@ -38658,6 +39231,15 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/project) +"ntq" = ( +/obj/machinery/suit_storage_unit/security, +/obj/machinery/light/directional/north, +/obj/machinery/door/window/brigdoor/right/directional/south{ + req_access = list("captain"); + name = "Blueshield's Armory" + }, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/heads_quarters/blueshield) "ntx" = ( /obj/machinery/camera/motion/directional/north{ c_tag = "AI - Upload" @@ -38755,6 +39337,11 @@ }, /turf/open/floor/iron/solarpanel/airless, /area/station/solars/starboard/fore) +"nvO" = ( +/obj/machinery/light/dim/directional/south, +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "nvP" = ( /obj/machinery/disposal/delivery_chute{ dir = 1 @@ -38917,16 +39504,6 @@ /obj/structure/cable, /turf/open/floor/stone, /area/station/biodome) -"nxZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/power/floodlight, -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/chemistry) "nyo" = ( /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, @@ -39030,12 +39607,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"nAj" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 8 - }, -/turf/open/floor/iron/smooth_half, -/area/station/security/brig) "nAm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39063,6 +39634,37 @@ /obj/structure/cable, /turf/open/floor/grass, /area/station/service/kitchen/diner) +"nAu" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/robotics_cyborgs{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/beaker/large, +/obj/item/storage/medkit{ + pixel_x = 7; + pixel_y = -3 + }, +/obj/item/storage/medkit{ + pixel_x = 7; + pixel_y = -3 + }, +/obj/item/healthanalyzer{ + pixel_x = -3; + pixel_y = -4 + }, +/obj/item/healthanalyzer{ + pixel_x = -3; + pixel_y = -4 + }, +/obj/effect/turf_decal/tile/dark_red/half/contrasted{ + dir = 8 + }, +/obj/machinery/posialert/directional/east, +/turf/open/floor/iron/white/smooth_edge{ + dir = 4 + }, +/area/station/science/robotics/lab) "nAH" = ( /obj/machinery/light/directional/north, /turf/open/floor/carpet/red, @@ -39108,14 +39710,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/carpet/red, /area/station/service/theater) -"nBy" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 9 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/sign/warning/gas_mask/directional/south, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) "nBE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -39295,12 +39889,6 @@ }, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"nEU" = ( -/obj/machinery/computer/shuttle/labor{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/security/processing) "nEZ" = ( /obj/machinery/duct, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -39330,15 +39918,6 @@ }, /turf/open/floor/iron, /area/station/security/checkpoint/escape) -"nFw" = ( -/obj/machinery/door/airlock/maintenance, -/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, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/maintenance/port/greater) "nFB" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -39370,13 +39949,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"nGd" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) +"nGb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light/directional/east, +/turf/open/floor/stone, +/area/station/biodome) "nGl" = ( /obj/machinery/rnd/production/circuit_imprinter, /obj/machinery/airalarm/directional/west, @@ -39440,15 +40018,6 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"nHj" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/contraband/blood_geometer/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "nHo" = ( /obj/structure/closet/masks, /obj/effect/turf_decal/trimline/yellow/line{ @@ -39721,6 +40290,11 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"nLr" = ( +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "nLz" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/landmark/start/prisoner, @@ -39810,20 +40384,6 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/stone, /area/station/hallway/primary/starboard) -"nNe" = ( -/obj/machinery/door/firedoor/border_only, -/turf/closed/wall/mineral/wood, -/area/station/service/library) -"nNh" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 8 - }, -/obj/effect/landmark/navigate_destination/engineering, -/turf/open/floor/iron/terracotta, -/area/station/hallway/primary/aft) "nNk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -40190,18 +40750,19 @@ /obj/machinery/atmospherics/pipe/smart/simple/orange/visible, /turf/open/floor/catwalk_floor/iron_dark, /area/station/engineering/atmos) -"nSK" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/security/prison) "nSU" = ( /obj/structure/sign/flag/pride/pan{ pixel_x = 32 }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"nSV" = ( +/obj/docking_port/stationary/random{ + name = "lavaland"; + shuttle_id = "pod_lavaland" + }, +/turf/open/space/openspace, +/area/space) "nSZ" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -40263,6 +40824,12 @@ }, /turf/open/floor/wood/large, /area/station/biodome) +"nTZ" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "nUb" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/siding/blue{ @@ -40531,18 +41098,19 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/engine, /area/station/science/xenobiology) -"nZd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/station/hallway/primary/central) "nZf" = ( /obj/structure/table/wood/fancy/green, /obj/effect/spawner/random/aimodule/harmless, /obj/machinery/flasher/directional/north, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai_upload) +"nZi" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/structure/railing, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "nZn" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -40561,6 +41129,19 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/medical/break_room) +"nZA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/button/door/directional/east{ + id = "engsm"; + name = "Radiation Shutters Control"; + req_access = list("engineering") + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "nZD" = ( /obj/structure/table, /obj/item/storage/belt/utility, @@ -40678,12 +41259,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"obq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "obz" = ( /obj/structure/cable, /obj/machinery/door/firedoor, @@ -40750,22 +41325,6 @@ "ocz" = ( /turf/closed/wall, /area/station/service/chapel/office) -"ocP" = ( -/obj/machinery/light/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/wood, -/area/station/security/brig) "ocT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40933,18 +41492,6 @@ /obj/structure/cable/layer1, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) -"oeZ" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) "ofa" = ( /obj/machinery/door/airlock/maintenance{ name = "Vacant Office Maintenance" @@ -41303,6 +41850,11 @@ /obj/effect/turf_decal/trimline/blue/filled/line, /turf/open/floor/iron/dark, /area/station/medical/cryo) +"olp" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/recharge_station, +/turf/open/floor/iron, +/area/station/engineering/lobby) "olt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, @@ -41311,13 +41863,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"olz" = ( -/obj/effect/turf_decal/siding/green/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "olA" = ( /obj/structure/table/wood, /obj/item/radio/intercom/command, @@ -41419,6 +41964,10 @@ }, /turf/open/floor/iron/checker, /area/station/security/office) +"onu" = ( +/obj/structure/sign/poster/random/directional/west, +/turf/open/floor/grass, +/area/station/biodome/aft) "onx" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -41444,13 +41993,6 @@ }, /turf/open/floor/iron, /area/station/tcommsat/computer) -"onM" = ( -/obj/structure/chair/sofa/bench/solo{ - dir = 4 - }, -/obj/effect/turf_decal/weather/dirt, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "onV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -41461,6 +42003,37 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, /area/station/hallway/primary/central) +"oos" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) +"oov" = ( +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) +"ooI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/button/door/directional/east{ + id = "secmechbay"; + name = "Security Mech Garage Door Controls"; + req_access = list("security") + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/shutters/window{ + id = "secmechbay"; + name = "Security Mech Bay Shutters" + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/textured_large, +/area/station/security/mechbay) "ooL" = ( /obj/machinery/camera/directional/west{ c_tag = "Engineering - Atmos Starboard" @@ -41520,14 +42093,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"opJ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/filingcabinet, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "opV" = ( /obj/machinery/light/directional/east, /turf/open/floor/iron, @@ -41568,6 +42133,20 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/drone_bay) +"oqC" = ( +/obj/effect/turf_decal/loading_area/white, +/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, +/obj/machinery/door/window/elevator/left/directional/north{ + elevator_mode = 1; + transport_linked_id = "biodome_science_lift" + }, +/turf/open/floor/iron/dark, +/area/station/science/research) "oqE" = ( /obj/item/kirbyplants/random, /turf/open/floor/wood, @@ -41864,11 +42443,6 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) -"owj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "owk" = ( /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, @@ -41929,6 +42503,15 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain) +"oxT" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing/corner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "oya" = ( /obj/machinery/air_sensor/carbon_tank, /turf/open/floor/engine/co2, @@ -42143,6 +42726,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) +"oAI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/station/engineering/supermatter/room) "oAS" = ( /obj/effect/turf_decal/tile/dark_green/diagonal_centre, /obj/structure/chair/sofa/bench/left{ @@ -42263,13 +42852,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"oCD" = ( -/obj/structure/cable/layer3, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/iron, -/area/station/engineering/engine_smes) "oCK" = ( /obj/machinery/light/warm/directional/east, /turf/open/floor/iron/herringbone, @@ -42297,6 +42879,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/grass, /area/station/medical/virology) +"oDB" = ( +/obj/item/toy/plush/beeplushie, +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/structure/railing, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "oDR" = ( /obj/machinery/air_sensor/ordnance_burn_chamber, /turf/open/floor/engine/vacuum, @@ -42412,6 +43002,20 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/science/circuits) +"oFw" = ( +/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/tile/red/half/contrasted{ + dir = 4 + }, +/obj/machinery/light_switch/directional/east, +/obj/machinery/modular_computer/preset/cargochat/security{ + dir = 8 + }, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "oFA" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood, @@ -42477,13 +43081,6 @@ }, /turf/open/floor/iron, /area/station/commons/dorms) -"oGJ" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/west, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "oGU" = ( /turf/open/floor/wood/tile, /area/station/maintenance/fore/greater) @@ -42549,17 +43146,22 @@ /obj/structure/sign/flag/nanotrasen, /turf/closed/wall, /area/station/command/heads_quarters/nt_rep) +"oHJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/blueshield) "oHW" = ( /obj/machinery/door/airlock/public/glass, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) -"oHY" = ( +"oHZ" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/secequipment, +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "oIc" = ( /obj/structure/closet{ name = "Evidence Closet 7" @@ -42596,12 +43198,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"oIr" = ( -/obj/machinery/airalarm/directional/east, -/turf/open/floor/bamboo/tatami/black{ - dir = 4 - }, -/area/station/service/bar) "oIv" = ( /turf/open/floor/plating/airless, /area/station/solars/port/fore) @@ -42645,15 +43241,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library/lounge) -"oJQ" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/meter, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "oJV" = ( /obj/structure/chair/stool/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -42689,6 +43276,13 @@ /obj/structure/sign/flag/nanotrasen/directional/east, /turf/open/floor/catwalk_floor/iron, /area/station/hallway/primary/central/aft) +"oKM" = ( +/obj/machinery/door/window/right/directional/north{ + name = "Freezer"; + req_access = list("kitchen") + }, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "oKN" = ( /turf/open/floor/carpet, /area/station/cargo/lobby) @@ -42736,21 +43330,14 @@ }, /turf/open/floor/iron/smooth_large, /area/station/cargo/warehouse) -"oLl" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "oLp" = ( /turf/open/floor/plating/elevatorshaft, /area/station/maintenance/department/science) -"oLx" = ( +"oLr" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) +/turf/open/floor/iron/dark, +/area/station/command/gateway) "oLK" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -42908,6 +43495,16 @@ /obj/effect/spawner/random/food_or_drink/booze, /turf/open/floor/glass/reinforced, /area/station/hallway/primary/starboard) +"oOf" = ( +/obj/structure/chair/sofa/bench/solo{ + dir = 8 + }, +/obj/effect/turf_decal/weather/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/grass, +/area/station/service/kitchen/diner) "oOj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -42966,6 +43563,16 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"oPk" = ( +/obj/machinery/door/airlock/corporate{ + name = "Blueshield's Quarters" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/navigate_destination/autoname, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/blueshield) "oPo" = ( /turf/open/openspace, /area/station/command/heads_quarters/captain) @@ -42988,10 +43595,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/science/ordnance) -"oPI" = ( -/obj/structure/cable, -/turf/open/floor/carpet/blue, -/area/station/security/processing) "oPR" = ( /obj/structure/table, /obj/effect/turf_decal/siding/wood{ @@ -43077,6 +43680,14 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) +"oRG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "oRS" = ( /obj/structure/punching_bag, /obj/effect/turf_decal/delivery, @@ -43284,14 +43895,15 @@ /obj/structure/lattice/catwalk, /turf/open/openspace, /area/station/maintenance/port/central) -"oWn" = ( -/obj/effect/decal/cleanable/ants/fire, -/turf/open/misc/asteroid/dug, -/area/station/asteroid) "oWu" = ( /obj/effect/turf_decal/tile/dark/diagonal_centre, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"oWv" = ( +/obj/machinery/airalarm/directional/east, +/obj/item/banner/command/mundane, +/turf/open/floor/wood, +/area/station/command/bridge) "oWS" = ( /obj/machinery/light/directional/west, /obj/structure/sign/poster/official/help_others/directional/west, @@ -43354,6 +43966,11 @@ /obj/effect/spawner/random/structure/closet_private, /turf/open/floor/carpet/neon/simple/blue, /area/station/commons/dorms) +"oXI" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "oXK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -43380,6 +43997,13 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/commons/toilet) +"oYF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/secequipment, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "oYV" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 @@ -43442,11 +44066,6 @@ }, /turf/open/floor/grass, /area/station/ai_monitored/turret_protected/aisat/foyer) -"oZB" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "oZC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/generic_maintenance_landmark, @@ -43525,16 +44144,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/reinforced, /area/station/maintenance/radshelter/civil) -"pbn" = ( -/obj/structure/table, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/turf/open/floor/iron, -/area/station/science/circuits) "pbo" = ( /obj/effect/turf_decal/bot, /obj/machinery/flasher/directional/south{ @@ -43592,6 +44201,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/commons/dorms) +"pcB" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Civilian - Garden Overlook Port" + }, +/turf/open/openspace, +/area/station/service/hydroponics/garden) +"pcI" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/item/banner/command/mundane, +/turf/open/floor/wood, +/area/station/command/bridge) "pcK" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 4 @@ -43991,15 +44611,6 @@ /obj/structure/railing/corner, /turf/open/floor/plating, /area/station/maintenance/department/science) -"phY" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "External Gas to Loop" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/incident_display/delam/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "pil" = ( /obj/machinery/newscaster/directional/south, /obj/structure/hedge, @@ -44008,6 +44619,18 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) +"piO" = ( +/obj/machinery/holopad, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/machinery/camera/directional/south{ + c_tag = "Security Post - Engineering" + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/landmark/start/engineering_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/engineering) "piS" = ( /obj/machinery/computer/camera_advanced/xenobio{ dir = 4 @@ -44066,6 +44689,12 @@ /obj/item/storage/crayons, /turf/open/floor/iron, /area/station/commons/dorms) +"pjU" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "pka" = ( /mob/living/simple_animal/bot/secbot/beepsky/armsky, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -44357,10 +44986,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"pom" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/station/service/kitchen/coldroom) "pon" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -44370,6 +44995,22 @@ "pov" = ( /turf/closed/wall, /area/station/medical/break_room) +"poL" = ( +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 5 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/item/clothing/glasses/meson/engine, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden, +/turf/open/floor/iron/dark, +/area/station/engineering/storage) "poQ" = ( /obj/structure/sign/warning/vacuum/external/directional/south, /turf/open/floor/plating, @@ -44385,13 +45026,6 @@ /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"ppF" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/meter, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "ppS" = ( /obj/structure/chair/office{ dir = 1 @@ -44449,6 +45083,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"pqJ" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/chair/sofa/bamboo/right{ + dir = 1 + }, +/turf/open/floor/grass, +/area/station/biodome/aft) "prp" = ( /obj/machinery/button/door/directional/south{ id = "gatewayshutters"; @@ -44552,6 +45193,20 @@ /obj/item/storage/photo_album/chapel, /turf/open/floor/iron/grimy, /area/station/service/chapel/office) +"ptA" = ( +/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/customs_agent, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/checkpoint/supply) +"ptM" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/plating, +/area/station/biodome/aft) "ptN" = ( /obj/machinery/firealarm/directional/west, /obj/structure/window/reinforced/spawner/directional/south, @@ -44588,10 +45243,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/dorms) -"pui" = ( -/obj/structure/sign/flag/nanotrasen, -/turf/open/openspace, -/area/station/biodome) "puk" = ( /obj/machinery/camera/motion/directional/east{ c_tag = "AI Minisat - External Port"; @@ -44644,12 +45295,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/engineering/storage/tech) -"pvw" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/openspace, -/area/station/service/hydroponics) "pvI" = ( /obj/vehicle/ridden/wheelchair{ dir = 8 @@ -44661,6 +45306,17 @@ }, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) +"pvM" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/station/engineering/transit_tube) "pvY" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -44800,11 +45456,6 @@ "pyW" = ( /turf/open/floor/wood/large, /area/station/commons/storage/primary) -"pze" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/maintenance, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/warehouse) "pzj" = ( /turf/closed/wall/r_wall, /area/station/hallway/primary/starboard) @@ -44904,28 +45555,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library) -"pAr" = ( -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/stripes/line, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/cup/bottle/multiver{ - pixel_x = 6 - }, -/obj/item/reagent_containers/cup/bottle/epinephrine, -/obj/item/reagent_containers/syringe, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/chemistry) -"pAA" = ( -/obj/structure/table, -/obj/machinery/fax{ - fax_name = "Security Office"; - name = "Security Office Fax Machine" - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "pAB" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ dir = 1 @@ -45008,6 +45637,13 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/service/chapel) +"pCB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) "pCL" = ( /obj/structure/chair{ dir = 8 @@ -45174,14 +45810,10 @@ /obj/effect/spawner/random/structure/closet_empty/crate, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/cargo) -"pFO" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "Cold Loop to Gas" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) +"pFR" = ( +/obj/structure/chair/sofa/bench/left, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "pFX" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/machinery/camera/directional/east{ @@ -45355,6 +45987,14 @@ }, /turf/closed/wall/mineral/wood, /area/station/service/kitchen/diner) +"pIz" = ( +/obj/structure/stairs/west, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "pIA" = ( /turf/open/misc/asteroid/dug, /area/station/maintenance/central/greater) @@ -45446,24 +46086,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"pJN" = ( -/obj/structure/table, -/obj/item/book/manual/hydroponics_pod_people, -/obj/item/clothing/accessory/armband/hydro, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/paper/guides/jobs/hydroponics, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/effect/turf_decal/siding/brown{ - dir = 4 - }, -/turf/open/floor/iron/terracotta/small, -/area/station/service/hydroponics) "pKg" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -45547,12 +46169,6 @@ /obj/structure/cable/multilayer/connected, /turf/open/floor/catwalk_floor/iron_dark, /area/station/ai_monitored/turret_protected/ai) -"pMw" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/meter, -/obj/structure/cable, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "pMx" = ( /obj/effect/turf_decal/siding/green{ dir = 4 @@ -45756,24 +46372,6 @@ /obj/machinery/light/floor, /turf/open/floor/plating, /area/station/cargo/storage) -"pQp" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) -"pQt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome) "pQw" = ( /obj/structure/cable, /obj/machinery/duct, @@ -45872,18 +46470,6 @@ "pSI" = ( /turf/open/floor/engine/vacuum, /area/station/science/ordnance/burnchamber) -"pSM" = ( -/obj/structure/table, -/obj/item/inspector{ - pixel_x = -5; - pixel_y = 12 - }, -/obj/item/inspector{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/wood, -/area/station/security/brig) "pSV" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance" @@ -46098,6 +46684,12 @@ /obj/effect/turf_decal/trimline/green/filled/warning, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"pXy" = ( +/obj/effect/spawner/random/trash/garbage, +/obj/effect/turf_decal/delivery/red, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/service/library/lounge) "pXI" = ( /obj/item/chair/wood/wings, /turf/open/floor/plating, @@ -46153,6 +46745,12 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"pYJ" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/vending/access/command, +/turf/open/floor/wood, +/area/station/command/bridge) "pYK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -46174,6 +46772,13 @@ /obj/effect/decal/cleanable/glitter/white, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"pZa" = ( +/obj/structure/sign/poster/official/obey/directional/north, +/obj/machinery/computer/shuttle/labor{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/security/processing) "pZg" = ( /obj/machinery/door/airlock/research/glass/incinerator/ordmix_interior{ name = "Burn Chamber Interior Airlock" @@ -46209,6 +46814,15 @@ dir = 4 }, /area/station/service/chapel) +"qah" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "qai" = ( /obj/item/stack/cannonball/trashball{ pixel_x = -4 @@ -46235,13 +46849,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"qaU" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/cargo/miningdock) "qaW" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46312,10 +46919,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"qbX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/closed/wall/r_wall, -/area/station/ai_monitored/turret_protected/aisat/foyer) "qcf" = ( /obj/machinery/duct, /turf/open/floor/wood/tile, @@ -46350,10 +46953,6 @@ }, /turf/open/floor/plating, /area/station/security/detectives_office) -"qcX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/smooth_large, -/area/station/cargo/warehouse) "qcY" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch" @@ -46547,12 +47146,6 @@ }, /turf/open/floor/iron/dark/smooth_half, /area/station/security/brig) -"qgp" = ( -/obj/structure/railing{ - dir = 5 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "qgs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -46691,18 +47284,6 @@ }, /turf/open/space, /area/space/nearstation) -"qiP" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/dark_green/corner, -/obj/effect/turf_decal/siding/dark_green/corner{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) -"qjd" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "qjl" = ( /obj/structure/ladder, /obj/effect/turf_decal/delivery, @@ -46823,13 +47404,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/carpet/black, /area/station/security/prison) -"qkS" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 4 - }, -/obj/structure/sign/warning/gas_mask/directional/south, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) "qkU" = ( /obj/machinery/airalarm/directional/west, /obj/effect/mapping_helpers/airalarm/tlv_cold_room, @@ -46865,6 +47439,13 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) +"qlF" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "qlG" = ( /obj/structure/chair/comfy/black{ dir = 1 @@ -46907,11 +47488,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/wood, /area/station/service/lawoffice) -"qlT" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/structure/cable, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "qlZ" = ( /obj/machinery/gateway/centerstation, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -46990,14 +47566,6 @@ /obj/machinery/computer/cargo, /turf/open/floor/wood, /area/station/cargo/sorting) -"qmS" = ( -/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, -/obj/machinery/duct, -/turf/open/floor/stone, -/area/station/biodome/fore) "qmX" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -47029,6 +47597,18 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/science/ordnance/office) +"qnL" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/wood/parquet, +/area/station/command/heads_quarters/blueshield) "qnR" = ( /obj/structure/transit_tube/curved/flipped{ dir = 8 @@ -47123,14 +47703,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/port) -"qoW" = ( -/obj/effect/turf_decal/trimline/yellow/warning{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/station/engineering/transit_tube) "qoX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/floor, @@ -47172,6 +47744,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/stone, /area/station/maintenance/department/security/brig) +"qqb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/hallway/secondary/service) "qqy" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/directional/east, @@ -47205,17 +47783,6 @@ /obj/structure/table/wood, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"qqV" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Security Post - Medbay" - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/medical) "qre" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -47249,9 +47816,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"qrF" = ( -/turf/closed/wall, -/area/station/security/brig) "qrH" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -47291,6 +47855,14 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/station/medical/cryo) +"qsH" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/wood, +/area/station/service/lawoffice) "qsW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -47350,6 +47922,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/engine_smes) +"qtU" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "quf" = ( /obj/structure/transit_tube/horizontal, /obj/structure/railing, @@ -47376,13 +47954,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/commons/storage/primary) -"quP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 4 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/dark, -/area/station/engineering/supermatter/room) "quS" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -47531,16 +48102,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/terracotta, /area/station/hallway/secondary/construction/engineering) -"qxr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/weather/dirt, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/station/biodome/aft) "qxL" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/effect/turf_decal/weather/dirt, @@ -47605,6 +48166,12 @@ /obj/structure/closet/radiation, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"qze" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "qzf" = ( /turf/open/floor/wood/large, /area/station/biodome/aft) @@ -47727,13 +48294,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"qAI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/wood/large, -/area/station/hallway/primary/central) "qAP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -47820,19 +48380,6 @@ }, /turf/open/floor/iron, /area/station/science/research) -"qCu" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/button/door/directional/east{ - id = "engsm"; - name = "Radiation Shutters Control"; - req_access = list("engineering") - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "qCz" = ( /turf/open/floor/plating, /area/station/hallway/primary/aft) @@ -47976,6 +48523,12 @@ }, /turf/open/space/basic, /area/space/nearstation) +"qFk" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "qFl" = ( /turf/open/misc/beach/coast{ dir = 10 @@ -48002,6 +48555,14 @@ /obj/effect/spawner/random/vending/snackvend, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"qFD" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/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_half, +/area/station/security/brig) "qFW" = ( /obj/machinery/requests_console/directional/south{ department = "Atmospherics"; @@ -48032,24 +48593,11 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/grass, /area/station/biodome/fore) -"qGD" = ( -/obj/machinery/status_display/evac/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) -"qGF" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/structure/cable, -/obj/effect/landmark/start/depsec/supply, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/supply) +"qGH" = ( +/obj/machinery/light/directional/east, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "qGJ" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -48119,6 +48667,11 @@ dir = 8 }, /area/station/engineering/transit_tube) +"qHE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "qHO" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark, @@ -48185,10 +48738,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) -"qJa" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "qJl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48230,6 +48779,14 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"qJQ" = ( +/obj/machinery/elevator_control_panel/directional/north{ + linked_elevator_id = "biodome_engie_lift"; + name = "Engineering's Lifts Control Panel"; + preset_destination_names = list("2"="EngineeringAccess","3"="StorageZone") + }, +/turf/open/openspace, +/area/station/hallway/primary/aft) "qJS" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole, @@ -48241,15 +48798,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library) -"qKh" = ( -/obj/effect/turf_decal/loading_area/white, -/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/science/research) "qKk" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -48307,6 +48855,14 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"qKS" = ( +/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, +/turf/open/floor/stone, +/area/station/biodome/aft) "qKY" = ( /obj/structure/table/wood/poker, /obj/effect/spawner/random/entertainment/gambling, @@ -48326,6 +48882,12 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) +"qLj" = ( +/obj/structure/beebox, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/grass, +/area/station/service/hydroponics) "qLq" = ( /obj/structure/flora/bush/flowers_pp/style_random, /obj/effect/turf_decal/weather/dirt, @@ -48360,12 +48922,6 @@ /obj/effect/landmark/navigate_destination/dockarrival, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"qLW" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/openspace, -/area/station/service/hydroponics) "qMc" = ( /obj/machinery/airalarm/directional/south, /turf/open/floor/glass/reinforced, @@ -48420,6 +48976,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"qMX" = ( +/mob/living/basic/pet/dog/markus, +/turf/open/floor/iron, +/area/station/cargo/storage) "qMY" = ( /obj/machinery/door/airlock/security/glass{ name = "Armory" @@ -48535,12 +49095,6 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) -"qPn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/fore) "qPp" = ( /obj/machinery/duct, /obj/item/bikehorn/rubberducky, @@ -48548,13 +49102,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) -"qPz" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/chair/sofa/bamboo/left{ - dir = 1 - }, -/turf/open/floor/grass, -/area/station/biodome/aft) "qPA" = ( /obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 4 @@ -48564,27 +49111,22 @@ }, /turf/open/floor/iron/dark, /area/station/security/processing) -"qPC" = ( -/obj/structure/table, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi{ - pixel_x = 5 - }, -/obj/item/clothing/mask/breath{ - pixel_x = 4 - }, -/obj/item/clothing/mask/breath{ - pixel_x = 2; - pixel_y = -1 - }, -/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage) "qPE" = ( /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"qPK" = ( +/obj/machinery/duct, +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/machinery/requests_console/directional/north{ + department = "Hydroponics"; + name = "Hydroponics Requests Console"; + pixel_y = -30 + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "qPO" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/spawner/random/engineering/atmospherics_portable, @@ -48620,6 +49162,9 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"qQq" = ( +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "qQw" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/trimline/purple/line, @@ -48672,6 +49217,12 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) +"qRn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/biodome/aft) "qRp" = ( /obj/machinery/camera/directional/east{ c_tag = "Storage - Drunk Tank Gallery" @@ -48705,6 +49256,12 @@ /obj/structure/stairs/south, /turf/open/floor/iron/stairs/medium, /area/station/cargo/warehouse) +"qRR" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "qRU" = ( /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/grimy, @@ -48714,6 +49271,13 @@ /obj/effect/spawner/random/trash/moisture_trap, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/cargo) +"qRX" = ( +/obj/effect/turf_decal/tile/neutral/half{ + dir = 4 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron, +/area/station/commons/locker) "qSc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48763,10 +49327,6 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/iron/white, /area/station/service/kitchen) -"qSY" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/water/jungle/biodome, -/area/station/biodome/aft) "qTg" = ( /obj/structure/chair{ dir = 4 @@ -48802,6 +49362,17 @@ /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /turf/open/floor/iron/dark, /area/station/engineering/atmos/project) +"qTz" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "qTB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48998,18 +49569,6 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron, /area/station/science/xenobiology) -"qVW" = ( -/obj/machinery/requests_console/directional/north{ - department = "Hydroponics"; - name = "Hydroponics Requests Console"; - pixel_y = -30 - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "qWe" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 8 @@ -49055,6 +49614,12 @@ }, /turf/open/floor/wood, /area/station/service/lawoffice) +"qWB" = ( +/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/obj/effect/turf_decal/tile/dark_green/opposingcorners, +/obj/structure/stairs/east, +/turf/open/floor/iron/white, +/area/station/service/kitchen) "qWE" = ( /obj/machinery/computer/atmos_control/plasma_tank{ dir = 4 @@ -49349,6 +49914,12 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"raV" = ( +/obj/structure/sign/directions/arrival/directional/south{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "rba" = ( /obj/structure/reagent_dispensers/watertank{ pixel_x = -1 @@ -49436,6 +50007,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/carpet/neon/simple/cyan/nodots, /area/station/science/server) +"rcZ" = ( +/obj/machinery/duct, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/window/elevator/left/directional/east{ + elevator_mode = 1; + transport_linked_id = "biodome_engie_lift" + }, +/turf/open/floor/iron/terracotta, +/area/station/hallway/secondary/construction/engineering) "rdh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -49616,6 +50198,18 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/iron, /area/station/science/xenobiology) +"rfH" = ( +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/nineteen_nineteen, +/turf/open/floor/plating, +/area/station/service/library/lounge) +"rgj" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/sheet/iron/fifty, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "rgm" = ( /obj/machinery/power/solar{ id = "foreport"; @@ -49938,6 +50532,12 @@ /obj/machinery/door/firedoor, /turf/open/floor/stone, /area/station/biodome) +"rlt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/closed/wall/r_wall/fakewood, +/area/station/command/heads_quarters/captain) "rlz" = ( /turf/open/floor/iron/grimy, /area/station/hallway/secondary/entry) @@ -50186,11 +50786,6 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"rps" = ( -/obj/effect/turf_decal/siding/green, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "rpy" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50244,21 +50839,21 @@ /obj/machinery/holopad, /turf/open/floor/iron/grimy, /area/station/service/lawoffice) +"rqx" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/official/random/directional/west, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/machinery/rnd/production/techfab/department/security, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "rqA" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 8 }, /turf/open/floor/iron, /area/station/science/research) -"rqE" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Biodome - Overpass Fore" - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/hallway/primary/central) "rqX" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/medical_all, @@ -50268,6 +50863,15 @@ /obj/structure/shipping_container/cybersun, /turf/open/misc/asteroid/airless, /area/station/asteroid) +"rrm" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "rrp" = ( /turf/open/misc/dirt/jungle/wasteland, /area/station/maintenance/central/greater) @@ -50306,11 +50910,6 @@ /obj/item/kirbyplants/photosynthetic, /turf/open/floor/iron/dark, /area/station/science/robotics/lab) -"rsd" = ( -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination, -/turf/open/floor/iron, -/area/station/commons/locker) "rsj" = ( /turf/open/floor/iron/white, /area/station/science/xenobiology) @@ -50358,12 +50957,6 @@ /obj/structure/girder, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"rsY" = ( -/obj/structure/railing{ - dir = 10 - }, -/turf/open/floor/iron/herringbone, -/area/station/biodome) "rsZ" = ( /obj/effect/spawner/random/food_or_drink/booze{ pixel_x = 3; @@ -50495,14 +51088,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/hallway/primary/aft) -"ruy" = ( -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "ruD" = ( /obj/effect/spawner/random/trash/cigbutt, /obj/machinery/firealarm/directional/north, @@ -50678,12 +51263,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"rxD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/depsec/science, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) "rxG" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/dark{ @@ -50735,18 +51314,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/misc/asteroid, /area/station/maintenance/central/greater) -"ryG" = ( -/obj/structure/table, -/obj/item/food/donut/plain{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/storage/fancy/coffee_cart_rack{ - pixel_x = 8; - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/station/security/brig) "ryH" = ( /obj/effect/landmark/start/bitrunner, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -50893,12 +51460,6 @@ }, /turf/open/floor/stone, /area/station/biodome/aft) -"rBo" = ( -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/twentythree_nineteen, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "rBr" = ( /obj/structure/table, /obj/item/folder/yellow, @@ -50963,6 +51524,20 @@ }, /turf/open/floor/plating, /area/station/cargo/miningdock) +"rCa" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/loading_area/white, +/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/window/elevator/left/directional/north{ + elevator_mode = 1; + transport_linked_id = "biodome_science_lift" + }, +/turf/open/floor/iron/dark, +/area/station/science/research) "rCB" = ( /obj/structure/table, /obj/item/folder/blue{ @@ -51035,13 +51610,6 @@ /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/floor/iron, /area/station/engineering/main) -"rEJ" = ( -/obj/effect/landmark/start/depsec/medical, -/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/smooth_large, -/area/station/security/checkpoint/medical) "rET" = ( /obj/structure/sign/clock/directional/west, /turf/open/floor/stone, @@ -51108,10 +51676,6 @@ }, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"rGd" = ( -/obj/structure/mirror/directional/west, -/turf/open/openspace, -/area/station/security/brig) "rGg" = ( /obj/structure/table, /obj/item/storage/box/bodybags{ @@ -51142,6 +51706,12 @@ /obj/item/grown/bananapeel, /turf/open/floor/wood/large, /area/station/hallway/secondary/service) +"rGv" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "rGE" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /obj/effect/turf_decal/tile/red/anticorner/contrasted, @@ -51276,6 +51846,10 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"rIK" = ( +/obj/structure/table/wood, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "rIP" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -51286,6 +51860,9 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plating/reinforced, /area/station/maintenance/central/greater) +"rIV" = ( +/turf/open/space/basic, +/area/space/nearstation) "rJk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/structure/cable, @@ -51355,6 +51932,11 @@ }, /turf/open/floor/grass, /area/station/service/kitchen/diner) +"rKo" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "rKp" = ( /obj/machinery/door/airlock/maintenance{ name = "Brig Infirmary Maintenance" @@ -51397,12 +51979,6 @@ "rKS" = ( /turf/open/openspace, /area/station/science/xenobiology) -"rLd" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/machinery/airalarm/directional/north, -/obj/machinery/light/directional/north, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "rLe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51424,11 +52000,6 @@ }, /turf/open/floor/stone, /area/station/biodome/aft) -"rLL" = ( -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing, -/turf/open/openspace, -/area/station/hallway/primary/aft) "rLU" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -51442,14 +52013,6 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/science/xenobiology) -"rMf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "rMi" = ( /obj/structure/table, /obj/effect/spawner/random/entertainment/money, @@ -51509,6 +52072,11 @@ /obj/machinery/power/floodlight, /turf/open/floor/grass, /area/station/biodome) +"rNx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "rNL" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch" @@ -51517,13 +52085,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/open/floor/plating, /area/station/maintenance/port/central) -"rOt" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/light/directional/east, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "rOu" = ( /obj/machinery/duct, /obj/structure/cable, @@ -51535,14 +52096,6 @@ }, /turf/open/floor/iron/freezer, /area/station/commons/toilet/auxiliary) -"rOH" = ( -/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "rOP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -51689,14 +52242,6 @@ "rRv" = ( /turf/open/misc/asteroid/airless, /area/station/asteroid) -"rRy" = ( -/turf/closed/wall, -/area/station/security/processing) -"rRI" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood/large, -/area/station/commons/lounge) "rRN" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/wood{ @@ -51926,6 +52471,12 @@ /obj/structure/broken_flooring/plating/directional/east, /turf/open/floor/circuit/off, /area/station/tcommsat/server) +"rUO" = ( +/obj/structure/chair/stool/directional/south, +/obj/effect/turf_decal/trimline/red/warning, +/obj/effect/landmark/start/corrections_officer, +/turf/open/floor/iron, +/area/station/security/brig) "rUW" = ( /obj/structure/table/glass, /obj/item/paper_bin{ @@ -52040,14 +52591,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/iron, /area/station/science/xenobiology) -"rWF" = ( -/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "rWM" = ( /turf/closed/wall/r_wall, /area/station/security/medical) @@ -52172,13 +52715,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/cargo/miningdock) -"rYH" = ( -/obj/machinery/light/directional/west, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "rYO" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 @@ -52459,27 +52995,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/stone, /area/station/biodome/fore) -"seo" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/closet{ - name = "Beekeeper Uniform" - }, -/obj/item/melee/flyswatter, -/obj/item/clothing/head/utility/beekeeper_head, -/obj/item/clothing/suit/utility/beekeeper_suit, -/obj/effect/turf_decal/trimline/dark_green/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/green/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner{ - dir = 1 - }, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "sep" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -52490,11 +53005,6 @@ /obj/structure/statue/bone/skull, /turf/open/water/jungle/biodome, /area/station/maintenance/central/greater) -"seM" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/turf/open/space/basic, -/area/space/nearstation) "seP" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/closed/wall/mineral/wood, @@ -52544,6 +53054,14 @@ }, /turf/open/floor/noslip, /area/station/biodome/aft) +"sga" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/barricade/wooden, +/turf/open/floor/wood/large, +/area/station/hallway/secondary/service) "sge" = ( /obj/structure/disposalpipe/sorting/mail{ dir = 8; @@ -52577,11 +53095,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"sgA" = ( -/obj/structure/bookcase/random/adult, -/obj/effect/turf_decal/delivery/red, -/turf/open/floor/plating, -/area/station/service/library/lounge) "sgC" = ( /obj/machinery/telecomms/server/presets/engineering, /turf/open/floor/iron/dark/telecomms, @@ -52758,18 +53271,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/medical/virology) -"skK" = ( -/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_switch/directional/east, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "skV" = ( /obj/item/kirbyplants/random, /turf/open/floor/wood, @@ -52857,17 +53358,6 @@ "smF" = ( /turf/open/floor/iron/white, /area/station/maintenance/port/greater) -"smG" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - name = "sorting disposal pipe (Chapel)" - }, -/obj/effect/mapping_helpers/mail_sorting/service/chapel, -/turf/open/floor/stone, -/area/station/biodome) "smK" = ( /obj/structure/closet/emcloset, /turf/open/floor/grass, @@ -52877,13 +53367,6 @@ /obj/item/poster/random_contraband, /turf/open/floor/plating, /area/station/maintenance/port/central) -"smP" = ( -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/siding/green{ - dir = 10 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "smW" = ( /turf/open/floor/iron/smooth_large, /area/station/security/brig) @@ -52919,6 +53402,13 @@ }, /turf/open/water/jungle/biodome, /area/station/biodome/aft) +"snM" = ( +/obj/structure/table/wood/fancy, +/obj/item/flashlight/flare/candle{ + pixel_y = 6 + }, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) "snN" = ( /obj/item/radio/intercom/directional/south, /obj/effect/decal/cleanable/oil, @@ -53048,6 +53538,14 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron, /area/station/science/research) +"spa" = ( +/obj/machinery/camera/directional/west, +/turf/open/floor/wood/stairs/left, +/area/station/biodome/aft) +"spb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/smooth_half, +/area/station/security/lockers) "spc" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -53207,6 +53705,10 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"stq" = ( +/obj/effect/turf_decal/siding/dark_green, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "stx" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/engine/air, @@ -53273,6 +53775,12 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/white, /area/station/science/ordnance) +"suU" = ( +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/processing) "suW" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/siding/dark_green{ @@ -53324,6 +53832,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/ai_monitored/command/nuke_storage) +"svx" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "svy" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/iron/dark, @@ -53334,6 +53853,13 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"svF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/floor/iron/dark, +/area/station/engineering/supermatter/room) "svR" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -53727,6 +54253,20 @@ /obj/effect/spawner/random/structure/billboard/roadsigns, /turf/open/space/openspace, /area/space/nearstation) +"sCu" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/structure/rack, +/obj/item/storage/box/hug{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/razor{ + pixel_x = -8; + pixel_y = 3 + }, +/turf/open/floor/carpet/blue, +/area/station/security/processing) "sCD" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -53774,6 +54314,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) +"sDp" = ( +/obj/structure/hedge, +/obj/structure/railing, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "sDq" = ( /obj/effect/turf_decal/siding/dark, /turf/open/floor/carpet/black, @@ -53791,13 +54337,6 @@ /obj/structure/sign/clock/directional/west, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) -"sEc" = ( -/obj/structure/ladder, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "sEq" = ( /obj/effect/turf_decal/siding/dark{ dir = 5 @@ -53854,6 +54393,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/central) +"sFM" = ( +/obj/machinery/smartfridge/food, +/obj/machinery/door/firedoor, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "sFP" = ( /obj/effect/mapping_helpers/broken_floor, /obj/structure/reagent_dispensers/fueltank, @@ -54007,34 +54551,6 @@ /obj/machinery/light/floor, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"sIC" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/dark_green/corner{ - dir = 8 - }, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) -"sIE" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) -"sIU" = ( -/obj/structure/bookcase/random/religion, -/obj/effect/decal/cleanable/cobweb, -/obj/structure/sign/painting/library{ - pixel_x = -32 - }, -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood/large, -/area/station/service/library) "sJc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -54283,18 +54799,31 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/interrogation) -"sMH" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 10 - }, -/turf/open/space/basic, -/area/space/nearstation) "sMK" = ( /obj/effect/spawner/random/trash/food_packaging, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) +"sMM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit/departure_lounge) +"sNj" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) +"sNn" = ( +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "sNJ" = ( /obj/structure/cable, /obj/effect/spawner/random/trash/garbage{ @@ -54305,10 +54834,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"sNN" = ( -/obj/effect/turf_decal/weather/dirt, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "sNP" = ( /obj/machinery/computer/security/telescreen/cmo/directional/west{ desc = "Used for monitoring medbay to ensure patient safety."; @@ -54320,14 +54845,12 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/security/checkpoint/medical) -"sOd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"sNR" = ( +/obj/structure/railing/corner{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "sOg" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -54443,6 +54966,12 @@ }, /turf/open/floor/iron, /area/station/security/prison/mess) +"sQb" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "sQn" = ( /obj/machinery/conveyor{ dir = 8; @@ -54458,6 +54987,10 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/port/central) +"sQv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "sQx" = ( /obj/machinery/camera/directional/east{ c_tag = "AI Minisat - Chamber Starboard"; @@ -54565,19 +55098,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"sRX" = ( +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/openspace, +/area/station/biodome/fore) "sSb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"sSi" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/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/command/bridge) "sSm" = ( /obj/structure/cable, /turf/open/floor/catwalk_floor/iron_dark, @@ -54611,13 +55144,6 @@ dir = 1 }, /area/station/science/robotics/lab) -"sSz" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/hallway/primary/central) "sSD" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/siding/wideplating_new/terracotta{ @@ -54885,6 +55411,10 @@ }, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) +"sYl" = ( +/obj/machinery/air_sensor/engine_chamber, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "sYo" = ( /obj/effect/turf_decal/trimline/red/real_red/corner, /obj/effect/turf_decal/trimline/red/line{ @@ -54892,6 +55422,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"sYu" = ( +/obj/machinery/light/floor, +/obj/structure/lattice/catwalk, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "sYC" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -54924,6 +55459,12 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) +"sZg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/science_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/science) "sZh" = ( /obj/effect/turf_decal/delivery/white{ color = "#52B4E9" @@ -55061,6 +55602,13 @@ }, /turf/open/floor/iron/smooth_half, /area/station/security/brig) +"taW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/delam_scram/directional/west, +/turf/open/floor/engine, +/area/station/engineering/supermatter) "tbb" = ( /obj/structure/table/reinforced, /obj/item/paper/guides/jobs/medical/morgue, @@ -55205,13 +55753,6 @@ /obj/effect/turf_decal/stripes/asteroid/line, /turf/open/misc/asteroid, /area/station/cargo/miningdock) -"tcM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/fore) "tcP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55247,6 +55788,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/service/barber) +"tdd" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, +/obj/effect/spawner/random/decoration/carpet/luxury, +/turf/open/floor/iron/checker, +/area/station/service/bar/backroom) "tdn" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/rnd_secure_all, @@ -55284,6 +55832,15 @@ /obj/structure/sign/departments/telecomms/alt/directional/east, /turf/open/floor/iron/terracotta, /area/station/hallway/secondary/construction/engineering) +"tdL" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/glass, +/area/station/hallway/primary/aft) "tdO" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/table/wood/fancy, @@ -55310,6 +55867,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/stone, /area/station/biodome/fore) +"tef" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) +"teh" = ( +/obj/machinery/door/window/left/directional/west{ + name = "Maximum Security Test Chamber"; + req_access = list("science") + }, +/turf/open/floor/iron/dark, +/area/station/science/circuits) "ter" = ( /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/stone, @@ -55391,11 +55962,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"tgi" = ( -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/effect/turf_decal/trimline/red/filled/mid_joiner, -/turf/open/floor/iron/smooth_large, -/area/station/security/brig) "tgm" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -55435,10 +56001,6 @@ /obj/effect/landmark/start/blueshield, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain) -"tgU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "thb" = ( /obj/item/melee/skateboard, /turf/open/floor/plating/plasma, @@ -55814,6 +56376,10 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"tmu" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet/red, +/area/station/hallway/secondary/entry) "tmw" = ( /obj/effect/spawner/random/structure/crate, /obj/effect/spawner/random/entertainment/toy_figure, @@ -55862,10 +56428,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/central) -"tnf" = ( -/obj/machinery/photocopier, -/turf/open/floor/wood, -/area/station/service/lawoffice) "tnj" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -55956,6 +56518,21 @@ /obj/structure/girder/displaced, /turf/open/floor/plating, /area/station/service/janitor) +"tqf" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/table, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/obj/machinery/recharger{ + pixel_x = 6; + pixel_y = 1 + }, +/obj/machinery/recharger{ + pixel_x = -6; + pixel_y = 1 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "tqm" = ( /obj/machinery/computer/operating{ dir = 4 @@ -56177,10 +56754,6 @@ /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/wood/large, /area/station/biodome/fore) -"tuE" = ( -/obj/machinery/light/small, -/turf/open/floor/wood, -/area/station/service/lawoffice) "tuQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -56219,15 +56792,6 @@ /obj/machinery/meter, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) -"tvp" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/clothing/head/utility/welding, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/chemistry) "tvt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/machinery/light/small/directional/north, @@ -56765,6 +57329,13 @@ /obj/effect/mapping_helpers/requests_console/supplies, /turf/open/floor/iron, /area/station/science/circuits) +"tDY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/security/processing) "tEb" = ( /obj/effect/turf_decal/tile/neutral/diagonal_centre, /obj/structure/mannequin/wood{ @@ -57079,6 +57650,14 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/iron/smooth, /area/station/maintenance/central/greater) +"tIN" = ( +/obj/structure/closet/crate/engineering, +/obj/item/storage/toolbox/artistic{ + pixel_y = 8 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/crew_quarters/bar) "tIP" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -57093,6 +57672,15 @@ "tIY" = ( /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) +"tJb" = ( +/obj/effect/turf_decal/bot, +/obj/effect/landmark/start/botanist, +/obj/effect/turf_decal/siding/brown{ + dir = 9 + }, +/obj/machinery/duct, +/turf/open/floor/iron/terracotta/small, +/area/station/service/hydroponics) "tJp" = ( /obj/machinery/button/door/directional/south{ id = "Dorm1"; @@ -57138,22 +57726,6 @@ /obj/structure/flora/rock/pile/jungle/style_random, /turf/open/water/jungle/biodome, /area/station/biodome) -"tKr" = ( -/obj/structure/table/glass, -/obj/item/modular_computer/laptop/preset/civilian{ - pixel_y = 3 - }, -/obj/machinery/requests_console/directional/west{ - department = "Engineering"; - name = "Engineering Requests Console" - }, -/obj/effect/mapping_helpers/requests_console/supplies, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "tKt" = ( /obj/structure/transit_tube/diagonal/crossing{ dir = 4 @@ -57182,10 +57754,6 @@ /obj/effect/mapping_helpers/airlock/access/all/science/general, /turf/open/floor/iron/dark, /area/station/science/circuits) -"tKQ" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/plating, -/area/station/maintenance/aft/upper) "tLb" = ( /obj/structure/flora/rock/style_random, /turf/open/floor/grass, @@ -57204,6 +57772,19 @@ /obj/machinery/door/firedoor, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/qm) +"tLG" = ( +/obj/machinery/camera/directional/south{ + c_tag = "Service - Service Hall" + }, +/obj/machinery/light_switch/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/duct, +/turf/open/floor/wood/large, +/area/station/hallway/secondary/service) "tLI" = ( /obj/structure/disposalpipe/trunk, /turf/closed/wall, @@ -57265,16 +57846,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) -"tMz" = ( -/obj/effect/turf_decal/loading_area/white, -/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, -/area/station/science/research) "tMG" = ( /obj/effect/spawner/structure/window, /obj/machinery/door/poddoor/preopen{ @@ -57427,6 +57998,9 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"tPP" = ( +/turf/open/floor/wood, +/area/station/service/lawoffice) "tQk" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -57437,6 +58011,14 @@ /obj/structure/window/spawner/directional/east, /turf/open/floor/carpet/donk, /area/station/security/prison/mess) +"tQp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + id = "mining"; + dir = 1 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "tQt" = ( /obj/structure/table, /obj/item/flashlight{ @@ -57476,13 +58058,6 @@ }, /turf/open/floor/wood/large, /area/station/service/library) -"tQT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/hidden{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "tQV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -57592,6 +58167,12 @@ /obj/machinery/button/ignition/incinerator/atmos, /turf/closed/wall/r_wall, /area/station/maintenance/disposal/incinerator) +"tUb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/stone, +/area/station/biodome) "tUf" = ( /obj/structure/railing{ dir = 4 @@ -57707,10 +58288,10 @@ }, /turf/open/floor/iron, /area/station/commons/fitness) -"tWa" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) +"tWd" = ( +/obj/effect/landmark/navigate_destination/cryo, +/turf/open/floor/carpet/executive, +/area/station/commons/locker) "tWe" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -57725,10 +58306,6 @@ /obj/machinery/light/directional/north, /turf/open/openspace, /area/station/hallway/primary/starboard) -"tWl" = ( -/obj/machinery/light/warm/directional/west, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "tWv" = ( /obj/effect/turf_decal/tile/dark_blue/diagonal_edge, /obj/effect/landmark/event_spawn, @@ -57786,6 +58363,11 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"tXW" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/kitchen_coldroom/freezerfloor, +/area/station/service/kitchen/coldroom) "tYa" = ( /obj/structure/closet/secure_closet/atmospherics, /turf/open/floor/iron/dark, @@ -57851,10 +58433,12 @@ "tZU" = ( /turf/closed/wall/r_wall, /area/station/security/prison) -"uaa" = ( -/obj/structure/holosign/barrier/atmos/tram, -/turf/open/openspace, -/area/station/biodome/aft) +"tZX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/engineering/engine_smes) "uae" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57921,6 +58505,12 @@ }, /turf/open/floor/iron/smooth_large, /area/station/security/brig) +"ubb" = ( +/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/service/library/lounge) "ubd" = ( /obj/structure/cable, /turf/open/floor/carpet/black, @@ -58040,6 +58630,16 @@ /obj/effect/spawner/structure/window, /turf/open/floor/grass, /area/station/biodome/aft) +"ued" = ( +/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/wood/large, +/area/station/hallway/secondary/service) "uef" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -58047,6 +58647,17 @@ }, /turf/open/floor/plating, /area/station/engineering/atmos) +"ueh" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/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/smooth_half, +/area/station/security/office) "ueo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /turf/open/floor/plating, @@ -58164,13 +58775,6 @@ "ufJ" = ( /turf/closed/wall/mineral/wood, /area/station/commons/storage/primary) -"ufX" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/freezer, -/area/station/commons/toilet) "ugl" = ( /obj/structure/cable, /obj/item/shard, @@ -58515,10 +59119,19 @@ }, /turf/open/floor/wood/large, /area/station/service/library) +"unt" = ( +/obj/structure/sign/poster/official/moth_hardhat/directional/east, +/turf/open/floor/grass, +/area/station/biodome) "unu" = ( /obj/machinery/firealarm/directional/west, /turf/open/floor/grass, /area/station/biodome/aft) +"unA" = ( +/obj/structure/beebox, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/grass, +/area/station/service/hydroponics) "unD" = ( /obj/structure/stairs/east, /turf/open/floor/iron/stairs/left{ @@ -58564,11 +59177,6 @@ "uox" = ( /turf/closed/wall, /area/station/security/lockers) -"uoB" = ( -/obj/structure/holosign/barrier/atmos/tram, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plating, -/area/station/biodome/aft) "uoD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -58636,11 +59244,6 @@ }, /turf/open/openspace, /area/station/science/xenobiology) -"upy" = ( -/obj/structure/lattice/catwalk, -/obj/structure/marker_beacon/olive, -/turf/open/space/basic, -/area/space/nearstation) "upK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/sorting/mail{ @@ -58654,10 +59257,6 @@ "upO" = ( /turf/closed/wall/r_wall, /area/station/science/xenobiology/hallway) -"upW" = ( -/obj/structure/closet/secure_closet/security/sec, -/turf/open/floor/iron/smooth_half, -/area/station/security/lockers) "upY" = ( /obj/effect/landmark/start/blueshield, /turf/open/floor/wood/tile, @@ -58697,19 +59296,30 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/engineering/atmos/project) -"uqN" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "uqP" = ( /obj/effect/landmark/start/hangover, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/fitness) +"uqY" = ( +/obj/machinery/button/elevator/directional/north{ + id = "biodome_engie_lift" + }, +/obj/machinery/lift_indicator/directional/north{ + linked_elevator_id = "biodome_engie_lift" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 + }, +/obj/machinery/door/window/elevator/left/directional/west{ + transport_linked_id = "biodome_engie_lift"; + elevator_mode = 1 + }, +/turf/open/floor/iron/terracotta, +/area/station/hallway/primary/aft) "uri" = ( /obj/machinery/recharge_station, /turf/open/floor/plating, @@ -58756,13 +59366,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) -"urA" = ( -/obj/structure/closet/bombcloset, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/station/science/ordnance) "urM" = ( /obj/effect/spawner/structure/window, /obj/structure/holosign/barrier/atmos/leaf{ @@ -58816,25 +59419,11 @@ }, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"utd" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/tile/neutral/half{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/commons/locker) "ute" = ( /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/chemistry) -"utg" = ( -/obj/machinery/vending/wardrobe/chem_wardrobe, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark/textured_half{ - dir = 1 - }, -/area/station/medical/chemistry) "uti" = ( /obj/effect/spawner/structure/window, /obj/structure/curtain/bounty, @@ -58870,6 +59459,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/mix) +"utZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/small, +/area/station/security/mechbay) "uud" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -59003,6 +59598,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet/neon/simple/cyan/nodots, /area/station/science/server) +"uxa" = ( +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/effect/landmark/secequipment, +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "uxI" = ( /obj/machinery/computer/mechpad, /turf/open/floor/iron, @@ -59029,6 +59630,13 @@ }, /turf/open/floor/iron, /area/station/engineering/storage) +"uxU" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/biodome) "uyp" = ( /obj/effect/turf_decal/arrows/red{ dir = 4; @@ -59039,6 +59647,21 @@ }, /turf/open/floor/engine, /area/station/engineering/atmos/hfr_room) +"uyv" = ( +/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/half/contrasted{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Security Office"; + name = "Security Office Fax Machine" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "uyA" = ( /obj/machinery/airalarm/directional/south, /turf/open/floor/iron, @@ -59064,6 +59687,13 @@ }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) +"uyW" = ( +/obj/structure/transit_tube/curved, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/large, +/area/station/biodome/fore) "uyX" = ( /obj/effect/turf_decal/siding/dark{ dir = 8 @@ -59559,6 +60189,10 @@ /obj/item/food/grown/ash_flora/mushroom_leaf, /turf/open/floor/plating, /area/station/engineering/atmos/project) +"uHC" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "uHK" = ( /obj/machinery/door/airlock/highsecurity{ name = "Secure Tech Storage" @@ -59634,6 +60268,9 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"uIJ" = ( +/turf/closed/wall/r_wall/fakewood, +/area/station/command/heads_quarters/blueshield) "uIO" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59743,12 +60380,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/storage) -"uKU" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "uKY" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/engine/hull, @@ -59918,6 +60549,10 @@ }, /turf/open/floor/plating, /area/station/commons/storage/tools) +"uOc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, +/turf/open/misc/asteroid/airless, +/area/space/nearstation) "uOi" = ( /obj/machinery/telecomms/server/presets/common, /turf/open/floor/iron/dark/telecomms, @@ -59943,6 +60578,15 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/commons/fitness) +"uOr" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/machinery/status_display/evac/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/plating, +/area/station/biodome/aft) "uOC" = ( /obj/structure/chair/comfy/black, /turf/open/floor/plating, @@ -60070,6 +60714,13 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/engineering/engine_smes) +"uRh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/stone, +/area/station/biodome/fore) "uRn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -60082,16 +60733,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/stone, /area/station/cargo/blacksmith) -"uRz" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Engine Coolant Bypass" - }, -/obj/structure/cable/layer3, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "uRB" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 10 @@ -60099,14 +60740,6 @@ /obj/machinery/meter, /turf/open/floor/iron, /area/station/engineering/atmos) -"uRL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/chair, -/obj/effect/landmark/start/depsec/science, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) "uRP" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -60133,14 +60766,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"uSy" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/item/banner/command/mundane, -/turf/open/floor/wood, -/area/station/command/bridge) "uTf" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -60198,11 +60823,20 @@ /obj/effect/spawner/random/trash/moisture, /turf/open/misc/asteroid, /area/station/maintenance/central/greater) -"uUw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/filingcabinet/security, -/turf/open/floor/wood, -/area/station/security/brig) +"uUp" = ( +/obj/machinery/vending/autodrobe, +/obj/effect/turf_decal/tile/neutral/half, +/turf/open/floor/iron, +/area/station/commons/locker) +"uUs" = ( +/obj/effect/turf_decal/bot, +/obj/structure/sign/poster/official/random/directional/west, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/photocopier, +/turf/open/floor/iron/dark/smooth_half, +/area/station/security/office) "uUx" = ( /obj/structure/railing, /turf/open/openspace, @@ -60306,6 +60940,15 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/service/hydroponics) +"uWB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "uWL" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 4; @@ -60430,6 +61073,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/starboard/central) +"uYs" = ( +/obj/machinery/restaurant_portal/bar, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "uYy" = ( /obj/item/pneumatic_cannon/ghetto, /turf/open/misc/asteroid, @@ -60459,6 +61110,13 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"uZi" = ( +/obj/item/radio/intercom/directional/east, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/carpet/blue, +/area/station/security/processing) "uZk" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow/half/contrasted{ @@ -60525,6 +61183,11 @@ /obj/machinery/light/small/blacklight/directional/west, /turf/open/floor/iron/dark, /area/station/service/chapel) +"vay" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/power/shieldwallgen, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "vaA" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/holopad, @@ -60599,6 +61262,12 @@ /obj/structure/lattice, /turf/open/openspace, /area/station/service/hydroponics) +"vbD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/large, +/area/station/biodome/aft) "vbG" = ( /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/structure/cable, @@ -60717,6 +61386,15 @@ /obj/effect/landmark/start/warden, /turf/open/floor/carpet/blue, /area/station/security/warden) +"vdn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "vdw" = ( /obj/effect/decal/cleanable/generic, /turf/open/floor/plating, @@ -60740,22 +61418,6 @@ /obj/structure/cable, /turf/open/floor/carpet/royalblack, /area/station/service/library/lounge) -"vdL" = ( -/obj/structure/table/wood, -/obj/item/toy/crayon/spraycan{ - pixel_x = -4 - }, -/obj/item/toy/crayon/spraycan, -/obj/item/storage/crayons, -/obj/item/storage/crayons, -/obj/structure/sign/painting/library{ - pixel_x = 32 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "vdV" = ( /obj/machinery/atmospherics/components/binary/pump, /turf/open/floor/glass/reinforced, @@ -60791,6 +61453,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood/large, /area/station/service/theater) +"veJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood/large, +/area/station/hallway/secondary/service) "veU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60804,15 +61473,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/large, /area/station/service/kitchen/diner) -"vfo" = ( -/obj/effect/landmark/start/depsec/medical, -/obj/machinery/holopad, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, -/turf/open/floor/iron/dark/smooth_large, -/area/station/security/checkpoint/medical) "vfv" = ( /obj/machinery/computer/cargo{ dir = 4 @@ -60957,11 +61617,6 @@ /obj/effect/landmark/carpspawn, /turf/open/misc/asteroid/airless, /area/station/asteroid) -"viy" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "viz" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -60981,16 +61636,6 @@ /obj/item/clothing/head/costume/festive, /turf/open/floor/eighties/red, /area/station/hallway/secondary/exit/departure_lounge) -"vje" = ( -/obj/structure/table, -/obj/item/paper/fluff/jobs/security/beepsky_mom{ - pixel_y = 6 - }, -/obj/item/stock_parts/power_store/cell/potato{ - name = "\improper Beepsky's emergency battery" - }, -/turf/open/floor/wood, -/area/station/security/brig) "vjl" = ( /obj/machinery/power/smes{ charge = 5e+006 @@ -61026,12 +61671,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"vkm" = ( -/obj/structure/railing{ - dir = 9 - }, -/turf/open/openspace, -/area/station/service/hydroponics) "vkw" = ( /obj/effect/landmark/start/bartender, /turf/open/floor/bamboo/tatami/black{ @@ -61421,6 +62060,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) +"vqF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/layer1, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "vqK" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -61461,6 +62107,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"vrm" = ( +/obj/machinery/firealarm/directional/east, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/carpet/blue, +/area/station/security/processing) "vrt" = ( /obj/machinery/door/airlock/maintenance{ name = "Disposal Access" @@ -61483,6 +62136,10 @@ /obj/effect/turf_decal/tile/dark_green/full, /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen) +"vrT" = ( +/obj/machinery/button/delam_scram, +/turf/closed/wall/r_wall, +/area/station/engineering/main) "vrU" = ( /turf/open/floor/iron, /area/station/security/checkpoint/escape) @@ -61511,21 +62168,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, /area/station/science/explab) -"vsz" = ( -/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/effect/landmark/start/depsec/science, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/science) -"vsC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/openspace, -/area/station/maintenance/port/greater) "vsD" = ( /obj/effect/spawner/random/structure/grille, /obj/structure/lattice, @@ -61567,10 +62209,6 @@ }, /turf/open/floor/iron/white/diagonal, /area/station/science/robotics/lab) -"vtC" = ( -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/engineering/lobby) "vtH" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/iron/checker, @@ -61835,10 +62473,6 @@ "vyS" = ( /turf/open/floor/glass, /area/station/maintenance/port/greater) -"vzf" = ( -/obj/structure/beebox, -/turf/open/floor/grass, -/area/station/service/hydroponics) "vzm" = ( /obj/machinery/camera/directional/east{ c_tag = "Biodome - Starboard Passage Overlook" @@ -61853,6 +62487,10 @@ }, /turf/open/floor/wood/tile, /area/station/command/heads_quarters/captain) +"vzw" = ( +/obj/machinery/duct, +/turf/open/floor/iron/freezer, +/area/station/commons/toilet) "vzF" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/plating, @@ -61984,14 +62622,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/security/brig/entrance) -"vCg" = ( -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/structure/cable/layer3, -/turf/open/floor/plating, -/area/station/engineering/supermatter) "vCl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -62031,10 +62661,6 @@ dir = 5 }, /area/station/service/chapel) -"vDd" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/crew_quarters/bar) "vDf" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/duct, @@ -62063,12 +62689,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"vDz" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/airalarm/directional/south, -/obj/structure/cable, -/turf/open/floor/iron/checker, -/area/station/service/bar/backroom) "vDB" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -62194,17 +62814,6 @@ /obj/machinery/duct, /turf/open/floor/wood/large, /area/station/hallway/secondary/service) -"vFG" = ( -/obj/structure/table, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 3 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -3 - }, -/obj/effect/turf_decal/weather/dirt, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "vFK" = ( /obj/effect/turf_decal/siding/dark, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -62418,6 +63027,12 @@ /obj/structure/lattice/catwalk, /turf/open/openspace, /area/station/biodome) +"vJc" = ( +/obj/structure/sign/poster/random/directional/west, +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/turf/open/floor/grass, +/area/station/biodome/aft) "vJy" = ( /obj/effect/turf_decal/trimline/blue/corner{ dir = 8 @@ -62536,12 +63151,6 @@ /obj/effect/turf_decal/trimline/red/warning, /turf/open/floor/iron, /area/station/security/brig) -"vLE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/science/research) "vLL" = ( /obj/structure/sign/directions/command/directional/east{ dir = 2; @@ -62563,10 +63172,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"vLR" = ( -/obj/structure/hedge, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "vMd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/generic_maintenance_landmark, @@ -62578,17 +63183,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/construction) -"vMh" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/iron/herringbone, -/area/station/biodome) -"vMr" = ( -/obj/machinery/rnd/production/techfab/department/security, -/obj/effect/turf_decal/tile/red/half/contrasted, -/turf/open/floor/iron/dark/smooth_half, -/area/station/security/office) "vMt" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped{ filter_type = list(/datum/gas/carbon_dioxide); @@ -62614,10 +63208,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"vMK" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "vMM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -62672,12 +63262,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/commons/dorms) -"vOf" = ( -/obj/structure/reflector/single/anchored{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/engineering/supermatter/room) "vOu" = ( /obj/structure/filingcabinet, /turf/open/floor/iron/dark, @@ -62719,12 +63303,6 @@ /obj/item/poster/random_official, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) -"vOV" = ( -/obj/effect/turf_decal/trimline/neutral/filled/warning{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/service/hydroponics/garden) "vOY" = ( /obj/machinery/duct, /turf/open/floor/iron/terracotta, @@ -62755,6 +63333,13 @@ /obj/item/flashlight/lamp, /turf/open/floor/carpet/neon/simple/green, /area/station/commons/dorms) +"vPO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) "vQc" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/iron/dark, @@ -62766,16 +63351,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"vQj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/mineral_door/paperframe{ - name = "Bar" - }, -/turf/open/floor/bamboo/tatami{ - dir = 4 - }, -/area/station/commons/lounge) "vQn" = ( /obj/structure/kitchenspike, /obj/item/food/meat/slab/human, @@ -62793,20 +63368,6 @@ /obj/structure/sign/poster/contraband/random/directional/south, /turf/open/floor/carpet/black, /area/station/service/theater) -"vQz" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Service - Diner" - }, -/obj/effect/turf_decal/siding/dark_green/corner{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/obj/structure/cable, -/turf/open/floor/grass, -/area/station/service/kitchen/diner) "vQG" = ( /obj/structure/table/wood, /obj/item/storage/box/seccarts{ @@ -62830,6 +63391,13 @@ }, /turf/open/floor/grass, /area/station/medical/virology) +"vRr" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 10 + }, +/obj/machinery/cryopod/prison/directional/north, +/turf/open/floor/iron, +/area/station/security/prison) "vRx" = ( /obj/machinery/door/airlock{ name = "Law Office" @@ -62870,6 +63438,13 @@ /obj/machinery/light/directional/south, /turf/open/openspace, /area/station/hallway/primary/starboard) +"vSo" = ( +/obj/structure/reflector/single/anchored{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "vSA" = ( /obj/structure/closet/secure_closet/warden, /obj/machinery/power/apc/auto_name/directional/south, @@ -62944,23 +63519,11 @@ }, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain) -"vTD" = ( -/obj/structure/table, -/obj/item/storage/box/lights/mixed, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/flashlight{ - pixel_x = -1 - }, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/engineering/storage) +"vTH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/stripes/red/box, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "vTL" = ( /turf/open/floor/engine/vacuum, /area/station/engineering/atmos) @@ -62990,15 +63553,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"vUr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "vUu" = ( /obj/machinery/camera/directional/west{ c_tag = "Research - Xenobio Slime Chambers Port"; @@ -63043,13 +63597,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/command/bridge) -"vUO" = ( -/obj/machinery/door/window/left/directional/south{ - name = "Apiary"; - req_access = list("hydroponics") - }, -/turf/open/floor/grass, -/area/station/service/hydroponics) "vUP" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped{ filter_type = list(/datum/gas/plasma); @@ -63182,6 +63729,15 @@ dir = 1 }, /area/station/medical/morgue) +"vWv" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix Bypass" + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/status_display/evac/directional/south, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "vWz" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63289,6 +63845,17 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"vYJ" = ( +/obj/machinery/camera/directional/west{ + c_tag = "Biodome - Overpass Fore" + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/item/book/random, +/obj/effect/turf_decal/delivery/red, +/turf/open/floor/plating, +/area/station/hallway/primary/central) "vYR" = ( /obj/structure/rack, /obj/item/screwdriver, @@ -63300,6 +63867,10 @@ /obj/machinery/suit_storage_unit/medical, /turf/open/floor/iron/dark, /area/station/medical/storage) +"vZm" = ( +/obj/effect/spawner/random/structure/crate_loot, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "vZs" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -63470,6 +64041,16 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"wcq" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/red/arrow_cw{ + dir = 8 + }, +/obj/effect/landmark/start/corrections_officer, +/turf/open/floor/iron/dark/smooth_large, +/area/station/security/brig) "wcs" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/plating, @@ -63534,6 +64115,21 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/morgue) +"wdl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/railing/wooden_fencing{ + dir = 8 + }, +/obj/structure/railing/wooden_fencing{ + 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/wood/large, +/area/station/biodome/aft) "wdv" = ( /obj/machinery/vending/cigarette, /turf/open/floor/iron/dark, @@ -63564,10 +64160,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science) -"wdV" = ( -/obj/machinery/status_display/evac/directional/south, -/turf/open/floor/stone, -/area/station/biodome) "wdZ" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ dir = 1 @@ -63669,12 +64261,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"wfp" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome/aft) "wfw" = ( /obj/structure/ladder, /turf/open/floor/plating/airless, @@ -63824,6 +64410,12 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"whT" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "wia" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/button/door/directional/south{ @@ -63881,13 +64473,9 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) -"wiP" = ( -/obj/machinery/status_display/evac/directional/west, -/obj/structure/railing{ - dir = 5 - }, -/turf/open/floor/plating, -/area/station/biodome/aft) +"wiM" = ( +/turf/closed/wall, +/area/station/security/mechbay) "wiZ" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 6 @@ -63958,6 +64546,18 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"wjL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + name = "sorting disposal pipe (Chapel)" + }, +/obj/effect/mapping_helpers/mail_sorting/service/chapel, +/obj/machinery/light/directional/north, +/turf/open/floor/stone, +/area/station/biodome) "wjM" = ( /obj/effect/decal/cleanable/confetti, /turf/open/floor/plating, @@ -63977,14 +64577,6 @@ }, /turf/open/floor/grass, /area/station/biodome/aft) -"wkm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "wky" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64158,16 +64750,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"wmc" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/engineering/storage) "wme" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64197,6 +64779,14 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/storage/emergency/starboard) +"wmx" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/maintenance/port/greater) "wmz" = ( /obj/structure/table, /obj/item/reagent_containers/condiment/saltshaker{ @@ -64322,17 +64912,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/grass, /area/station/science/genetics) -"wnD" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 24; - name = "SS13: Auxiliary Dock, Station-Port"; - shuttle_id = "whiteship_home"; - width = 35 - }, -/turf/open/space/basic, -/area/space) "wnH" = ( /obj/machinery/door/firedoor, /obj/structure/cable, @@ -64353,6 +64932,13 @@ }, /turf/open/floor/wood/large, /area/station/commons/lounge) +"wnT" = ( +/obj/effect/turf_decal/trimline/dark_blue/corner{ + dir = 8 + }, +/obj/machinery/light_switch/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "wnV" = ( /obj/structure/railing{ dir = 1 @@ -64406,13 +64992,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/ai_monitored/security/armory) -"wom" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron, -/area/station/engineering/lobby) "wor" = ( /obj/structure/closet/crate/coffin, /obj/structure/window/spawner/directional/east, @@ -64463,12 +65042,6 @@ dir = 1 }, /area/station/science/robotics/lab) -"wpw" = ( -/obj/structure/easel, -/obj/item/canvas/twentythree_twentythree, -/obj/item/canvas/nineteen_nineteen, -/turf/open/floor/wood/large, -/area/station/service/library/lounge) "wpy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -64487,6 +65060,11 @@ /obj/effect/mapping_helpers/airlock/welded, /turf/open/floor/plating, /area/station/maintenance/central/greater) +"wpU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair/office, +/turf/open/floor/iron/smooth_large, +/area/station/security/brig) "wpW" = ( /obj/item/radio/intercom/directional/south, /obj/structure/cable, @@ -64513,6 +65091,11 @@ }, /turf/open/floor/carpet/black, /area/station/service/chapel/funeral) +"wqu" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window, +/turf/open/floor/plating/airless, +/area/station/security/mechbay) "wqN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, /turf/open/floor/engine, @@ -64592,12 +65175,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wsv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood/large, -/area/station/hallway/secondary/service) "wsz" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -64723,14 +65300,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) -"wvn" = ( -/obj/machinery/camera/directional/south{ - c_tag = "Engineering - Supermatter Aft"; - network = list("ss13","engine") - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "wvs" = ( /obj/machinery/computer/quantum_console{ dir = 4 @@ -64964,11 +65533,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/white/small, /area/station/maintenance/central/greater) -"wyx" = ( -/obj/structure/sign/poster/random/directional/west, -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/grass, -/area/station/biodome/aft) "wyE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -65005,10 +65569,22 @@ }, /turf/open/floor/wood/large, /area/station/biodome/fore) +"wzk" = ( +/obj/effect/landmark/start/blueshield, +/obj/structure/chair/comfy/teal{ + dir = 4 + }, +/turf/open/floor/carpet/executive, +/area/station/command/heads_quarters/blueshield) "wzl" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/closed/wall/mineral/wood, /area/station/asteroid) +"wzs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/station/engineering/transit_tube) "wzu" = ( /obj/machinery/atmospherics/pipe/layer_manifold/scrubbers/visible{ dir = 4 @@ -65049,13 +65625,6 @@ }, /turf/open/floor/grass, /area/station/service/theater) -"wzP" = ( -/obj/structure/cable, -/obj/effect/turf_decal/tile/dark_red{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/station/medical/chemistry) "wzU" = ( /obj/machinery/firealarm/directional/west, /obj/effect/turf_decal/tile/yellow/opposingcorners, @@ -65078,6 +65647,13 @@ }, /turf/open/water/jungle/biodome, /area/station/maintenance/central/greater) +"wAb" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "wAh" = ( /obj/structure/chair/office, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -65382,6 +65958,15 @@ /obj/structure/table/reinforced/plasmarglass, /turf/open/floor/stone, /area/station/security/execution/education) +"wEK" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/obj/effect/turf_decal/trimline/dark_green/filled/line, +/obj/effect/turf_decal/trimline/green/line, +/turf/open/floor/iron/white/smooth_large, +/area/station/service/hydroponics) "wEM" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -65410,15 +65995,13 @@ }, /turf/open/floor/carpet, /area/station/service/chapel/funeral) -"wFe" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Civilian - Garden Overlook Port" - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) +"wFk" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "wFv" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -65465,6 +66048,14 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/morgue) +"wGt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/structure/chair, +/obj/effect/landmark/start/science_guard, +/turf/open/floor/iron/dark, +/area/station/security/checkpoint/science) "wGu" = ( /mob/living/basic/lizard/wags_his_tail, /obj/structure/cable, @@ -65505,6 +66096,10 @@ /obj/structure/chair/wood, /turf/open/floor/carpet/royalblack, /area/station/service/library/lounge) +"wHo" = ( +/obj/machinery/light/directional/west, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "wHv" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/tile/purple/half/contrasted, @@ -65594,6 +66189,12 @@ }, /turf/open/floor/iron, /area/station/commons/fitness) +"wJa" = ( +/obj/structure/cable, +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "wJn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65724,12 +66325,27 @@ /obj/machinery/light/broken/directional/south, /turf/open/floor/wood/large, /area/station/science/breakroom) +"wMm" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/conveyor{ + id = "mining"; + dir = 8 + }, +/obj/machinery/bouldertech/refinery/smelter, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "wMo" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/holofloor/dark, /area/station/science/cytology) +"wMu" = ( +/obj/machinery/door/firedoor/border_only, +/turf/open/openspace, +/area/station/hallway/primary/aft) "wMz" = ( /obj/structure/training_machine, /obj/effect/landmark/blobstart, @@ -65799,17 +66415,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/commons/storage/emergency/starboard) -"wNI" = ( -/obj/machinery/atmospherics/pipe/smart/simple/orange/visible, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage) "wNK" = ( /obj/effect/spawner/random/structure/billboard/nanotrasen, /obj/structure/lattice, @@ -66143,13 +66748,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/medbay/central) -"wTa" = ( -/obj/effect/turf_decal/trimline/dark_blue/arrow_ccw{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "wTj" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -66207,12 +66805,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"wUg" = ( -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/iron/herringbone, -/area/station/biodome) "wUh" = ( /obj/structure/flora/bush/flowers_yw/style_random, /turf/open/floor/grass, @@ -66227,6 +66819,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/hallway/secondary/construction/engineering) +"wUw" = ( +/obj/machinery/status_display/evac/directional/west, +/turf/open/floor/grass, +/area/station/biodome) "wUQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66251,15 +66847,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"wVs" = ( -/obj/machinery/door/airlock/hydroponics{ - name = "Hydroponics" - }, -/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/duct, -/turf/open/floor/stone, -/area/station/service/hydroponics) "wVC" = ( /obj/effect/landmark/start/geneticist, /obj/structure/chair/office{ @@ -66291,11 +66878,6 @@ }, /turf/open/openspace, /area/station/biodome) -"wWl" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/smooth_large, -/area/station/security/lockers) "wWm" = ( /obj/effect/turf_decal/siding/yellow{ dir = 4 @@ -66378,6 +66960,9 @@ /obj/item/lighter/greyscale, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/cargo) +"wXs" = ( +/turf/open/floor/wood/stairs/left, +/area/station/biodome/aft) "wXt" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plating, @@ -66759,13 +67344,6 @@ "xdO" = ( /turf/closed/wall, /area/station/hallway/secondary/exit/departure_lounge) -"xdR" = ( -/obj/structure/stairs/wood, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) "xdT" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 4 @@ -66860,14 +67438,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) -"xfC" = ( -/obj/effect/turf_decal/delivery/red, -/obj/item/book/random, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/service/library/lounge) "xfO" = ( /obj/structure/transit_tube/curved/flipped{ dir = 4 @@ -66883,6 +67453,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"xgL" = ( +/obj/machinery/door/airlock/hydroponics{ + name = "Hydroponics" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/duct, +/obj/machinery/door/firedoor, +/turf/open/floor/stone, +/area/station/service/hydroponics) "xgT" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -66953,6 +67533,9 @@ /obj/structure/flora/rock/pile/jungle/style_random, /turf/open/water/jungle/biodome, /area/station/maintenance/fore/greater) +"xhV" = ( +/turf/open/openspace, +/area/station/hallway/primary/aft) "xhX" = ( /obj/structure/rack, /obj/item/clothing/suit/hazardvest, @@ -67013,6 +67596,10 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/biodome) +"xiF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/smooth_large, +/area/station/security/lockers) "xiJ" = ( /turf/closed/wall/mineral/wood, /area/station/engineering/storage/tech) @@ -67107,6 +67694,12 @@ /obj/structure/cable, /turf/open/floor/plating/reinforced, /area/station/maintenance/central/greater) +"xkK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/turf/open/floor/stone, +/area/station/biodome) "xkP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67177,6 +67770,10 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) +"xlC" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/smooth_large, +/area/station/cargo/warehouse) "xlE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -67242,17 +67839,6 @@ "xnt" = ( /turf/open/floor/iron/white/smooth_large, /area/station/service/hydroponics) -"xnu" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/mid_joiner{ - dir = 1 - }, -/turf/open/floor/iron/smooth_half, -/area/station/security/brig) "xnx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/mapping_helpers/damaged_window, @@ -67280,12 +67866,6 @@ /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron/dark/smooth_half, /area/station/security/brig) -"xnJ" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/security/medical) "xnT" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -67343,6 +67923,11 @@ /obj/effect/turf_decal/tile/purple/opposingcorners, /turf/open/floor/iron, /area/station/science/genetics) +"xoO" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/white, +/area/station/science/ordnance) "xoW" = ( /obj/structure/falsewall, /turf/open/floor/plating, @@ -67357,6 +67942,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/commons/fitness) +"xpv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/chair_maintenance{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "xpD" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -67398,6 +67990,11 @@ /obj/item/toy/plush/lizard_plushie/space/green, /turf/open/space/openspace, /area/space/nearstation) +"xqk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "xqp" = ( /obj/structure/chair/pew, /obj/effect/turf_decal/siding/dark{ @@ -67477,13 +68074,6 @@ "xrH" = ( /turf/open/floor/iron/white, /area/station/science/ordnance) -"xrP" = ( -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/iron, -/area/station/biodome) "xrS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -67556,6 +68146,16 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/grass, /area/station/biodome) +"xtn" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark, +/area/station/science/circuits) +"xto" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/filled/mid_joiner, +/obj/machinery/recharge_station, +/turf/open/floor/iron/smooth_half, +/area/station/security/brig) "xtD" = ( /obj/structure/cable, /obj/effect/landmark/start/station_engineer, @@ -67602,6 +68202,10 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/carpet, /area/station/commons/vacant_room/office) +"xuD" = ( +/obj/machinery/light/directional/east, +/turf/open/openspace, +/area/station/service/hydroponics/garden) "xuG" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/camera/directional/west{ @@ -67759,14 +68363,6 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) -"xwK" = ( -/obj/structure/table, -/obj/item/trash/can/food/pine_nuts, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/turf_decal/weather/dirt, -/obj/structure/stone_tile/block, -/turf/open/floor/plating, -/area/station/cargo/miningdock) "xwM" = ( /obj/effect/turf_decal/siding/wideplating/corner, /turf/open/floor/catwalk_floor/iron_dark, @@ -67803,13 +68399,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) -"xxS" = ( -/obj/structure/lattice/catwalk, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "xxW" = ( /obj/machinery/status_display/evac/directional/north, /obj/item/kirbyplants/random, @@ -67879,6 +68468,12 @@ /obj/effect/turf_decal/siding/dark, /turf/open/floor/carpet/orange, /area/station/security/prison) +"xzi" = ( +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/hallway/primary/port) "xzy" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, @@ -67998,10 +68593,6 @@ /obj/machinery/light/warm/directional/north, /turf/open/floor/iron/dark, /area/station/medical/virology) -"xAJ" = ( -/obj/machinery/light/directional/south, -/turf/closed/mineral/random/stationside/asteroid/porus, -/area/station/asteroid) "xAY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68082,6 +68673,14 @@ /obj/item/radio, /turf/open/floor/iron, /area/station/security/checkpoint/escape) +"xCy" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "xCT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -68240,18 +68839,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"xFa" = ( -/obj/machinery/holopad, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/landmark/start/depsec/engineering, -/obj/machinery/airalarm/directional/south, -/obj/machinery/camera/directional/south{ - c_tag = "Security Post - Engineering" - }, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/iron/dark, -/area/station/security/checkpoint/engineering) "xFb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -68270,14 +68857,6 @@ /obj/structure/ladder, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"xFv" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/green/visible, -/obj/structure/cable/layer3, -/turf/open/floor/engine, -/area/station/engineering/supermatter/room) "xFw" = ( /obj/structure/closet/crate, /obj/effect/spawner/random/maintenance/two, @@ -68369,6 +68948,16 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"xGU" = ( +/obj/machinery/door/airlock/hydroponics{ + name = "Hydroponics Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/service/hydroponics, +/obj/structure/cable, +/obj/effect/turf_decal/tile/dark_green/full, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark/small, +/area/station/service/hydroponics) "xHf" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -68425,6 +69014,10 @@ /obj/structure/sign/warning/vacuum/external/directional/east, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/aft) +"xIn" = ( +/obj/docking_port/stationary/escape_pod, +/turf/open/space/openspace, +/area/space) "xIs" = ( /obj/structure/mineral_door/wood{ name = "Maintenance Bar" @@ -68494,6 +69087,14 @@ /obj/structure/cable, /turf/open/floor/wood, /area/station/cargo/bitrunning/den) +"xJa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering/glass{ + name = "Laser Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/general, +/turf/open/floor/plating, +/area/station/engineering/supermatter/room) "xJc" = ( /obj/structure/cable, /obj/item/wrench, @@ -68502,11 +69103,6 @@ }, /turf/open/floor/wood/large, /area/station/biodome/fore) -"xJf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor, -/turf/open/floor/iron/smooth, -/area/station/cargo/warehouse) "xJr" = ( /obj/machinery/door/airlock/public/glass, /obj/machinery/door/firedoor, @@ -68580,6 +69176,13 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"xKc" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark_green/corner, +/turf/open/floor/grass, +/area/station/service/kitchen/diner) "xKk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68713,6 +69316,16 @@ /obj/structure/flora/bush/flowers_pp/style_random, /turf/open/floor/grass, /area/station/asteroid) +"xLM" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Engine Coolant Bypass" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/layer1, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "xLQ" = ( /obj/structure/chair/stool/directional/south, /turf/open/floor/iron/dark, @@ -68759,13 +69372,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/dark/textured, /area/station/engineering/atmos/mix) -"xMk" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/light/directional/west, -/turf/open/openspace, -/area/station/service/hydroponics/garden) "xMx" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -69122,6 +69728,17 @@ }, /turf/open/floor/plating, /area/station/cargo/sorting) +"xTi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden, +/turf/open/floor/iron/dark, +/area/station/engineering/storage) "xTy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69266,13 +69883,6 @@ /obj/structure/cable, /turf/open/floor/iron/white/smooth_large, /area/station/medical/break_room) -"xVo" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/grass, -/area/station/service/hydroponics/garden) "xVv" = ( /obj/structure/cable, /turf/open/floor/iron/solarpanel/airless, @@ -69334,6 +69944,12 @@ "xWn" = ( /turf/open/floor/circuit, /area/station/ai_monitored/turret_protected/ai) +"xWr" = ( +/obj/effect/turf_decal/tile/dark_red{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/medical/chemistry) "xWx" = ( /obj/machinery/turretid{ control_area = "/area/station/ai_monitored/turret_protected/ai_upload"; @@ -69472,6 +70088,14 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"xZu" = ( +/obj/machinery/computer/security/telescreen/entertainment/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/jukebox/public, +/turf/open/floor/wood/large, +/area/station/commons/lounge) "xZE" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/photocopier, @@ -69675,12 +70299,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plating, /area/station/maintenance/fore/greater) -"ydh" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/openspace, -/area/station/service/hydroponics) "ydn" = ( /obj/effect/spawner/structure/window, /obj/structure/holosign/barrier/atmos/leaf{ @@ -69749,12 +70367,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) -"yeu" = ( -/obj/machinery/camera/directional/north{ - c_tag = "Civilian - Mining Base and Garden Junction" - }, -/turf/open/floor/iron, -/area/station/hallway/primary/port) "yeD" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -69824,6 +70436,11 @@ /obj/machinery/door/poddoor/shutters, /turf/open/floor/plating/airless, /area/station/maintenance/starboard/lesser) +"ygO" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/maintenance/port/greater) "ygR" = ( /obj/structure/marker_beacon/jade, /turf/open/floor/plating/airless, @@ -69858,10 +70475,6 @@ /obj/effect/decal/cleanable/garbage, /turf/open/floor/wood/large, /area/station/service/janitor) -"yhu" = ( -/obj/effect/spawner/random/maintenance, -/turf/open/floor/grass, -/area/station/biodome/aft) "yhv" = ( /obj/structure/cable, /obj/machinery/airalarm/directional/east, @@ -69908,6 +70521,21 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"yib" = ( +/obj/item/radio/intercom/directional/north, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/bottle/multiver{ + pixel_x = 6 + }, +/obj/item/reagent_containers/cup/bottle/epinephrine, +/obj/item/reagent_containers/syringe, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/iron/dark/textured_half{ + dir = 1 + }, +/area/station/medical/chemistry) "yif" = ( /obj/structure/flora/grass/jungle/a/style_random, /obj/machinery/light/directional/north, @@ -69927,6 +70555,15 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"yim" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "yin" = ( /obj/item/stack/package_wrap{ pixel_x = -4; @@ -69987,6 +70624,19 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/station/command/bridge) +"yje" = ( +/obj/structure/sign/painting/library{ + pixel_x = 32 + }, +/obj/structure/table/wood, +/obj/item/toy/crayon/spraycan{ + pixel_x = -4 + }, +/obj/item/toy/crayon/spraycan, +/obj/item/storage/crayons, +/obj/item/storage/crayons, +/turf/open/floor/wood/large, +/area/station/service/library/lounge) "yjg" = ( /turf/closed/wall, /area/station/medical/surgery/fore) @@ -70058,13 +70708,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) -"yjN" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/turf_decal/trimline/dark_green/filled/line, -/obj/effect/turf_decal/trimline/green/line, -/obj/effect/turf_decal/trimline/dark_green/filled/mid_joiner, -/turf/open/floor/iron/white/smooth_large, -/area/station/service/hydroponics) "yjR" = ( /obj/structure/closet{ name = "Evidence Closet 5" @@ -70153,6 +70796,16 @@ /obj/effect/turf_decal/weather/dirt, /turf/open/floor/wood/large, /area/station/biodome/aft) +"ylU" = ( +/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/wood{ + name = "Library" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/wood/large, +/area/station/hallway/primary/central) (1,1,1) = {" cCZ @@ -88007,9 +88660,9 @@ pSz rzW gQd hgi -smP -mJi -pSz +fZB +kvv +gFj aMB vhE aMB @@ -88264,9 +88917,9 @@ pSz nxV xlg pgX -rps -xdR -pSz +ajO +qQd +uhS aMB vhE aMB @@ -88521,9 +89174,9 @@ pSz uxR lVd pKg -olz -adI -xVo +ajO +hvz +uhS vhE xEk vhE @@ -89230,7 +89883,7 @@ cCZ bxM cCZ cCZ -cCZ +xuo xuo xuo xuo @@ -89242,8 +89895,8 @@ xuo xuo xuo koq -koq -koq +cCZ +cCZ cCZ cCZ cCZ @@ -89486,7 +90139,7 @@ cCZ cCZ bxM cCZ -cCZ +xuo xuo xuo xuo @@ -89761,9 +90414,9 @@ opv ouv koq cCZ -eyK -mIQ -mIQ +jLg +jLg +jLg cCZ cCZ cCZ @@ -90020,7 +90673,7 @@ koq koq koq koq -mIQ +jLg cCZ cCZ cCZ @@ -90255,7 +90908,7 @@ cCZ cCZ bxM cCZ -xuo +cCZ xuo xuo xuo @@ -90277,7 +90930,7 @@ koq tOT tOT koq -qbX +koq koq jNG cCZ @@ -90534,7 +91187,7 @@ koq tVA lVx qnX -mBX +jLg jLg cCZ cCZ @@ -90792,20 +91445,20 @@ hDS jAX hdp gjX -oZB -bhN -bhN -bhN -bhN -bhN -bhN -bhN -bhN -bhN -bhN -bhN -bhN -bhN +gjX +hJd +hJd +hJd +hJd +hJd +hJd +hJd +hJd +hJd +hJd +hJd +hJd +hJd cCZ cCZ cCZ @@ -91062,7 +91715,7 @@ cCZ cCZ cCZ cCZ -bhN +hJd cCZ cCZ cCZ @@ -91283,7 +91936,7 @@ cCZ cCZ bxM cCZ -xuo +cCZ xuo xuo xuo @@ -91319,7 +91972,7 @@ rBE cCZ cCZ cCZ -bhN +hJd cCZ cCZ cCZ @@ -91576,7 +92229,7 @@ cCZ tKt cCZ cCZ -bhN +hJd cCZ cCZ cCZ @@ -91833,7 +92486,7 @@ cCZ cCZ iAd cCZ -bhN +hJd cCZ cCZ cCZ @@ -92056,7 +92709,7 @@ cCZ cCZ bxM cCZ -cCZ +xuo xuo xuo xuo @@ -92090,7 +92743,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -92141,8 +92794,8 @@ pKF fJe cgO lHf -mGA -vMK +mkZ +mkZ mkZ mkZ mkZ @@ -92314,7 +92967,7 @@ cCZ bxM cCZ cCZ -cCZ +xuo xuo xuo xuo @@ -92326,8 +92979,8 @@ xuo xuo xuo koq -koq -koq +cCZ +cCZ cCZ cCZ cCZ @@ -92347,7 +93000,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -92398,8 +93051,8 @@ pKF cJU cJU lHf -tvp -ckM +nqJ +iCP mkZ mkZ mkZ @@ -92604,7 +93257,7 @@ cCZ cCZ tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -92655,8 +93308,8 @@ pKF tBO cJU lHf -htc -kjC +mBm +qbU rEj qbU qbU @@ -92861,7 +93514,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -92913,7 +93566,7 @@ dBC cJU lHf bwe -vMK +mkZ tmx rAX rAX @@ -93118,7 +93771,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -93170,7 +93823,7 @@ shB cJU lHf xIL -awT +gfY mkZ dsa dsa @@ -93375,7 +94028,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -93427,7 +94080,7 @@ hec hec lHf ePs -vMK +mkZ mkZ dsa dsa @@ -93447,7 +94100,7 @@ wrB oso sKq mWP -kty +mWP oAe lgW oAe @@ -93632,7 +94285,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -93704,7 +94357,7 @@ wSI tlP sKq bRw -agt +ksA oAe lgW oAe @@ -93889,7 +94542,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -93941,7 +94594,7 @@ ivB dMM lHf szZ -vMK +mkZ mkZ dsa tWv @@ -94146,7 +94799,7 @@ vtU vtU tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -94198,7 +94851,7 @@ ivB dMM lHf sLz -oHY +pjU mkZ dsa dsa @@ -94403,7 +95056,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -94455,7 +95108,7 @@ cJU dMM lHf sYd -vMK +mkZ gLN dsa dsa @@ -94660,7 +95313,7 @@ cCZ cCZ tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -94711,8 +95364,8 @@ pKF cJU dMM lHf -utg -viy +heG +iRI yjw dsa dsa @@ -94917,7 +95570,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -94968,8 +95621,8 @@ pKF cJU dMM lHf -pAr -wzP +yib +xWr tmx rAX rAX @@ -95174,7 +95827,7 @@ vtU vtU tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -95225,8 +95878,8 @@ pKF fld dMM lHf -nxZ -vMK +mkZ +mkZ crU mkZ mkZ @@ -95431,7 +96084,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -95688,7 +96341,7 @@ cCZ cCZ tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -95945,7 +96598,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -96202,7 +96855,7 @@ vtU vtU tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -96459,7 +97112,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -96716,7 +97369,7 @@ cCZ cCZ tHI vtU -bhN +hJd cCZ cCZ cCZ @@ -96973,7 +97626,7 @@ vtU vtU eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -97035,7 +97688,7 @@ dIN qUZ ktR gHE -wfp +lWy cDM ktR gwb @@ -97230,7 +97883,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -97487,7 +98140,7 @@ cCZ cCZ eFW cCZ -bhN +hJd cCZ cCZ cCZ @@ -97539,9 +98192,9 @@ dhk qMk asD asD -asD -aWc +hvx aWc +nGb tlW hVC hVC @@ -97744,7 +98397,7 @@ cCZ cCZ eFW rNf -lkY +gDO rNf cCZ cCZ @@ -98001,7 +98654,7 @@ vtU vtU eFW rNf -dfO +wzs rNf rRv rRv @@ -98026,11 +98679,11 @@ rkF aLk aLk aLk -qPn +ehE aLk aLk aLk -dTc +cSI aLk dit aLk @@ -98053,10 +98706,10 @@ wju ngd asD asD -iuL -iuL +asD +asD weR -sIU +nog psC jYu iJt @@ -98258,7 +98911,7 @@ cCZ rNf mhJ rNf -fgL +hgy rNf rRv rRv @@ -98310,8 +98963,8 @@ wju ngd asD asD -iuL -iuL +asD +asD weR mDI bjN @@ -98515,7 +99168,7 @@ cCZ dQH kup qWk -dgb +cdl dQH hNy rRv @@ -98536,16 +99189,16 @@ sBz dYQ iJO sBz -afo -dNi -dNi -dNi -dNi -dIi -dIi -dIi -dIi -aHS +fLA +dUI +dUI +bdd +dUI +rxL +dUI +dUI +dUI +iKW dit eBC eBC @@ -98771,8 +99424,8 @@ vtU vtU dQH chx -qoW -kqS +pvM +fgO dQH hNy hNy @@ -98794,14 +99447,14 @@ dYQ xPZ sBz cYQ -dNi -kaG -onA -dNi -siP -pJN -rZD -dIi +dUI +diJ +sgO +fNE +lqP +vnQ +kUT +dUI nlw rpA eBC @@ -98809,13 +99462,13 @@ eBC eBC eBC lec -hwu +mWV eBC vxL lVA wnK aeo -oGJ +xZu kRH pUX vxL @@ -98838,7 +99491,7 @@ weR qYW weR weR -mZS +iZv vxS oAe vnE @@ -99051,16 +99704,16 @@ dYQ dYQ sBz fsz -dNi -iZp -rsA -nrf -qVB -lvu -mrL -aLA -ikE -erU +dUI +ibj +pxZ +srr +aza +owx +ued +vFy +fBt +fEO eBC eBC rrw @@ -99069,7 +99722,7 @@ iMD iMD dYR vxL -cHN +uYs cTA cGB tOQ @@ -99086,7 +99739,7 @@ cUM weR cPm oZS -nNe +weR nsd kDp mpn @@ -99308,14 +99961,14 @@ dYQ dYQ sBz fsz -dNi -oqf -dUr -dNi -kxg -lvu -fLq -dIi +bdd +aTD +eiw +sfK +pQw +fGu +tLG +dUI mov dit eBC @@ -99565,14 +100218,14 @@ eoI xHF sBz diF -dNi -dNi -dNi -dNi -oVw -qWV -eFr -dIi +dUI +hdU +pxZ +niz +aza +luN +mMH +dUI sdv mTx sdv @@ -99592,7 +100245,7 @@ oOT woc ngd wju -hLn +xkK gbE asD asD @@ -99822,14 +100475,14 @@ dYQ xHF sBz dwC -dNi -wfm -cov -aZw -jXX -cHu -qVW -dNi +dUI +hLl +bFL +cnq +uFc +dRn +cYz +dUI wlT dit eBC @@ -100077,16 +100730,16 @@ aZn sBz tkw dYQ -sBz +krm xWK -dNi -pcV -kJJ -jSt -jSt -mhX -vyx -dNi +dUI +dUI +bdd +dUI +dUI +dUI +dUI +dUI mNB gXs fKF @@ -100337,14 +100990,14 @@ dYQ sBz cTF dNi -kRr -jRa -tkA -xnt -kRr -omi -dae -aLk +kaG +onA +dNi +siP +bqJ +rZD +dIi +eBC bCN eBC bGo @@ -100363,19 +101016,19 @@ oOT miM ngd wju -gwP +laI omC asD -asD +wUw xti asD oAv ota ota -bUw +onu +ota ota ota -sAB ota ota oAv @@ -100591,17 +101244,17 @@ mDo dYQ dYQ dYQ -sBz +mDo eMi dNi -qef -jRa -kRr -xnt -kRr -kkE -keR -aLk +iZp +rsA +xGU +qVB +cFk +dlF +dIi +mNB bCN eBC klK @@ -100609,34 +101262,34 @@ iMD iMD rjR szr -oIr +fUh lCm kbF kbF kbF lUJ tNz -kZi -vQj -oEr +kGn +azI +fSp wju -wdV -iuL -hvx -iuL -jFi +ngd +asD +asD +asD +asD asD ixe -jDs -giG -ixe -sAB -sAB -ixe -yhu +ota +ota +ota +ota +ota +ota +ota jTy ixe -sAB +kMk ota ooS oAe @@ -100848,18 +101501,18 @@ gbs gbs gbs gbs -sBz +mDo fsz dNi -kRr -jRa -kRr -xnt -kRr -bWS +oqf +dUr dNi -lHu -bCN +jRa +lvu +svx +dje +aMR +fOl eBC eBC gwG @@ -100873,23 +101526,23 @@ cGB xOP cTA xOP -rRI +qze vxL ccE rwt ngd -dfu +unt asD asD asD -jFi -cKp +asD +udX +ota +ota ota ota -cKp -sAB vEf -cKp +ota ota ota ixe @@ -100918,12 +101571,12 @@ plc vIo lTQ scp -seM -seM -seM -seM -jsF -iKE +jbA +jbA +jbA +jbA +vtU +vtU lOH lOH lOH @@ -101108,12 +101761,12 @@ gbs sBz aBC dNi -bQg -jRa -kRr -xnt -kRr -omi +dNi +dNi +dNi +oVw +qWV +eFr dIi mov bCN @@ -101130,7 +101783,7 @@ cTA jGz lCc dCX -etY +hPS vxL mGR gDz @@ -101178,17 +101831,17 @@ dWb uuT uuT uuT -vtU -vtU -hoE -jIl -qPC -vTD -myU -wNI -wmc -jIl -lEZ +jbA +jbA +jbA +gpk +ajm +hZJ +poL +xTi +hYD +gpk +jbA rRv hNy hNy @@ -101338,7 +101991,7 @@ gbs jlt rWl rWl -iAY +jPb jlt gkO gkO @@ -101365,12 +102018,12 @@ gbs sBz jvC dNi -yfs -jRa -xnt -mnM -uWr -omi +wfm +cov +aZw +jXX +cHu +dlF dIi mNB bCN @@ -101385,9 +102038,9 @@ vxL bQK cTA ojn +kgq cTA -cTA -niY +gRz vxL szJ rwt @@ -101397,7 +102050,7 @@ asD asD asD asD -wyx +vJc ota ota ota @@ -101422,8 +102075,8 @@ jrD upK dKi xbL -adG -tKr +iHk +nmo cqH aRm oac @@ -101445,7 +102098,7 @@ xtD uZk gTu lOH -tQT +jbA rRv hNy hNy @@ -101595,7 +102248,7 @@ gbs jlt exQ bQR -tMz +oqC jlt jlt jlt @@ -101622,14 +102275,14 @@ gbs sBz cYQ dNi -ktb -jRa -xnt -xnt -lqx -nbg -wVs -nUc +pcV +kJJ +jSt +jSt +mhX +vyx +dNi +eBC dit eBC eBC @@ -101643,7 +102296,7 @@ kCr sVS cTA cTA -mDE +eGv hUs vxL rlo @@ -101654,10 +102307,10 @@ asD asD asD asD -bdX -bdX -bdX +udX +ota ota +goY ota ota ota @@ -101679,11 +102332,11 @@ nDo xwI dmv xbL -vtC +olp oMf fiN fcI -wom +mEe fwm wSx ozG @@ -101702,7 +102355,7 @@ sPy eKb wpW lOH -tQT +jbA rRv rRv hNy @@ -101879,15 +102532,15 @@ igU sBz gzJ dNi -vIP -mPj -fSa -lOi -lNG -bSG -dIi +kRr +jRa +tkA +xnt +kRr +qPK +dNi mNB -dit +guD syw syw syw @@ -101900,7 +102553,7 @@ vxL sWX jzx jzx -rMf +ecs vxL vxL iuz @@ -101959,7 +102612,7 @@ quS nfx keU lOH -tQT +jbA rRv hNy hNy @@ -102135,16 +102788,16 @@ dYQ dYQ sBz xWK -dUI -dUI -bdd -dUI -rxL -dUI -eTO -dUI -eVG -dit +dNi +qef +jRa +kRr +dNi +kRr +kkE +cRp +eBC +lBS syw knO oae @@ -102154,11 +102807,11 @@ ngg nJj syw nqE -dQi -aAj -aAj -aAj -vQz +xKc +gfN +gfN +gfN +bfM oOb bAB rwt @@ -102216,7 +102869,7 @@ iNV hYS iOb lOH -tQT +jbA rRv rRv rRv @@ -102392,14 +103045,14 @@ fRH tMJ sBz cYQ -dUI -diJ -sgO -fNE -lqP -vnQ -kUT -dUI +dNi +kRr +jRa +kRr +pIz +kRr +bWS +jzL eBC dit syw @@ -102411,15 +103064,15 @@ pWk ldW wob kFd -mqy +stq dQU sXJ oAS nUA -onM +bye hiF rwt -hLn +xkK asD asD tLb @@ -102473,7 +103126,7 @@ sIb sIb xVL lOH -tQT +jbA cCZ cCZ cCZ @@ -102624,10 +103277,10 @@ dJN unD xCm nJl -vLE +joK hpD qhx -pbn +fCH ras kTc ras @@ -102649,15 +103302,15 @@ kBD upu sBz cYQ -dUI -ibj -pxZ -srr -aza -owx -eEK -dUI -eBC +dNi +bQg +jRa +kRr +xnt +kRr +omi +dNi +cHn dit lpd ljV @@ -102668,12 +103321,12 @@ rMy ldW ajU nej -mqy +stq kzV cAL sQZ nUA -bnd +kUX hiF rwt ngd @@ -102730,16 +103383,16 @@ mcL bMi xAa lOH -eRd -ecV -ecV -ecV -ecV -ecV -ecV -ecV -ecV -eQy +jbA +jbA +jbA +jbA +jbA +jbA +jbA +jbA +jbA +jbA cCZ cCZ nLN @@ -102885,9 +103538,9 @@ aKd aKd qhx tDL -ras -ras -ras +xtn +teh +isE aqn jlt wzB @@ -102906,15 +103559,15 @@ dYQ hJD sBz vsW -bdd -aTD -eiw -sfK -pQw -fGu -djQ -vFy -qmS +dNi +yfs +jRa +xnt +mnM +uWr +omi +dIi +eBC rpA sVp byH @@ -102925,12 +103578,12 @@ xkU ldW plq nej -qiP +jRC suW whn cqa pde -sNN +ftA nCL rwt ngd @@ -102950,7 +103603,7 @@ liD bAL ota fPs -ffO +bDk ota oAe ihE @@ -102975,7 +103628,7 @@ wqY nTx xxC xII -oeZ +iis tOE eev axi @@ -102996,7 +103649,7 @@ mSg mSg mSg mSg -tQT +jbA cCZ cCZ cCZ @@ -103142,8 +103795,8 @@ adC ito qhx vvw -ras qhx +cxQ vvw vvw jlt @@ -103161,20 +103814,20 @@ dZv dZv kWs dZv -sBz +krm cYQ -dUI -hdU -pxZ -niz -aza -luN -mMH -dUI +dNi +ktb +jRa +xnt +xnt +lqx +nbg +dIi lUu vHU lpd -ebK +qWB vrS eHD vrS @@ -103182,15 +103835,15 @@ xkU ldW ajU nej -mqy +stq dQU wmz oAS kMI -vFG +iTM hiF vdW -xrP +uxU asD rnw bdX @@ -103232,7 +103885,7 @@ ria nTx xxC msD -xFa +piO tOE bzJ axi @@ -103253,7 +103906,7 @@ hCT dUq lhu mSg -tQT +jbA cCZ cCZ cCZ @@ -103399,10 +104052,10 @@ pMH bYQ qhx sGc -sGc kmq sGc sGc +sGc jlt hZC dYQ @@ -103420,18 +104073,18 @@ sBz isM sBz fsz -dUI -hLl -kIW -cnq -uFc -dRn -cYz -dUI -eBC +dNi +vIP +mPj +fSa +lOi +lNG +tJb +xgL +nUc vHU syw -ljV +syw pCn eij dHv @@ -103439,12 +104092,12 @@ dFr uZy gIC nej -mqy +stq bpO sXJ sQZ kMI -bNa +oOf hiF vdW ngd @@ -103474,7 +104127,7 @@ kjb lcF hgT eTW -lxd +rcZ lxd lxd vOY @@ -103489,7 +104142,7 @@ eIk nTx xxC usC -gqX +miR xxC peb qDy @@ -103510,7 +104163,7 @@ flf sGU lhu mSg -tQT +jbA cCZ cCZ cCZ @@ -103657,7 +104310,7 @@ elH qhx sGc sGc -sGc +dQq sGc wMz jlt @@ -103676,19 +104329,19 @@ sBz sBz dZv sBz -afo -dUI -dUI -bdd -dUI -dUI -dUI -dUI -dUI -jgn -vHU +fLA +dNi +dNi +dNi +dNi +dNi +dNi +dNi +dIi +eBC +kbb syw -lua +byH pCn dHv cFK @@ -103696,7 +104349,7 @@ gzM aeQ syw tgt -sIC +lAb rKm rKm rKm @@ -103746,7 +104399,7 @@ eIk geu tOE tAZ -lYf +kyj xxC rne avb @@ -103767,9 +104420,9 @@ flf flf flf mSg -eRd -gsG -eQy +jbA +jbA +jbA cCZ cCZ cCZ @@ -103939,13 +104592,13 @@ eBC eBC eBC eBC -rrw +eBC rnX aki aLk vHU syw -lsD +ebK qSx plL lra @@ -103978,7 +104631,7 @@ xGE uti lLW nZG -lQH +qRn vEf oAe bua @@ -104026,7 +104679,7 @@ dhO mSg mSg mSg -tQT +jbA cCZ cCZ cCZ @@ -104217,7 +104870,7 @@ pIp dmQ dTM iuz -smG +wjL eKB eKB pEb @@ -104283,7 +104936,7 @@ uEc spc ikH mSg -tQT +jbA cCZ cCZ cCZ @@ -104426,7 +105079,7 @@ eFQ lvX anC noO -mfv +xoO jvj dGb kDV @@ -104462,7 +105115,7 @@ aLk aLk wXC txr -eKB +kvA eKB eKB htF @@ -104540,14 +105193,14 @@ giK guf wEe mSg -tQT -cCZ -cCZ -cCZ -cCZ +jbA +hNy +hNy +hNy cCZ cCZ cCZ +nLN cCZ cCZ cCZ @@ -104793,15 +105446,15 @@ wjE rjO uQZ rjO -rjO +tZX uuR qtH mSg -tQT -cCZ -cCZ -cCZ -cCZ +jbA +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -104972,7 +105625,7 @@ oTZ cYR ftr vHU -krW +mbM eBC cKd mGR @@ -105054,12 +105707,12 @@ tKg xUV aCz mSg -tQT -cCZ -cCZ -cCZ -cCZ -cCZ +jbA +hNy +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -105191,7 +105844,7 @@ kvc dJN dJN dJN -urA +dpD lvX eFQ lvX @@ -105229,7 +105882,7 @@ aPg rOu rRR sel -fJF +gQK eBC fqc oLQ @@ -105311,12 +105964,12 @@ kmT xUV aCz mSg -tQT -cCZ -cCZ -cCZ -cCZ -cCZ +uOc +hNy +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -105520,7 +106173,7 @@ ocz wtu ota fPs -ffO +bDk ota oAe aez @@ -105556,7 +106209,7 @@ fdy aQb bWg rKd -mjF +aBl mYz wew jMz @@ -105564,17 +106217,17 @@ jMU tHz ucy exH -oCD +dLP fVT aCz mSg -sMH -eQy -nLN -cCZ -cCZ -cCZ -cCZ +uOc +uOc +uOc +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -105813,7 +106466,7 @@ gMZ gMZ lvd cMI -ttj +vrT ttj mSg mSg @@ -105821,17 +106474,17 @@ gDs gDs gDs mSg -gif +cun mSg mSg mSg siV -tQT -cCZ -cCZ -cCZ -cCZ -cCZ +siV +uOc +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -106065,12 +106718,12 @@ dTP bdN hNy siV -qeL nfe -oLx -oLx +nfe +nfe +nfe kEZ -nlO +vTH gvA nlO nlO @@ -106078,17 +106731,17 @@ nlO nlO nlO nlO -owj +qHE gvA -lCl -kzz -igj -eiO -cCZ -cCZ -cCZ -cCZ -cCZ +nlO +dcj +ioi +qTz +uOc +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -106237,7 +106890,7 @@ knC hNy hNy sBz -gKH +heh tFu fUv ogX @@ -106322,30 +106975,30 @@ lCh bdN hNy siV -mSB +nfe +gXp +gXp gXp bGq -ncM -gym -oJQ -gym -qCu -uRz -lZs -lKy -cvV -sOd -xFv +gXp +gXp +gXp +gXp +gXp +gXp +gXp +gXp +sNn +gXp nlO -nXS -fxi +oAI +dOX siV -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ +rRv +rRv +hNy +hNy +hNy cCZ cCZ cCZ @@ -106548,8 +107201,8 @@ ocz ocz vEf fPs -lQH -ota +qRn +gjN oAe dCm oAe @@ -106579,31 +107232,31 @@ hci bdN hNy siV -oyH -mDF +qeL +gXp bGq -fjh -lBW -phY -uXD -uve -tkq -wAi -uXD -cMl -tnA -vUr +aFD +fAQ +vdn +fAQ +nZA +xLM +mDB +uWB +bOV +iMN +mXk +gXp nlO -nXS -dBz +lCl +ePO siV -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ +hNy +rRv +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -106801,12 +107454,12 @@ ota ota hbx ota -fWD -vEf +ota +ota ota fPs frW -ota +pqJ oAe kPD oAe @@ -106836,31 +107489,31 @@ hmD bdN hNy siV -qaT -aJm -kAb -fjh -cix -cix +mSB +gXp +bGq +xqk +lBW +lBW uXD -bPZ -hiO -rYR +uve +tkq +wAi uXD -wOk -wOk -eAU +cMl +tnA +kUp +lAH nlO nXS -quP +ePO siV hNy -hNy rRv rRv hNy -cCZ -cCZ +hNy +hNy cCZ cCZ cCZ @@ -107054,16 +107707,16 @@ asD udX ota ota +iaF +nqp +gWJ +qKS +xFA +xFA +xFA +dVg +frW ota -ota -ota -ota -ota -ota -ota -fPs -wtO -wtO tIK wkE usk @@ -107093,29 +107746,34 @@ kCg bdN hNy siV -tak -ict -abM -nGd -uXD -uXD -uve -nre -vlm -qDc -wAi +oyH +mDF +bGq +mBy +cix +cix uXD +doA +hiO +rYR uXD -qGD +wOk +wOk +kUp +gXp nlO nXS -qkS +aGK siV hNy hNy rRv -rRv hNy +hNy +hNy +hNy +cCZ +cCZ cCZ cCZ cCZ @@ -107156,54 +107814,49 @@ cCZ cCZ cCZ cCZ +"} +(145,1,1) = {" cCZ cCZ cCZ cCZ cCZ -"} -(145,1,1) = {" -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -hNy -hNy -hNy -hNy -hNy -hNy -hNy -ogK -ygd -xTJ -ygd -ogK -hNy -hNy +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +hNy +hNy +hNy +hNy +hNy +hNy +hNy +ogK +ygd +xTJ +ygd +ogK +hNy +hNy cCZ cCZ cCZ @@ -107311,16 +107964,16 @@ asD udX ota ota -ota -ota -ota -ota -ota -ota -ota -fPs +mzx frW -qPz +emG +frW +rLu +iIs +frW +sRL +toc +fFi oAe toO oAe @@ -107350,33 +108003,33 @@ fEs bdN hNy siV -lCT -dxV +qaT +aJm kAb -fjh -tIT -hiO -aiH -qvF -hiO -esB -pSY -myo -tIT -wkm +vqF +uXD +uXD +uve +nre +vlm +qDc +wAi +uXD +uXD +dpt +gXp nlO -siV -cuF +nXS +cRA siV hNy hNy hNy -rRv hNy -cCZ -cCZ -cCZ -cCZ +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -107534,11 +108187,11 @@ aSa iuu lRy jHS -lDV +gMz jHS jHS jHS -tcM +uRh jHS jHS xRb @@ -107569,16 +108222,16 @@ rFf xFA yjs xnc -xFA -xFA -hlw -xFA -xFA -xFA -dVg -frW -enR -oAe +bAe +hcW +gUE +nXt +qXi +qXi +jzo +qXi +qXi +aOy toO oAe oAe @@ -107607,23 +108260,24 @@ jpp bdN hNy siV -lCT -gLM -kAb -fjh -vCg -eUT -vuG -qvF -fcN +tak +ict +abM +mBy +tIT +hiO +aiH +taW +sYl esB -rGR -eUT -vCg -ruy -kJu -eHk -nBy +pSY +myo +tIT +oRG +gXp +bSt +svF +kDk siV hNy hNy @@ -107631,10 +108285,9 @@ hNy hNy hNy rRv -rRv -rRv -hNy -hNy +cCZ +cCZ +cCZ cCZ cCZ cCZ @@ -107809,12 +108462,12 @@ ivx tyJ ngd ngd -pQt +nnW ngd nUr ngd ngd -npL +tUb ngd ngd ngd @@ -107826,16 +108479,16 @@ hLZ frW gzQ fPs -frW -frW -frW -rLu -iIs -frW -sRL -toc -fFi -oAe +xjp +pnf +pnf +qXi +drx +fWL +vDV +jzB +bhm +aOy rVi gRN wLJ @@ -107864,34 +108517,34 @@ bdN bdN hNy siV -ucH -gLM +lCT +dxV kAb -gtH -tIT -hiO -aiH +mBy +fYp +eUT +vuG qvF -hiO +fcN esB -pSY -hiO -tIT -tbB -wvn +rGR +eUT +fYp +oRG +gXp +bSt siV -abI +cuF siV hNy hNy hNy hNy hNy -hNy -hNy -hNy -hNy -hNy +rRv +cCZ +cCZ +cCZ cCZ cCZ cCZ @@ -108083,15 +108736,15 @@ vjY fWc gzQ fPs -fIL -hcW -faL -nXt -qXi -qXi -jzo -qXi -qXi +asO +pnf +dQE +trX +tOy +paq +vDV +edG +xEg aOy toO toO @@ -108122,33 +108775,34 @@ hNy hNy siV lCT -ict -jNJ -ppF -uXD -uXD -uXD -uXD -kkK -uXD -uXD -uXD -uXD -uCk -dGy -afA -fnZ -qiK -hNy -hNy -hNy +gLM +kAb +mBy +tIT +hiO +aiH +qvF +hiO +esB +pSY +hiO +tIT +tbB +gXp +bSt +jLf +knt +siV +rRv hNy hNy hNy hNy +rRv +rRv +rRv hNy hNy -rRv cCZ cCZ cCZ @@ -108167,30 +108821,29 @@ cCZ cCZ cCZ cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -"} -(149,1,1) = {" +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +cCZ +"} +(149,1,1) = {" cCZ cCZ cCZ @@ -108343,12 +108996,12 @@ fPs xjp pnf eEL -qXi -drx -fWL +trX +uhM +ptP vDV -jzB -bhm +fZe +eYv aOy cAe oAe @@ -108378,35 +109031,35 @@ hNy hNy hNy siV -wIa -gjj -bGq -cqh -kPl -meW -kPl -dGE -kPl -kPl -kPl -meW -kDP -isp -nlO -jLf -cCZ -vFo -ycH -qiK -xGj -cCZ -aWF +ucH +gLM +kAb +vWv +uXD +uXD +uXD +uXD +kkK +uXD +uXD +uXD +uXD +uCk +gXp +mOo +siV +abI +siV cCZ -aWF +rRv +rRv +hNy +hNy +hNy +hNy hNy hNy hNy -cCZ cCZ cCZ cCZ @@ -108600,12 +109253,12 @@ fPs xjp qUe pnf -trX -tOy -paq -vDV -edG -xEg +qXi +qXi +qXi +tda +qXi +qXi aOy cAe oAe @@ -108634,32 +109287,33 @@ bSh hNy cCZ kci -tfD -qUH -qUH -cXZ -wfH -fJq -tIc -fJq -tIc -tIc -fJq -tIc -ulI -wqN -pMw -pFO +siV +lCT +ict +jNJ +qtU +keY +xCy +keY +dGk +keY +keY +keY +xCy +gjj +lUd +gXp +bSt afA -dct -jMr -jMr -jMr -eWk +fnZ +qiK cCZ -aWF -vtU -vtU +cCZ +rRv +hNy +hNy +hNy +hNy hNy hNy rRv @@ -108702,7 +109356,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (151,1,1) = {" cCZ @@ -108845,7 +109498,7 @@ gHP gHP gHP gHP -fJO +kNg tjs aNP pQL @@ -108858,11 +109511,11 @@ xjp pnf pnf trX -uhM -ptP -vDV -fZe -eYv +buJ +dOt +nPp +lJu +dSi aOy cAe oAe @@ -108891,32 +109544,33 @@ bSh hNy cCZ vtU -jLf -jLf siV -nPS -mAv -jLf -siV -siV -jLf -jLf +wIa +yim +bGq +qlF +hTY +gXp +hTY +gXp +gXp +hTY +gXp +hTY +gXp +wqN +lAH +bSt jLf -siV -siV -uSw -mAv -uSw -siV +rIV +vFo ycH -gNx -qbK -gNx -uHv +qiK +xGj cCZ -vtU +aWF cCZ -vtU +aWF hNy hNy hNy @@ -108959,7 +109613,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (152,1,1) = {" cCZ @@ -109115,11 +109768,11 @@ dHE pnf pnf qXi -qXi -qXi -tda -qXi -qXi +gAG +kAB +qzt +fnr +rQL aOy cAe qcY @@ -109148,36 +109801,36 @@ bSh hNy vtU vtU -cCZ -cCZ -siV -gZA -oRg -nyG -dxV -dxV -dxV -ouQ -utC -dxV -dxV -olu -kXb -rFM -siV -old -gNx -qbK -gNx +tfD +qUH +qUH +cXZ +wfH +fJq +tIc +fJq +tIc +tIc +fJq +tIc +ulI +wqN +chI +aaG +bSt +afA +dct +jMr +jMr +jMr eWk cCZ aWF -cCZ -aWF -hNy +vtU +vtU hNy hNy -cCZ +rRv cCZ cCZ cCZ @@ -109359,7 +110012,7 @@ doI qlZ bwO gpp -chB +cKX sWx dwk csN @@ -109371,12 +110024,12 @@ fPs xjp pnf pnf -trX -buJ -dOt -nPp -lJu -dSi +qXi +qXi +qXi +qXi +qXi +qXi aOy cAe oAe @@ -109405,32 +110058,33 @@ bSh hNy cCZ cCZ -cCZ -cCZ +jLf +jLf siV -wWs -oRg -oRg -dxV -dxV -dxV -dxV -dxV -dxV -dxV -gNo -oRg -gUv +nPS +mAv +jLf siV -pXU -jMr -jMr -jMr +siV +jLf +jLf +jLf +siV +siV +uSw +xJa +jLf +uSw +siV +ycH +gNx +qbK +gNx uHv cCZ -aWF +vtU cCZ -aWF +vtU hNy hNy hNy @@ -109473,7 +110127,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (154,1,1) = {" cCZ @@ -109616,25 +110269,25 @@ bMe bwO bwO baF -mfE +wnT phR soG phR nNc lKR -qgw +cVo cVS aNh xjp pYL pnf -qXi -gAG -kAB -qzt -fnr -rQL -aOy +qUe +pnf +pnf +pnf +pnf +pnf +oAe cAe oAe jew @@ -109665,19 +110318,20 @@ cCZ cCZ cCZ siV -pYG +gZA +oRg nyG -wmI dxV dxV dxV ouQ +utC dxV dxV -dxV -trJ -nyG -kdi +olu +olu +rFM +rFM siV old gNx @@ -109730,7 +110384,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (155,1,1) = {" cCZ @@ -109873,19 +110526,19 @@ gHP gHP gHP gHP -nft -jXA -wTa -rWF -rOH +bcS +vay +bkG +oLr +gxa kYL -riM +eLb biy aNh dAd snL snL -qXi +ceR cBF cBF cBF @@ -109922,24 +110575,25 @@ cCZ cCZ cCZ siV -eZP -nyG -nuO -mNK -nyG -vOf -siV -jjW -nyG -nyG -aFz +wWs +oRg +oRg +dxV +dxV +dxV +dxV +dxV +dxV +dxV +jiE nyG -unN +dxV +gUv siV -xHf -gNx -gNx -gNx +pXU +jMr +jMr +jMr uHv cCZ aWF @@ -109987,7 +110641,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (156,1,1) = {" cCZ @@ -110127,9 +110780,9 @@ cJf sbJ iDN fNG -ibv -qSY -gHP +gRd +aOU +wzk gHP gHP gHP @@ -110179,27 +110832,28 @@ cCZ cCZ cCZ siV -siV -siV -siV -siV -siV -siV -siV -siV -siV -siV -siV -siV -siV +pYG +nyG +wmI +dxV +dxV +dxV +ouQ +dxV +dxV +dxV +trJ +nyG +kdi +dxV siV old -aLG -ffl -aLG +gNx +qbK +gNx eWk cCZ -vtU +aWF cCZ aWF hNy @@ -110244,7 +110898,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (157,1,1) = {" cCZ @@ -110384,10 +111037,10 @@ fNG fNG fNG fNG -pnf -pnf -pnf -pnf +ntq +oHJ +dxc +uIJ pnf svn pnf @@ -110435,29 +111088,30 @@ cCZ cCZ cCZ cCZ -cCZ -cCZ -cCZ -vtU -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ -xGj -mDG -uHv -mDG +siV +eZP +nyG +nuO +mNK +oRg +ezl +eWf +vSo +oRg +oRg +aFz +nyG +unN +dxV +siV +xHf +gNx +gNx +gNx uHv cCZ aWF -vtU +cCZ aWF hNy hNy @@ -110501,7 +111155,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (158,1,1) = {" cCZ @@ -110640,11 +111293,11 @@ qKr qKr tKi qKr -pnf -pnf -svn -pnf -pnf +uIJ +lkf +ceo +qnL +uIJ pnf pnf pnf @@ -110690,29 +111343,30 @@ cCZ aWF aWF vtU -aWF -aWF -aWF -vtU -aWF -aWF -aWF -aWF -vtU -aWF -aWF -aWF -aWF -aWF -aWF -aWF -aWF -vtU -aWF -vtU -aWF -aWF -vtU +rIV +rIV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +siV +old +aLG +ffl +aLG +eWk +cCZ vtU cCZ aWF @@ -110758,7 +111412,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (159,1,1) = {" cCZ @@ -110897,18 +111550,18 @@ qKr qKr qKr qKr +uIJ +uIJ +uIJ +oPk +uIJ pnf pnf pnf -pnf -pnf -pnf -pnf -pnf -aZR -mZn -qxr -gzQ +wdl +kqH +jmB +cnI hOi uKD kMj @@ -110963,16 +111616,17 @@ cCZ cCZ cCZ cCZ -vtU -cCZ -cCZ -cCZ -cCZ -cCZ -cCZ cCZ +jLg +jLg +wAb +uHv +mDG +uHv cCZ +aWF vtU +aWF hNy hNy hNy @@ -111015,7 +111669,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (160,1,1) = {" cCZ @@ -111154,15 +111807,15 @@ izf wFQ fOu fOu -mZn -mZn -mZn -mZn -mZn -mZn -mZn -mZn -qzf +vbD +vbD +vbD +lfc +lfc +kqH +kqH +kqH +enu qzf ylP eXH @@ -111220,15 +111873,16 @@ cCZ cCZ cCZ cCZ -vtU -cCZ cCZ +vtU cCZ cCZ +vtU aWF aWF -aWF -aWF +vtU +vtU +cCZ aWF hNy hNy @@ -111272,7 +111926,6 @@ cCZ cCZ cCZ cCZ -cCZ "} (161,1,1) = {" cCZ @@ -111477,20 +112130,20 @@ cCZ cCZ hNy cCZ +cCZ vtU cCZ cCZ cCZ cCZ cCZ +cCZ +cCZ +cCZ +vtU hNy hNy hNy -hNy -hNy -hNy -cCZ -cCZ cCZ cCZ cCZ @@ -111734,20 +112387,20 @@ cCZ hNy hNy hNy -vtU cCZ +vtU cCZ cCZ cCZ cCZ +aWF +aWF +aWF +aWF +aWF hNy hNy hNy -hNy -hNy -hNy -cCZ -cCZ cCZ cCZ cCZ @@ -111991,19 +112644,19 @@ cCZ hNy hNy hNy -vtU -cCZ -cCZ -cCZ -cCZ -cCZ cCZ +vtU cCZ cCZ cCZ -vtU cCZ cCZ +hNy +hNy +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -112248,19 +112901,19 @@ vtU hNy hNy hNy -vtU -cCZ -cCZ -cCZ -cCZ -cCZ cCZ +vtU cCZ cCZ cCZ -vtU cCZ cCZ +hNy +hNy +hNy +hNy +hNy +hNy cCZ cCZ cCZ @@ -112743,8 +113396,8 @@ vuQ jtj fHJ kHf -fVU -dhs +mBd +lJs kHf ncW qMz @@ -114545,7 +115198,7 @@ gSB cGz acw gup -oKT +wcq oKT vnc ohW @@ -115065,7 +115718,7 @@ kHf bzc kHf sKh -vLD +rUO iXi gjb buH @@ -116051,7 +116704,7 @@ tbV rRv rRv rRv -oWn +iOB rRv rRv dsR @@ -116099,7 +116752,7 @@ jwc brQ eMc sbe -nSK +vRr qsd mjv cgU @@ -116356,7 +117009,7 @@ yaE yaE yaE yaE -cJs +hbG qsd hHq pYu @@ -116555,7 +117208,7 @@ cCZ vtU cCZ tbV -xwK +iHQ kUt rIv lFE @@ -116568,7 +117221,7 @@ dsR jcA oiQ rRv -iIL +evb lol rRv hNy @@ -116581,7 +117234,7 @@ sQY oEV kbW qlQ -fVB +qsH cSs uru pND @@ -116613,7 +117266,7 @@ vls wmB fcL wtP -lzr +heP qsd fOn rnC @@ -116816,8 +117469,8 @@ kpp kUt jPg vAA -qaU -tbV +dNv +ivL tbV vCB tyd @@ -116834,14 +117487,14 @@ fDK lDr gXL gXL -brl +kaz gXA kvb kOa rdu oCW wYk -tuE +tPP dpm mBf mBf @@ -117073,8 +117726,8 @@ mNV uiI iIH mRk -hGF -tbV +dNv +fen tbV hNy vCB @@ -117306,7 +117959,7 @@ hNy dAF dzI iwy -kcb +kqQ lPy jSN rYo @@ -117349,13 +118002,13 @@ mfd wlS lwc kPb -jGx +lDr kvb aIB oUB fGx wYk -tuE +tPP dpm hNy cCZ @@ -117562,7 +118215,7 @@ vtU vtU dAF hSC -rYo +fSh lcn vFk jSN @@ -117609,7 +118262,7 @@ kPb gRY kbW rrr -tnf +lyh pRf xDC xFg @@ -117818,10 +118471,10 @@ cCZ cCZ cCZ dAF -tWa +kDa lsO eJG -pze +fnY jgb qoX goi @@ -118075,9 +118728,9 @@ cCZ cCZ cCZ dAF -byV -jSN -qcX +wMm +vPO +pCB xjk jSN jSN @@ -118332,10 +118985,10 @@ vtU vtU vtU dAF -uqN -fGr -mlo -kDJ +liQ +aRG +xlC +rYo jSN jSN jSN @@ -118589,10 +119242,10 @@ cCZ cCZ cCZ dAF -xJf -cte -hSC -dgl +iTw +tQp +lbQ +hnD paM frw maL @@ -144021,11 +144674,11 @@ hHc kWt hHc qlI -vtU -vtU -vtU -vtU -vtU +dUQ +dUQ +dUQ +dUQ +dUQ dUQ dUQ dUQ @@ -144278,16 +144931,16 @@ hHc kWt hHc qlI -jLg -upy -jLg -upy -jLg +fxf +lSs +fxf +lSs +fxf qlI qlI qlI qlI -jLg +fxf fxf lSs fxf @@ -144535,11 +145188,11 @@ hHc kWt dUQ qlI -vtU -vtU -vtU -vtU -vtU +dUQ +dUQ +dUQ +dUQ +dUQ qlI kaJ xpD @@ -144792,11 +145445,11 @@ hHc kWt hHc qlI -cCZ -cCZ -cCZ -cCZ -cCZ +hHc +hHc +hHc +hHc +hHc qlI fdp xpD @@ -145049,11 +145702,11 @@ hHc kWt hHc qlI -cCZ -cCZ -cCZ -cCZ -cCZ +hHc +hHc +hHc +hHc +hHc qlI duX fDn @@ -145332,7 +145985,7 @@ fDn gUy gUy gUy -cCZ +hHc hHc hHc hHc @@ -145589,7 +146242,7 @@ fDn trC ipY trC -wnD +gsH hHc hHc hHc @@ -145846,7 +146499,7 @@ fDn trC xQr trC -cCZ +hHc hHc hHc hHc @@ -146358,8 +147011,8 @@ ycq pNg fDn qlI -cCZ -vtU +hHc +dUQ hHc hHc hHc @@ -146615,8 +147268,8 @@ vlp xnk djP qlI -vtU -vtU +dUQ +dUQ hHc hHc hHc @@ -146872,8 +147525,8 @@ gUy cIv fDn qlI -cCZ -vtU +hHc +dUQ hHc hHc hHc @@ -147129,9 +147782,9 @@ sqo hUO pHk qlI -cCZ -vtU -cCZ +hHc +dUQ +hHc hHc hHc hHc @@ -147386,9 +148039,9 @@ gUy rtN fDn qlI -cCZ -vtU -cCZ +hHc +dUQ +hHc hHc hHc hHc @@ -147643,8 +148296,8 @@ dxY wwf fDn qlI -cCZ -vtU +hHc +dUQ hHc hHc hHc @@ -147900,8 +148553,8 @@ uXq pNg djP qlI -vtU -vtU +dUQ +dUQ hHc hHc hHc @@ -148157,8 +148810,8 @@ uEb pNg fDn qlI -cCZ -vtU +hHc +dUQ hHc hHc hHc @@ -148414,8 +149067,8 @@ pNg pNg fDn qlI -cCZ -vtU +hHc +dUQ hHc hHc hHc @@ -148896,8 +149549,8 @@ hHc hHc hHc hHc -maW -vtU +gIP +dUQ qlI qlI qlI @@ -149153,11 +149806,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -cCZ +hHc +hHc +hHc +hHc +hHc qlI sOj qlI @@ -149183,8 +149836,8 @@ bzt fDn hHf ikk -dBp -pSH +jsJ +sNj ikk hHc hHc @@ -149410,11 +150063,11 @@ hHc hHc hHc hHc -npt -cCZ -cCZ -cCZ -mbI +nSV +hHc +hHc +hHc +xIn nna wdA jvE @@ -149440,8 +150093,8 @@ qSj fDn qzT ikk -vsC -pSH +npD +rGv ikk hHc hHc @@ -149667,20 +150320,20 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -cCZ +hHc +hHc +hHc +hHc +hHc qlI jyh qlI fdp +tmu +tmu wyM -wyM -wyM -wyM -wyM +tmu +tmu wyM dip qlI @@ -149697,8 +150350,8 @@ qlI yhx pNg ikk -dqI -pSH +gPQ +rGv tiU hHc hHc @@ -149924,8 +150577,8 @@ hHc hHc hHc hHc -maW -vtU +gIP +dUQ qlI qlI qlI @@ -149954,8 +150607,8 @@ oOG fDn pNg ikk -dBp -pSH +bik +sNR ikk ikk ikk @@ -150201,11 +150854,11 @@ qlI pNg pNg pNg -pNg -pNg gRj cFR cFR +cFR +cFR wXS cFR cFR @@ -150449,8 +151102,6 @@ hHc hHc hHc dUQ -hHc -hHc ngE uEK uEK @@ -150463,7 +151114,8 @@ ngE ngE liq fDn -ibF +fDn +qlI ibF ibF nEg @@ -150472,6 +151124,7 @@ ibF ibF ibF ibF +wwO dBp pSH tiU @@ -150706,8 +151359,6 @@ kWt kWt kWt kWt -hHc -hHc ngE maH dDW @@ -150720,7 +151371,8 @@ tzH lpZ gyb fDn -ibF +fDn +qlI rgJ wvK mQj @@ -150729,6 +151381,7 @@ ehR jEb wZh ibF +wwO pSH pSH ikk @@ -150958,13 +151611,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -vsD -cCZ -cCZ +hHc +hHc +hHc +hHc +kWt ngE ygq dDW @@ -150977,7 +151628,8 @@ fXt fXt cgK cgK -ibF +cgK +qlI pFj izA tdx @@ -150986,6 +151638,7 @@ axZ aON fjm ibF +wwO wOd jcE ikk @@ -151215,13 +151868,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -vsD -cCZ -cCZ +hHc +hHc +hHc +hHc +kWt ngE gJk dDW @@ -151234,7 +151885,8 @@ aXu iVk fDn fDn -ibF +djP +qlI bGi blf mqr @@ -151243,6 +151895,7 @@ iZD mRJ fUa ibF +wwO vxs dBp tiU @@ -151472,13 +152125,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -vsD -cCZ -cCZ +hHc +hHc +hHc +hHc +kWt ngE ngE ngE @@ -151491,7 +152142,8 @@ udf iVk fDn fDn -ibF +fDn +qlI xus fjm hUt @@ -151500,7 +152152,8 @@ tTm wvK gpq ibF -pSH +wwO +jcE pSH ikk hHc @@ -151729,13 +152382,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -vsD -vtU -vtU +hHc +hHc +hHc +hHc +kWt ngE uEK cCc @@ -151747,8 +152398,9 @@ iaK hKJ dUK fDn -djP -ibF +fDn +fDn +qlI klC wvK wwO @@ -151757,6 +152409,7 @@ tTm wvK izA ibF +wwO pSH qPO ikk @@ -151986,13 +152639,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -vsD -cCZ -cCZ +hHc +hHc +hHc +hHc +kWt ngE dDW ihO @@ -152004,8 +152655,9 @@ nuN eGw iVk fDn +fDn swE -ikk +qlI ikk ikk ikk @@ -152014,6 +152666,7 @@ ikk ikk ofa ikk +pSH jcE wOd ikk @@ -152243,13 +152896,11 @@ hHc hHc hHc hHc -cCZ -cCZ -cCZ -cCZ -vsD -cCZ -cCZ +hHc +hHc +hHc +hHc +kWt ngE mWR nRT @@ -152262,9 +152913,12 @@ fOk iVk fDn fDn +fDn +qlI +vZm ikk vJS -pSH +jcE pTI hdY pTI @@ -152272,7 +152926,6 @@ ikk pSH pSH pSH -pSH iMV pSH khI @@ -152505,20 +153158,21 @@ kWt kWt kWt kWt -hHc -hHc ngE -mGu ngE ngE +mGu ngE fXt fXt cLz -fXt -fXt +iVk +iVk cgK cgK +cgK +qlI +jcE ikk ikk ikk @@ -152526,7 +153180,6 @@ pTI pTI pTI ikk -pSH ikk ikk ikk @@ -152767,23 +153420,23 @@ hHc mLm rQq txv +bsi txv txv txv txv -evY -bsi -tWl -juR -jUO +txv +txv +lzl ikk +pSH +jcE pGK ikk tiU pSH tiU ikk -pSH ikk aVd wbu @@ -153024,22 +153677,22 @@ lmJ lmJ rQq nzW -bTF -bTF -bTF -bTF -vaY -vaY -vaY -vaY -vaY -nFw -vkh +xzi +xzi +xzi +xzi +xzi +xzi +wFk +sQv +wmx vkh +ygO vkh vkh vkh vkh +bzf vkh vkh vkh @@ -153281,15 +153934,15 @@ pXo lmJ dAf oLd -hlp -txv +awq +raV pSz esU esU esU pSz -qjd -jpW +pSz +ikk ikk ikk ikk @@ -153540,14 +154193,14 @@ txv oLd txv hFt -rYH +wHo +nDd nDd nDd +pcB nDd -wFe -vOV -cJX -xMk +nDd +wHo vAK frL xph @@ -153797,14 +154450,14 @@ txv oLd txv hFt -fwY nDd nDd nDd -fwY -vOV -cJX -iXd +nDd +nDd +nDd +nDd +nDd nDd frL hYm @@ -154053,15 +154706,15 @@ rHl txv oLd txv -vLR -gxn +sDp +nDd +nDd +nDd +nDd +nDd nDd nDd nDd -isx -riL -cJX -iXd nDd gba xph @@ -154309,17 +154962,17 @@ dka wZS wBS oLd -qJa -vLR -qgp -fwY -fwY -fwY -iqy -riL -cJX -qgp -fwY +gpA +sDp +nDd +nDd +nDd +nDd +nDd +nDd +nDd +nDd +nDd kJF wxS vdY @@ -154566,17 +155219,17 @@ cNt rHl txv oLd -qoG -jpO -riL -riL -riL -riL -riL -riL -cJX -cJX -cJX +sQv +oos +fyB +fyB +fyB +fyB +fyB +fyB +fyB +mNa +fyB eqC wQb uqP @@ -154829,10 +155482,10 @@ riL nMm riL riL -dju +mcy riL riL -nMm +sYu riL jVv aIy @@ -155080,17 +155733,17 @@ czz sCM txv oLd -txv -jpO -riL -riL -riL -gQY -oLl -kaT -eNE -eNE -eNE +goH +lyA +cvu +cvu +cvu +oxT +cvu +cvu +cvu +mXt +mXt xJr mUN qbF @@ -155338,16 +155991,16 @@ lmJ dAf oLd txv -vLR -gxn -isx -riL -kkB +sDp +nDd +nDd +nDd +nDd +nDd +nDd +nDd +nDd nDd -xxS -eNE -gxn -ixY tgu tAF xdT @@ -155592,18 +156245,18 @@ lmJ lmJ lmJ lmJ -yeu +dEC oLd txv -vLR -iXd -dwf -riL -kkB +sDp +nDd +nDd +nDd +nDd +nDd +nDd +nDd nDd -xxS -eNE -iXd uMD lza ivS @@ -155849,18 +156502,18 @@ jJi cqS cCo jJi -txv +jkn oLd txv -vLR -iXd -dwf -riL -kkB +sDp +nDd +nDd +nDd +nDd +nDd +nDd +nDd nDd -xxS -eNE -iXd nDd frL hYm @@ -156106,18 +156759,18 @@ ebn cdP cdP jJi -txv +mCT oLd sFk -vLR -qgp -iqy -riL -kkB +sDp +nDd +nDd +nDd +nDd okj -xxS -eNE -rOt +nDd +nDd +xuD nDd frL ivS @@ -156366,14 +157019,14 @@ sfX vaY qxg goH -jeH -bDH -bDH -ihh -uKU +cJG +cEz +cEz +naq +cRs +lRJ +lRJ lRJ -efu -ufX lRJ lRJ bqd @@ -156630,7 +157283,7 @@ saK ibD lRJ mBc -tgU +mBc ibC hxH bqd @@ -156887,7 +157540,7 @@ lRJ lRJ lRJ bgQ -aNX +nvO lRJ lRJ bqd @@ -157144,7 +157797,7 @@ lRJ kog lRJ bgQ -kzF +vzw cBO vEl bqd @@ -157401,7 +158054,7 @@ lRJ vSP lRJ bgQ -iKJ +aIi lRJ lRJ bqd @@ -157658,7 +158311,7 @@ gYR mBc mBc sKk -kzF +vzw aUY qoA bqd @@ -157908,7 +158561,7 @@ wuF txv fmZ fmZ -fmZ +cgE tTk dWa oup @@ -158417,7 +159070,7 @@ pAP ocv irB irB -fhN +uUp jvz txv fmZ @@ -158676,7 +159329,7 @@ irB irB rdE jvz -txv +hjE fmZ txv lRJ @@ -158932,7 +159585,7 @@ tEb irB irB wDZ -rsd +gEZ rtf rQq qoG @@ -159437,7 +160090,7 @@ lEX rxV jJi yhC -dnJ +tWd eaI ftd ftd @@ -159957,8 +160610,8 @@ wrT wrT dig bOj -utd -wrT +kxP +qRX xcb jvz dbz @@ -160764,7 +161417,7 @@ soo guM jtS fAq -rEJ +coI dYf lym poh @@ -160796,7 +161449,7 @@ qLe qLe fJC pkh -tKQ +eOA fJC vxC qHj @@ -160989,7 +161642,7 @@ phJ juY phJ phJ -txv +cPM vwk txv pKF @@ -161021,7 +161674,7 @@ eoF iEt jtS gFM -vfo +hSo lRz lym xZc @@ -161277,8 +161930,8 @@ hmx oCd lOc jtS -qqV -eKw +lAC +lZP kfI eyw nHf @@ -161762,7 +162415,7 @@ phJ phJ wxT uGB -awl +gkr pGm pGm pGm @@ -163334,16 +163987,16 @@ rAq rAq rAq rAq -ctt -pkB +jjb pkB +jjb qxk icG -pkB -sgA jjb -cBP -pkB +jjb +jjb +hvP +hvP pkB jjb fQs @@ -163589,8 +164242,8 @@ rAq rAq rAq rAq -vMh -rsY +rAq +rAq pkB pkB pkB @@ -163846,8 +164499,8 @@ rAq rAq rAq rAq -bsz -wUg +rAq +rAq pkB oJI hne @@ -164073,14 +164726,14 @@ bma cGo pGm fsz -dIi -dIi -dIi -dNi -dIi -dIi -dIi -dIi +fgk +aUs +fkg +icq +aUs +aUs +fkg +hQz sZD sZD sZD @@ -164330,14 +164983,14 @@ ayc jzd nfE ggF -dIi -vzf -fRK -fEG -yjN -egz -wxH -dIi +xGC +dUI +ohP +ohP +ohP +dQs +dUI +dyO sZD sZD sZD @@ -164587,14 +165240,14 @@ ayc jzd nfE ggF -dIi -aJa -dpE -jRa -dlF -ydh -kKU -dIi +xGC +qZl +dUI +dUI +dUI +vnl +cxL +dyO sZD sZD sZD @@ -164609,7 +165262,7 @@ hQG aAO gnh oXf -sAZ +dSr rtP mQG tpc @@ -164844,14 +165497,14 @@ ayc jzd nfE ggF -dNi -bJo -vUO -muL -sEc -ydh -kKU -dIi +xGC +qZl +jtJ +xMB +qQA +dUI +cxL +rXr sZD sZD sZD @@ -164860,15 +165513,15 @@ nzE nzE crE vtH -vDz +tdd nzE fGY aAO -nZd -qAI -nZd -lGt -iav +gwg +pFR +rIK +nTZ +oob tpc rAq rAq @@ -165101,14 +165754,14 @@ ayc jzd nfE ggF -dIi -dJI -tCx -jRa -vkm -qLW -kKU -dIi +xGC +qZl +dUI +dUI +dUI +vnl +cxL +dyO ggF fsz ggF @@ -165121,11 +165774,11 @@ sJc xiM uJB xXz -mQi -mQi -mQi -mQi -sSz +gwg +gwg +gwg +gwg +oob tpc rAq rAq @@ -165135,15 +165788,15 @@ rAq rAq vel lBf -kBa +dAX qvg lDo -jSF -vdL -wpw -rBo -iKU -rMD +lDo +whT +qQq +qQq +qQq +qQq pkB fQs fQs @@ -165358,14 +166011,14 @@ ayc uck nfE ggF -dIi -riD -gZP -seo -ydh -kKU -kKU -dIi +rGt +dUI +xnT +igf +xnT +xnT +dUI +dyO sZD sZD sZD @@ -165378,11 +166031,11 @@ oTW nzE smk xXz -mQi -mQi -mQi -mQi -cuw +gwg +gqx +snM +qFk +oXI tpc rAq rAq @@ -165391,16 +166044,16 @@ lFj elj sjl pkB -pkB -pkB -jVe -hqK -pkB -pkB -vel -vel -pkB -pkB +lei +qGH +ubb +qQq +azu +yje +rfH +bme +iKU +rMD pkB fQs fQs @@ -165615,14 +166268,14 @@ ayc pEk nfE ggF -dIi -wxH -kKU -kKU -kKU -kKU -kKU -opw +kZH +sga +qqb +veJ +qqb +qqb +qqb +cNd sZD sZD sZD @@ -165635,11 +166288,11 @@ pbH nzE oob xXz -mQi -mQi -mQi -mQi -sSz +gwg +gwg +gwg +gwg +oob tpc rAq rAq @@ -165647,18 +166300,18 @@ rAq tUf qHa pHy -xfC +lNp pkB pkB -als -pHy +ylU +ezo pkB pkB -jjb -jjb +vel +vel pkB pkB -ltx +pXy fQs fQs jpN @@ -165702,7 +166355,7 @@ qHj qHj qHj qHj -cCZ +hHc hHc hHc hHc @@ -165873,12 +166526,12 @@ jzd nfE ggF dIi -wxH -kKU -kKU -kKU -kKU -kKU +dIi +dIi +dNi +dIi +dIi +dIi dIi sZD sZD @@ -165892,11 +166545,11 @@ kju nzE jxx xXz -mQi -mQi -mQi -mQi -kfk +gwg +gqx +snM +qFk +fvl vXZ tUf tUf @@ -165905,16 +166558,16 @@ gNF oHW bdu vXZ -rqE -kNc +vYJ +bkA cvl pHy -wiP +uOr +apy apy -mqf apy apy -mqf +ptM apy apy plp @@ -165958,8 +166611,8 @@ vnI vnI vnI vnI -sjW -cCZ +azS +hHc hHc hHc hHc @@ -166130,12 +166783,12 @@ jzd nfE ggF dIi +kRr +kmw +jRa +dad +wxH wxH -kKU -kKU -kKU -kKU -kKU dIi sZD sZD @@ -166387,10 +167040,10 @@ jzd nfE ggF dIi -wxH -kKU -kKU -kKU +jRa +eRW +jRa +nZi kKU kKU dIi @@ -166402,7 +167055,7 @@ ggF qmF wzi uSa -vDd +tIN mey uSa nds @@ -166643,11 +167296,11 @@ bKz jzd nfE ggF -dIi -kwB -pvw -kKU -kKU +dNi +imD +iPX +xnt +nZi kKU kKU dIi @@ -166874,7 +167527,7 @@ qfG dJN vUU vUU -eHg +rCa czJ faz cWS @@ -166901,10 +167554,10 @@ nCa pGm ggF dIi -dmh -ydh -kKU -kKU +kRr +kmw +jRa +nZi kKU kKU dIi @@ -166917,7 +167570,7 @@ sZD aMV ujU dpL -ctI +lbH uSa qBL gwg @@ -167131,7 +167784,7 @@ sJJ dJN vUU vUU -qKh +lfd czJ kPB wLa @@ -167158,12 +167811,12 @@ jzd pGm ggF dIi -dFm -egz -vbt -wxH -wxH -wxH +unA +qLj +fEG +nZi +kKU +kKU dIi sZD sZD @@ -167415,13 +168068,13 @@ uck pGm ggF dIi -dIi -dIi -dNi -dIi -dIi -dIi -dIi +aJa +dpE +jRa +nZi +kKU +kKU +opw sZD sZD ggF @@ -167671,14 +168324,14 @@ kME aWo pGm ggF -fgk -aUs -fkg -icq -aUs -aUs -fkg -hQz +dNi +bJo +hWe +muL +fVn +sQb +wxH +dIi sZD sZD ggF @@ -167928,14 +168581,14 @@ kME jzd pGm ggF -xGC -dUI -ohP -ohP -ohP -dQs -dUI -dyO +dIi +dJI +tCx +kJV +kKU +wEK +kKU +dIi heF heF noy @@ -168185,14 +168838,14 @@ kME jzd pGm ggF -xGC -qZl -dUI -dUI -dUI -vnl -cxL -dyO +dIi +riD +gZP +kGu +kKU +wEK +kKU +dIi sZD sZD dZM @@ -168418,7 +169071,7 @@ twf umb dCg gcX -cin +mgO daE vNv ktL @@ -168442,19 +169095,19 @@ kME jzd wvB ggF -xGC -qZl -jtJ -xMB -qQA -dUI -cxL -rXr +dIi +neq +kKU +kKU +kKU +wEK +kKU +dIi sZD sZD -cbU +hDa snd -fLX +tXW xSi rvN cGd @@ -168699,19 +169352,19 @@ bKz jzd pGm ggF -xGC -qZl -dUI -dUI -dUI -vnl -cxL -dyO -heF -heF -aaI -snd -fLX +dIi +oDB +wxH +vbt +wxH +rrm +qRR +hMn +exy +qah +sFM +bqb +fjD pdI rvN cGd @@ -168956,19 +169609,19 @@ vwD kIS nfE iOT -rGt -dUI -xnT -igf -xnT -xnT -dUI -dyO -sZD +dIi +dIi +dIi +dNi +dIi +dIi +dIi +dIi sZD -snd -snd -pom +oov +dyA +cse +oKM xSi fNp ouB @@ -169011,8 +169664,8 @@ xXi xXi oFk cTq -cTq -cTq +tdL +tdL osa xXi xiJ @@ -169161,7 +169814,7 @@ hHc hHc hHc hHc -hHc +byv hHc hHc hHc @@ -169213,19 +169866,19 @@ jZm uLY pGm uHs -wsv -bpz -frT -jcq -frT -jcq -nsm -cNd +wMD +uyW +jCm +hCf +jCm +hCf +kbs +kOA sZD sZD snd -ktI -xSi +jYg +ldB kMo hTu rTe @@ -169267,10 +169920,10 @@ oeq xCb xXi nPx -cZt -hyg -mjV -osa +xhV +xhV +wMu +lSS xXi xiJ oOW @@ -169422,7 +170075,7 @@ hHc hHc hHc hHc -hHc +byv hHc hHc hNy @@ -169524,10 +170177,10 @@ jAa mmT wYg nPx -cfo -jVT -rLL -osa +qJQ +xhV +wMu +lSS rSn xiJ guV @@ -169728,8 +170381,8 @@ rac pGm ybh fnd -lOz -bTP +sZD +sZD heF sZD heF @@ -169781,9 +170434,9 @@ oeq tkZ xXi nPx -hEN -nNh -hhx +uqY +ayv +eNg osa oll xiJ @@ -169971,7 +170624,7 @@ xUK kAO lzU sSo -lWj +bhe tcX vtm vtm @@ -169985,8 +170638,8 @@ rxU mRH qgJ xAj -ggF -jXk +sRX +sZD heF sZD heF @@ -171002,7 +171655,7 @@ sxf cca mqn quo -lex +nAu rSO akW nff @@ -171362,11 +172015,11 @@ qgt qgt qgt hNy -hHc -hHc -hHc -hHc -hHc +hNy +hNy +hNy +hNy +hNy hHc hHc hHc @@ -171620,9 +172273,9 @@ hNy hNy hNy hNy -hHc -hHc -hHc +hNy +hNy +hNy hHc hHc hHc @@ -171876,10 +172529,10 @@ hNy hNy hNy hNy -hHc -hHc -hHc -hHc +hNy +hNy +hNy +hNy hHc hHc hHc @@ -172006,8 +172659,8 @@ rRv rRv rRv rRv -rRv -rRv +jpl +rgj jpl jpl jpl @@ -172133,9 +172786,9 @@ hNy hNy hNy hNy -hHc -hHc -hHc +hNy +hNy +hNy hHc hHc hHc @@ -172263,11 +172916,11 @@ rRv rRv rRv rRv -rRv -rRv -rRv -rRv -pae +jpl +mGd +oyl +kqa +jpl bzj dJN dJN @@ -172391,9 +173044,9 @@ hNy hNy hNy hNy -hHc -hHc -hHc +hNy +hNy +hNy hHc hHc hHc @@ -172520,11 +173173,11 @@ hHc hHc hHc hHc -hHc -hHc -rRv -rRv -pae +jpl +hUb +njG +xpv +jpl huW cLA tXe @@ -172773,15 +173426,15 @@ hHc hHc hHc hHc -byv -hHc hHc hHc hHc hHc -hHc -rRv -pae +mvB +qfG +mGd +cLA +jpl bzj cLA pyb @@ -173034,11 +173687,11 @@ hHc hHc hHc hHc -hHc -hHc -hHc -jpl -jpl +mvB +jGD +mRb +qfG +uHC adK qfG cLA @@ -173156,7 +173809,7 @@ vWM vWM vWM vWM -nEU +vWM arN arN arN @@ -173284,9 +173937,6 @@ hHc hHc hHc hHc -byv -hHc -hHc hHc hHc hHc @@ -173294,8 +173944,11 @@ hHc hHc hHc hHc +mvB +mvB +jpl +jpl jpl -cLA bzj cLA urw @@ -173313,9 +173966,9 @@ bMA pUc rqA tQk -kEE -rxD -uRL +hee +sZg +wGt tCr asA cHp @@ -173412,8 +174065,8 @@ hbf qrz kkJ feU -feU -cdD +ufv +tDY pQN fnm pgZ @@ -173570,7 +174223,7 @@ qCr pUc kAO jWh -vsz +jam tDI gfF bzb @@ -173664,13 +174317,13 @@ mvG iJB mvG vJT -hTo +arN +aJb +sCu +vrm +uZi +ihT vWM -oPI -loD -loD -feU -ufv arN hTo hTo @@ -173920,14 +174573,14 @@ tMe hIV smW mvG -jKG -arN -lzQ -hlb -ebO -jcG -vWM +tqf +nhy +nhy +nhy +nhy +nhy ihT +vWM arN dZH rRv @@ -174177,14 +174830,14 @@ ths hIV smW mvG -gfL -rRy -rRy -rRy -rRy -rRy -kzZ -ihT +aJK +wqu +csW +fWA +hsG +nhy +suU +vWM arN arN arN @@ -174434,14 +175087,14 @@ gqY mvG iJB mvG -nAj -plE -mvc -pSM -vje -rRy -emt -hfm +oKs +fQi +utZ +kXY +gSk +nhy +dvy +gxW rbu fnm hdt @@ -174691,14 +175344,14 @@ kpM hIV bcG kQu -cQY -smW -aWy -aWy -aYB -rRy -lul -vWM +qFD +ooI +hlo +cHd +iGW +nhy +pZa +eRt arN arN arN @@ -174948,15 +175601,15 @@ ths hIV smW mvG -smW -smW -ryG -cdX -mTu -mTu -mTu -mTu +xto +wiM +wqu +wiM mTu +dmT +dmT +dmT +dmT jCd rRv kcg @@ -175144,15 +175797,15 @@ meU rXg kYo kIn -sSi -lGQ +atI +atI vUM jzb uVZ qwk hiH -uSy -ncp +bJd +atI icP vXf mNu @@ -175205,10 +175858,10 @@ gqY xQo cTv peP -smW -smW -aHK -eAH +ege +iZE +dQx +hnb mTu xft qHO @@ -175401,15 +176054,15 @@ gQB dAB uHZ ivz +pYJ +pcI ofe ofe +gcs ofe ofe -lli -ofe -ofe -ofe -ofe +oWv +iwE qeS gAI omJ @@ -175463,9 +176116,9 @@ hIV smW lzk jep -jep -uUw -ocP +gfW +wpU +fhH mTu rvE oQH @@ -175721,7 +176374,7 @@ pmL jvc smW smW -ePm +smW nZu mTu bPv @@ -175920,11 +176573,11 @@ fNG fNG xyg fNG -xyg -fNG +rlt fNG ofe ofe +ofe hlT wgD nOL @@ -176176,11 +176829,11 @@ rAq rAq bsz xTI -uoB -koU -wXL -fQs -fQs +spa +wXs +wXs +wXs +wXs ofe wOn cip @@ -176226,7 +176879,7 @@ rWM ezS bPY qkr -qkr +lJF pzs aEc ePm @@ -176433,11 +177086,11 @@ rAq rAq rAq rAq -uaa -fQs -fQs -fQs -fQs +wXs +wXs +wXs +wXs +wXs ofe pbY uVv @@ -176481,7 +177134,7 @@ uEl oay rKp pdj -xnJ +lip pTY jQf sEW @@ -176493,11 +177146,11 @@ uQE egm amb okY -opJ +okY ofD -sIE -nHj -bJy +rqx +eQF +uUs dIE rRv rRv @@ -176690,7 +177343,7 @@ rAq rAq rAq rAq -uaa +fQs fQs fQs fQs @@ -176754,7 +177407,7 @@ gyj gyj gyj auM -cZo +awR dIE jCd rRv @@ -176946,8 +177599,8 @@ ofe rAq rAq rAq -pui -uaa +rAq +fQs fQs fQs fQs @@ -177000,7 +177653,7 @@ lVb yho oSR iwf -xnu +aJR vMM smW gfw @@ -177008,10 +177661,10 @@ bXV lMU ybg dsJ -dss +epa dsJ gyj -vMr +nlS dIE hNy hNy @@ -177152,7 +177805,7 @@ hHc hHc hHc hHc -hHc +byv hHc hHc hHc @@ -177204,7 +177857,7 @@ phq cDb cDb cDb -pGm +ijZ ydn ydn ydn @@ -177266,7 +177919,7 @@ kZp gyj khP vtR -cTB +cwE asL uMz dIE @@ -177462,7 +178115,7 @@ jzd jzd jzd xLH -neH +dnd neH neH neH @@ -177516,8 +178169,8 @@ nHG iwf lla lhq -lxV -jrI +jep +bps grw bXK xTR @@ -177525,7 +178178,7 @@ dhN xUg vyz gyj -eEl +nlS dIE hNy hNy @@ -177773,8 +178426,8 @@ mbH iwf wnV fpE -tgi -qrF +smW +oKs egm xhx auM @@ -177782,7 +178435,7 @@ gyj mdD gyj onq -gbK +nlS dIE hNy hNy @@ -178030,16 +178683,16 @@ iwf iwf rWr fpE -lXe -qrF -hmh +alA +mVe +egm fht -skK dgf -dgf -nnC -pQp -pAA +oFw +uyv +hcD +iaH +gVV dIE hNy hNy @@ -178279,7 +178932,7 @@ foJ oay vNc kHf -rGd +rWr rWr odq nQw @@ -178287,10 +178940,11 @@ plE cEF xbr gAM -oKs +tef uox +egm ebv -hUJ +ueh vTi vTi vTi @@ -178298,7 +178952,6 @@ qxY vTi hFQ vTi -hNy rRv rRv jCd @@ -178547,7 +179200,8 @@ dUY xqG uox txE -eZQ +xiF +apn vTi fby cMB @@ -178556,7 +179210,6 @@ xsl asv mAL rRv -rRv hNy hNy hHc @@ -178804,7 +179457,8 @@ kIj uox uox nQs -eZQ +iSv +rNx vTi fnb aRh @@ -178813,7 +179467,6 @@ fAp aUy eBh rRv -rRv hNy hNy hHc @@ -179059,9 +179712,10 @@ eIp qgI vdm uox -qlT -bks -bks +rKo +cwu +cwu +oHZ vTi dAV fFr @@ -179069,7 +179723,6 @@ nDE qAn wSn vTi -rRv jCd hNy hNy @@ -179245,7 +179898,7 @@ iZe iyx bfl rAn -noZ +hjn oyE oNy pxq @@ -179264,7 +179917,7 @@ fTd ybl ojO nMA -ngQ +bEJ ilA ybl myK @@ -179316,9 +179969,10 @@ cWD cnA gEQ uox -nsD +ldQ doc cwu +gch vTi vQG cwt @@ -179328,7 +179982,6 @@ ijv eBh rRv rRv -rRv hNy rRv hNy @@ -179573,9 +180226,10 @@ mGK rTx rvQ uox -rLd +fwT cmh cwu +wJa vTi azL mbl @@ -179586,7 +180240,6 @@ eBh rRv rRv rRv -rRv hNy rRv hNy @@ -179830,9 +180483,10 @@ wlt wlt vSA uox -upW -cwu -cwu +oYF +gpD +bks +uxa vTi vTi mAL @@ -179841,7 +180495,6 @@ eBh mAL mAL rRv -rRv hNy rRv rRv @@ -180087,7 +180740,7 @@ qMY eIc dhB uox -lXt +nLr cwu cwu cId @@ -180262,7 +180915,7 @@ lJh iyA pqu web -lTT +kyP mAB ovE ovE @@ -180344,7 +180997,7 @@ nqd sOg etn mNo -obq +spb cwu cwu jIE @@ -180602,20 +181255,20 @@ oks pJA uCJ usA -wWl -mmP +cwu +doc fBz eol hNy hNy -hNy -hNy -hNy -hNy -rRv -hNy +qgt +qgt +qgt hNy rRv +qgt +qgt +qgt hNy dUQ dUQ @@ -180858,7 +181511,7 @@ oTe pQQ dGr uox -cGX +aic aNr qoe jBJ @@ -181131,11 +181784,11 @@ kcg kcg kcg kcg -cCZ -cCZ -vtU -cCZ -cCZ +hHc +hHc +dUQ +hHc +hHc hHc hHc hHc @@ -181302,10 +181955,10 @@ hNy rRv rRv heE -lKb -qGF -izR -dod +iRg +eZn +edu +ptA bjl qcQ sch @@ -181388,11 +182041,11 @@ kcg kcg kcg kcg -cCZ -cCZ -vtU -cCZ -cCZ +hHc +hHc +dUQ +hHc +hHc hHc hHc hHc @@ -181825,7 +182478,7 @@ xzO ewr nbb lsx -sAc +qMX jZy qsW lsx @@ -182150,14 +182803,14 @@ rRv jCd hNy hNy -hNy -hNy -hNy -rRv -hNy +qgt +qgt +qgt rRv hNy -rRv +qgt +qgt +qgt dUQ dUQ dUQ @@ -183087,7 +183740,7 @@ tYp mLG iOc tYp -kyo +sMM tYp tYp oZX @@ -183858,7 +184511,7 @@ tYp mLG reE tYp -kyo +sMM tYp tYp ofg @@ -184145,7 +184798,7 @@ lWc qYc xvk xvk -xAJ +hNy hNy eZB eZB diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index ded3dcd76d24e..8eca8d06b6112 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -4937,9 +4937,9 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "bLI" = ( -/obj/machinery/processor/slime, /obj/effect/turf_decal/bot_red, /obj/effect/turf_decal/stripes/line, +/obj/machinery/processor/slime, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) "bLS" = ( @@ -17542,10 +17542,8 @@ /area/space/nearstation) "gkj" = ( /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/camera/autoname/directional/north{ - network = list("ss13","medbay") - }, /obj/machinery/iv_drip, +/obj/machinery/light/cold/dim/directional/north, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "gkt" = ( @@ -22068,6 +22066,7 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light_switch/directional/west, /obj/item/wrench/medical, +/obj/machinery/light/cold/dim/directional/west, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "hPs" = ( @@ -46863,6 +46862,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/item/stack/sheet/mineral/plasma, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) "qGN" = ( @@ -47528,11 +47528,11 @@ /turf/open/floor/plating, /area/station/maintenance/department/engine) "qUi" = ( -/obj/machinery/processor/slime, /obj/effect/turf_decal/bot_red, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/processor/slime, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) "qUl" = ( @@ -48757,6 +48757,7 @@ pixel_y = 8 }, /obj/effect/turf_decal/stripes/line, +/obj/item/stack/sheet/mineral/plasma, /turf/open/floor/iron/white/textured_large, /area/station/science/xenobiology) "rms" = ( @@ -65510,10 +65511,12 @@ /turf/open/floor/iron/dark, /area/station/command/bridge) "xcC" = ( -/obj/machinery/light/cold/dim/directional/north, /obj/item/radio/intercom/directional/east, /obj/machinery/vending/drugs, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/camera/autoname/directional/north{ + network = list("ss13","medbay") + }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "xdf" = ( diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 11cf261276d72..a033f04a798a0 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -90,8 +90,8 @@ #define ORGAN_SLOT_ADAMANTINE_RESONATOR "adamantine_resonator" #define ORGAN_SLOT_APPENDIX "appendix" #define ORGAN_SLOT_BRAIN "brain" -#define ORGAN_SLOT_BRAIN_ANTIDROP "brain_antidrop" -#define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun" +#define ORGAN_SLOT_BRAIN_CEREBELLUM "brain_antidrop" +#define ORGAN_SLOT_BRAIN_CNS "brain_antistun" #define ORGAN_SLOT_BREATHING_TUBE "breathing_tube" #define ORGAN_SLOT_EARS "ears" #define ORGAN_SLOT_EYES "eye_sight" @@ -174,8 +174,8 @@ GLOBAL_LIST_INIT(organ_process_order, list( ORGAN_SLOT_VOICE, ORGAN_SLOT_ADAMANTINE_RESONATOR, ORGAN_SLOT_HEART_AID, - ORGAN_SLOT_BRAIN_ANTIDROP, - ORGAN_SLOT_BRAIN_ANTISTUN, + ORGAN_SLOT_BRAIN_CEREBELLUM, + ORGAN_SLOT_BRAIN_CNS, ORGAN_SLOT_PARASITE_EGG, ORGAN_SLOT_MONSTER_CORE, ORGAN_SLOT_XENO_PLASMAVESSEL, diff --git a/code/__DEFINES/ai/ai_blackboard.dm b/code/__DEFINES/ai/ai_blackboard.dm index 0c682f7d411a8..2b25d0cfb31e1 100644 --- a/code/__DEFINES/ai/ai_blackboard.dm +++ b/code/__DEFINES/ai/ai_blackboard.dm @@ -123,6 +123,18 @@ ///list of foods this mob likes #define BB_BASIC_FOODS "BB_basic_foods" +///key holding any food we've found +#define BB_TARGET_FOOD "BB_TARGET_FOOD" + +///key holding emotes we play after eating +#define BB_EAT_EMOTES "BB_eat_emotes" + +///key holding the next time we eat +#define BB_NEXT_FOOD_EAT "BB_next_food_eat" + +///key holding our eating cooldown +#define BB_EAT_FOOD_COOLDOWN "BB_eat_food_cooldown" + /// Blackboard key for a held item #define BB_SIMPLE_CARRY_ITEM "BB_SIMPLE_CARRY_ITEM" @@ -168,5 +180,4 @@ /// For /datum/ai_behavior/find_potential_targets, what if any field are we using currently #define BB_FIND_TARGETS_FIELD(type) "bb_find_targets_field_[type]" -///mothroach next meal key! -#define BB_MOTHROACH_NEXT_EAT "mothroach_next_eat" + diff --git a/code/__DEFINES/basic_mobs.dm b/code/__DEFINES/basic_mobs.dm index e519fb25240be..12ddaa3a68af9 100644 --- a/code/__DEFINES/basic_mobs.dm +++ b/code/__DEFINES/basic_mobs.dm @@ -24,6 +24,9 @@ /// Above this speed we stop gliding because it looks silly #define END_GLIDE_SPEED 10 +///hunger cooldown for basic mobs +#define EAT_FOOD_COOLDOWN 45 SECONDS + ///mook attack status flags #define MOOK_ATTACK_NEUTRAL 0 #define MOOK_ATTACK_WARMUP 1 @@ -33,6 +36,9 @@ ///keeps track of how many gutlunches are born GLOBAL_VAR_INIT(gutlunch_count, 0) +///Pet customization settings saved for every client +GLOBAL_LIST_EMPTY(customized_pets) + //raptor defines #define RAPTOR_RED "Red" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 7861cd5335343..62eafe6e36ada 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -239,8 +239,8 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( /// ex_act() with EXPLODE_DEVASTATE severity will gib mobs with less than this much bomb armor #define EXPLODE_GIB_THRESHOLD 50 -#define EMP_HEAVY 1 #define EMP_LIGHT 2 +#define EMP_HEAVY 1 #define GRENADE_CLUMSY_FUMBLE 1 #define GRENADE_NONCLUMSY_FUMBLE 2 diff --git a/code/__DEFINES/dcs/signals/signals_fish.dm b/code/__DEFINES/dcs/signals/signals_fish.dm index 9b614f924549f..f7606b63a01db 100644 --- a/code/__DEFINES/dcs/signals/signals_fish.dm +++ b/code/__DEFINES/dcs/signals/signals_fish.dm @@ -24,8 +24,6 @@ #define COMSIG_FISH_EATEN_BY_OTHER_FISH "fish_eaten_by_other_fish" ///From /obj/item/fish/generate_reagents_to_add, which returns a holder when the fish is eaten or composted for example: (list/reagents) #define COMSIG_GENERATE_REAGENTS_TO_ADD "generate_reagents_to_add" -///From /obj/item/fish/feed: (fed_reagents, fed_reagent_type) -#define COMSIG_FISH_FED "fish_on_fed" ///From /obj/item/fish/update_size_and_weight: (new_size, new_weight) #define COMSIG_FISH_UPDATE_SIZE_AND_WEIGHT "fish_update_size_and_weight" ///From /obj/item/fish/update_fish_force: (weight_rank, bonus_malus) diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm index 4a558c5fa7e03..51240110062ea 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm @@ -150,6 +150,10 @@ ///from /mob/say_dead(): (mob/speaker, message) #define COMSIG_MOB_DEADSAY "mob_deadsay" #define MOB_DEADSAY_SIGNAL_INTERCEPT (1<<0) +///from /mob/living/check_cooldown(): () +#define COMSIG_MOB_EMOTE_COOLDOWN_CHECK "mob_emote_cd" + /// make a wild guess + #define COMPONENT_EMOTE_COOLDOWN_BYPASS (1<<0) ///from /mob/living/emote(): () #define COMSIG_MOB_EMOTE "mob_emote" ///from base of mob/swap_hand(): (obj/item/currently_held_item) diff --git a/code/__DEFINES/interaction_flags.dm b/code/__DEFINES/interaction_flags.dm index fd66cee5bb93e..b031292b0242e 100644 --- a/code/__DEFINES/interaction_flags.dm +++ b/code/__DEFINES/interaction_flags.dm @@ -48,3 +48,5 @@ #define INTERACT_MACHINE_REQUIRES_SIGHT (1<<6) /// the user must be able to read to interact #define INTERACT_MACHINE_REQUIRES_LITERACY (1<<7) +/// user must be standing up in order to interact +#define INTERACT_MACHINE_REQUIRES_STANDING (1<<8) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 17e10754ea7c1..a143c671a4f46 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -253,7 +253,7 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list( #define ismecha(A) (istype(A, /obj/vehicle/sealed/mecha)) -#define ismopable(A) (A && ((A.plane == FLOOR_PLANE) ? (A.layer <= FLOOR_CLEAN_LAYER) : (A.layer <= GAME_CLEAN_LAYER))) //If something can be cleaned by floor-cleaning devices such as mops or clean bots +#define ismopable(A) (A && ((PLANE_TO_TRUE(A.plane) == FLOOR_PLANE) ? (A.layer <= FLOOR_CLEAN_LAYER) : (A.layer <= GAME_CLEAN_LAYER))) //If something can be cleaned by floor-cleaning devices such as mops or clean bots #define isorgan(A) (istype(A, /obj/item/organ)) diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index ec93973a9900c..9658f12c1524a 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -37,6 +37,7 @@ #define INTERACTION_SOUND_RANGE_MODIFIER -3 #define EQUIP_SOUND_VOLUME 30 +#define LIQUID_SLOSHING_SOUND_VOLUME 10 #define PICKUP_SOUND_VOLUME 15 #define DROP_SOUND_VOLUME 20 #define YEET_SOUND_VOLUME 90 @@ -260,3 +261,9 @@ GLOBAL_LIST_INIT(announcer_keys, list( #define SFX_LIQUID_POUR "liquid_pour" #define SFX_SNORE_FEMALE "snore_female" #define SFX_SNORE_MALE "snore_male" +#define SFX_PLASTIC_BOTTLE_LIQUID_SLOSH "plastic_bottle_liquid_slosh" +#define SFX_DEFAULT_LIQUID_SLOSH "default_liquid_slosh" +#define SFX_PLATE_ARMOR_RUSTLE "plate_armor_rustle" +#define SFX_PIG_OINK "pig_oink" +#define SFX_VISOR_UP "visor_up" +#define SFX_VISOR_DOWN "visor_down" diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 2a04228cbab28..df85d95d86bbd 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -116,6 +116,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_RESISTHEAT "resist_heat" /// Trait for when you can no longer gain body heat #define TRAIT_HYPOTHERMIC "body_hypothermic" +/// This non-living object is valid to be used in dna infusers +#define TRAIT_VALID_DNA_INFUSION "valid_dna_infusion" ///For when you've gotten a power from a dna vault #define TRAIT_USED_DNA_VAULT "used_dna_vault" /// For when you want to be able to touch hot things, but still want fire to be an issue. @@ -838,6 +840,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_MUSICIAN "musician" #define TRAIT_LIGHT_DRINKER "light_drinker" #define TRAIT_EMPATH "empath" +#define TRAIT_EVIL "evil" #define TRAIT_FRIENDLY "friendly" #define TRAIT_GRABWEAKNESS "grab_weakness" #define TRAIT_SNOB "snob" @@ -996,6 +999,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FISH_SHOULD_TWOHANDED "fish_should_twohanded" ///This fish won't be killed when cooked. #define TRAIT_FISH_SURVIVE_COOKING "fish_survive_cooking" +/** + * This fish has been fed teslium without the electrogenesis having trait. + * Gives the electrogenesis, but at halved output, and it hurts the fish over time. + */ +#define TRAIT_FISH_ON_TESLIUM "fish_on_teslium" +/// This fish has been fed growth serum or something and will grow 5 times faster, up to 50% weight and size gain when fed. +#define TRAIT_FISH_QUICK_GROWTH "fish_quick_growth" +/// This fish has been fed mutagen or something. Evolutions will have more than twice the probability +#define TRAIT_FISH_MUTAGENIC "fish_mutagenic" /// Trait given to angelic constructs to let them purge cult runes #define TRAIT_ANGELIC "angelic" @@ -1072,6 +1084,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define STATION_TRAIT_UNIQUE_AI "station_trait_unique_ai" #define STATION_TRAIT_UNNATURAL_ATMOSPHERE "station_trait_unnatural_atmosphere" #define STATION_TRAIT_VENDING_SHORTAGE "station_trait_vending_shortage" +#define STATION_TRAIT_SPIKED_DRINKS "station_trait_spiked_drinks" ///Deathmatch traits #define TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS "deathmath_explosive_implants" @@ -1297,6 +1310,9 @@ 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" +///Trait which silences all chemical reactions in its container +#define TRAIT_SILENT_REACTIONS "silent_reactions" + /** * * This trait is used in some interactions very high in the interaction chain to allow diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 3eb89831957b8..92c725bd81bb7 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -302,7 +302,7 @@ * Tips that starts with the @ character won't be html encoded. That's necessary for any tip containing markup tags, * just make sure they don't also have html characters like <, > and ' which will be garbled. */ -/proc/send_tip_of_the_round(target, selected_tip) +/proc/send_tip_of_the_round(target, selected_tip, source = "Tip of the round") var/message if(selected_tip) message = selected_tip @@ -320,4 +320,4 @@ message = html_encode(message) else message = copytext(message, 2) - to_chat(target, span_purple(examine_block("Tip of the round: [message]"))) + to_chat(target, span_purple(examine_block("[source]: [message]"))) diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 6680e655551f5..769f3984cf1a0 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -11,7 +11,9 @@ // Unable to compile this version thanks to mutable appearance changes #if (DM_VERSION == 515 && DM_BUILD == 1643) -#error This version of BYOND cannot compile this project. Visit www.byond.com/download/build to download an older version or update (if possible). +#error This specific version of BYOND (515.1643) cannot compile this project. +#error If 515.1643 IS NOT the latest version of BYOND, then you should simply update as normal. +#error But if 515.1643 IS the latest version of BYOND, i.e. you can't update, then you MUST visit www.byond.com/download/build and downgrade to 515.1642. #endif // Keep savefile compatibilty at minimum supported level diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 0865867196c92..9cf233867e717 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -163,6 +163,7 @@ DEFINE_BITFIELD(interaction_flags_machine, list( "INTERACT_MACHINE_REQUIRES_SILICON" = INTERACT_MACHINE_REQUIRES_SILICON, "INTERACT_MACHINE_REQUIRES_SIGHT" = INTERACT_MACHINE_REQUIRES_SIGHT, "INTERACT_MACHINE_REQUIRES_LITERACY" = INTERACT_MACHINE_REQUIRES_LITERACY, + "INTERACT_MACHINE_REQUIRES_STANDING" = INTERACT_MACHINE_REQUIRES_STANDING, )) DEFINE_BITFIELD(interaction_flags_item, list( diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index 0f7bd8908885a..4b77618dfe52a 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -100,3 +100,19 @@ GLOBAL_LIST_INIT(paraplegic_choice, list( "Default" = FALSE, "Amputee" = TRUE, )) + +///chipped Quirk +GLOBAL_LIST_INIT(quirk_chipped_choice, list( + "Basketsoft 3000" = /obj/item/skillchip/basketweaving, + "WINE" = /obj/item/skillchip/wine_taster, + "Hedge 3" = /obj/item/skillchip/bonsai, + "Skillchip adapter" = /obj/item/skillchip/useless_adapter, + "N16H7M4R3" = /obj/item/skillchip/light_remover, + "3NTR41LS" = /obj/item/skillchip/entrails_reader, + "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 skillchip" = /obj/item/skillchip/master_angler, +)) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 22f5f374fe318..ef5fa69138e1a 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -43,6 +43,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CHASM_STOPPER" = TRAIT_CHASM_STOPPER, "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, @@ -77,6 +78,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_WADDLING" = TRAIT_WADDLING, "TRAIT_WAS_RENAMED" = TRAIT_WAS_RENAMED, "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, + "TRAIT_SILENT_REACTIONS" = TRAIT_SILENT_REACTIONS, ), /datum/controller/subsystem/economy = list( "TRAIT_MARKET_CRASHING" = TRAIT_MARKET_CRASHING, @@ -111,6 +113,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "STATION_TRAIT_UNIQUE_AI" = STATION_TRAIT_UNIQUE_AI, "STATION_TRAIT_UNNATURAL_ATMOSPHERE" = STATION_TRAIT_UNNATURAL_ATMOSPHERE, "STATION_TRAIT_VENDING_SHORTAGE" = STATION_TRAIT_VENDING_SHORTAGE, + "STATION_TRAIT_SPIKED_DRINKS" = STATION_TRAIT_SPIKED_DRINKS, ), /datum/deathmatch_lobby = list( "TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS" = TRAIT_DEATHMATCH_EXPLOSIVE_IMPLANTS, @@ -232,6 +235,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_EMOTEMUTE" = TRAIT_EMOTEMUTE, "TRAIT_EMPATH" = TRAIT_EMPATH, "TRAIT_ENTRAILS_READER" = TRAIT_ENTRAILS_READER, + "TRAIT_EVIL" = TRAIT_EVIL, "TRAIT_EXAMINE_DEEPER_FISH" = TRAIT_EXAMINE_DEEPER_FISH, "TRAIT_EXAMINE_FISH" = TRAIT_EXAMINE_FISH, "TRAIT_EXAMINE_FISHING_SPOT" = TRAIT_EXAMINE_FISHING_SPOT, @@ -632,14 +636,17 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FISH_FLOPPING" = TRAIT_FISH_FLOPPING, "TRAIT_FISH_FROM_CASE" = TRAIT_FISH_FROM_CASE, "TRAIT_FISH_INK_ON_COOLDOWN" = TRAIT_FISH_INK_ON_COOLDOWN, + "TRAIT_FISH_MUTAGENIC" = TRAIT_FISH_MUTAGENIC, "TRAIT_FISH_NO_HUNGER" = TRAIT_FISH_NO_HUNGER, "TRAIT_FISH_NO_MATING" = TRAIT_FISH_NO_MATING, + "TRAIT_FISH_ON_TESLIUM" = TRAIT_FISH_ON_TESLIUM, "TRAIT_FISH_RECESSIVE" = TRAIT_FISH_RECESSIVE, "TRAIT_FISH_SELF_REPRODUCE" = TRAIT_FISH_SELF_REPRODUCE, "TRAIT_FISH_SHOULD_TWOHANDED" = TRAIT_FISH_SHOULD_TWOHANDED, "TRAIT_FISH_STASIS" = TRAIT_FISH_STASIS, "TRAIT_FISH_STINGER" = TRAIT_FISH_STINGER, "TRAIT_FISH_SURVIVE_COOKING" = TRAIT_FISH_SURVIVE_COOKING, + "TRAIT_FISH_QUICK_GROWTH" = TRAIT_FISH_QUICK_GROWTH, "TRAIT_FISH_TOXIN_IMMUNE" = TRAIT_FISH_TOXIN_IMMUNE, "TRAIT_RESIST_EMULSIFY" = TRAIT_RESIST_EMULSIFY, "TRAIT_FISH_WELL_COOKED" = TRAIT_FISH_WELL_COOKED, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 7e6e0dbf7e643..b54635db2f39d 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -22,6 +22,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_SCARY_FISHERMAN" = TRAIT_SCARY_FISHERMAN, "TRAIT_SNOWSTORM_IMMUNE" = TRAIT_SNOWSTORM_IMMUNE, "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, + "TRAIT_SILENT_REACTIONS" = TRAIT_SILENT_REACTIONS, ), /mob = list( "TRAIT_ABDUCTOR_SCIENTIST_TRAINING" = TRAIT_ABDUCTOR_SCIENTIST_TRAINING, @@ -344,14 +345,17 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_FISH_FED_LUBE" = TRAIT_FISH_FED_LUBE, "TRAIT_FISH_FROM_CASE" = TRAIT_FISH_FROM_CASE, "TRAIT_FISH_INK_ON_COOLDOWN" = TRAIT_FISH_INK_ON_COOLDOWN, + "TRAIT_FISH_MUTAGENIC" = TRAIT_FISH_MUTAGENIC, "TRAIT_FISH_NO_HUNGER" = TRAIT_FISH_NO_HUNGER, "TRAIT_FISH_NO_MATING" = TRAIT_FISH_NO_MATING, + "TRAIT_FISH_ON_TESLIUM" = TRAIT_FISH_ON_TESLIUM, "TRAIT_FISH_RECESSIVE" = TRAIT_FISH_RECESSIVE, "TRAIT_FISH_SELF_REPRODUCE" = TRAIT_FISH_SELF_REPRODUCE, "TRAIT_FISH_SHOULD_TWOHANDED" = TRAIT_FISH_SHOULD_TWOHANDED, "TRAIT_FISH_STASIS" = TRAIT_FISH_STASIS, "TRAIT_FISH_STINGER" = TRAIT_FISH_STINGER, "TRAIT_FISH_SURVIVE_COOKING" = TRAIT_FISH_SURVIVE_COOKING, + "TRAIT_FISH_QUICK_GROWTH" = TRAIT_FISH_QUICK_GROWTH, "TRAIT_FISH_TOXIN_IMMUNE" = TRAIT_FISH_TOXIN_IMMUNE, "TRAIT_RESIST_EMULSIFY" = TRAIT_RESIST_EMULSIFY, "TRAIT_YUCKY_FISH" = TRAIT_YUCKY_FISH, diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 83ac1b8be93ed..91b5c9b8e2af8 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -72,6 +72,8 @@ if(screen.needs_offsetting) screen.plane = GET_NEW_PLANE(initial(screen.plane), offset) +INITIALIZE_IMMEDIATE(/atom/movable/screen/fullscreen) + /atom/movable/screen/fullscreen icon = 'icons/hud/screen_full.dmi' icon_state = "default" diff --git a/code/controllers/subsystem/map_vote.dm b/code/controllers/subsystem/map_vote.dm index 7d0be38f92072..44aa82172f3f0 100644 --- a/code/controllers/subsystem/map_vote.dm +++ b/code/controllers/subsystem/map_vote.dm @@ -79,15 +79,33 @@ SUBSYSTEM_DEF(map_vote) send_map_vote_notice("No valid maps.") return - var/winner = pick_weight(filter_cache_to_valid_maps()) + var/winner + var/winner_amount = 0 + for(var/map in valid_maps) + if(!winner_amount) + winner = map + winner_amount = map_vote_cache[map] + continue + if(map_vote_cache[map] <= winner_amount) + continue + winner = map + winner_amount = map_vote_cache[map] + + ASSERT(winner, "No winner found in map vote.") set_next_map(config.maplist[winner]) - send_map_vote_notice("Map Selected - [span_bold(next_map_config.map_name)]") + var/list/messages = list("Map Selected - [span_bold(next_map_config.map_name)]") + messages += "Tallies at the time of selection:" + messages += tally_printout // do not reset tallies if only one map is even possible if(length(valid_maps) > 1) map_vote_cache[winner] = CONFIG_GET(number/map_vote_minimum_tallies) write_cache() update_tally_printout() + else + messages += "Only one map was possible, tallies were not reset." + + send_map_vote_notice(arglist(messages)) /// Returns a list of all map options that are invalid for the current population. /datum/controller/subsystem/map_vote/proc/get_valid_map_vote_choices() diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 4387d9ff44b59..89eac30f3451c 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -26,6 +26,7 @@ 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), //SKYRAT EDIT ADDITION BEGIN list(/datum/quirk/equipping/nerve_staple, /datum/quirk/nonviolent), list(/datum/quirk/equipping/nerve_staple, /datum/quirk/item_quirk/nearsighted), diff --git a/code/datums/actions/mobs/lava_swoop.dm b/code/datums/actions/mobs/lava_swoop.dm index 2b07734b4a852..428c975665676 100644 --- a/code/datums/actions/mobs/lava_swoop.dm +++ b/code/datums/actions/mobs/lava_swoop.dm @@ -144,11 +144,17 @@ for(var/turf/T in walled) drakewalls += new /obj/effect/temp_visual/drakewall(T) // no people with lava immunity can just run away from the attack for free var/list/indestructible_turfs = list() - for(var/turf/T in RANGE_TURFS(2, center)) - if(isindestructiblefloor(T)) + + for(var/turf/turf_target as anything in RANGE_TURFS(2, center)) + if(isindestructiblefloor(turf_target)) + continue + if(isindestructiblewall(turf_target)) + indestructible_turfs += turf_target continue - if(isindestructiblewall(T)) - indestructible_turfs += T + if(ismineralturf(turf_target)) + var/turf/closed/mineral/mineral_turf = turf_target + mineral_turf.gets_drilled(owner) + SLEEP_CHECK_DEATH(1 SECONDS, owner) // give them a bit of time to realize what attack is actually happening var/list/turfs = RANGE_TURFS(2, center) diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index 3eb7f9244a188..d6230ec8d3534 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -364,16 +364,6 @@ multiple modular subtrees with behaviors ///Runs any actions that are currently running /datum/ai_controller/process(seconds_per_tick) - if(current_movement_target) - if(!isatom(current_movement_target)) - stack_trace("[pawn]'s current movement target is not an atom, rather a [current_movement_target.type]! Did you accidentally set it to a weakref?") - CancelActions() - return - - if(get_dist(pawn, current_movement_target) > max_target_distance) //The distance is out of range - CancelActions() - return - for(var/datum/ai_behavior/current_behavior as anything in current_behaviors) // Convert the current behaviour action cooldown to realtime seconds from deciseconds.current_behavior diff --git a/code/datums/ai/basic_mobs/base_basic_controller.dm b/code/datums/ai/basic_mobs/base_basic_controller.dm index f21d31b05000c..7ab15437f7d35 100644 --- a/code/datums/ai/basic_mobs/base_basic_controller.dm +++ b/code/datums/ai/basic_mobs/base_basic_controller.dm @@ -9,6 +9,7 @@ update_speed(basic_mob) RegisterSignals(basic_mob, list(POST_BASIC_MOB_UPDATE_VARSPEED, COMSIG_MOB_MOVESPEED_UPDATED), PROC_REF(update_speed)) + RegisterSignal(basic_mob, COMSIG_MOB_ATE, PROC_REF(on_mob_eat)) return ..() //Run parent at end @@ -44,3 +45,8 @@ /datum/ai_controller/basic_controller/proc/update_speed(mob/living/basic/basic_mob) SIGNAL_HANDLER movement_delay = basic_mob.cached_multiplicative_slowdown + +/datum/ai_controller/basic_controller/proc/on_mob_eat() + SIGNAL_HANDLER + var/food_cooldown = blackboard[BB_EAT_FOOD_COOLDOWN] || EAT_FOOD_COOLDOWN + set_blackboard_key(BB_NEXT_FOOD_EAT, world.time + food_cooldown) diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/interact_with_target.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/interact_with_target.dm new file mode 100644 index 0000000000000..3b0c4245656e5 --- /dev/null +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/interact_with_target.dm @@ -0,0 +1,27 @@ +///behavior for general interactions with any targets +/datum/ai_behavior/interact_with_target + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH + ///should we be clearing the target after the fact? + var/clear_target = TRUE + +/datum/ai_behavior/interact_with_target/setup(datum/ai_controller/controller, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/interact_with_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target) || !pre_interact(controller, target)) + return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED + controller.ai_interact(target) + return AI_BEHAVIOR_SUCCEEDED | AI_BEHAVIOR_DELAY + +/datum/ai_behavior/interact_with_target/finish_action(datum/ai_controller/controller, succeeded, target_key) + . = ..() + if(clear_target || !succeeded) + controller.clear_blackboard_key(target_key) + +/datum/ai_behavior/interact_with_target/proc/pre_interact(datum/ai_controller/controller, target) + return TRUE diff --git a/code/datums/ai/basic_mobs/basic_subtrees/find_food.dm b/code/datums/ai/basic_mobs/basic_subtrees/find_food.dm index 9e3cd557b6437..f05c357b1a845 100644 --- a/code/datums/ai/basic_mobs/basic_subtrees/find_food.dm +++ b/code/datums/ai/basic_mobs/basic_subtrees/find_food.dm @@ -4,11 +4,33 @@ var/datum/ai_behavior/finding_behavior = /datum/ai_behavior/find_and_set/in_list ///key of foods list var/food_list_key = BB_BASIC_FOODS + ///key where we store our food + var/found_food_key = BB_TARGET_FOOD + ///key holding any emotes we play after eating food + var/emotes_blackboard_list = BB_EAT_EMOTES /datum/ai_planning_subtree/find_food/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) - . = ..() - if(controller.blackboard_key_exists(BB_BASIC_MOB_CURRENT_TARGET)) - // Busy with something + if(controller.blackboard[BB_NEXT_FOOD_EAT] > world.time) + return + if(!controller.blackboard_key_exists(found_food_key)) + controller.queue_behavior(finding_behavior, found_food_key, controller.blackboard[food_list_key]) return + controller.queue_behavior(/datum/ai_behavior/interact_with_target/eat_food, found_food_key, emotes_blackboard_list) + return SUBTREE_RETURN_FINISH_PLANNING + +/datum/ai_behavior/interact_with_target/eat_food + ///default list of actions we take after eating + var/list/food_actions = list( + "eats up happily!", + "chomps with glee!", + ) - controller.queue_behavior(finding_behavior, BB_BASIC_MOB_CURRENT_TARGET, controller.blackboard[food_list_key]) +/datum/ai_behavior/interact_with_target/eat_food/perform(seconds_per_tick, datum/ai_controller/controller, target_key, emotes_blackboard_list) + . = ..() + if(. & AI_BEHAVIOR_FAILED) + return + var/list/emotes_to_pick = controller.blackboard[emotes_blackboard_list] || food_actions + if(!length(emotes_to_pick)) + return + var/mob/living/living_pawn = controller.pawn + living_pawn.manual_emote(pick(emotes_to_pick)) diff --git a/code/datums/components/clothing_dirt.dm b/code/datums/components/clothing_dirt.dm new file mode 100644 index 0000000000000..40f0ddb07e249 --- /dev/null +++ b/code/datums/components/clothing_dirt.dm @@ -0,0 +1,88 @@ +/// This component applies tint to clothing when its exposed to pepperspray, used in /obj/item/clothing/mask/gas. + +/datum/component/clothing_dirt + /// Amount of dirt stacks on the clothing + var/dirtiness = 0 + +/datum/component/clothing_dirt/Initialize() + if(!isclothing(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/clothing_dirt/RegisterWithParent() + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) + RegisterSignal(parent, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_expose), TRUE) + +/datum/component/clothing_dirt/UnregisterFromParent() + var/obj/item/clothing/clothing = parent + clothing.tint -= dirtiness + if(iscarbon(clothing.loc)) + var/mob/living/carbon/wearer = clothing.loc + wearer.update_tint() + UnregisterSignal(wearer, COMSIG_ATOM_EXPOSE_REAGENTS) + else + UnregisterSignal(parent, COMSIG_ATOM_EXPOSE_REAGENTS) + UnregisterSignal(parent, list( + COMSIG_ATOM_EXAMINE, + COMSIG_ITEM_EQUIPPED, + COMSIG_MOB_UNEQUIPPED_ITEM, + COMSIG_COMPONENT_CLEAN_ACT, + )) + return ..() + +/datum/component/clothing_dirt/proc/on_equip(datum/source, mob/user, slot) + SIGNAL_HANDLER + var/obj/item/clothing/clothing = parent + if (!(slot & clothing.slot_flags)) + return + UnregisterSignal(parent, COMSIG_ATOM_EXPOSE_REAGENTS) + RegisterSignal(user, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_expose), TRUE) + +/datum/component/clothing_dirt/proc/on_drop(datum/source, mob/holder) + SIGNAL_HANDLER + UnregisterSignal(holder, COMSIG_ATOM_EXPOSE_REAGENTS) + RegisterSignal(parent, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_expose), TRUE) + +/datum/component/clothing_dirt/proc/on_examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER + if (dirtiness > 0) + examine_list += span_warning("It appears to be covered in some oily substance. Won't see much while wearing it until you wash it off.") + +/datum/component/clothing_dirt/proc/on_expose(atom/target, list/reagents, datum/reagents/source, methods) + SIGNAL_HANDLER + + var/mob/living/carbon/wearer + if(iscarbon(target)) + wearer = target + if(is_protected(wearer)) + return + + var/datum/reagent/consumable/condensedcapsaicin/pepper = locate() in reagents + if(isnull(pepper)) + return + + var/obj/item/clothing/clothing = parent + if (methods & (TOUCH | VAPOR)) + clothing.tint -= dirtiness + dirtiness = min(dirtiness + round(reagents[pepper] / 5), 3) + clothing.tint += dirtiness + if(!isnull(wearer)) + wearer.update_tint() + +/datum/component/clothing_dirt/proc/is_protected(mob/living/carbon/wearer) + return wearer.head && (wearer.head.flags_cover & PEPPERPROOF) + +/datum/component/clothing_dirt/proc/on_clean(datum/target, clean_types) + SIGNAL_HANDLER + var/obj/item/clothing/clothing = parent + var/mob/living/carbon/wearer + if(iscarbon(clothing.loc)) + wearer = clothing.loc + + if (clean_types & (CLEAN_WASH|CLEAN_SCRUB)) + clothing.tint -= dirtiness + dirtiness = 0 + if(!isnull(wearer)) + wearer.update_tint() diff --git a/code/datums/components/fish_growth.dm b/code/datums/components/fish_growth.dm index 3ec1427fd51a8..7c9aed1048c27 100644 --- a/code/datums/components/fish_growth.dm +++ b/code/datums/components/fish_growth.dm @@ -44,7 +44,6 @@ return var/datum/fish_evolution/evolution = GLOB.fish_evolutions[result_type] evolution.RegisterSignal(parent, COMSIG_FISH_BEFORE_GROWING, TYPE_PROC_REF(/datum/fish_evolution, growth_checks)) - evolution.register_fish(parent) /datum/component/fish_growth/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_FISH_LIFE, COMSIG_FISH_BEFORE_GROWING)) @@ -55,6 +54,8 @@ return var/deciseconds_elapsed = seconds_per_tick * 10 var/growth = growth_rate * deciseconds_elapsed + if(HAS_TRAIT(source, TRAIT_FISH_QUICK_GROWTH)) + growth *= 2 if(SEND_SIGNAL(source, COMSIG_FISH_BEFORE_GROWING, seconds_per_tick, growth) & COMPONENT_DONT_GROW) return maturation += growth diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 9e2964273fd48..6651d9234143e 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -98,6 +98,9 @@ Behavior that's still missing from this component that original food items had t else if(isturf(parent) || isstructure(parent)) RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(TryToEatIt)) + if(foodtypes & GORE) + ADD_TRAIT(parent, TRAIT_VALID_DNA_INFUSION, REF(src)) + /datum/component/edible/UnregisterFromParent() UnregisterSignal(parent, list( COMSIG_ATOM_ATTACK_ANIMAL, @@ -114,6 +117,9 @@ Behavior that's still missing from this component that original food items had t qdel(GetComponent(/datum/component/connect_loc_behalf)) + if(foodtypes & GORE) + REMOVE_TRAIT(parent, TRAIT_VALID_DNA_INFUSION, REF(src)) + /datum/component/edible/InheritComponent( datum/component/edible/old_comp, i_am_original, @@ -138,6 +144,9 @@ Behavior that's still missing from this component that original food items had t tastes = old_comp.tastes eatverbs = old_comp.eatverbs + if(foodtypes & GORE) + ADD_TRAIT(parent, TRAIT_VALID_DNA_INFUSION, REF(src)) + // only edit if we're OG if(!i_am_original) return diff --git a/code/datums/components/heart_eater.dm b/code/datums/components/heart_eater.dm index 507090b9452b0..722c4b1636d79 100644 --- a/code/datums/components/heart_eater.dm +++ b/code/datums/components/heart_eater.dm @@ -13,9 +13,9 @@ /datum/mutation/human/adaptation/thermal, /datum/mutation/human/chameleon, /datum/mutation/human/cryokinesis, - /datum/mutation/human/cryokinesis/pyrokinesis, + /datum/mutation/human/pyrokinesis, /datum/mutation/human/dwarfism, - /datum/mutation/human/geladikinesis/ash, + /datum/mutation/human/cindikinesis, /datum/mutation/human/insulated, /datum/mutation/human/telekinesis, /datum/mutation/human/telepathy, diff --git a/code/datums/components/holderloving.dm b/code/datums/components/holderloving.dm index 0670fa6086e2c..e41d986600df6 100644 --- a/code/datums/components/holderloving.dm +++ b/code/datums/components/holderloving.dm @@ -39,6 +39,7 @@ COMSIG_ATOM_EXITED, COMSIG_ITEM_STORED, ), PROC_REF(check_my_loc)) + RegisterSignal(parent, COMSIG_ITEM_PRE_UNEQUIP, PROC_REF(no_unequip)) /datum/component/holderloving/UnregisterFromParent() UnregisterSignal(holder, list(COMSIG_MOVABLE_MOVED, COMSIG_QDELETING)) @@ -48,6 +49,7 @@ COMSIG_ATOM_ENTERED, COMSIG_ATOM_EXITED, COMSIG_ITEM_STORED, + COMSIG_ITEM_PRE_UNEQUIP, )) /datum/component/holderloving/PostTransfer() @@ -63,6 +65,7 @@ /datum/component/holderloving/proc/holder_deleting(datum/source, force) SIGNAL_HANDLER + if(del_parent_with_holder) qdel(parent) else @@ -70,6 +73,20 @@ /datum/component/holderloving/proc/check_my_loc(datum/source) SIGNAL_HANDLER + var/obj/item/item_parent = parent if(!check_valid_loc(item_parent.loc)) item_parent.forceMove(holder) + +/datum/component/holderloving/proc/no_unequip(obj/item/I, force, atom/newloc, no_move, invdrop, silent) + SIGNAL_HANDLER + + // just allow it + if(force) + return NONE + // dropping onto a turf just forcemoves it back to the holder. let it happen, it's intuitive + // no_move says it's just going to be moved a second time. so let it happen, it'll just be moved back if it's invalid anyway + if(isturf(newloc) || no_move) + return NONE + // the item is being unequipped to somewhere invalid. stop it + return COMPONENT_ITEM_BLOCK_UNEQUIP diff --git a/code/datums/components/multiple_lives.dm b/code/datums/components/multiple_lives.dm index 13c3282605b6e..ce2c4a5053f1e 100644 --- a/code/datums/components/multiple_lives.dm +++ b/code/datums/components/multiple_lives.dm @@ -46,7 +46,7 @@ /datum/component/multiple_lives/proc/on_examine(mob/living/source, mob/user, list/examine_list) SIGNAL_HANDLER if(isobserver(user) || source == user) - examine_list += "[source.p_Theyve()] [lives_left] extra lives left." + examine_list += "[source.p_They()] [source.p_have()] [lives_left] extra lives left." /datum/component/multiple_lives/InheritComponent(datum/component/multiple_lives/new_comp , lives_left) src.lives_left += new_comp ? new_comp.lives_left : lives_left diff --git a/code/datums/components/riding/riding.dm b/code/datums/components/riding/riding.dm index cfdaf605878bf..e34e763ae8397 100644 --- a/code/datums/components/riding/riding.dm +++ b/code/datums/components/riding/riding.dm @@ -195,7 +195,7 @@ if(diroffsets.len == 3) buckled_mob.layer = diroffsets[3] break dir_loop - var/list/static/default_vehicle_pixel_offsets = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0)) + var/static/list/default_vehicle_pixel_offsets = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0)) var/px = default_vehicle_pixel_offsets[AM_dir] var/py = default_vehicle_pixel_offsets[AM_dir] if(directional_vehicle_offsets[AM_dir]) diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm index d5e00ddb39858..1e8313fa53b2b 100644 --- a/code/datums/components/tether.dm +++ b/code/datums/components/tether.dm @@ -142,6 +142,8 @@ 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)) + return var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, CTRL_CLICK)) location.balloon_alert(user, "cutting the tether...") diff --git a/code/datums/drift_handler.dm b/code/datums/drift_handler.dm index 27a4fd4bc9154..7000483f9ab11 100644 --- a/code/datums/drift_handler.dm +++ b/code/datums/drift_handler.dm @@ -213,6 +213,10 @@ if (drift_force < INERTIA_FORCE_SPACEMOVE_GRAB || isnull(drifting_loop)) return + if (!isnull(source.client) && source.client.intended_direction) + if ((source.client.intended_direction & movement_dir) && !(get_dir(source, backup) & movement_dir)) + return + if (drift_force <= INERTIA_FORCE_SPACEMOVE_REDUCTION / source.inertia_force_weight) glide_to_halt(get_loop_delay(source)) return COMPONENT_PREVENT_SPACEMOVE_HALT diff --git a/code/datums/elements/pet_bonus.dm b/code/datums/elements/pet_bonus.dm index a802c363f44f5..d809b9ef4bdad 100644 --- a/code/datums/elements/pet_bonus.dm +++ b/code/datums/elements/pet_bonus.dm @@ -10,17 +10,14 @@ ///string key of the emote to do when pet. var/emote_name - ///optional cute message to send when you pet your pet! - var/emote_message ///actual moodlet given, defaults to the pet animal one var/moodlet -/datum/element/pet_bonus/Attach(datum/target, emote_message, moodlet = /datum/mood_event/pet_animal) +/datum/element/pet_bonus/Attach(datum/target, emote_name, moodlet = /datum/mood_event/pet_animal) . = ..() if(!isliving(target)) return ELEMENT_INCOMPATIBLE - src.emote_message = emote_message src.emote_name = emote_name src.moodlet = moodlet RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) @@ -37,8 +34,6 @@ new /obj/effect/temp_visual/heart(pet.loc) SEND_SIGNAL(pet, COMSIG_ANIMAL_PET, petter, modifiers) - if(emote_message && prob(33)) - pet.manual_emote(emote_message) - if(emote_name) + if(emote_name && prob(33)) INVOKE_ASYNC(pet, TYPE_PROC_REF(/mob, emote), emote_name) petter.add_mood_event("petting_bonus", moodlet, pet) diff --git a/code/datums/elements/venomous.dm b/code/datums/elements/venomous.dm index 9f9e4940df13e..93bb455509821 100644 --- a/code/datums/elements/venomous.dm +++ b/code/datums/elements/venomous.dm @@ -7,7 +7,7 @@ element_flags = ELEMENT_BESPOKE argument_hash_start_idx = 2 ///Path of the reagent added - var/poison_type + var/reagents ///Details of how we inject our venom var/injection_flags ///How much of the reagent added. if it's a list, it'll pick a range with the range being list(lower_value, upper_value) @@ -17,7 +17,7 @@ /datum/element/venomous/Attach(datum/target, poison_type, amount_added, injection_flags = NONE, thrown_effect = FALSE) . = ..() - src.poison_type = poison_type + src.reagents = poison_type src.amount_added = amount_added src.injection_flags = injection_flags src.thrown_effect = thrown_effect @@ -41,4 +41,17 @@ final_amount_added = rand(amount_added[1], amount_added[2]) else final_amount_added = amount_added - target.reagents?.add_reagent(poison_type, final_amount_added) + + var/datum/reagents/tmp_holder = new(final_amount_added) + tmp_holder.my_atom = src + tmp_holder.add_reagent(reagents, final_amount_added) + + tmp_holder.trans_to( + target = target, + amount = tmp_holder.total_volume, + multiplier = 1, + methods = INJECT, + transferred_by = ismob(element_owner) ? element_owner : null, + show_message = FALSE, + ) + qdel(tmp_holder) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 12606aba6e615..de4b45a7cc910 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -256,12 +256,14 @@ * Returns FALSE if the cooldown is not over, TRUE if the cooldown is over. */ /datum/emote/proc/check_cooldown(mob/user, intentional) + if(SEND_SIGNAL(user, COMSIG_MOB_EMOTE_COOLDOWN_CHECK, src.key, intentional) & COMPONENT_EMOTE_COOLDOWN_BYPASS) + intentional = FALSE + if(!intentional) return TRUE - //SKYRAT EDIT CHANGE BEGIN - EMOTES - GLOBAL COOLDOWN - //if(user.emotes_used && user.emotes_used[src] + cooldown > world.time) - SKYRAT EDIT - ORIGINAL - if(user.nextsoundemote > world.time) - var/datum/emote/default_emote = new /datum/emote + + if(user.emotes_used && user.emotes_used[src] + cooldown > world.time) + var/datum/emote/default_emote = /datum/emote if(cooldown > initial(default_emote.cooldown)) // only worry about longer-than-normal emotes to_chat(user, span_danger("You must wait another [DisplayTimeText(user.nextsoundemote - world.time)] before using that emote.")) return FALSE diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm index 2137aea08f3b4..62f30855abb1f 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm @@ -229,6 +229,21 @@ icon_file = 'icons/obj/toys/plushes.dmi' json_config = 'code/datums/greyscale/json_configs/plushie_carp.json' +/datum/greyscale_config/pet_carrier + name = "Pet Carrier" + icon_file = 'icons/obj/pet_carrier.dmi' + json_config = 'code/datums/greyscale/json_configs/pet_carrier.json' + +/datum/greyscale_config/pet_carrier_inhands_left + name = "Pet Carrier Left" + icon_file = 'icons/mob/inhands/items_lefthand.dmi' + json_config = 'code/datums/greyscale/json_configs/pet_carrier_inhands.json' + +/datum/greyscale_config/pet_carrier_inhands_right + name = "Pet Carrier Right" + icon_file = 'icons/mob/inhands/items_righthand.dmi' + json_config = 'code/datums/greyscale/json_configs/pet_carrier_inhands.json' + /datum/greyscale_config/plush_lizard name = "Plushie Lizard" icon_file = 'icons/obj/toys/plushes.dmi' diff --git a/code/datums/greyscale/json_configs/bandanaskull_inhands.json b/code/datums/greyscale/json_configs/bandanaskull_inhands.json index b7067cf3c2e71..40fade079736c 100644 --- a/code/datums/greyscale/json_configs/bandanaskull_inhands.json +++ b/code/datums/greyscale/json_configs/bandanaskull_inhands.json @@ -14,3 +14,4 @@ } ] } + diff --git a/code/datums/greyscale/json_configs/pet_carrier.json b/code/datums/greyscale/json_configs/pet_carrier.json new file mode 100644 index 0000000000000..1674765268ff2 --- /dev/null +++ b/code/datums/greyscale/json_configs/pet_carrier.json @@ -0,0 +1,87 @@ +{ + "pet_carrier_open": [ + { + "type": "icon_state", + "icon_state": "pet_carrier_open", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_gags", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "pet_carrier_closed_unlocked": [ + { + "type": "icon_state", + "icon_state": "pet_carrier_unlocked", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_closed", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_gags", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "pet_carrier_closed_locked": [ + { + "type": "icon_state", + "icon_state": "pet_carrier_locked", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_closed", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_gags", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "pet_carrier_occupied_unlocked": [ + { + "type": "icon_state", + "icon_state": "pet_carrier_unlocked", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_occupied", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_gags", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "pet_carrier_occupied_locked": [ + { + "type": "icon_state", + "icon_state": "pet_carrier_locked", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_occupied", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_gags", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/pet_carrier_inhands.json b/code/datums/greyscale/json_configs/pet_carrier_inhands.json new file mode 100644 index 0000000000000..05978e3c8292b --- /dev/null +++ b/code/datums/greyscale/json_configs/pet_carrier_inhands.json @@ -0,0 +1,15 @@ +{ + "pet_carrier": [ + { + "type": "icon_state", + "icon_state": "pet_carrier", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "pet_carrier_gags", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 695bf43949653..30999a874b77b 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -501,3 +501,8 @@ // Felinids apparently hate being hit over the head with cardboard if(isfelinid(owner)) mood_change = -2 + +/datum/mood_event/encountered_evil + description = "I didn't want to believe it, but there are people out there that are genuinely evil." + mood_change = -4 + timeout = 1 MINUTES diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm index dd5441476dcfb..93a8f186da6c2 100644 --- a/code/datums/mood_events/needs_events.dm +++ b/code/datums/mood_events/needs_events.dm @@ -76,6 +76,11 @@ 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/fresh_laundry description = "There's nothing like the feeling of a freshly laundered jumpsuit." mood_change = 2 diff --git a/code/datums/mutations/_combined.dm b/code/datums/mutations/_combined.dm index 5b7b5d429015e..399cbec53ed00 100644 --- a/code/datums/mutations/_combined.dm +++ b/code/datums/mutations/_combined.dm @@ -27,11 +27,11 @@ /datum/generecipe/cindikinesis required = "/datum/mutation/human/geladikinesis; /datum/mutation/human/fire_breath" - result = /datum/mutation/human/geladikinesis/ash + result = /datum/mutation/human/cindikinesis /datum/generecipe/pyrokinesis required = "/datum/mutation/human/cryokinesis; /datum/mutation/human/fire_breath" - result = /datum/mutation/human/cryokinesis/pyrokinesis + result = /datum/mutation/human/pyrokinesis /datum/generecipe/thermal_adaptation required = "/datum/mutation/human/adaptation/cold; /datum/mutation/human/adaptation/heat" diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index 5684b20c454f7..7730ab16d9cc9 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -96,6 +96,11 @@ to_chat(owner, span_warning("You plunge into your mind... Yep, it's your mind.")) return + if(HAS_TRAIT(cast_on, TRAIT_EVIL)) + to_chat(owner, span_warning("As you reach into [cast_on]'s mind, \ + you feel the overwhelming emptiness within. A truly evil being. \ + [HAS_TRAIT(owner, TRAIT_EVIL) ? "It's nice to find someone who is like-minded." : "What is wrong with this person?"]")) + to_chat(owner, span_boldnotice("You plunge into [cast_on]'s mind...")) if(prob(20)) // chance to alert the read-ee diff --git a/code/datums/mutations/cold.dm b/code/datums/mutations/cold.dm index fd060bc8ca5e0..7916b4137238e 100644 --- a/code/datums/mutations/cold.dm +++ b/code/datums/mutations/cold.dm @@ -37,6 +37,7 @@ button_icon_state = "icebeam" base_icon_state = "icebeam" active_overlay_icon_state = "bg_spell_border_active_blue" + cast_range = 9 cooldown_time = 16 SECONDS spell_requirements = NONE antimagic_flags = NONE diff --git a/code/datums/mutations/hot.dm b/code/datums/mutations/hot.dm index 574bc95d1e404..74fa42e1edd03 100644 --- a/code/datums/mutations/hot.dm +++ b/code/datums/mutations/hot.dm @@ -1,30 +1,48 @@ -/datum/mutation/human/geladikinesis/ash +/datum/mutation/human/cindikinesis name = "Cindikinesis" desc = "Allows the user to concentrate nearby heat into a pile of ash. Wow. Very interesting." + quality = POSITIVE text_gain_indication = span_notice("Your hand feels warm.") + instability = POSITIVE_INSTABILITY_MINOR + difficulty = 10 + synchronizer_coeff = 1 locked = TRUE - power_path = /datum/action/cooldown/spell/conjure_item/snow/ash + power_path = /datum/action/cooldown/spell/conjure_item/ash -/datum/action/cooldown/spell/conjure_item/snow/ash +/datum/action/cooldown/spell/conjure_item/ash name = "Create Ash" desc = "Concentrates pyrokinetic forces to create ash, useful for basically nothing." button_icon_state = "ash" + cooldown_time = 5 SECONDS + spell_requirements = NONE + item_type = /obj/effect/decal/cleanable/ash + delete_old = FALSE + delete_on_failure = FALSE -/datum/mutation/human/cryokinesis/pyrokinesis +/datum/mutation/human/pyrokinesis name = "Pyrokinesis" desc = "Draws positive energy from the surroundings to heat surrounding temperatures at subject's will." + quality = POSITIVE text_gain_indication = span_notice("Your hand feels hot!") + instability = POSITIVE_INSTABILITY_MODERATE + difficulty = 12 + synchronizer_coeff = 1 + energy_coeff = 1 locked = TRUE - power_path = /datum/action/cooldown/spell/pointed/projectile/cryo/pyro + power_path = /datum/action/cooldown/spell/pointed/projectile/pyro -/datum/action/cooldown/spell/pointed/projectile/cryo/pyro +/datum/action/cooldown/spell/pointed/projectile/pyro name = "Pyrobeam" desc = "This power fires a heated bolt at a target." button_icon_state = "firebeam" base_icon_state = "firebeam" + active_overlay_icon_state = "bg_spell_border_active_blue" + cast_range = 9 cooldown_time = 30 SECONDS + spell_requirements = NONE + antimagic_flags = NONE active_msg = "You focus your pyrokinesis!" deactive_msg = "You cool down." diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index b9367cfdcdc81..f487ac56c1330 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -79,7 +79,7 @@ // Used to replace the original later var/og_word = editing_word // Iterating through each replaceable-string in the .json - var/list/static/super_wacky_words = strings("heckacious.json", "heckacious") + var/static/list/super_wacky_words = strings("heckacious.json", "heckacious") // If the word doesn't get replaced we might do something with it later var/word_edited diff --git a/code/datums/quirks/neutral_quirks/evil.dm b/code/datums/quirks/neutral_quirks/evil.dm new file mode 100644 index 0000000000000..6753a7d034cfd --- /dev/null +++ b/code/datums/quirks/neutral_quirks/evil.dm @@ -0,0 +1,12 @@ +/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, \ + anyone who stares too long into your cold, uncaring eyes will know the truth. You are truly evil. There is nothing \ + wrong with you. You chose to be evil, committed to it. Your ambitions come first above all." + icon = FA_ICON_HAND_MIDDLE_FINGER + value = 0 + mob_trait = TRAIT_EVIL + gain_text = span_notice("You shed what little remains of your humanity. You have work to do.") + 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/positive_quirks/chip_connector.dm b/code/datums/quirks/positive_quirks/chip_connector.dm new file mode 100644 index 0000000000000..c12809bbfd2ef --- /dev/null +++ b/code/datums/quirks/positive_quirks/chip_connector.dm @@ -0,0 +1,28 @@ +/datum/quirk/chip_connector + name = "Chip Connector" + desc = "You had a device installed that lets you manually add and remove skillchips! Just try not to get near any electromagnetic pulses." + icon = FA_ICON_PLUG + value = 4 + gain_text = span_notice("You feel CONNECTED.") + lose_text = span_danger("You don't feel so CONNECTED anymore.") + medical_record_text = "Patient has a cybernetic implant on their back of their head that lets them install and remove skillchips at will. Gross." + mail_goodies = list() + var/obj/item/organ/internal/cyberimp/brain/connector/connector + +/datum/quirk/chip_connector/New() + . = ..() + mail_goodies = assoc_to_keys(GLOB.quirk_chipped_choice) + /datum/quirk/chipped::mail_goodies + +/datum/quirk/chip_connector/add_unique(client/client_source) + . = ..() + var/mob/living/carbon/carbon_holder = quirk_holder + if(!iscarbon(quirk_holder)) + return + connector = new() + connector.Insert(carbon_holder, special = TRUE) + +/datum/quirk/chip_connector/post_add() + to_chat(quirk_holder, span_boldannounce(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 new file mode 100644 index 0000000000000..30c226c130031 --- /dev/null +++ b/code/datums/quirks/positive_quirks/chipped.dm @@ -0,0 +1,57 @@ +/datum/quirk/chipped + name = "Chipped" + desc = "You got caught up in the skillchip craze a few years back, and had one of the commercially available chips implanted into yourself." + icon = FA_ICON_MICROCHIP + 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." + mail_goodies = list( + /obj/item/skillchip/matrix_taunt, + /obj/item/skillchip/big_pointer, + /obj/item/skillchip/acrobatics, + /obj/item/storage/pill_bottle/mannitol/braintumor, + ) + /// Variable that holds the chip, used on removal. + var/obj/item/skillchip/installed_chip + var/datum/callback/itchy_timer + +/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)] + + if(!chip_pref) + return ..() + + gain_text = span_notice("The [chip_pref] 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)] + + 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.try_activate_skillchip(silent = FALSE, force = TRUE) + + var/obj/item/organ/internal/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/remove() + qdel(installed_chip) + deltimer(itchy_timer) + . = ..() + +/datum/quirk/chipped/proc/cause_itchy(obj/item/organ/internal/brain/itchy_brain) + + 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 diff --git a/code/datums/station_traits/negative_traits.dm b/code/datums/station_traits/negative_traits.dm index b7d5b536941bd..36aa88bf99dcd 100644 --- a/code/datums/station_traits/negative_traits.dm +++ b/code/datums/station_traits/negative_traits.dm @@ -756,4 +756,13 @@ advisory_string += "The ongoing blizzard has interfered with our surveillance equipment, and we cannot provide an accurate threat summary at this time. We advise you to stay safe and avoid traversing the area around the station." return advisory_string +/datum/station_trait/spiked_drinks + name = "Spiked Drinks" + trait_type = STATION_TRAIT_NEGATIVE + weight = 3 + cost = STATION_TRAIT_COST_LOW + show_in_report = TRUE + report_message = "Due to a mishap at the Robust Softdrinks Megafactory, some drinks may contain traces of ethanol or psychoactive chemicals." + trait_to_give = STATION_TRAIT_SPIKED_DRINKS + #undef GLOW_NEBULA diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index 74a8e5424003f..5a94a478bcd14 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -544,3 +544,49 @@ dynamic_category = RULESET_CATEGORY_NO_WITTING_CREW_ANTAGONISTS threat_reduction = 15 dynamic_threat_id = "Background Checks" + +/* BUBBER EDIT REMOVAL BEGIN - Lobby buttons +/datum/station_trait/pet_day + name = "Bring Your Pet To Work Day" + trait_type = STATION_TRAIT_NEUTRAL + show_in_report = FALSE + weight = 2 + sign_up_button = TRUE + +/datum/station_trait/pet_day/New() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn)) + +/datum/station_trait/pet_day/setup_lobby_button(atom/movable/screen/lobby/button/sign_up/lobby_button) + lobby_button.desc = "Want to bring your innocent pet to a giant metal deathtrap? Click here to customize it!" + RegisterSignal(lobby_button, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_lobby_button_update_overlays)) + return ..() + +/datum/station_trait/pet_day/can_display_lobby_button(client/player) + return sign_up_button + +/datum/station_trait/pet_day/on_round_start() + return + +/datum/station_trait/pet_day/on_lobby_button_click(atom/movable/screen/lobby/button/sign_up/lobby_button, updates) + var/mob/our_player = lobby_button.get_mob() + var/client/player_client = our_player.client + if(isnull(player_client)) + return + var/datum/pet_customization/customization = GLOB.customized_pets[REF(player_client)] + if(isnull(customization)) + customization = new(player_client) + INVOKE_ASYNC(customization, TYPE_PROC_REF(/datum, ui_interact), our_player) + +/datum/station_trait/pet_day/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client) + SIGNAL_HANDLER + + var/datum/pet_customization/customization = GLOB.customized_pets[REF(player_client)] + if(isnull(customization)) + return + INVOKE_ASYNC(customization, TYPE_PROC_REF(/datum/pet_customization, create_pet), spawned, player_client) + +/datum/station_trait/pet_day/proc/on_lobby_button_update_overlays(atom/movable/screen/lobby/button/sign_up/lobby_button, list/overlays) + overlays += "select_pet" + +*/// BUBBER EDIT REMOVAL END diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index 43b17377c2ec7..013f8b6545ba7 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -272,7 +272,7 @@ /datum/job/clown = /obj/item/organ/internal/cyberimp/brain/anti_stun, //HONK! /datum/job/cook = /obj/item/organ/internal/cyberimp/chest/nutriment/plus, /datum/job/coroner = /obj/item/organ/internal/tongue/bone, //hes got a bone to pick with you - /datum/job/curator = /obj/item/organ/internal/eyes/robotic/glow, + /datum/job/curator = /obj/item/organ/internal/cyberimp/brain/connector, /datum/job/detective = /obj/item/organ/internal/lungs/cybernetic/tier3, /datum/job/doctor = /obj/item/organ/internal/cyberimp/arm/surgery, /datum/job/geneticist = /obj/item/organ/internal/fly, //we don't care about implants, we have cancer. diff --git a/code/datums/status_effects/debuffs/temperature_over_time.dm b/code/datums/status_effects/debuffs/temperature_over_time.dm new file mode 100644 index 0000000000000..cb1a73cc2ae50 --- /dev/null +++ b/code/datums/status_effects/debuffs/temperature_over_time.dm @@ -0,0 +1,88 @@ +/** + * Affects temperature over time. + * I don't know how this wasn't a thing already. + + * Incidentally: Thermal insulation is actually really bad for this, since it traps the temperature inside. + * If you're going to use this in a situation where it'd make sense for insulation to hinder its effects, + * you should to check for it manually. + */ + +/datum/status_effect/temperature_over_time + id = "temp_ot" + alert_type = null // no alert. you do the sprite + remove_on_fullheal = TRUE + on_remove_on_mob_delete = TRUE + tick_interval = 1 SECONDS + + duration = 60 SECONDS + + /// How much to change temperature per second. + var/temperature_value = 10 + /// How much to remove from above variable per second. + var/temperature_decay = 1 + /// Cap of temperature, won't apply the effect above this. + var/capped_temperature_hot = BODYTEMP_HEAT_WARNING_2 + /// Cap of temperature, won't apply the effect below this. + var/capped_temperature_cold = BODYTEMP_COLD_WARNING_2 + /// Effect removed outright at this temperature or above. + var/removal_temperature_hot = BODYTEMP_HEAT_WARNING_3 + /// Effect removed outright at this temperature or below. + var/removal_temperature_cold = BODYTEMP_COLD_WARNING_3 + +/datum/status_effect/temperature_over_time/on_creation(mob/living/new_owner, duration = 10 SECONDS) + src.duration = duration + return ..() + +/datum/status_effect/temperature_over_time/on_apply() + . = ..() + if((HAS_TRAIT(owner, TRAIT_RESISTHEAT) && temperature_value > 1)) + qdel(src) // git out + else if((HAS_TRAIT(owner, TRAIT_RESISTCOLD) && temperature_value < 1)) + qdel(src) // git out + +/datum/status_effect/temperature_over_time/on_remove() + return ..() + +/datum/status_effect/temperature_over_time/get_examine_text() + + if(temperature_value > 0) + return "[owner.p_They()] [owner.p_are()] sweating bullets!" + + return "[owner.p_They()] [owner.p_are()] shivering!" + +/datum/status_effect/temperature_over_time/tick(seconds_between_ticks) + if((TRAIT_RESISTHEAT && temperature_value > 1) || (TRAIT_RESISTCOLD && temperature_value < 1)) + qdel(src) // git out + return + temperaturetion(seconds_between_ticks) + +/datum/status_effect/temperature_over_time/proc/temperaturetion(seconds_per_tick) + + // I feel like there should be an easier way to do this but I am a fool + if(capped_temperature_hot && owner.bodytemperature > capped_temperature_hot) + return + if(capped_temperature_cold && owner.bodytemperature < capped_temperature_cold) + return + + owner.adjust_bodytemperature(temperature_value * seconds_per_tick) // note that this has no softcap reduction, unlike fire + temperature_value += temperature_decay + if(temperature_value == 0) + qdel(src) + + if(removal_temperature_hot && owner.bodytemperature > removal_temperature_hot) + qdel(src) + return + if(removal_temperature_cold && owner.bodytemperature < removal_temperature_cold) + qdel(src) + return + +/datum/status_effect/temperature_over_time/chip_overheat + id = "temp_ot_chip" + temperature_value = 15 + temperature_decay = -0.5 + duration = 15 SECONDS + capped_temperature_hot = BODYTEMP_HEAT_WARNING_3 + removal_temperature_cold = BODYTEMP_COLD_WARNING_1 // internal cooling... + + removal_temperature_hot = null + capped_temperature_cold = null diff --git a/code/datums/storage/subtypes/drone.dm b/code/datums/storage/subtypes/drone.dm new file mode 100644 index 0000000000000..2df8f4c627966 --- /dev/null +++ b/code/datums/storage/subtypes/drone.dm @@ -0,0 +1,26 @@ +/datum/storage/drone + max_total_storage = 40 + max_specific_storage = WEIGHT_CLASS_NORMAL + max_slots = 10 + do_rustle = FALSE + +/datum/storage/drone/New(atom/parent, max_slots, max_specific_storage, max_total_storage) + . = ..() + + var/static/list/drone_builtins = list( + /obj/item/crowbar/drone, + /obj/item/screwdriver/drone, + /obj/item/wrench/drone, + /obj/item/weldingtool/drone, + /obj/item/wirecutters/drone, + /obj/item/multitool/drone, + /obj/item/pipe_dispenser/drone, + /obj/item/t_scanner/drone, + /obj/item/analyzer/drone, + /obj/item/soap/drone, + ) + + set_holdable(drone_builtins) + +/datum/storage/drone/dump_content_at(atom/dest_object, dump_loc, mob/user) + return //no dumping of contents allowed diff --git a/code/game/atom/atom_materials.dm b/code/game/atom/atom_materials.dm index 31ac1992a9b64..cb88c83f3eb8c 100644 --- a/code/game/atom/atom_materials.dm +++ b/code/game/atom/atom_materials.dm @@ -64,14 +64,16 @@ return material_effects /** - * A proc that can be used to selectively control the statistics and affects from a material without affecting the others + * A proc that can be used to selectively control the stat changes and effects from a material without affecting the others. + * * For example, we can have items made of two different materials, with the primary contributing a good 1.2 multiplier * and the second a meager 0.3. - * The GET_MATERIAL_MODIFIER macro will handles some modifiers where the minimum should be 1 if above 1 and the maximum - * 1 if below 1, so you shouldn't worry about returning values between 0 and 1. Be ware about returning negative values tho. + * + * The GET_MATERIAL_MODIFIER macro will handles some modifications where the minimum should be 1 if above 1 and the maximum + * be 1 if below 1. Just don't return negative values. */ /atom/proc/get_material_multiplier(datum/material/custom_material, list/materials, index) - return 1 + return 1/length(materials) ///Called by apply_material_effects(). It ACTUALLY handles applying effects common to all atoms (depending on material flags) /atom/proc/finalize_material_effects(list/materials) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 800997d24a81e..eaa9e39387cc3 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -325,6 +325,10 @@ Security HUDs! Basic mode shows only the job. set_hud_image_active(IMPLOYAL_HUD) /mob/living/carbon/human/proc/sec_hud_set_security_status() + if(!hud_list) + // We haven't finished initializing yet, huds will be updated once we are + 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 diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 34b8612c2d4be..282e7f6a34ae2 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -648,6 +648,11 @@ if(interaction_flags_machine & INTERACT_MACHINE_REQUIRES_SILICON) //if the user was a silicon, we'd have returned out earlier, so the user must not be a silicon return FALSE + if(interaction_flags_machine & INTERACT_MACHINE_REQUIRES_STANDING) + var/mob/living/living_user = user + if(!(living_user.mobility_flags & MOBILITY_MOVE)) + return FALSE + return TRUE // If we passed all of those checks, woohoo! We can interact with this machine. /obj/machinery/proc/check_nap_violations() diff --git a/code/game/machinery/computer/operating_computer.dm b/code/game/machinery/computer/operating_computer.dm index 0354806d85ebd..83a2a08d986c3 100644 --- a/code/game/machinery/computer/operating_computer.dm +++ b/code/game/machinery/computer/operating_computer.dm @@ -7,6 +7,7 @@ icon_screen = "crew" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/computer/operating + interaction_flags_machine = parent_type::interaction_flags_machine | INTERACT_MACHINE_REQUIRES_STANDING var/obj/structure/table/optable/table var/list/advanced_surgeries = list() @@ -77,7 +78,7 @@ break /obj/machinery/computer/operating/ui_state(mob/user) - return GLOB.not_incapacitated_state + return GLOB.standing_state /obj/machinery/computer/operating/ui_interact(mob/user, datum/tgui/ui) . = ..() 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 c8cfa12f9abfe..a91a34b46f2da 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 @@ -46,3 +46,9 @@ item_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 + 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/dna_infuser/dna_infuser.dm b/code/game/machinery/dna_infuser/dna_infuser.dm index 961092c635b33..ccc24d44f6e7e 100644 --- a/code/game/machinery/dna_infuser/dna_infuser.dm +++ b/code/game/machinery/dna_infuser/dna_infuser.dm @@ -210,7 +210,6 @@ /// Verify that the given infusion source/mob is a dead creature. /obj/machinery/dna_infuser/proc/is_valid_infusion(atom/movable/target, mob/user) - var/datum/component/edible/food_comp = IS_EDIBLE(target) if(infusing_from) balloon_alert(user, "empty the machine first!") return FALSE @@ -219,11 +218,8 @@ if(living_target.stat != DEAD) balloon_alert(user, "only dead creatures!") return FALSE - else if(food_comp) - if(!(food_comp.foodtypes & GORE)) - balloon_alert(user, "only creatures!") - return FALSE - else + else if(!HAS_TRAIT(target, TRAIT_VALID_DNA_INFUSION)) + balloon_alert(user, "only creatures!") return FALSE return TRUE diff --git a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm index 670abc2d87bbf..27b9f4c045b90 100644 --- a/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm +++ b/code/game/machinery/dna_infuser/infuser_entries/infuser_tier_zero_entries.dm @@ -69,6 +69,32 @@ infusion_desc = "fluffy" tier = DNA_MUTANT_TIER_ZERO +/* +/datum/infuser_entry/lizard + name = "Lizard" + infuse_mob_name = "lacertilia" + desc = "Turns out infusing most humanoids with lizard DNA creates features remarkably similar to those of lizardpeople. What a strange coincidence." + threshold_desc = DNA_INFUSION_NO_THRESHOLD + qualities = list( + "long tails", + "decorative horns", + "aesthetic snouts", + "not much honestly", + ) + input_obj_or_mob = list( + /mob/living/basic/lizard, + ) + output_organs = list( + /obj/item/organ/external/horns, + /obj/item/organ/external/frills, + /obj/item/organ/external/snout, + /obj/item/organ/external/tail/lizard, + /obj/item/organ/internal/tongue/lizard, + ) + infusion_desc = "scaly" + tier = DNA_MUTANT_TIER_ZERO +*/ + /datum/infuser_entry/felinid name = "Cat" infuse_mob_name = "feline" diff --git a/code/game/machinery/nebula_shielding.dm b/code/game/machinery/nebula_shielding.dm index 10306177ebf5a..6473c1b1bfc46 100644 --- a/code/game/machinery/nebula_shielding.dm +++ b/code/game/machinery/nebula_shielding.dm @@ -140,7 +140,7 @@ /obj/item/paper/fluff/radiation_nebula name = "radioactive nebula shielding" default_raw_text = {"EXTREME IMPORTANCE!!!!
- Set up these radioactive nebula shielding units before the gravity generators native shielding is overwhelmed!
+ Set up these radioactive nebula shielding units before the gravity generator's native shielding is overwhelmed!
Shielding units passively generate tritium, so make sure to properly ventilate/isolate the area before setting up a shielding unit! More circuit boards can be ordered through cargo. Consider setting up auxillary shielding units in-case of destruction, power loss or sabotage. "} @@ -149,6 +149,6 @@ /obj/item/paper/fluff/radiation_nebula_virologist name = "radioactive resonance" default_raw_text = {"EXTREME IMPORTANCE!!!!
- During routine bloodscreening on employees working in the nebula, we found no traces of the sympton called 'Radioactive Resonance'.
- Something inside the nebula is interfering with it, be wary of a more shallow viral genepool. + During routine blood screening on employees working within the nebula, we have found no traces of the symptom called 'Radioactive Resonance'.
+ Something inside the nebula is interfering with it; be wary of a more shallow viral genepool. "} diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index d05d5f039256b..92343d91d219d 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -71,8 +71,6 @@ /obj/effect/gibspawner/generic/animal gib_mob_type = /mob/living/basic/pet - - /obj/effect/gibspawner/human gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core) gibamounts = list(1, 1, 1, 1, 1, 1, 1) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 1467a7854be52..68a49b8a3031b 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -220,3 +220,9 @@ if(happens_once) qdel(src) + +/obj/effect/step_trigger/sound_effect/lavaland_cult_altar + happens_once = 1 + name = "a grave mistake"; + sound = 'sound/effects/hallucinations/i_see_you1.ogg' + triggerer_only = 1 diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 960363685b1e8..e46bb676a8caf 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -360,3 +360,34 @@ applied_name = "Private Security Officer" applied_desc = "A cardboard cutout of a private security officer." mob_spawner = /obj/effect/mob_spawn/corpse/human/nanotrasensoldier + +/datum/cardboard_cutout/heretic + name = "Heretic" + applied_name = "Unknown" + applied_desc = "A cardboard cutout of a Heretic." + outfit = /datum/outfit/heretic_hallucination + +/datum/cardboard_cutout/changeling + name = "Changeling" + applied_name = "Unknown" + applied_desc = "A cardboard cutout of a Changeling." + outfit = /datum/outfit/changeling + +/datum/cardboard_cutout/pirate + name = "Pirate" + applied_name = "Unknown" + applied_desc = "A cardboard cutout of a space pirate." + outfit = /datum/outfit/pirate/space/captain/cardboard + +/datum/cardboard_cutout/ninja + name = "Space Ninja" + applied_name = "Unknown" + applied_desc = "A cardboard cutout of a space ninja." + outfit = /datum/outfit/ninja + +/datum/cardboard_cutout/abductor + name = "Abductor Agent" + applied_name = "Unknown" + applied_desc = "A cardboard cutout of an abductor agent." + species = /datum/species/abductor + outfit = /datum/outfit/abductor/agent/cardboard diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 5518f7fa8366a..1a853bf8c403e 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -26,6 +26,9 @@ lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' w_class = WEIGHT_CLASS_TINY + pickup_sound = 'sound/items/handling/id_card/id_card_pickup1.ogg' + drop_sound = 'sound/items/handling/id_card/id_card_drop1.ogg' + sound_vary = TRUE /// Cached icon that has been built for this card. Intended to be displayed in chat. Cardboards IDs and actual IDs use it. var/icon/cached_flat_icon @@ -1854,6 +1857,8 @@ var/scribbled_trim ///The colors for each of the above variables, for when overlays are updated. var/details_colors = list(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK) + pickup_sound = 'sound/items/handling/materials/cardboard_pick_up.ogg' + drop_sound = 'sound/items/handling/materials/cardboard_drop.ogg' /obj/item/card/cardboard/equipped(mob/user, slot, initial = FALSE) . = ..() diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm index c74e446a6ca35..6669c7806d0d5 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/chainsaw.dm @@ -26,6 +26,8 @@ var/on = FALSE ///The looping sound for our chainsaw when running var/datum/looping_sound/chainsaw/chainsaw_loop + ///how long it takes to behead someone with this chainsaw. + var/behead_time = 15 SECONDS /obj/item/chainsaw/apply_fantasy_bonuses(bonus) . = ..() @@ -97,8 +99,9 @@ desc = span_warning("VRRRRRRR!!!") armour_penetration = 100 force_on = 30 + behead_time = 2 SECONDS -/obj/item/chainsaw/doomslayer/attack(mob/living/target_mob, mob/living/user, params) +/obj/item/chainsaw/attack(mob/living/target_mob, mob/living/user, params) if (target_mob.stat != DEAD) return ..() @@ -112,7 +115,7 @@ playsound(user, 'sound/items/weapons/slice.ogg', vol = 80, vary = TRUE) target_mob.balloon_alert(user, "cutting off head...") - if (!do_after(user, 2 SECONDS, target_mob, extra_checks = CALLBACK(src, PROC_REF(has_same_head), target_mob, head))) + if (!do_after(user, behead_time, target_mob, extra_checks = CALLBACK(src, PROC_REF(has_same_head), target_mob, head))) return TRUE head.dismember(silent = FALSE) @@ -127,7 +130,7 @@ return TRUE return FALSE -/obj/item/chainsaw/doomslayer/proc/has_same_head(mob/living/target_mob, obj/item/bodypart/head) +/obj/item/chainsaw/proc/has_same_head(mob/living/target_mob, obj/item/bodypart/head) return target_mob.get_bodypart(BODY_ZONE_HEAD) == head /obj/item/chainsaw/mounted_chainsaw diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index 43df72d8a5ba9..4b8ac653c98c0 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -18,6 +18,8 @@ custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT * 0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT * 0.2) grind_results = list(/datum/reagent/mercury = 5, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) interaction_flags_click = NEED_LITERACY|NEED_LIGHT|ALLOW_RESTING + pickup_sound = 'sound/items/handling/gas_analyzer/gas_analyzer_pickup.ogg' + drop_sound = 'sound/items/handling/gas_analyzer/gas_analyzer_drop.ogg' /// Boolean whether this has a CD var/cooldown = FALSE /// The time in deciseconds diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 5eb5e3bf2bdd6..9c33e2b201896 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -6,6 +6,8 @@ worn_icon_state = "fire_extinguisher" inhand_icon_state = "fire_extinguisher" hitsound = 'sound/items/weapons/smash.ogg' + pickup_sound = 'sound/items/handling/gas_tank/gas_tank_pick_up.ogg' + drop_sound = 'sound/items/handling/gas_tank/gas_tank_drop.ogg' obj_flags = CONDUCTS_ELECTRICITY throwforce = 10 w_class = WEIGHT_CLASS_NORMAL @@ -47,6 +49,9 @@ var/cooling_power = 2 /// Icon state when inside a tank holder. var/tank_holder_icon_state = "holder_extinguisher" + ///The sound a fire extinguisher makes when picked up, dropped if there is liquid inside. + var/fire_extinguisher_reagent_sloshing_sound = SFX_DEFAULT_LIQUID_SLOSH + /obj/item/extinguisher/Initialize(mapload) . = ..() @@ -66,6 +71,17 @@ context[SCREENTIP_CONTEXT_ALT_LMB] = "Empty" return CONTEXTUAL_SCREENTIP_SET +/obj/item/extinguisher/dropped(mob/user, silent) + . = ..() + if(fire_extinguisher_reagent_sloshing_sound && reagents.total_volume > 0) + playsound(src, fire_extinguisher_reagent_sloshing_sound, LIQUID_SLOSHING_SOUND_VOLUME, vary = TRUE, ignore_walls = FALSE) + +/obj/item/extinguisher/equipped(mob/user, slot, initial = FALSE) + . = ..() + if((slot & ITEM_SLOT_HANDS) && fire_extinguisher_reagent_sloshing_sound && reagents.total_volume > 0) + playsound(src, fire_extinguisher_reagent_sloshing_sound, LIQUID_SLOSHING_SOUND_VOLUME, vary = TRUE, ignore_walls = FALSE) + + /obj/item/extinguisher/empty starting_water = FALSE diff --git a/code/game/objects/items/kirby_plants/kirbyplants.dm b/code/game/objects/items/kirby_plants/kirbyplants.dm index f5e550be4a70e..28c1d4be34164 100644 --- a/code/game/objects/items/kirby_plants/kirbyplants.dm +++ b/code/game/objects/items/kirby_plants/kirbyplants.dm @@ -19,10 +19,11 @@ var/dead = FALSE ///If it's a special named plant, set this to true to prevent dead-name overriding. var/custom_plant_name = FALSE - var/list/static/random_plant_states + var/static/list/random_plant_states /// Maximum icon state number - KEEP THIS UP TO DATE var/random_state_cap = 43 // SKYRAT EDIT ADDITION + /obj/item/kirbyplants/Initialize(mapload) . = ..() AddComponent(/datum/component/tactical) @@ -67,23 +68,25 @@ /// Cycle basic plant visuals /obj/item/kirbyplants/proc/change_visual() - if(!random_plant_states) - generate_states() + if(isnull(random_plant_states)) + random_plant_states = generate_states() var/current = random_plant_states.Find(icon_state) var/next = WRAP(current+1,1,length(random_plant_states)) base_icon_state = random_plant_states[next] update_appearance(UPDATE_ICON) /obj/item/kirbyplants/proc/generate_states() - random_plant_states = list() + var/list/plant_states = list() for(var/i in 1 to random_state_cap) //SKYRAT EDIT CHANGE - ORIGINAL: for(var/i in 1 to 24) var/number if(i < 10) number = "0[i]" else number = "[i]" - random_plant_states += "plant-[number]" - random_plant_states += list("applebush", "monkeyplant") //SKYRAT EDIT CHANGE - ORIGINAL:random_plant_states += "applebush" + plant_states += "plant-[number]" + plant_states += "applebush" + plant_states += "monkeyplant" // BUBBER EDIT ADDITION + return plant_states /obj/item/kirbyplants/random icon = 'icons/obj/fluff/flora/_flora.dmi' diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 29df25d179cb8..3e97cc5ecb762 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -530,7 +530,7 @@ ///Cleric maces are made of two custom materials: one is handle, and the other is the mace itself. /obj/item/melee/cleric_mace/get_material_multiplier(datum/material/custom_material, list/materials, index) - if(length(materials) < 1) + if(length(materials) <= 1) return 1.2 if(index == 1) return 1 diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index 8be08a876d70d..336d177f2a2dd 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -11,6 +11,10 @@ inhand_icon_state = "pet_carrier" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' + greyscale_config = /datum/greyscale_config/pet_carrier + greyscale_config_inhand_left = /datum/greyscale_config/pet_carrier_inhands_left + greyscale_config_inhand_right = /datum/greyscale_config/pet_carrier_inhands_right + greyscale_colors = COLOR_BLUE force = 5 attack_verb_continuous = list("bashes", "carries") attack_verb_simple = list("bash", "carry") @@ -19,7 +23,6 @@ throw_range = 3 custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT) interaction_flags_mouse_drop = NEED_DEXTERITY - var/open = TRUE var/locked = FALSE var/list/occupants = list() @@ -147,14 +150,9 @@ if(open) icon_state = initial(icon_state) return ..() - icon_state = "[base_icon_state]_[!occupants.len ? "closed" : "occupied"]" + icon_state = "[base_icon_state]_[!occupants.len ? "closed" : "occupied"]_[locked ? "locked" : "unlocked"]" return ..() -/obj/item/pet_carrier/update_overlays() - . = ..() - if(!open) - . += "[base_icon_state]_[locked ? "" : "un"]locked" - /obj/item/pet_carrier/mouse_drop_dragged(atom/over_atom, mob/user, src_location, over_location, params) if(isopenturf(over_atom) && open && occupants.len) user.visible_message(span_notice("[user] unloads [src]."), \ @@ -202,5 +200,9 @@ base_icon_state = "biopod" icon_state = "biopod_open" inhand_icon_state = "biopod" + greyscale_config = null + greyscale_config_inhand_left = null + greyscale_config_inhand_right = null + greyscale_colors = null #undef pet_carrier_full diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index b9e4094a2bbb5..c385beb3199e1 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -229,6 +229,8 @@ icon_state = "medical" inhand_icon_state = "medical" worn_icon_state = "medical" + drop_sound = 'sound/items/handling/toolbelt_drop.ogg' + pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg' /obj/item/storage/belt/medical/Initialize(mapload) . = ..() @@ -514,6 +516,8 @@ icon_state = "soulstonebelt" inhand_icon_state = "soulstonebelt" worn_icon_state = "soulstonebelt" + drop_sound = 'sound/items/handling/toolbelt_drop.ogg' + pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg' /obj/item/storage/belt/soulstone/Initialize(mapload) . = ..() @@ -649,6 +653,8 @@ icon_state = "grenadebeltnew" inhand_icon_state = "security" worn_icon_state = "grenadebeltnew" + drop_sound = 'sound/items/handling/toolbelt_drop.ogg' + pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg' /obj/item/storage/belt/grenade/Initialize(mapload) . = ..() @@ -712,6 +718,8 @@ icon_state = "janibelt" inhand_icon_state = "janibelt" worn_icon_state = "janibelt" + drop_sound = 'sound/items/handling/toolbelt_drop.ogg' + pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg' /obj/item/storage/belt/janitor/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 6f47661d93a63..c9270b1f67ef6 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1360,6 +1360,11 @@ toysay = "EI NATH!" toysound = 'sound/effects/magic/disintegrate.ogg' +/obj/item/toy/figure/wizard/special + name = "\improper Wizard action figure special edition" + toysay = "CLANG!"; + toysound = 'sound/effects/clang.ogg' + /obj/item/toy/figure/rd name = "\improper Research Director action figure" icon_state = "rd" diff --git a/code/game/objects/structures/crates_lockers/closets/fitness.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm index 7b4f2d2ee2c37..4e43ea2ce10bf 100644 --- a/code/game/objects/structures/crates_lockers/closets/fitness.dm +++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm @@ -50,7 +50,7 @@ new /obj/item/gun/energy/laser/redtag(src) for(var/i in 1 to 3) new /obj/item/clothing/suit/redtag(src) - new /obj/item/clothing/head/helmet/redtaghelm(src) + new /obj/item/clothing/head/helmet/taghelm/red(src) /obj/structure/closet/lasertag/blue @@ -65,4 +65,4 @@ new /obj/item/gun/energy/laser/bluetag(src) for(var/i in 1 to 3) new /obj/item/clothing/suit/bluetag(src) - new /obj/item/clothing/head/helmet/bluetaghelm(src) + new /obj/item/clothing/head/helmet/taghelm/blue(src) diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index acadb7eba9a07..6931c6e2fafcc 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -267,8 +267,14 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/shower, (-16)) return var/mob/living/living_target = target check_heat(living_target) - living_target.add_mood_event("shower", /datum/mood_event/nice_shower) living_target.apply_status_effect(/datum/status_effect/shower_regen) + /* BUBBER EDIT TODO - Felinids hate water + 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) + */// BUBBER EDIT TODO END + living_target.add_mood_event("shower", /datum/mood_event/nice_shower) // BUBBER EDIT TODO /** * Toggle whether shower is actually on and outputting water. diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index a30a59e45a2c1..11f4817b94cf7 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -12,7 +12,7 @@ var/charges = INFINITY var/antimagic_flags = MAGIC_RESISTANCE - var/list/static/ignore_typecache + var/static/list/ignore_typecache var/list/mob/immune_minds = list() var/sparks = TRUE @@ -30,7 +30,7 @@ ) AddElement(/datum/element/connect_loc, loc_connections) - if(!ignore_typecache) + if(isnull(ignore_typecache)) ignore_typecache = typecacheof(list( /obj/effect, /mob/dead, diff --git a/code/game/sound.dm b/code/game/sound.dm index 070f2026955c6..7b4e060145914 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -541,22 +541,59 @@ 'sound/mobs/humanoids/human/snore/snore_male1.ogg' = 20, 'sound/mobs/humanoids/human/snore/snore_male2.ogg' = 20, 'sound/mobs/humanoids/human/snore/snore_male3.ogg' = 20, - 'sound/mobs/humanoids/human/snore/snore_male3.ogg' = 20, + 'sound/mobs/humanoids/human/snore/snore_male4.ogg' = 20, 'sound/mobs/humanoids/human/snore/snore_male5.ogg' = 20, 'sound/mobs/humanoids/human/snore/snore_mimimi2.ogg' = 1, )) if(SFX_CAT_MEOW) soundin = pick_weight(list( - 'sound/creatures/cat/cat_meow1.ogg' = 33, - 'sound/creatures/cat/cat_meow2.ogg' = 33, - 'sound/creatures/cat/cat_meow3.ogg' = 33, - 'sound/creatures/cat/oranges_meow1.ogg' = 1, + 'sound/mobs/non-humanoids/cat/cat_meow1.ogg' = 33, + 'sound/mobs/non-humanoids/cat/cat_meow2.ogg' = 33, + 'sound/mobs/non-humanoids/cat/cat_meow3.ogg' = 33, + 'sound/mobs/non-humanoids/cat/oranges_meow1.ogg' = 1, )) if(SFX_CAT_PURR) soundin = pick( - 'sound/creatures/cat/cat_purr1.ogg', - 'sound/creatures/cat/cat_purr2.ogg', - 'sound/creatures/cat/cat_purr3.ogg', - 'sound/creatures/cat/cat_purr4.ogg', + 'sound/mobs/non-humanoids/cat/cat_purr1.ogg', + 'sound/mobs/non-humanoids/cat/cat_purr2.ogg', + 'sound/mobs/non-humanoids/cat/cat_purr3.ogg', + 'sound/mobs/non-humanoids/cat/cat_purr4.ogg', + ) + if(SFX_DEFAULT_LIQUID_SLOSH) + soundin = pick( + 'sound/items/handling/reagent_containers/default/default_liquid_slosh1.ogg', + 'sound/items/handling/reagent_containers/default/default_liquid_slosh2.ogg', + 'sound/items/handling/reagent_containers/default/default_liquid_slosh3.ogg', + 'sound/items/handling/reagent_containers/default/default_liquid_slosh4.ogg', + 'sound/items/handling/reagent_containers/default/default_liquid_slosh5.ogg', + ) + if(SFX_PLASTIC_BOTTLE_LIQUID_SLOSH) + soundin = pick( + 'sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh1.ogg', + 'sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh2.ogg', + ) + if(SFX_PLATE_ARMOR_RUSTLE) + soundin = pick_weight(list( + 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle1.ogg' = 8, //longest sound is rarer. + 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle2.ogg' = 23, + 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle3.ogg' = 23, + 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle4.ogg' = 23, + 'sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle5.ogg' = 23, + )) + if(SFX_PIG_OINK) + soundin = pick( + 'sound/mobs/non-humanoids/pig/pig1.ogg', + 'sound/mobs/non-humanoids/pig/pig2.ogg', + ) + if(SFX_VISOR_DOWN) + soundin = pick( + 'sound/items/handling/helmet/visor_down1.ogg', + 'sound/items/handling/helmet/visor_down2.ogg', + 'sound/items/handling/helmet/visor_down3.ogg', + ) + if(SFX_VISOR_UP) + soundin = pick( + 'sound/items/handling/helmet/visor_up1.ogg', + 'sound/items/handling/helmet/visor_up2.ogg', ) return soundin diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm index f81ac4c7f536e..2699b4933626d 100644 --- a/code/game/turfs/open/chasm.dm +++ b/code/game/turfs/open/chasm.dm @@ -50,8 +50,8 @@ /turf/open/chasm/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) - underlay_appearance.icon = 'icons/turf/floors.dmi' - underlay_appearance.icon_state = "basalt" + underlay_appearance.icon = /turf/open/misc/asteroid/basalt::icon + underlay_appearance.icon_state = /turf/open/misc/asteroid/basalt::icon_state return TRUE /turf/open/chasm/attackby(obj/item/C, mob/user, params, area/area_restriction) @@ -100,6 +100,11 @@ light_power = 0.65 light_color = LIGHT_COLOR_PURPLE +/turf/open/chasm/icemoon/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = /turf/open/misc/asteroid/snow/icemoon::icon + underlay_appearance.icon_state = /turf/open/misc/asteroid/snow/icemoon::icon_state + return TRUE + // Chasms for the jungle, with planetary atmos and a different icon /turf/open/chasm/jungle icon = 'icons/turf/floors/junglechasm.dmi' @@ -109,8 +114,8 @@ baseturfs = /turf/open/chasm/jungle /turf/open/chasm/jungle/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) - underlay_appearance.icon = 'icons/turf/floors.dmi' - underlay_appearance.icon_state = "dirt" + underlay_appearance.icon = /turf/open/misc/dirt::icon + underlay_appearance.icon_state = /turf/open/misc/dirt::icon_state return TRUE // Chasm that doesn't do any z-level nonsense and just kills/stores whoever steps into it. diff --git a/code/game/turfs/open/lava.dm b/code/game/turfs/open/lava.dm index eebb74b72897b..1a9f24ce50ebd 100644 --- a/code/game/turfs/open/lava.dm +++ b/code/game/turfs/open/lava.dm @@ -178,11 +178,6 @@ /turf/open/lava/singularity_pull(S, current_size) return -/turf/open/lava/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) - underlay_appearance.icon = 'icons/turf/floors.dmi' - underlay_appearance.icon_state = "basalt" - return TRUE - /turf/open/lava/GetHeatCapacity() . = 700000 @@ -341,6 +336,12 @@ underfloor_accessibility = 2 //This avoids strangeness when routing pipes / wires along catwalks over lava immerse_overlay_color = "#F98511" +/// Smooth lava needs to take after basalt in order to blend better. If you make a /turf/open/lava/smooth subtype for an area NOT surrounded by basalt; you should override this proc. +/turf/open/lava/smooth/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = /turf/open/misc/asteroid/basalt::icon + underlay_appearance.icon_state = /turf/open/misc/asteroid/basalt::icon_state + return TRUE + /turf/open/lava/smooth/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS planetary_atmos = TRUE diff --git a/code/modules/admin/verbs/lawpanel.dm b/code/modules/admin/verbs/lawpanel.dm index 6de3ff70182b8..32815b73cbd8f 100644 --- a/code/modules/admin/verbs/lawpanel.dm +++ b/code/modules/admin/verbs/lawpanel.dm @@ -48,7 +48,8 @@ ADMIN_VERB(law_panel, R_ADMIN, "Law Panel", "View the AI laws.", ADMIN_CATEGORY_ borgo.laws.add_inherent_law(lawtext) if(LAW_SUPPLIED) borgo.laws.add_supplied_law(length(borgo.laws.supplied), lawtext) // Just goes to the end of the list - + log_admin("[key_name(user)] has UPLOADED a [lawtype] law to [key_name(borgo)] stating: [lawtext]") + message_admins("[key_name(user)] has UPLOADED a [lawtype] law to [key_name(borgo)] stating: [lawtext]") return TRUE /datum/law_panel/proc/move_law_helper(mob/living/user, mob/living/silicon/borgo, direction, law) @@ -104,6 +105,9 @@ ADMIN_VERB(law_panel, R_ADMIN, "Law Panel", "View the AI laws.", ADMIN_CATEGORY_ return FALSE relevant_laws[lawindex] = newlaw + log_admin("[key_name(user)] has EDITED [key_name(borgo)] [lawtype] law. OLD LAW: [oldlaw] \ + NEW LAW: [newlaw]") + message_admins("[key_name(user)] has EDITED a [lawtype] law on [key_name(borgo)]") return TRUE /datum/law_panel/proc/edit_law_priority_helper(mob/living/user, mob/living/silicon/borgo, law) @@ -145,10 +149,12 @@ ADMIN_VERB(law_panel, R_ADMIN, "Law Panel", "View the AI laws.", ADMIN_CATEGORY_ if(swap_or_remove == "Swap") borgo.laws.supplied.Swap(old_prio, new_prio) + log_admin("[key_name(user)] has SWAPPED [key_name(borgo)] law [old_prio] and [new_prio]") return TRUE if(swap_or_remove == "Replace") borgo.laws.remove_supplied_law_by_num(new_prio, law) borgo.laws.add_supplied_law(new_prio, law) + log_admin("[key_name(user)] has REPLACED [key_name(borgo)] law: [law] with priority [new_prio]") return TRUE var/new_prio_for_old_law = new_prio + (swap_or_remove == "Move up" ? 1 : -1) @@ -157,6 +163,7 @@ ADMIN_VERB(law_panel, R_ADMIN, "Law Panel", "View the AI laws.", ADMIN_CATEGORY_ borgo.laws.remove_supplied_law_by_num(new_prio) borgo.laws.add_supplied_law(new_prio, law) borgo.laws.add_supplied_law(new_prio_for_old_law, existing_law) + log_admin("[key_name(user)] has changed the priority of an existing law on [key_name(borgo)]. LAW: [law] PRIORITY: [new_prio]") return TRUE // Sanity @@ -167,6 +174,8 @@ ADMIN_VERB(law_panel, R_ADMIN, "Law Panel", "View the AI laws.", ADMIN_CATEGORY_ // At this point the slot is free, insert it as normal borgo.laws.remove_supplied_law_by_num(old_prio) borgo.laws.add_supplied_law(new_prio, law) + log_admin("[key_name(user)] has UPLOADED a supplied law to [key_name(borgo)] stating: [law]") // Normal insertion, I.E upload + message_admins("[key_name(user)] has UPLOADED a supplied law to [key_name(borgo)] stating: [law]") return TRUE /datum/law_panel/proc/remove_law_helper(mob/living/user, mob/living/silicon/borgo, lawtype, law) @@ -184,7 +193,8 @@ ADMIN_VERB(law_panel, R_ADMIN, "Law Panel", "View the AI laws.", ADMIN_CATEGORY_ borgo.laws.protected_zeroth = FALSE else return FALSE - + log_admin("[key_name(user)] has REMOVED a law from [key_name(borgo)]. LAW: [law]") + message_admins("[key_name(user)] has REMOVED a law from [key_name(borgo)]. LAW: [law]") return TRUE /datum/law_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) diff --git a/code/modules/antagonists/abductor/equipment/abduction_outfits.dm b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm index 109f27e82225f..8739a9de74950 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_outfits.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm @@ -50,6 +50,13 @@ /obj/item/abductor/silencer = 1 ) +/datum/outfit/abductor/agent/cardboard + name = "Abductor Agent" + head = /obj/item/clothing/head/helmet/abductor + suit = /obj/item/clothing/suit/armor/abductor/vest + l_hand = /obj/item/melee/baton/abductor + belt = /obj/item/storage/belt/military/abductor/full + /datum/outfit/abductor/scientist name = "Abductor Scientist" diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm index 91107529721bc..9f6d10677d198 100644 --- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm +++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm @@ -594,6 +594,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon_state = "alienhelmet" inhand_icon_state = null flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + sound_vary = TRUE + 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' /obj/item/clothing/head/helmet/abductor/equipped(mob/living/user, slot) . = ..() diff --git a/code/modules/antagonists/heretic/magic/space_crawl.dm b/code/modules/antagonists/heretic/magic/space_crawl.dm index 6a96403872f11..cce9f46085bc6 100644 --- a/code/modules/antagonists/heretic/magic/space_crawl.dm +++ b/code/modules/antagonists/heretic/magic/space_crawl.dm @@ -1,3 +1,5 @@ +#define SPACE_PHASING "space-phasing" + /** * ### Space Crawl * @@ -16,6 +18,8 @@ invocation_type = INVOCATION_NONE spell_requirements = NONE + ///List of traits that are added to the heretic while in space phase jaunt + var/static/list/jaunting_traits = list(TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTCOLD, TRAIT_NOBREATH) /datum/action/cooldown/spell/jaunt/space_crawl/Grant(mob/grant_to) . = ..() @@ -82,6 +86,7 @@ jaunter.put_in_hands(left_hand) jaunter.put_in_hands(right_hand) + jaunter.add_traits(jaunting_traits, SPACE_PHASING) RegisterSignal(jaunter, SIGNAL_REMOVETRAIT(TRAIT_ALLOW_HERETIC_CASTING), PROC_REF(on_focus_lost)) playsound(our_turf, 'sound/effects/magic/cosmic_energy.ogg', 50, TRUE, -1) our_turf.visible_message(span_warning("[jaunter] sinks into [our_turf]!")) @@ -101,6 +106,7 @@ if(!exit_jaunt(jaunter, our_turf)) return FALSE + jaunter.remove_traits(jaunting_traits, SPACE_PHASING) our_turf.visible_message(span_boldwarning("[jaunter] rises out of [our_turf]!")) return TRUE @@ -131,3 +137,5 @@ /obj/item/space_crawl/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) + +#undef SPACE_PHASING diff --git a/code/modules/antagonists/ninja/ninja_clothing.dm b/code/modules/antagonists/ninja/ninja_clothing.dm index 54ed46c9c3ec0..4eaf40f9c79cb 100644 --- a/code/modules/antagonists/ninja/ninja_clothing.dm +++ b/code/modules/antagonists/ninja/ninja_clothing.dm @@ -15,7 +15,8 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF flags_inv = HIDEFACIALHAIR | HIDEFACE | HIDESNOUT flags_cover = MASKCOVERSMOUTH | PEPPERPROOF - has_fov = FALSE + pepper_tint = FALSE + /obj/item/clothing/under/syndicate/ninja name = "ninja suit" diff --git a/code/modules/antagonists/pirate/pirate_outfits.dm b/code/modules/antagonists/pirate/pirate_outfits.dm index 14729908e65be..8976e212c5475 100644 --- a/code/modules/antagonists/pirate/pirate_outfits.dm +++ b/code/modules/antagonists/pirate/pirate_outfits.dm @@ -57,6 +57,10 @@ id_trim = /datum/id_trim/pirate/captain +/datum/outfit/pirate/space/captain/cardboard + name = "Space Pirate Captain (EVA)" + l_hand = /obj/item/nullrod/claymore/saber/pirate + /datum/outfit/pirate/silverscale name = "Silver Scale Member" diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 8b96a5ddaf7dd..588353b34fe44 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -82,8 +82,8 @@ /obj/item/gun/energy/laser/bluetag = 3, /obj/item/clothing/suit/redtag = 3, /obj/item/clothing/suit/bluetag = 3, - /obj/item/clothing/head/helmet/redtaghelm = 3, - /obj/item/clothing/head/helmet/bluetaghelm = 3, + /obj/item/clothing/head/helmet/taghelm/blue = 3, + /obj/item/clothing/head/helmet/taghelm/red = 3, ) crate_name = "laser tag crate" diff --git a/code/modules/client/preferences/chipped.dm b/code/modules/client/preferences/chipped.dm new file mode 100644 index 0000000000000..2ce73dbbb0d85 --- /dev/null +++ b/code/modules/client/preferences/chipped.dm @@ -0,0 +1,20 @@ +/datum/preference/choiced/chipped + category = PREFERENCE_CATEGORY_MANUALLY_RENDERED + savefile_key = "chipped" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/choiced/chipped/create_default_value() + return "Random" + +/datum/preference/choiced/chipped/init_possible_values() + return list("Random") + assoc_to_keys(GLOB.quirk_chipped_choice) + +/datum/preference/choiced/chipped/is_accessible(datum/preferences/preferences) + . = ..() + if (!.) + return FALSE + + return /datum/quirk/chipped::name in preferences.all_quirks + +/datum/preference/choiced/chipped/apply_to_human(mob/living/carbon/human/target, value) + return diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index f296bd18249ea..f3f4472adeb71 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -14,6 +14,10 @@ var/visor_flags_cover = NONE //same as above, but for flags_cover ///What to toggle when toggled with adjust_visor() var/visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT | VISOR_VISIONFLAGS | VISOR_INVISVIEW + ///Sound this item makes when its visor is flipped down + var/visor_toggle_down_sound = null + ///Sound this item makes when its visor is flipped up + var/visor_toggle_up_sound = null var/clothing_flags = NONE ///List of items that can be equipped in the suit storage slot while we're worn. @@ -537,6 +541,12 @@ BLIND // can't see anything to_chat(user, span_notice("You push [src] [up ? "out of the way" : "back into place"].")) + //play sounds when toggling the visor up or down (if there is any) + if(visor_toggle_up_sound && up) + playsound(src, visor_toggle_up_sound, 20, TRUE, -1) + if(visor_toggle_down_sound && !up) + playsound(src, visor_toggle_down_sound, 20, TRUE, -1) + update_item_action_buttons() if(user.is_holding(src)) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index b9b371d498c10..b8e6bfa7ada2a 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -33,6 +33,12 @@ /obj/item/clothing/head/helmet/sec var/flipped_visor = FALSE + sound_vary = TRUE + 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' + visor_toggle_up_sound = SFX_VISOR_UP + visor_toggle_down_sound = SFX_VISOR_DOWN /obj/item/clothing/head/helmet/sec/Initialize(mapload) . = ..() @@ -70,8 +76,10 @@ icon_state = base_icon_state if (flipped_visor) flags_cover &= ~HEADCOVERSEYES + playsound(src, SFX_VISOR_DOWN, 20, TRUE, -1) else flags_cover |= HEADCOVERSEYES + playsound(src, SFX_VISOR_UP, 20, TRUE, -1) update_appearance() return CLICK_ACTION_SUCCESS @@ -79,6 +87,10 @@ name = "press helmet" desc = "A blue helmet used to distinguish non-combatant \"PRESS\" members, like if anyone cares." icon_state = "helmet_press" + sound_vary = TRUE + 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' /obj/item/clothing/head/helmet/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file) . = ..() @@ -92,6 +104,10 @@ inhand_icon_state = "helmet" armor_type = /datum/armor/helmet_alt dog_fashion = null + sound_vary = TRUE + 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' /datum/armor/helmet_alt melee = 15 @@ -118,6 +134,10 @@ clothing_flags = STOPSPRESSUREDAMAGE | STACKABLE_HELMET_EXEMPT resistance_flags = FIRE_PROOF | ACID_PROOF dog_fashion = null + sound_vary = TRUE + 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' /datum/armor/helmet_marine melee = 50 @@ -161,6 +181,10 @@ name = "degrading helmet" desc = "Standard issue security helmet. Due to degradation the helmet's visor obstructs the users ability to see long distances." tint = 2 + sound_vary = TRUE + 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' /obj/item/clothing/head/helmet/blueshirt name = "blue helmet" @@ -168,6 +192,10 @@ icon_state = "blueshift" inhand_icon_state = "blueshift_helmet" custom_premium_price = PAYCHECK_COMMAND + sound_vary = TRUE + 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' /obj/item/clothing/head/helmet/toggleable @@ -200,6 +228,12 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED) + sound_vary = TRUE + 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' + visor_toggle_up_sound = SFX_VISOR_UP + visor_toggle_down_sound = SFX_VISOR_DOWN /obj/item/clothing/head/helmet/toggleable/riot/Initialize(mapload) . = ..() @@ -241,6 +275,12 @@ COOLDOWN_DECLARE(visor_toggle_cooldown) ///Looping sound datum for the siren helmet var/datum/looping_sound/siren/weewooloop + sound_vary = TRUE + 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' + visor_toggle_up_sound = SFX_VISOR_UP + visor_toggle_down_sound = SFX_VISOR_DOWN /obj/item/clothing/head/helmet/toggleable/justice/adjust_visor(mob/living/user) if(!COOLDOWN_FINISHED(src, visor_toggle_cooldown)) @@ -283,6 +323,10 @@ resistance_flags = FIRE_PROOF | ACID_PROOF dog_fashion = null clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED) + sound_vary = TRUE + 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' /obj/item/clothing/head/helmet/swat/Initialize(mapload) . = ..() @@ -388,17 +432,17 @@ flags_cover = HEADCOVERSEYES dog_fashion = null -/obj/item/clothing/head/helmet/redtaghelm - name = "red laser tag helmet" - desc = "They have chosen their own end." - icon_state = "redtaghelm" +/obj/item/clothing/head/helmet/taghelm flags_cover = HEADCOVERSEYES - inhand_icon_state = "redtag_helmet" - armor_type = /datum/armor/helmet_redtaghelm // Offer about the same protection as a hardhat. + armor_type = /datum/armor/helmet_taghelm dog_fashion = null + sound_vary = TRUE + 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' -/datum/armor/helmet_redtaghelm +/datum/armor/helmet_taghelm melee = 15 bullet = 10 laser = 20 @@ -406,23 +450,17 @@ bomb = 20 acid = 50 -/obj/item/clothing/head/helmet/bluetaghelm +/obj/item/clothing/head/helmet/taghelm/red + name = "red laser tag helmet" + desc = "They have chosen their own end." + icon_state = "redtaghelm" + inhand_icon_state = "redtag_helmet" + +/obj/item/clothing/head/helmet/taghelm/blue name = "blue laser tag helmet" desc = "They'll need more men." icon_state = "bluetaghelm" - flags_cover = HEADCOVERSEYES inhand_icon_state = "bluetag_helmet" - armor_type = /datum/armor/helmet_bluetaghelm - // Offer about the same protection as a hardhat. - dog_fashion = null - -/datum/armor/helmet_bluetaghelm - melee = 15 - bullet = 10 - laser = 20 - energy = 10 - bomb = 20 - acid = 50 /obj/item/clothing/head/helmet/knight name = "medieval helmet" @@ -491,6 +529,10 @@ icon_state = "rus_helmet" inhand_icon_state = "rus_helmet" armor_type = /datum/armor/helmet_rus_helmet + sound_vary = TRUE + 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' /datum/armor/helmet_rus_helmet melee = 25 @@ -559,6 +601,10 @@ strip_delay = 80 dog_fashion = null armor_type = /datum/armor/helmet_military + sound_vary = TRUE + 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' /datum/armor/helmet_military melee = 45 diff --git a/code/modules/clothing/masks/costume.dm b/code/modules/clothing/masks/costume.dm index ff980442565a4..37a3fc7ccb5e8 100644 --- a/code/modules/clothing/masks/costume.dm +++ b/code/modules/clothing/masks/costume.dm @@ -52,7 +52,7 @@ . += "Use in-hand to wear as a mask!" return else - . += "Use in-hand to tie it up to wear as a hat!" + . += "Use in-hand to wear as a hat!" /obj/item/clothing/mask/kitsune/attack_self(mob/user) adjust_visor(user) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 1f9711cc7cc01..828bbb01092b1 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -25,12 +25,12 @@ GLOBAL_LIST_INIT(clown_mask_options, list( var/list/gas_filters ///Type of filter that spawns on roundstart var/starting_filter_type = /obj/item/gas_filter - ///Does the mask have an FOV? - var/has_fov = TRUE ///Cigarette in the mask var/obj/item/cigarette/cig ///How much does this mask affect fishing difficulty var/fishing_modifier = 2 + ///Applies clothing_dirt component to the pepperproof mask if true + var/pepper_tint = TRUE /datum/armor/mask_gas bio = 100 @@ -39,6 +39,9 @@ GLOBAL_LIST_INIT(clown_mask_options, list( . = ..() //init_fov() BUBBER EDIT - Dear god + if((flags_cover & PEPPERPROOF) && pepper_tint) + AddComponent(/datum/component/clothing_dirt) + if(fishing_modifier) AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier) @@ -160,11 +163,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( has_filter = FALSE return filtered_breath -/// Initializes the FoV component for the gas mask -/obj/item/clothing/mask/gas/proc/init_fov() - if (has_fov) - AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES) - /** * Getter for overall filter durability, takes into consideration all filters filter_status */ @@ -267,7 +265,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( icon_state = "plaguedoctor" flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT|HIDEHAIR inhand_icon_state = "gas_mask" - has_fov = FALSE clothing_flags = BLOCK_GAS_SMOKE_EFFECT|MASKINTERNALS /obj/item/clothing/mask/gas/syndicate @@ -278,8 +275,8 @@ GLOBAL_LIST_INIT(clown_mask_options, list( resistance_flags = FIRE_PROOF | ACID_PROOF strip_delay = 60 w_class = WEIGHT_CLASS_SMALL - has_fov = FALSE fishing_modifier = 0 + pepper_tint = FALSE /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" @@ -296,7 +293,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( resistance_flags = FLAMMABLE actions_types = list(/datum/action/item_action/adjust) dog_fashion = /datum/dog_fashion/head/clown - has_fov = FALSE var/list/clownmask_designs = list() voice_filter = null // performer masks expect to be talked through fishing_modifier = 0 @@ -341,7 +337,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi' flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE - has_fov = FALSE fishing_modifier = 0 /obj/item/clothing/mask/gas/mime @@ -355,7 +350,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( resistance_flags = FLAMMABLE actions_types = list(/datum/action/item_action/adjust) species_exception = list(/datum/species/golem) - has_fov = FALSE fishing_modifier = 0 var/list/mimemask_designs = list() @@ -414,7 +408,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( inhand_icon_state = "owl_mask" flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE - has_fov = FALSE fishing_modifier = 0 /obj/item/clothing/mask/gas/sexymime @@ -426,7 +419,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE species_exception = list(/datum/species/golem) - has_fov = FALSE fishing_modifier = 0 /obj/item/clothing/mask/gas/cyborg @@ -434,7 +426,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( desc = "Beep boop." icon_state = "death" resistance_flags = FLAMMABLE - has_fov = FALSE flags_cover = MASKCOVERSEYES fishing_modifier = 0 @@ -446,7 +437,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( clothing_flags = MASKINTERNALS flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE - has_fov = FALSE fishing_modifier = -1 /obj/item/clothing/mask/gas/carp @@ -454,7 +444,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( desc = "Gnash gnash." icon_state = "carp_mask" inhand_icon_state = null - has_fov = FALSE flags_cover = MASKCOVERSEYES fishing_modifier = -3 @@ -465,7 +454,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( inhand_icon_state = null custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 1.25) resistance_flags = FLAMMABLE - has_fov = FALSE flags_cover = MASKCOVERSEYES max_integrity = 100 actions_types = list(/datum/action/item_action/adjust) @@ -512,7 +500,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( inhand_icon_state = "gas_atmos" resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS|HIDEHAIR|HIDESNOUT - has_fov = FALSE fishing_modifier = -2 /obj/item/clothing/mask/gas/prop @@ -523,7 +510,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( clothing_flags = NONE flags_cover = MASKCOVERSMOUTH resistance_flags = FLAMMABLE - has_fov = FALSE fishing_modifier = 0 /obj/item/clothing/mask/gas/atmosprop @@ -535,7 +521,6 @@ GLOBAL_LIST_INIT(clown_mask_options, list( clothing_flags = NONE flags_cover = MASKCOVERSMOUTH resistance_flags = FLAMMABLE - has_fov = FALSE fishing_modifier = 0 /obj/item/clothing/mask/gas/driscoll diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm index aee1ac17b1b3e..182bc3ace7669 100644 --- a/code/modules/clothing/masks/hailer.dm +++ b/code/modules/clothing/masks/hailer.dm @@ -56,7 +56,6 @@ GLOBAL_LIST_INIT(hailer_phrases, list( flags_cover = MASKCOVERSMOUTH visor_flags_cover = MASKCOVERSMOUTH tint = 0 - has_fov = FALSE fishing_modifier = 0 unique_death = 'sound/items/sec_hailer/sec_death.ogg' COOLDOWN_DECLARE(hailer_cooldown) @@ -88,6 +87,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list( flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF visor_flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF fishing_modifier = 2 + pepper_tint = FALSE /obj/item/clothing/mask/gas/sechailer/swat/spacepol name = "spacepol mask" diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 422cb34fa090d..46bdd0742bb5b 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -98,7 +98,7 @@ box = /obj/item/storage/box ears = /obj/item/radio/headset gloves = /obj/item/clothing/gloves/color/red - head = /obj/item/clothing/head/helmet/redtaghelm + head = /obj/item/clothing/head/helmet/taghelm/red shoes = /obj/item/clothing/shoes/sneakers/red /datum/outfit/traitor_cutout @@ -141,7 +141,7 @@ suit = /obj/item/clothing/suit/bluetag suit_store = /obj/item/gun/energy/laser/bluetag gloves = /obj/item/clothing/gloves/color/blue - head = /obj/item/clothing/head/helmet/bluetaghelm + head = /obj/item/clothing/head/helmet/taghelm/blue shoes = /obj/item/clothing/shoes/sneakers/blue /datum/outfit/tunnel_clown diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index fea48d13d3776..d063e54e6bb01 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -25,6 +25,10 @@ resistance_flags = NONE dog_fashion = null slowdown = 0.5 + sound_vary = TRUE + 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' ///How much this helmet affects fishing difficulty var/fishing_modifier = 3 diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 321a59e89f799..d844e03c8cf7a 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -145,6 +145,10 @@ inhand_icon_state = "armor" dog_fashion = null +/obj/item/clothing/suit/armor/vest/cuirass/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) + /obj/item/clothing/suit/armor/hos name = "armored greatcoat" desc = "A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence." @@ -552,7 +556,7 @@ /obj/item/tank/internals/plasmaman, ) /obj/item/clothing/suit/armor/riot/knight/init_rustle_component() - return + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) /obj/item/clothing/suit/armor/riot/knight/yellow icon_state = "knight_yellow" diff --git a/code/modules/events/meteors/dark_matteor_event.dm b/code/modules/events/meteors/dark_matteor_event.dm index 412354b16f13d..a2352a1927e01 100644 --- a/code/modules/events/meteors/dark_matteor_event.dm +++ b/code/modules/events/meteors/dark_matteor_event.dm @@ -22,7 +22,7 @@ target = potential_target break //if target was never chosen the target is null aka the matteor will act as spacedust (and can technically miss) - spawn_meteor(list(/obj/effect/meteor/dark_matteor = 1), null, target) + spawn_meteor(list(/obj/effect/meteor/dark_matteor = 1), null, target, distance_from_edge = 10) /datum/round_event/dark_matteor/announce(fake) priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/announcer/alarm/airraid.ogg') diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm index 539f7c9a0b9b5..b3fbb91b468d1 100644 --- a/code/modules/fishing/fish/_fish.dm +++ b/code/modules/fishing/fish/_fish.dm @@ -173,6 +173,9 @@ ADD_TRAIT(src, TRAIT_UNCOMPOSTABLE, REF(src)) //Composting a food that is not real food wouldn't work anyway. START_PROCESSING(SSobj, src) + //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) + //stops new fish from being able to reproduce right away. breeding_wait = world.time + (breeding_timeout * NEW_FISH_BREEDING_TIMEOUT_MULT) last_feeding = world.time - (feeding_frequency * NEW_FISH_LAST_FEEDING_MULT) @@ -181,7 +184,6 @@ apply_traits() //Make sure traits are applied before size and weight. update_size_and_weight() - register_evolutions() register_context() register_item_context() @@ -687,11 +689,6 @@ var/datum/fish_trait/trait = GLOB.fish_traits[fish_trait_type] trait.apply_to_fish(src) -/obj/item/fish/proc/register_evolutions() - for(var/evolution_type in evolution_types) - var/datum/fish_evolution/evolution = GLOB.fish_evolutions[evolution_type] - evolution.register_fish(src) - /obj/item/fish/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) . = ..() check_flopping() @@ -720,17 +717,28 @@ /obj/item/fish/proc/feed(datum/reagents/fed_reagents) if(status != FISH_ALIVE) return - var/fed_reagent_type + + ///If one of the reagent with fish effects is also our food reagent this is set to TRUE + var/already_fed = FALSE + for(var/datum/reagent/reagent as anything in fed_reagents.reagent_list) + if(!fed_reagents.has_reagent(reagent.type, 0.1) || !reagent.used_on_fish(src)) + continue + fed_reagents.remove_reagent(reagent.type, 0.1) + if(reagent.type == food) + already_fed = TRUE + + if(already_fed) + sate_hunger() + return + if(fed_reagents.remove_reagent(food, 0.1)) - fed_reagent_type = food sate_hunger() - else - var/datum/reagent/wrong_reagent = pick(fed_reagents.reagent_list) - if(!wrong_reagent) - return - fed_reagent_type = wrong_reagent.type - fed_reagents.remove_reagent(fed_reagent_type, 0.1) - SEND_SIGNAL(src, COMSIG_FISH_FED, fed_reagents, fed_reagent_type) + return + + var/datum/reagent/wrong_reagent = pick(fed_reagents.reagent_list) + if(!wrong_reagent) + return + fed_reagents.remove_reagent(wrong_reagent.type, 0.1) /** * Base multiplier of the difference between current size and weight and their maximum value @@ -761,11 +769,14 @@ hunger_mult = 1 - (hunger - FISH_GROWTH_PEAK) * 4 if(hunger_mult <= 0) return + var/base_mult = FISH_GROWTH_MULT + if(HAS_TRAIT(src, TRAIT_FISH_QUICK_GROWTH)) + base_mult *= 2.5 if(size < maximum_size) - new_size += CEILING((maximum_size - size) * FISH_GROWTH_MULT / (w_class * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1) + 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) * FISH_GROWTH_MULT / (get_weight_rank() * FISH_SIZE_WEIGHT_GROWTH_MALUS) * hunger_mult, 1) + new_weight += CEILING((maximum_weight - weight) * base_mult / (get_weight_rank() * 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) @@ -1014,6 +1025,9 @@ health_change_per_second -= 0.5 //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. + adjust_health(health + health_change_per_second * seconds_per_tick) /obj/item/fish/proc/adjust_health(amount) @@ -1223,6 +1237,8 @@ if(istype(loc, /obj/structure/aquarium/bioelec_gen)) fish_zap_range = 5 fish_zap_power = GET_FISH_ELECTROGENESIS(src) + if(HAS_TRAIT(src, TRAIT_FISH_ON_TESLIUM)) + fish_zap_power *= 0.5 fish_zap_flags |= (ZAP_GENERATES_POWER | ZAP_MOB_STUN) tesla_zap(source = get_turf(src), zap_range = fish_zap_range, power = fish_zap_power, cutoff = 1 MEGA JOULES, zap_flags = fish_zap_flags) diff --git a/code/modules/fishing/fish/fish_evolution.dm b/code/modules/fishing/fish/fish_evolution.dm index 25ce133c98d40..52708add566da 100644 --- a/code/modules/fishing/fish/fish_evolution.dm +++ b/code/modules/fishing/fish/fish_evolution.dm @@ -48,6 +48,8 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) 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)) @@ -82,25 +84,12 @@ GLOBAL_LIST_EMPTY(fishes_by_fish_evolution) . += " [conditions_note]" return . -///Proc called to let evolution register signals that are needed for various conditions. -/datum/fish_evolution/proc/register_fish(obj/item/fish/fish) - return - /datum/fish_evolution/lubefish probability = 25 new_fish_type = /obj/item/fish/clownfish/lube new_traits = list(/datum/fish_trait/lubed) conditions_note = "The fish must be fed lube beforehand." -/datum/fish_evolution/lubefish/register_fish(obj/item/fish/fish) - RegisterSignal(fish, COMSIG_FISH_FED, PROC_REF(check_for_lube)) - -/datum/fish_evolution/lubefish/proc/check_for_lube(obj/item/fish/source, datum/reagents/fed_reagents, wrong_reagent_type) - SIGNAL_HANDLER - if((wrong_reagent_type == /datum/reagent/lube) || fed_reagents.remove_reagent(/datum/reagent/lube, 0.1)) - ADD_TRAIT(source, TRAIT_FISH_FED_LUBE, FISH_EVOLUTION) - addtimer(TRAIT_CALLBACK_REMOVE(source, TRAIT_FISH_FED_LUBE, FISH_EVOLUTION), source.feeding_frequency) - /datum/fish_evolution/lubefish/check_conditions(obj/item/fish/source, obj/item/fish/mate, obj/structure/aquarium/aquarium) if(!HAS_TRAIT(source, TRAIT_FISH_FED_LUBE)) return FALSE diff --git a/code/modules/fishing/fish/types/freshwater.dm b/code/modules/fishing/fish/types/freshwater.dm index fe0ff437c7d8c..75d4891b4f0ad 100644 --- a/code/modules/fishing/fish/types/freshwater.dm +++ b/code/modules/fishing/fish/types/freshwater.dm @@ -175,7 +175,7 @@ /obj/item/fish/tadpole/Initialize(mapload, apply_qualities = TRUE) . = ..() - AddComponent(/datum/component/fish_growth, /mob/living/basic/frog, rand(2.5, 3 MINUTES)) + AddComponent(/datum/component/fish_growth, /mob/living/basic/frog, rand(2 MINUTES, 3 MINUTES)) RegisterSignal(src, COMSIG_FISH_BEFORE_GROWING, PROC_REF(growth_checks)) RegisterSignal(src, COMSIG_FISH_FINISH_GROWING, PROC_REF(on_growth)) diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index 23aabcc3ece7c..345746bcbd639 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -503,6 +503,11 @@ line = null show_in_wiki = FALSE +///From the mining order console, meant to help miners rescue their fallen brethren +/obj/item/fishing_rod/rescue + hook = /obj/item/fishing_hook/rescue + show_in_wiki = FALSE + /obj/item/fishing_rod/bone name = "bone fishing rod" desc = "A humble rod, made with whatever happened to be on hand." diff --git a/code/modules/fishing/sources/source_types.dm b/code/modules/fishing/sources/source_types.dm index 56c1cb8e32529..3c909193a816a 100644 --- a/code/modules/fishing/sources/source_types.dm +++ b/code/modules/fishing/sources/source_types.dm @@ -354,9 +354,6 @@ /datum/fish_source/lavaland/reason_we_cant_fish(obj/item/fishing_rod/rod, mob/fisherman, atom/parent) . = ..() - var/turf/approx = get_turf(fisherman) //todo pass the parent - if(!SSmapping.level_trait(approx.z, ZTRAIT_MINING)) - return "There doesn't seem to be anything to catch here." if(!rod.line || !(rod.line.fishing_line_traits & FISHING_LINE_REINFORCED)) return "You'll need reinforced fishing line to fish in there" diff --git a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm index 161ea00a4fbd2..2c8b4efd75fdf 100644 --- a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm +++ b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm @@ -54,7 +54,7 @@ /datum/outfit/job/assistant/gimmick/skater name = "Gimmick Assistant - Skater" - head = /obj/item/clothing/head/helmet/redtaghelm + head = /obj/item/clothing/head/helmet/taghelm/red suit = /obj/item/clothing/suit/redtag l_hand = /obj/item/melee/skateboard @@ -65,7 +65,7 @@ /datum/outfit/job/assistant/gimmick/rollerskater name = "Gimmick Assistant - Rollerskater" - head = /obj/item/clothing/head/helmet/bluetaghelm + head = /obj/item/clothing/head/helmet/taghelm/blue suit = /obj/item/clothing/suit/bluetag shoes = /obj/item/clothing/shoes/wheelys/rollerskates diff --git a/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm b/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm index 6af8c844555da..9bd6436994df1 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_costumes.dm @@ -151,6 +151,10 @@ inhand_icon_state = null slowdown = 0 +/obj/item/clothing/suit/chaplainsuit/armor/clock/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) + /obj/item/clothing/head/helmet/chaplain name = "crusader helmet" desc = "Deus Vult." @@ -179,6 +183,10 @@ inhand_icon_state = null slowdown = 0 +/obj/item/clothing/suit/chaplainsuit/armor/templar/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) + /obj/item/clothing/head/helmet/chaplain/cage name = "cage" desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is." @@ -199,6 +207,10 @@ icon_state = "knight_ancient" inhand_icon_state = null +/obj/item/clothing/suit/chaplainsuit/armor/ancient/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) + /obj/item/clothing/head/helmet/chaplain/witchunter_hat name = "witchunter hat" desc = "This hat saw much use back in the day." @@ -230,6 +242,11 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS armor_type = /datum/armor/armor_crusader +/obj/item/clothing/suit/chaplainsuit/armor/crusader/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) + + /datum/armor/armor_crusader melee = 50 bullet = 50 diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 2fd4f3a93a6da..80936dce2938a 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -24,7 +24,7 @@ /datum/job_department/medical, ) - family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom) + family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/fishing_hook/rescue) mail_goodies = list( /obj/item/reagent_containers/hypospray/medipen = 20, diff --git a/code/modules/library/skill_learning/generic_skillchips/acrobatics.dm b/code/modules/library/skill_learning/generic_skillchips/acrobatics.dm new file mode 100644 index 0000000000000..75705aca97a49 --- /dev/null +++ b/code/modules/library/skill_learning/generic_skillchips/acrobatics.dm @@ -0,0 +1,171 @@ +/obj/item/skillchip/acrobatics + name = "old F058UR7 skillchip" + desc = "A formerly cutting-edge skillchip that granted the user an advanced, Olympian-level degree of kinesthesics for flipping, spinning, and absolutely nothing else. \ + It was pulled off the markets shortly after release due to users damaging the chip's integrity from excessive acrobatics, causing deadly malfunctions. It really puts the 'flop' in 'Fosbury Flop'!" + skill_name = "Spinesthetics" + skill_description = "Allows you to flip and spin at an illegal and dangerous rate." + skill_icon = FA_ICON_WHEELCHAIR_ALT + activate_message = span_notice("You suddenly have an extremely advanced and complex sense of how to spin and flip with grace.") + deactivate_message = span_notice("Your divine grasp of Spinesthesics disappears entirely.") + custom_premium_price = PAYCHECK_CREW * 4 + /// set integrity to 1 when mapping for !!FUN!! + max_integrity = 100 + /// list of emotes whose cd is overridden by this skillchip. can be edited in mapping or ingame + var/list/affected_emotes = list("spin", "flip") + var/datum/effect_system/spark_spread/sparks + // you can use this without lowering integrity! let's be honest. nobody's doing that + var/allowed_usage = 3 + var/reload_charge = 10 SECONDS + // current particle effect used for smoking brain + var/obj/effect/abstract/particle_holder/particle_effect + +/obj/item/skillchip/acrobatics/on_activate(mob/living/carbon/user, silent = FALSE) + . = ..() + RegisterSignal(user, COMSIG_MOB_EMOTE_COOLDOWN_CHECK, PROC_REF(whowee)) + +/obj/item/skillchip/acrobatics/on_deactivate(mob/living/carbon/user, silent) + . = ..() + UnregisterSignal(user, COMSIG_MOB_EMOTE_COOLDOWN_CHECK) + +/obj/item/skillchip/acrobatics/Destroy(force) + QDEL_NULL(sparks) + QDEL_NULL(particle_effect) + return ..() + +/obj/item/skillchip/acrobatics/proc/whowee(mob/living/carbon/bozo, emote_key, emote_intentional) + SIGNAL_HANDLER + + if(!(emote_key in affected_emotes)) + return + + if(allowed_usage) + allowed_usage-- + addtimer(CALLBACK(src, PROC_REF(charge)), reload_charge) + else + take_damage(1, sound_effect = FALSE) + + if(!sparks) + sparks = new(src) + + // minimum roll is by default capped at 50, with the min value lowering as integrity is reduced. + var/mintegrity = clamp(50 - (100 - get_integrity()), 1, 100) + switch(rand(mintegrity, get_integrity())) // 1 to 100 but gets worse every time + // CRIT FAIL + if(1) + bozo.visible_message(span_userdanger("[bozo]'s head suddenly explodes outwards!")) + + explosion(bozo, light_impact_range = 2, adminlog = TRUE, explosion_cause = src) + // WITNESS THE GORE + for(var/mob/living/splashed in view(2, bozo)) + if(bozo.has_status_effect(/datum/status_effect/grouped/blindness)) + to_chat(splashed, span_userdanger("You're splashed with something")) + else + to_chat(splashed, span_userdanger("You are blinded by a shower of blood!")) + splashed.Stun(1 SECONDS) + splashed.Knockdown(2 SECONDS) + splashed.set_eye_blur_if_lower(15 SECONDS) + splashed.adjust_confusion(4 SECONDS) + + // GORE + var/obj/item/bodypart/bozopart = bozo.get_bodypart(BODY_ZONE_HEAD) + if(bozopart) + var/datum/wound/cranial_fissure/crit_wound = new() + crit_wound.apply_wound(bozopart) + /* + var/list/droppage_candidates = bozo.get_organs_for_zone(BODY_ZONE_HEAD, include_children = TRUE) + if(droppage_candidates) + var/obj/thing_to_drop = pick(droppage_candidates) + thing_to_drop.forceMove(bozo.drop_location()) + */ //WHY DOESNTY IT OWRK + + // does not necessarily kill you directly. instead it causes cranial fissure + something to drop from your head. could be eyes, tongue, ears, brain, even implants + new /obj/effect/gibspawner/generic(get_turf(bozo), bozo) + + sparks.set_up(15, cardinals_only = FALSE, location = get_turf(src)) + sparks.start() + + qdel(src) + // last chance to stop + if(7 to 9) + bozo.visible_message( + span_danger("[bozo] seems to short circuit!"), + span_userdanger("Your brain short circuits!"), + ) + // if they're susceptible to electrocution, confuse them + if(bozo.electrocute_act(15, bozo, 1, SHOCK_NOGLOVES|SHOCK_NOSTUN)) + bozo.adjust_confusion(15 SECONDS) + bozo.set_eye_blur_if_lower(10 SECONDS) + // but the rest of the effects will happen either way + bozo.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20 - get_integrity()) + + sparks.set_up(5, cardinals_only = FALSE, location = get_turf(src)) + sparks.start() + + // brain Smoking. you should probably stop now + if(13 to 15) + // if already hot, light 'em up + var/particle_path = /particles/smoke/steam/mild + if(bozo.has_status_effect(/datum/status_effect/temperature_over_time/chip_overheat)) + bozo.adjust_fire_stacks(11 - get_integrity()) + bozo.ignite_mob() + bozo.visible_message( + span_danger("[bozo]'s head lights up!"), + span_userdanger("Your head hurts so much, it feels like it's on fire!"), + ) + ASYNC + bozo.emote("scream") + if(particle_effect?.type == particle_path) + return + particle_path = /particles/smoke/steam/bad + else + bozo.visible_message( + span_danger("[bozo]'s head starts smoking!"), + span_userdanger("Your brain feels like it's on fire!"), + ) + + // increase smokiness if already smoking + if(particle_effect?.type == /particles/smoke/steam/mild) + particle_path = /particles/smoke/steam + else + particle_path = /particles/smoke/steam/mild + + bozo.adjust_confusion(4 SECONDS) + bozo.set_eye_blur_if_lower(3 SECONDS) + + particle_effect = new(bozo, particle_path) + // roughly head position. + // dont know how to make this not hardcoded + particle_effect.set_particle_position(-2, 12, 0) + bozo.apply_status_effect(/datum/status_effect/temperature_over_time/chip_overheat, 15 SECONDS) + QDEL_IN(particle_effect, 15 SECONDS) + + sparks.set_up(10, cardinals_only = FALSE, location = get_turf(src)) + sparks.start() + + // hey, something isn't right... + if(16 to 50) + bozo.visible_message( + span_warning("[bozo]'s head sparks."), + ) + + sparks.set_up(rand(1,2), cardinals_only = TRUE, location = get_turf(src)) + sparks.start() + + return COMPONENT_EMOTE_COOLDOWN_BYPASS + +/obj/item/skillchip/acrobatics/proc/charge() + allowed_usage++ + +/obj/item/skillchip/acrobatics/kiss + name = "prototype N. 807 - K1SS skillchip" + desc = "An idle experiment when developing skillchips led to this catastrophe. Everyone involved swore to keep it a secret until death, but it looks like someone has let loose this mistake into the world." + skill_name = "ERROERERROROROEROEORROER" + skill_description = "NULL DESCRIPTION NOT FOUND" + skill_icon = FA_ICON_KISS_BEAM + activate_message = span_userdanger("This was a mistake.") + deactivate_message = span_userdanger("The mistake is over.") + custom_premium_price = PAYCHECK_CREW * 500 + max_integrity = 25 + affected_emotes = list("kiss") + allowed_usage = 1 + reload_charge = 30 SECONDS diff --git a/code/modules/library/skill_learning/generic_skillchips/misc.dm b/code/modules/library/skill_learning/generic_skillchips/misc.dm new file mode 100644 index 0000000000000..aea850b8f49f2 --- /dev/null +++ b/code/modules/library/skill_learning/generic_skillchips/misc.dm @@ -0,0 +1,157 @@ +//Contains generic skillchips that are fairly short and simple + +/obj/item/skillchip/basketweaving + name = "Basketsoft 3000 skillchip" + desc = "Underwater edition." + auto_traits = list(TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE) + skill_name = "Underwater Basketweaving" + skill_description = "Master intricate art of using twine to create perfect baskets while submerged." + skill_icon = "shopping-basket" + activate_message = span_notice("You're one with the twine and the sea.") + deactivate_message = span_notice("Higher mysteries of underwater basketweaving leave your mind.") + +/obj/item/skillchip/wine_taster + name = "WINE skillchip" + desc = "Wine.Is.Not.Equal version 5." + auto_traits = list(TRAIT_WINE_TASTER) + skill_name = "Wine Tasting" + skill_description = "Recognize wine vintage from taste alone. Never again lack an opinion when presented with an unknown drink." + skill_icon = "wine-bottle" + activate_message = span_notice("You recall wine taste.") + deactivate_message = span_notice("Your memories of wine evaporate.") + +/obj/item/skillchip/bonsai + name = "Hedge 3 skillchip" + auto_traits = list(TRAIT_BONSAI) + skill_name = "Hedgetrimming" + skill_description = "Trim hedges and potted plants into marvelous new shapes with any old knife. Not applicable to plastic plants." + skill_icon = "spa" + activate_message = span_notice("Your mind is filled with plant arrangments.") + deactivate_message = span_notice("You can't remember what a hedge looks like anymore.") + +/obj/item/skillchip/useless_adapter + name = "Skillchip adapter" + skill_name = "Useless adapter" + skill_description = "Allows you to insert another skillchip into this adapter after it has been inserted into your brain..." + skill_icon = "plug" + activate_message = span_notice("You can now activate another chip through this adapter, but you're not sure why you did this...") + deactivate_message = span_notice("You no longer have the useless skillchip adapter.") + skillchip_flags = SKILLCHIP_ALLOWS_MULTIPLE + // Literally does nothing. + complexity = 0 + slot_use = 0 + +/obj/item/skillchip/light_remover + name = "N16H7M4R3 skillchip" + auto_traits = list(TRAIT_LIGHTBULB_REMOVER) + skill_name = "Lightbulb Removing" + skill_description = "Stop failing taking out lightbulbs today, no gloves needed!" + skill_icon = "lightbulb" + activate_message = span_notice("Your feel like your pain receptors are less sensitive to hot objects.") + deactivate_message = span_notice("You feel like hot objects could stop you again...") + +/obj/item/skillchip/disk_verifier + name = "K33P-TH4T-D15K skillchip" + auto_traits = list(TRAIT_DISK_VERIFIER) + skill_name = "Nuclear Disk Verification" + skill_description = "Nuclear authentication disks have an extremely long serial number for verification. This skillchip stores that number, which allows the user to automatically spot forgeries." + skill_icon = "save" + activate_message = span_notice("You feel your mind automatically verifying long serial numbers on disk shaped objects.") + deactivate_message = span_notice("The innate recognition of absurdly long disk-related serial numbers fades from your mind.") + +/obj/item/skillchip/entrails_reader + name = "3NTR41LS skillchip" + auto_traits = list(TRAIT_ENTRAILS_READER) + skill_name = "Entrails Reader" + skill_description = "Be able to learn about a person's life, by looking at their internal organs. Not to be confused with looking into the future." + skill_icon = "lungs" + activate_message = span_notice("You feel that you know a lot about interpreting organs.") + deactivate_message = span_notice("Knowledge of liver damage, heart strain and lung scars fades from your mind.") + +/obj/item/skillchip/appraiser + name = "GENUINE ID Appraisal Now! skillchip" + auto_traits = list(TRAIT_ID_APPRAISER) + skill_name = "ID Appraisal" + skill_description = "Appraise an ID and see if it's issued from centcom, or just a cruddy station-printed one." + skill_icon = "magnifying-glass" + activate_message = span_notice("You feel that you can recognize special, minute details on ID cards.") + deactivate_message = span_notice("Was there something special about certain IDs?") + +/obj/item/skillchip/sabrage + name = "Le S48R4G3 skillchip" + auto_traits = list(TRAIT_SABRAGE_PRO) + skill_name = "Sabrage Proficiency" + skill_description = "Grants the user knowledge of the intricate structure of a champagne bottle's structural weakness at the neck, \ + improving their proficiency at being a show-off at officer parties." + skill_icon = "bottle-droplet" + activate_message = span_notice("You feel a new understanding of champagne bottles and methods on how to remove their corks.") + deactivate_message = span_notice("The knowledge of the subtle physics residing inside champagne bottles fades from your mind.") + +/obj/item/skillchip/brainwashing + name = "suspicious skillchip" + auto_traits = list(TRAIT_BRAINWASHING) + skill_name = "Brainwashing" + skill_description = "WARNING: The integrity of this chip is compromised. Please discard this skillchip." + skill_icon = "soap" + activate_message = span_notice("...But all at once it comes to you... something involving putting a brain in a washing machine?") + deactivate_message = span_warning("All knowledge of the secret brainwashing technique is GONE.") + +/obj/item/skillchip/brainwashing/examine(mob/user) + . = ..() + . += span_warning("It seems to have been corroded over time, putting this in your head may not be the best idea...") + +/obj/item/skillchip/brainwashing/on_activate(mob/living/carbon/user, silent = FALSE) + to_chat(user, span_danger("You get a pounding headache as the chip sends corrupt memories into your head!")) + user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20) + . = ..() + +/obj/item/skillchip/chefs_kiss + name = "K1SS skillchip" + auto_traits = list(TRAIT_CHEF_KISS) + skill_name = "Chef's Kiss" + skill_description = "Allows you to kiss food you've created to make them with love." + skill_icon = "cookie" + activate_message = span_notice("You recall learning from your grandmother how they baked their cookies with love.") + deactivate_message = span_notice("You forget all memories imparted upon you by your grandmother. Were they even your real grandma?") + +/obj/item/skillchip/intj + name = "Integrated Intuitive Thinking and Judging skillchip" + auto_traits = list(TRAIT_REMOTE_TASTING) + skill_name = "Mental Flavour Calculus" + skill_description = "When examining food, you can experience the flavours just as well as if you were eating it." + skill_icon = FA_ICON_DRUMSTICK_BITE + activate_message = span_notice("You think of your favourite food and realise that you can rotate its flavour in your mind.") + deactivate_message = span_notice("You feel your food-based mind palace crumbling...") + +/obj/item/skillchip/drunken_brawler + name = "F0RC3 4DD1CT10N skillchip" + auto_traits = list(TRAIT_DRUNKEN_BRAWLER) + skill_name = "Drunken Unarmed Proficiency" + skill_description = "When intoxicated, you gain increased unarmed effectiveness." + skill_icon = "wine-bottle" + activate_message = span_notice("You honestly could do with a drink. Never know when someone might try and jump you around here.") + deactivate_message = span_notice("You suddenly feel a lot safer going around the station sober... ") + +/obj/item/skillchip/master_angler + name = "Mast-Angl-Er skillchip" + auto_traits = list(TRAIT_REVEAL_FISH, TRAIT_EXAMINE_FISHING_SPOT, TRAIT_EXAMINE_FISH, TRAIT_EXAMINE_DEEPER_FISH) + skill_name = "Fisherman's Discernment" + skill_description = "Lists fishes when examining a fishing spot, gives a hint of whatever thing's biting the hook and more." + skill_icon = "fish" + activate_message = span_notice("You feel the knowledge and passion of several sunbaked, seasoned fishermen burn within you.") + deactivate_message = span_notice("You no longer feel like casting a fishing rod by the sunny riverside.") + + actions_types = list(/datum/action/cooldown/fishing_tip) + +/datum/action/cooldown/fishing_tip + name = "Dispense Fishing Tip" + desc = "Recall a pearl of wisdom about fishing." + button_icon = 'icons/hud/radial_fishing.dmi' + button_icon_state = "river" + background_icon_state = "bg_default" + overlay_icon_state = "bg_default_border" + cooldown_time = 2.5 SECONDS //enough time to skim through tips. + +/datum/action/cooldown/fishing_tip/Activate(atom/target_atom) + . = ..() + send_tip_of_the_round(owner, pick(GLOB.fishing_tips), source = "Ancient fishing wisdom") diff --git a/code/modules/library/skill_learning/generic_skillchips/musical.dm b/code/modules/library/skill_learning/generic_skillchips/musical.dm new file mode 100644 index 0000000000000..0eea811ffab77 --- /dev/null +++ b/code/modules/library/skill_learning/generic_skillchips/musical.dm @@ -0,0 +1,91 @@ +/obj/item/skillchip/musical + name = "\improper Old Copy of \"Space Station 13: The Musical\"" + desc = "An old copy of \"Space Station 13: The Musical\", \ + ran on the station's 100th anniversary...Or maybe it was the 200th?" + skill_name = "Memory of a Musical" + skill_description = "Allows you to hit that high note, like those that came a century before us." + skill_icon = FA_ICON_MUSIC + activate_message = span_notice("You feel like you could \u2669 sing a soooong! \u266B") + deactivate_message = span_notice("The musical fades from your mind, leaving you with a sense of nostalgia.") + custom_premium_price = PAYCHECK_CREW * 4 + +/obj/item/skillchip/musical/Initialize(mapload, is_removable) + . = ..() + name = replacetext(name, "Old", round(CURRENT_STATION_YEAR - pick(50, 100, 150, 200, 250), 5)) + +/obj/item/skillchip/musical/on_activate(mob/living/carbon/user, silent = FALSE) + . = ..() + RegisterSignal(user, COMSIG_MOB_SAY, PROC_REF(make_music)) + +/obj/item/skillchip/musical/on_deactivate(mob/living/carbon/user, silent) + . = ..() + UnregisterSignal(user, COMSIG_MOB_SAY) + +/obj/item/skillchip/musical/proc/make_music(mob/living/carbon/source, list/say_args) + SIGNAL_HANDLER + + var/raw_message = say_args[SPEECH_MESSAGE] + var/list/words = splittext(raw_message, " ") + if(length(words) <= 1) + say_args[SPEECH_MODS][MODE_SING] = TRUE + return + var/last_word = words[length(words)] + var/num_chars = length_char(last_word) + var/last_vowel = "" + // find the last vowel present in the word + for(var/i in 1 to num_chars) + var/char = copytext_char(last_word, i, i + 1) + if(char in VOWELS) + last_vowel = char + + // now we'll reshape the final word to make it sound like they're singing it + var/final_word = "" + var/has_ellipsis = copytext(last_word, -3) == "..." + for(var/i in 1 to num_chars) + var/char = copytext_char(last_word, i, i + 1) + // replacing any final periods with exclamation marks (so long as it's not an ellipsis) + if(char == "." && i == num_chars && !has_ellipsis) + final_word += "!" + // or if it's the vowel we found, we're gonna repeat it a few times (holding the note) + else if(char == last_vowel) + for(var/j in 1 to 4) + final_word += char + // if we dragged out the last character of the word, just period it + if(i == num_chars) + final_word += "." + // no special handing otherwise + else + final_word += char + + if(!has_ellipsis) + // adding an extra exclamation mark at the end if there's no period + var/last_char = copytext_char(final_word, -1) + if(last_char != ".") + final_word += "!" + + words[length(words)] = final_word + // now we siiiiiiing + say_args[SPEECH_MESSAGE] = jointext(words, " ") + say_args[SPEECH_MODS][MODE_SING] = TRUE + +/obj/item/skillchip/musical/examine(mob/user) + . = ..() + . += span_tinynoticeital("Huh, looks like it'd fit in a skillchip adapter.") + +/obj/item/skillchip/musical/examine_more(mob/user) + . = ..() + var/list/songs = list() + songs += "• \"The Ballad of Space Station 13\"" + songs += "• \"The Captain's Call\"" + songs += "• \"A Mime's Lament\"" + songs += "• \"Banned from Cargo\"" + songs += "• \"Botany Blues\"" + songs += "• \"Clown Song\"" + songs += "• \"Elegy to an Engineer\"" + songs += "• \"Medical Malpractitioner\"" + songs += "• \"Security Strike\"" + songs += "• \"Send for the Shuttle\"" + songs += "• And one song scratched out..." + + . += span_notice("On the back of the chip, you see a list of songs:") + . += span_smallnotice("[jointext(songs, "
")]
") diff --git a/code/modules/library/skill_learning/generic_skillchips/point.dm b/code/modules/library/skill_learning/generic_skillchips/point.dm index 761a482268952..ba6a2e3e236ec 100644 --- a/code/modules/library/skill_learning/generic_skillchips/point.dm +++ b/code/modules/library/skill_learning/generic_skillchips/point.dm @@ -11,25 +11,17 @@ activate_message = span_notice("From \"The Definitive Compendium of Body Language for the Aspiring Leader\", page 164, paragraph 3...") deactivate_message = span_notice("So, uh, yeah, how do I point at things again?") - ///The action for changing the pointer color - var/datum/action/change_pointer_color/action - -/obj/item/skillchip/big_pointer/Destroy() - action = null - return ..() + actions_types = list(/datum/action/change_pointer_color) /obj/item/skillchip/big_pointer/on_activate(mob/living/carbon/user, silent=FALSE) . = ..() RegisterSignal(user, COMSIG_MOVABLE_POINTED, PROC_REF(fancier_pointer)) - if(!action) - action = new(src) - action.Grant(user) /obj/item/skillchip/big_pointer/on_deactivate(mob/living/carbon/user, silent=FALSE) UnregisterSignal(user, COMSIG_MOVABLE_POINTED) + var/datum/action/change_pointer_color/action = locate() in actions action?.arrow_color = null action?.arrow_overlay = null - action?.Remove(user) return ..() /obj/item/skillchip/big_pointer/proc/fancier_pointer(mob/living/user, atom/pointed, obj/effect/temp_visual/point/point) @@ -37,6 +29,7 @@ if(HAS_TRAIT(user, TRAIT_UNKNOWN)) return point.cut_overlays() + var/datum/action/change_pointer_color/action = locate() in actions if(!action.arrow_color) point.icon_state = "arrow_large" return diff --git a/code/modules/library/skill_learning/generic_skillchips/rod_suplex.dm b/code/modules/library/skill_learning/job_skillchips/research_director.dm similarity index 100% rename from code/modules/library/skill_learning/generic_skillchips/rod_suplex.dm rename to code/modules/library/skill_learning/job_skillchips/research_director.dm diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index 10139585dd9a7..eddaf300e08a9 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -48,6 +48,10 @@ . = ..() removable = is_removable +///We don't grant actions outside of being activated when implanted +/obj/item/skillchip/item_action_slot_check(slot, mob/user, datum/action/action) + return FALSE + /** * Activates the skillchip, if possible. * @@ -150,6 +154,9 @@ active = TRUE + for(var/datum/action/action as anything in actions) + action.Grant(user) + COOLDOWN_START(src, chip_cooldown, cooldown) /** @@ -185,6 +192,9 @@ active = FALSE + for(var/datum/action/action as anything in actions) + action.Remove(user) + COOLDOWN_START(src, chip_cooldown, cooldown) /** @@ -369,236 +379,3 @@ removable = metadata["removable"] return active_msg - -/obj/item/skillchip/basketweaving - name = "Basketsoft 3000 skillchip" - desc = "Underwater edition." - auto_traits = list(TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE) - skill_name = "Underwater Basketweaving" - skill_description = "Master intricate art of using twine to create perfect baskets while submerged." - skill_icon = "shopping-basket" - activate_message = span_notice("You're one with the twine and the sea.") - deactivate_message = span_notice("Higher mysteries of underwater basketweaving leave your mind.") - -/obj/item/skillchip/wine_taster - name = "WINE skillchip" - desc = "Wine.Is.Not.Equal version 5." - auto_traits = list(TRAIT_WINE_TASTER) - skill_name = "Wine Tasting" - skill_description = "Recognize wine vintage from taste alone. Never again lack an opinion when presented with an unknown drink." - skill_icon = "wine-bottle" - activate_message = span_notice("You recall wine taste.") - deactivate_message = span_notice("Your memories of wine evaporate.") - -/obj/item/skillchip/bonsai - name = "Hedge 3 skillchip" - auto_traits = list(TRAIT_BONSAI) - skill_name = "Hedgetrimming" - skill_description = "Trim hedges and potted plants into marvelous new shapes with any old knife. Not applicable to plastic plants." - skill_icon = "spa" - activate_message = span_notice("Your mind is filled with plant arrangments.") - deactivate_message = span_notice("You can't remember what a hedge looks like anymore.") - -/obj/item/skillchip/useless_adapter - name = "Skillchip adapter" - skill_name = "Useless adapter" - skill_description = "Allows you to insert another skillchip into this adapter after it has been inserted into your brain..." - skill_icon = "plug" - activate_message = span_notice("You can now activate another chip through this adapter, but you're not sure why you did this...") - deactivate_message = span_notice("You no longer have the useless skillchip adapter.") - skillchip_flags = SKILLCHIP_ALLOWS_MULTIPLE - // Literally does nothing. - complexity = 0 - slot_use = 0 - -/obj/item/skillchip/light_remover - name = "N16H7M4R3 skillchip" - auto_traits = list(TRAIT_LIGHTBULB_REMOVER) - skill_name = "Lightbulb Removing" - skill_description = "Stop failing taking out lightbulbs today, no gloves needed!" - skill_icon = "lightbulb" - activate_message = span_notice("Your feel like your pain receptors are less sensitive to hot objects.") - deactivate_message = span_notice("You feel like hot objects could stop you again...") - -/obj/item/skillchip/disk_verifier - name = "K33P-TH4T-D15K skillchip" - auto_traits = list(TRAIT_DISK_VERIFIER) - skill_name = "Nuclear Disk Verification" - skill_description = "Nuclear authentication disks have an extremely long serial number for verification. This skillchip stores that number, which allows the user to automatically spot forgeries." - skill_icon = "save" - activate_message = span_notice("You feel your mind automatically verifying long serial numbers on disk shaped objects.") - deactivate_message = span_notice("The innate recognition of absurdly long disk-related serial numbers fades from your mind.") - -/obj/item/skillchip/entrails_reader - name = "3NTR41LS skillchip" - auto_traits = list(TRAIT_ENTRAILS_READER) - skill_name = "Entrails Reader" - skill_description = "Be able to learn about a person's life, by looking at their internal organs. Not to be confused with looking into the future." - skill_icon = "lungs" - activate_message = span_notice("You feel that you know a lot about interpreting organs.") - deactivate_message = span_notice("Knowledge of liver damage, heart strain and lung scars fades from your mind.") - -/obj/item/skillchip/appraiser - name = "GENUINE ID Appraisal Now! skillchip" - auto_traits = list(TRAIT_ID_APPRAISER) - skill_name = "ID Appraisal" - skill_description = "Appraise an ID and see if it's issued from centcom, or just a cruddy station-printed one." - skill_icon = "magnifying-glass" - activate_message = span_notice("You feel that you can recognize special, minute details on ID cards.") - deactivate_message = span_notice("Was there something special about certain IDs?") - -/obj/item/skillchip/sabrage - name = "Le S48R4G3 skillchip" - auto_traits = list(TRAIT_SABRAGE_PRO) - skill_name = "Sabrage Proficiency" - skill_description = "Grants the user knowledge of the intricate structure of a champagne bottle's structural weakness at the neck, \ - improving their proficiency at being a show-off at officer parties." - skill_icon = "bottle-droplet" - activate_message = span_notice("You feel a new understanding of champagne bottles and methods on how to remove their corks.") - deactivate_message = span_notice("The knowledge of the subtle physics residing inside champagne bottles fades from your mind.") - -/obj/item/skillchip/brainwashing - name = "suspicious skillchip" - auto_traits = list(TRAIT_BRAINWASHING) - skill_name = "Brainwashing" - skill_description = "WARNING: The integrity of this chip is compromised. Please discard this skillchip." - skill_icon = "soap" - activate_message = span_notice("...But all at once it comes to you... something involving putting a brain in a washing machine?") - deactivate_message = span_warning("All knowledge of the secret brainwashing technique is GONE.") - -/obj/item/skillchip/brainwashing/examine(mob/user) - . = ..() - . += span_warning("It seems to have been corroded over time, putting this in your head may not be the best idea...") - -/obj/item/skillchip/brainwashing/on_activate(mob/living/carbon/user, silent = FALSE) - to_chat(user, span_danger("You get a pounding headache as the chip sends corrupt memories into your head!")) - user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20) - . = ..() - -/obj/item/skillchip/chefs_kiss - name = "K1SS skillchip" - auto_traits = list(TRAIT_CHEF_KISS) - skill_name = "Chef's Kiss" - skill_description = "Allows you to kiss food you've created to make them with love." - skill_icon = "cookie" - activate_message = span_notice("You recall learning from your grandmother how they baked their cookies with love.") - deactivate_message = span_notice("You forget all memories imparted upon you by your grandmother. Were they even your real grandma?") - -/obj/item/skillchip/master_angler - name = "Mast-Angl-Er skillchip" - auto_traits = list(TRAIT_REVEAL_FISH, TRAIT_EXAMINE_FISHING_SPOT, TRAIT_EXAMINE_FISH, TRAIT_EXAMINE_DEEPER_FISH) - skill_name = "Fisherman's Discernment" - skill_description = "Lists fishes when examining a fishing spot, gives a hint of whatever thing's biting the hook and more." - skill_icon = "fish" - activate_message = span_notice("You feel the knowledge and passion of several sunbaked, seasoned fishermen burn within you.") - deactivate_message = span_notice("You no longer feel like casting a fishing rod by the sunny riverside.") - -/obj/item/skillchip/intj - name = "Integrated Intuitive Thinking and Judging skillchip" - auto_traits = list(TRAIT_REMOTE_TASTING) - skill_name = "Mental Flavour Calculus" - skill_description = "When examining food, you can experience the flavours just as well as if you were eating it." - skill_icon = FA_ICON_DRUMSTICK_BITE - activate_message = span_notice("You think of your favourite food and realise that you can rotate its flavour in your mind.") - deactivate_message = span_notice("You feel your food-based mind palace crumbling...") - -/obj/item/skillchip/drunken_brawler - name = "F0RC3 4DD1CT10N skillchip" - auto_traits = list(TRAIT_DRUNKEN_BRAWLER) - skill_name = "Drunken Unarmed Proficiency" - skill_description = "When intoxicated, you gain increased unarmed effectiveness." - skill_icon = "wine-bottle" - activate_message = span_notice("You honestly could do with a drink. Never know when someone might try and jump you around here.") - deactivate_message = span_notice("You suddenly feel a lot safer going around the station sober... ") - -/obj/item/skillchip/musical - name = "\improper Old Copy of \"Space Station 13: The Musical\"" - desc = "An old copy of \"Space Station 13: The Musical\", \ - ran on the station's 100th anniversary...Or maybe it was the 200th?" - skill_name = "Memory of a Musical" - skill_description = "Allows you to hit that high note, like those that came a century before us." - skill_icon = FA_ICON_MUSIC - activate_message = span_notice("You feel like you could \u2669 sing a soooong! \u266B") - deactivate_message = span_notice("The musical fades from your mind, leaving you with a sense of nostalgia.") - custom_premium_price = PAYCHECK_CREW * 4 - -/obj/item/skillchip/musical/Initialize(mapload, is_removable) - . = ..() - name = replacetext(name, "Old", round(CURRENT_STATION_YEAR - pick(50, 100, 150, 200, 250), 5)) - -/obj/item/skillchip/musical/on_activate(mob/living/carbon/user, silent = FALSE) - . = ..() - RegisterSignal(user, COMSIG_MOB_SAY, PROC_REF(make_music)) - -/obj/item/skillchip/musical/on_deactivate(mob/living/carbon/user, silent) - . = ..() - UnregisterSignal(user, COMSIG_MOB_SAY) - -/obj/item/skillchip/musical/proc/make_music(mob/living/carbon/source, list/say_args) - SIGNAL_HANDLER - - var/raw_message = say_args[SPEECH_MESSAGE] - var/list/words = splittext(raw_message, " ") - if(length(words) <= 1) - say_args[SPEECH_MODS][MODE_SING] = TRUE - return - var/last_word = words[length(words)] - var/num_chars = length_char(last_word) - var/last_vowel = "" - // find the last vowel present in the word - for(var/i in 1 to num_chars) - var/char = copytext_char(last_word, i, i + 1) - if(char in VOWELS) - last_vowel = char - - // now we'll reshape the final word to make it sound like they're singing it - var/final_word = "" - var/has_ellipsis = copytext(last_word, -3) == "..." - for(var/i in 1 to num_chars) - var/char = copytext_char(last_word, i, i + 1) - // replacing any final periods with exclamation marks (so long as it's not an ellipsis) - if(char == "." && i == num_chars && !has_ellipsis) - final_word += "!" - // or if it's the vowel we found, we're gonna repeat it a few times (holding the note) - else if(char == last_vowel) - for(var/j in 1 to 4) - final_word += char - // if we dragged out the last character of the word, just period it - if(i == num_chars) - final_word += "." - // no special handing otherwise - else - final_word += char - - if(!has_ellipsis) - // adding an extra exclamation mark at the end if there's no period - var/last_char = copytext_char(final_word, -1) - if(last_char != ".") - final_word += "!" - - words[length(words)] = final_word - // now we siiiiiiing - say_args[SPEECH_MESSAGE] = jointext(words, " ") - say_args[SPEECH_MODS][MODE_SING] = TRUE - -/obj/item/skillchip/musical/examine(mob/user) - . = ..() - . += span_tinynoticeital("Huh, looks like it'd fit in a skillchip adapter.") - -/obj/item/skillchip/musical/examine_more(mob/user) - . = ..() - var/list/songs = list() - songs += "• \"The Ballad of Space Station 13\"" - songs += "• \"The Captain's Call\"" - songs += "• \"A Mime's Lament\"" - songs += "• \"Banned from Cargo\"" - songs += "• \"Botany Blues\"" - songs += "• \"Clown Song\"" - songs += "• \"Elegy to an Engineer\"" - songs += "• \"Medical Malpractitioner\"" - songs += "• \"Security Strike\"" - songs += "• \"Send for the Shuttle\"" - songs += "• And one song scratched out..." - - . += span_notice("On the back of the chip, you see a list of songs:") - . += span_smallnotice("[jointext(songs, "
")]
") diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index 03e53ff6f8ab1..f2c3be931436a 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -1,3 +1,6 @@ +/// Cached global list of generated lighting sheets. See: datum/light_source/proc/get_sheet() +GLOBAL_LIST_EMPTY(lighting_sheets) + // This is where the fun begins. // These are the main datums that emit light. @@ -223,16 +226,15 @@ /// If the requested sheet is multiz, this will be 3 lists deep, first handling z level then x and y /// otherwise it's just two, x then y /datum/light_source/proc/get_sheet(multiz = FALSE) - var/list/static/key_to_sheet = list() var/range = max(1, light_range); var/key = "[range]-[visual_offset]-[offset_x]-[offset_y]-[light_dir]-[light_angle]-[light_height]-[multiz]" - var/list/hand_back = key_to_sheet[key] + var/list/hand_back = GLOB.lighting_sheets[key] if(!hand_back) if(multiz) hand_back = generate_sheet_multiz(range, visual_offset, offset_x, offset_y, light_dir, light_angle, light_height) else hand_back = generate_sheet(range, visual_offset, offset_x, offset_y, light_dir, light_angle, light_height) - key_to_sheet[key] = hand_back + GLOB.lighting_sheets[key] = hand_back return hand_back /// Returns a list of lists that encodes the light falloff of our source diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index 1181dcb93a14f..7cf3b9b81dd9c 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -9,7 +9,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) w_class = WEIGHT_CLASS_SMALL resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //SKYRAT EDIT ADDITION - GHOST HOTEL UPDATE + EXTRA STUFF - var/list/static/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library") + var/static/list/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library") //standart - hilber's hotel room //apartment - see /datum/map_template/ghost_cafe_rooms //beach condo - Beach themed apartment diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index 4987016c5a074..d6ac3ac4f9424 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -31,7 +31,7 @@ testing("Ruin \"[name]\" placed at ([central_turf.x], [central_turf.y], [central_turf.z])") if(clear_below) - var/list/static/clear_below_typecache = typecacheof(list( + var/static/list/clear_below_typecache = typecacheof(list( /obj/structure/spawner, /mob/living/simple_animal, /obj/structure/flora diff --git a/code/modules/meteors/meteor_spawning.dm b/code/modules/meteors/meteor_spawning.dm index 83b1c9533c577..17e4746753522 100644 --- a/code/modules/meteors/meteor_spawning.dm +++ b/code/modules/meteors/meteor_spawning.dm @@ -4,7 +4,7 @@ for(var/i in 1 to number) spawn_meteor(meteor_types, direction) -/proc/spawn_meteor(list/meteor_types, direction, atom/target) +/proc/spawn_meteor(list/meteor_types, direction, atom/target, distance_from_edge = 0) if (SSmapping.is_planetary()) stack_trace("Tried to spawn meteors in a map which isn't in space.") return // We're not going to find any space turfs here @@ -18,7 +18,7 @@ else start_side = pick(GLOB.cardinals) var/start_Z = pick(SSmapping.levels_by_trait(ZTRAIT_STATION)) - picked_start = spaceDebrisStartLoc(start_side, start_Z) + picked_start = spaceDebrisStartLoc(start_side, start_Z, distance_from_edge) if(target) if(!isturf(target)) target = get_turf(target) @@ -31,22 +31,22 @@ var/new_meteor = pick_weight(meteor_types) new new_meteor(picked_start, picked_goal) -/proc/spaceDebrisStartLoc(start_side, Z) +/proc/spaceDebrisStartLoc(start_side, Z, distance_from_edge = 0) var/starty var/startx switch(start_side) if(NORTH) - starty = world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD) - startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD)) + starty = world.maxy - (TRANSITIONEDGE + MAP_EDGE_PAD) - distance_from_edge + startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge)) if(EAST) - starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD),world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD)) - startx = world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD) + starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge),world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge)) + startx = world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD) - distance_from_edge if(SOUTH) - starty = (TRANSITIONEDGE + MAP_EDGE_PAD) - startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD)) + starty = (TRANSITIONEDGE + MAP_EDGE_PAD) + distance_from_edge + startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge)) if(WEST) - starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD)) - startx = (TRANSITIONEDGE + MAP_EDGE_PAD) + starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge), world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD + distance_from_edge)) + startx = (TRANSITIONEDGE + MAP_EDGE_PAD) + distance_from_edge . = locate(startx, starty, Z) /proc/spaceDebrisFinishLoc(startSide, Z) diff --git a/code/modules/mining/boulder_processing/boulder_types.dm b/code/modules/mining/boulder_processing/boulder_types.dm index 366c5b21c4259..6d0d58a1be2b8 100644 --- a/code/modules/mining/boulder_processing/boulder_types.dm +++ b/code/modules/mining/boulder_processing/boulder_types.dm @@ -38,7 +38,7 @@ . = ..() /// Static list of all minerals to populate gulag boulders with. - var/list/static/gulag_minerals = list( + var/static/list/gulag_minerals = list( /datum/material/diamond = 1, /datum/material/gold = 8, /datum/material/iron = 95, @@ -59,7 +59,7 @@ . = ..() /// Static list of all minerals to populate gulag boulders with, but with bluespace added where safe. - var/list/static/expanded_gulag_minerals = list( + var/static/list/expanded_gulag_minerals = list( /datum/material/bluespace = 1, /datum/material/diamond = 1, /datum/material/gold = 8, diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index af31d32719f14..c2dffd37ee533 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -61,7 +61,6 @@ actions_types = list(/datum/action/item_action/adjust) armor_type = /datum/armor/gas_explorer resistance_flags = FIRE_PROOF - has_fov = FALSE /datum/armor/gas_explorer melee = 10 @@ -293,6 +292,7 @@ /obj/item/clothing/suit/hooded/cloak/godslayer/Initialize(mapload) . = ..() allowed = GLOB.mining_suit_allowed + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) /obj/item/clothing/head/hooded/cloakhood/godslayer name = "godslayer helm" diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm index 2b14dfcc93ea9..6446ebc343244 100644 --- a/code/modules/mining/lavaland/tendril_loot.dm +++ b/code/modules/mining/lavaland/tendril_loot.dm @@ -737,6 +737,7 @@ . = ..() ADD_TRAIT(src, TRAIT_NODROP, LOCKED_HELMET_TRAIT) AddComponent(/datum/component/armor_plate, maxamount = 1, upgrade_item = /obj/item/drake_remains, armor_mod = /datum/armor/drake_empowerment, upgrade_prefix = "empowered") + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) /obj/item/clothing/head/hooded/berserker/examine() . = ..() diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index e7075ed508f27..70d73f49daa98 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -77,7 +77,8 @@ INITIALIZE_IMMEDIATE(/mob/dead) var/client/C = client to_chat(C, span_notice("Sending you to [pick].")) - new /atom/movable/screen/splash(null, null, C) + var/atom/movable/screen/splash/S = new(null, null, C) + S.Fade(FALSE) ADD_TRAIT(src, TRAIT_NO_TRANSFORM, SERVER_HOPPER_TRAIT) sleep(2.9 SECONDS) //let the animation play diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 5b1cf278a6468..a8846f2ae5f1f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1079,31 +1079,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/proc/tray_view() set category = "Ghost" - set name = "T-ray view" - set desc = "Toggles a view of sub-floor objects" + set name = "T-ray scan" + set desc = "Perfom a scan to view sub-floor objects" - var/static/t_ray_view = FALSE - if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder && !t_ray_view) + if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder) to_chat(usr, span_notice("That verb is currently globally disabled.")) return - t_ray_view = !t_ray_view - - var/list/t_ray_images = list() - var/static/list/stored_t_ray_images = list() - for(var/obj/O in orange(client.view, src) ) - if(HAS_TRAIT(O, TRAIT_T_RAY_VISIBLE)) - var/image/I = new(loc = get_turf(O)) - var/mutable_appearance/MA = new(O) - MA.alpha = 128 - MA.dir = O.dir - I.appearance = MA - t_ray_images += I - stored_t_ray_images += t_ray_images - if(length(t_ray_images)) - if(t_ray_view) - client.images += t_ray_images - else - client.images -= stored_t_ray_images + + t_ray_scan(src) /mob/dead/observer/default_lighting_cutoff() var/datum/preferences/prefs = client?.prefs diff --git a/code/modules/mob/living/basic/drone/drone_tools.dm b/code/modules/mob/living/basic/drone/drone_tools.dm index 6f3f79bff506e..b55b438362a9d 100644 --- a/code/modules/mob/living/basic/drone/drone_tools.dm +++ b/code/modules/mob/living/basic/drone/drone_tools.dm @@ -3,31 +3,14 @@ desc = "Access your built-in tools." icon = 'icons/hud/screen_drone.dmi' icon_state = "tool_storage" + storage_type = /datum/storage/drone item_flags = ABSTRACT resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF /obj/item/storage/drone_tools/Initialize(mapload) . = ..() - ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) - - var/static/list/drone_builtins = list( - /obj/item/crowbar/drone, - /obj/item/screwdriver/drone, - /obj/item/wrench/drone, - /obj/item/weldingtool/drone, - /obj/item/wirecutters/drone, - /obj/item/multitool/drone, - /obj/item/pipe_dispenser/drone, - /obj/item/t_scanner/drone, - /obj/item/analyzer/drone, - /obj/item/soap/drone, - ) - atom_storage.max_total_storage = 40 - atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL - atom_storage.max_slots = 10 - atom_storage.do_rustle = FALSE - atom_storage.set_holdable(drone_builtins) + ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) /obj/item/storage/drone_tools/PopulateContents() var/list/builtintools = list() @@ -44,8 +27,6 @@ for(var/obj/item/tool as anything in builtintools) tool.AddComponent(/datum/component/holderloving, src, TRUE) - ADD_TRAIT(tool, TRAIT_NODROP, REF(src)) - /obj/item/crowbar/drone name = "built-in crowbar" diff --git a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm index 3c2aae36bc1d0..53f9c618c637b 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm @@ -100,13 +100,8 @@ return ..() /mob/living/basic/bee/death(gibbed) - if(beehome) - beehome.bees -= src - beehome = null - beegent = null - if(flags_1 & HOLOGRAM_1 || gibbed) - return ..() - spawn_corpse() + if(!(flags_1 & HOLOGRAM_1) && !gibbed) + spawn_corpse() return ..() /// Leave something to remember us by diff --git a/code/modules/mob/living/basic/farm_animals/chicken/chick.dm b/code/modules/mob/living/basic/farm_animals/chicken/chick.dm index 9e4af384aeeff..7ddf86b0cfb7f 100644 --- a/code/modules/mob/living/basic/farm_animals/chicken/chick.dm +++ b/code/modules/mob/living/basic/farm_animals/chicken/chick.dm @@ -33,6 +33,18 @@ /// What we grow into. var/grow_as = /mob/living/basic/chicken +/datum/emote/chick + mob_type_allowed_typecache = /mob/living/basic/chick + mob_type_blacklist_typecache = list() + +/datum/emote/chick/chirp + key = "chirp" + key_third_person = "chirps" + message = "chirps!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/chicken/chick_peep.ogg' + /mob/living/basic/chick/Initialize(mapload) . = ..() pixel_x = base_pixel_x + rand(-6, 6) @@ -40,7 +52,7 @@ ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "chirps!") + AddElement(/datum/element/pet_bonus, "chirp") AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) diff --git a/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm b/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm index 9508f8fae3be6..4f83608b9d64c 100644 --- a/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm +++ b/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm @@ -38,12 +38,24 @@ GLOBAL_VAR_INIT(chicken_count, 0) ///boolean deciding whether eggs laid by this chicken can hatch into chicks var/fertile = TRUE +/datum/emote/chicken + mob_type_allowed_typecache = /mob/living/basic/chicken + mob_type_blacklist_typecache = list() + +/datum/emote/chicken/cluck + key = "cluck" + key_third_person = "clucks" + message = "clucks happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/chicken/bagawk.ogg' + /mob/living/basic/chicken/Initialize(mapload) . = ..() GLOB.chicken_count++ ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "clucks happily!") + AddElement(/datum/element/pet_bonus, "cluck") AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) AddElement(/datum/element/animal_variety, "chicken", pick("brown", "black", "white"), modify_pixels = TRUE) 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 fadac576ea599..5c771e72bad15 100644 --- a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm +++ b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm @@ -36,13 +36,25 @@ /// What kind of juice do we produce? var/milked_reagent = /datum/reagent/consumable/milk +/datum/emote/cow + mob_type_allowed_typecache = /mob/living/basic/cow + mob_type_blacklist_typecache = list() + +/datum/emote/cow/moo + key = "moo" + key_third_person = "moos" + message = "moos happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/cow/cow.ogg' + /mob/living/basic/cow/Initialize(mapload) AddComponent(/datum/component/tippable, \ tip_time = 0.5 SECONDS, \ untip_time = 0.5 SECONDS, \ self_right_time = rand(25 SECONDS, 50 SECONDS), \ post_tipped_callback = CALLBACK(src, PROC_REF(after_cow_tipped))) - AddElement(/datum/element/pet_bonus, "moos happily!") + AddElement(/datum/element/pet_bonus, "moo") AddElement(/datum/element/swabable, CELL_LINE_TABLE_COW, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) setup_udder() setup_eating() diff --git a/code/modules/mob/living/basic/farm_animals/cow/cow_ai.dm b/code/modules/mob/living/basic/farm_animals/cow/cow_ai.dm index e1e611a28c2a8..cedc39f64f3fc 100644 --- a/code/modules/mob/living/basic/farm_animals/cow/cow_ai.dm +++ b/code/modules/mob/living/basic/farm_animals/cow/cow_ai.dm @@ -1,6 +1,6 @@ /datum/ai_controller/basic_controller/cow blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_BASIC_MOB_TIP_REACTING = FALSE, BB_BASIC_MOB_TIPPER = null, ) @@ -11,7 +11,5 @@ planning_subtrees = list( /datum/ai_planning_subtree/tip_reaction, /datum/ai_planning_subtree/find_food, - //attacking the food will eat it - /datum/ai_planning_subtree/basic_melee_attack_subtree, /datum/ai_planning_subtree/random_speech/cow, ) diff --git a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_ai.dm b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_ai.dm index 28a727fdb1bce..de55865b5fada 100644 --- a/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_ai.dm +++ b/code/modules/mob/living/basic/farm_animals/gorilla/gorilla_ai.dm @@ -1,7 +1,7 @@ /// Pretty basic, just click people to death. Also hunt and eat bananas. /datum/ai_controller/basic_controller/gorilla blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_TARGET_MINIMUM_STAT = UNCONSCIOUS, BB_EMOTE_KEY = "ooga", BB_EMOTE_CHANCE = 40, @@ -13,10 +13,10 @@ planning_subtrees = list( /datum/ai_planning_subtree/run_emote, - /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/simple_find_target, /datum/ai_planning_subtree/attack_obstacle_in_path/gorilla, /datum/ai_planning_subtree/basic_melee_attack_subtree, + /datum/ai_planning_subtree/find_food, ) /datum/ai_planning_subtree/attack_obstacle_in_path/gorilla diff --git a/code/modules/mob/living/basic/farm_animals/pig.dm b/code/modules/mob/living/basic/farm_animals/pig.dm index d0fbb5a82473a..c3cfc57ac0522 100644 --- a/code/modules/mob/living/basic/farm_animals/pig.dm +++ b/code/modules/mob/living/basic/farm_animals/pig.dm @@ -28,9 +28,20 @@ blood_volume = BLOOD_VOLUME_NORMAL ai_controller = /datum/ai_controller/basic_controller/pig +/datum/emote/pig + mob_type_allowed_typecache = /mob/living/basic/pig + mob_type_blacklist_typecache = list() + +/datum/emote/pig/oink + key = "oink" + key_third_person = "oinks" + message = "oinks!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = SFX_PIG_OINK /mob/living/basic/pig/Initialize(mapload) . = ..() - AddElement(/datum/element/pet_bonus, "oinks!") + AddElement(/datum/element/pet_bonus, "oink") AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) make_tameable() diff --git a/code/modules/mob/living/basic/farm_animals/pony.dm b/code/modules/mob/living/basic/farm_animals/pony.dm index 29672e032c84b..a39fd328f1116 100644 --- a/code/modules/mob/living/basic/farm_animals/pony.dm +++ b/code/modules/mob/living/basic/farm_animals/pony.dm @@ -33,11 +33,23 @@ /// Greyscale color config; 1st color is body, 2nd is mane var/list/ponycolors = list("#cc8c5d", "#cc8c5d") +/datum/emote/pony + mob_type_allowed_typecache = /mob/living/basic/pony + mob_type_blacklist_typecache = list() + +/datum/emote/pony/whicker + key = "whicker" + key_third_person = "whickers" + message = "whickers." + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/pony/snort.ogg' + /mob/living/basic/pony/Initialize(mapload) . = ..() apply_colour() - AddElement(/datum/element/pet_bonus, "whickers.") + AddElement(/datum/element/pet_bonus, "whicker") AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) AddElementTrait(TRAIT_WADDLING, INNATE_TRAIT, /datum/element/waddling) diff --git a/code/modules/mob/living/basic/farm_animals/rabbit.dm b/code/modules/mob/living/basic/farm_animals/rabbit.dm index dec48ea8be4af..c667ac311cdf9 100644 --- a/code/modules/mob/living/basic/farm_animals/rabbit.dm +++ b/code/modules/mob/living/basic/farm_animals/rabbit.dm @@ -39,10 +39,20 @@ /// passed to animal_varity as the prefix icon. var/icon_prefix = "rabbit" +/datum/emote/rabbit + mob_type_allowed_typecache = /mob/living/basic/rabbit + mob_type_blacklist_typecache = list() + +/datum/emote/rabbit + key = "hop" + key_third_person = "hops" + message = "hops around happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/rabbit/Initialize(mapload) . = ..() AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "hops around happily!") + AddElement(/datum/element/pet_bonus, "hop") AddElement(/datum/element/animal_variety, icon_prefix, pick("brown", "black", "white"), TRUE) if(prob(20)) // bunny name = "bunny" diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath_ai.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath_ai.dm index 86ba1e003208f..3bf9d1d8f335a 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/goliath_ai.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/goliath_ai.dm @@ -3,7 +3,7 @@ /datum/ai_controller/basic_controller/goliath blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_TARGET_MINIMUM_STAT = HARD_CRIT, ) diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm index b4de3d2321fe6..625dc4af90726 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity.dm @@ -157,6 +157,17 @@ /// Were we tamed? If yes, tame the mob we become when we grow up too. var/was_tamed = FALSE +/datum/emote/lobstrosity_juvenile + mob_type_allowed_typecache = /mob/living/basic/mining/lobstrosity/juvenile + mob_type_blacklist_typecache = list() + +/datum/emote/lobstrosity_juvenile/chitter + key = "chitter" + key_third_person = "chitters" + message = "chitters pleasantly!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + sound = 'sound/mobs/non-humanoids/insect/chitter.ogg' + /mob/living/basic/mining/lobstrosity/juvenile/Initialize(mapload) . = ..() var/growth_step = 1000/(7 MINUTES) //It should take 7-ish minutes if you keep the happiness above 40% and at most 12 @@ -203,7 +214,7 @@ . = ..() was_tamed = TRUE // They are more pettable I guess - AddElement(/datum/element/pet_bonus, "chitters pleasantly!") + AddElement(/datum/element/pet_bonus, "chitter") REMOVE_TRAIT(src, TRAIT_MOB_HIDE_HAPPINESS, INNATE_TRAIT) /mob/living/basic/mining/lobstrosity/juvenile/proc/ready_to_grow() diff --git a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity_ai.dm b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity_ai.dm index de62b43e4a054..de6ca4a0cc1b4 100644 --- a/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity_ai.dm +++ b/code/modules/mob/living/basic/lavaland/lobstrosity/lobstrosity_ai.dm @@ -7,7 +7,7 @@ /datum/ai_controller/basic_controller/lobstrosity blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_TARGET_MINIMUM_STAT = HARD_CRIT, BB_LOBSTROSITY_EXPLOIT_TRAITS = list(TRAIT_INCAPACITATED, TRAIT_FLOORED, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT), @@ -45,7 +45,7 @@ ///Ensure that juveline lobstrosities witll charge at things they can reach. /datum/ai_controller/basic_controller/lobstrosity/juvenile blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_TARGET_MINIMUM_STAT = SOFT_CRIT, BB_LOBSTROSITY_EXPLOIT_TRAITS = list(TRAIT_INCAPACITATED, TRAIT_FLOORED, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT), 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 8178df7b78c24..d9bada12ee8db 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 @@ -1,5 +1,3 @@ -#define NEXT_EAT_COOLDOWN 45 SECONDS - /datum/ai_controller/basic_controller/raptor blackboard = list( BB_INTERACTIONS_WITH_OWNER = list( @@ -34,16 +32,9 @@ /datum/ai_planning_subtree/find_and_hunt_target/play_with_owner/raptor, ) -/datum/ai_controller/basic_controller/raptor/TryPossessPawn(atom/new_pawn) +/datum/ai_controller/basic_controller/raptor/on_mob_eat() . = ..() - if(. & AI_CONTROLLER_INCOMPATIBLE) - return - RegisterSignal(new_pawn, COMSIG_MOB_ATE, PROC_REF(post_eat)) - -/datum/ai_controller/basic_controller/raptor/proc/post_eat() - SIGNAL_HANDLER clear_blackboard_key(BB_RAPTOR_TROUGH_TARGET) - set_blackboard_key(BB_RAPTOR_EAT_COOLDOWN, world.time + NEXT_EAT_COOLDOWN) /datum/ai_controller/basic_controller/baby_raptor blackboard = list( @@ -62,5 +53,3 @@ /datum/ai_planning_subtree/express_happiness, /datum/ai_planning_subtree/look_for_adult, ) - -#undef NEXT_EAT_COOLDOWN 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 a8d91963ebfb7..2b88cc3282bd0 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 @@ -56,7 +56,7 @@ hunt_range = 9 /datum/ai_planning_subtree/find_and_hunt_target/raptor_trough/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) - if(world.time < controller.blackboard[BB_RAPTOR_EAT_COOLDOWN]) + if(world.time < controller.blackboard[BB_NEXT_FOOD_EAT]) return return ..() diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm index 7394d1fd5c5d8..d62edcceebede 100644 --- a/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/code/modules/mob/living/basic/pets/cat/cat.dm @@ -45,6 +45,14 @@ /obj/item/food/deadmouse, /obj/item/food/fishmeat, ) + ///list of pet commands we follow + var/static/list/pet_commands = list( + /datum/pet_command/idle, + /datum/pet_command/free, + /datum/pet_command/follow, + /datum/pet_command/perform_trick_sequence, + ) + ///item we are currently holding var/obj/item/held_food ///mutable appearance for held item @@ -74,10 +82,11 @@ /mob/living/basic/pet/cat/Initialize(mapload) . = ..() + AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/cultist_pet, pet_cult_icon_state = cult_icon_state) AddElement(/datum/element/wears_collar, collar_icon_state = collar_icon_state, collar_resting_icon_state = TRUE) AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, null, /datum/mood_event/pet_animal, "purr") + AddElement(/datum/element/pet_bonus, "purr", /datum/mood_event/pet_animal) AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) add_cell_sample() add_verb(src, /mob/living/proc/toggle_resting) @@ -224,3 +233,9 @@ name = "Jerry" desc = "Tom is VERY amused." gender = MALE + +/mob/living/basic/pet/cat/tabby + icon_state = "cat" + icon_living = "cat" + icon_dead = "cat_dead" + held_state = "cat" diff --git a/code/modules/mob/living/basic/pets/cat/cat_ai.dm b/code/modules/mob/living/basic/pets/cat/cat_ai.dm index 8dde10495681d..2a2d3204bad5f 100644 --- a/code/modules/mob/living/basic/pets/cat/cat_ai.dm +++ b/code/modules/mob/living/basic/pets/cat/cat_ai.dm @@ -1,6 +1,7 @@ /datum/ai_controller/basic_controller/cat blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_HOSTILE_MEOWS = list("Mawwww", "Mrewwww", "mhhhhng..."), BB_BABIES_PARTNER_TYPES = list(/mob/living/basic/pet/cat), BB_BABIES_CHILD_TYPES = list(/mob/living/basic/pet/cat/kitten), @@ -9,6 +10,7 @@ ai_movement = /datum/ai_movement/basic_avoidance idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( + /datum/ai_planning_subtree/pet_planning, /datum/ai_planning_subtree/reside_in_home, /datum/ai_planning_subtree/flee_target/from_flee_key/cat_struggle, /datum/ai_planning_subtree/find_and_hunt_target/hunt_mice, 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 b694235a39ebc..4136aa0aa0151 100644 --- a/code/modules/mob/living/basic/pets/cat/kitten_ai.dm +++ b/code/modules/mob/living/basic/pets/cat/kitten_ai.dm @@ -3,10 +3,12 @@ blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_HUNGRY_MEOW = list("mrrp...", "mraw..."), + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_MAX_DISTANCE_TO_FOOD = 2, ) planning_subtrees = list( + /datum/ai_planning_subtree/pet_planning, /datum/ai_planning_subtree/target_retaliate, /datum/ai_planning_subtree/flee_target, /datum/ai_planning_subtree/beg_human, diff --git a/code/modules/mob/living/basic/pets/dog/_dog.dm b/code/modules/mob/living/basic/pets/dog/_dog.dm index 1ff991941d327..b5259d275b530 100644 --- a/code/modules/mob/living/basic/pets/dog/_dog.dm +++ b/code/modules/mob/living/basic/pets/dog/_dog.dm @@ -40,6 +40,7 @@ /datum/pet_command/free, /datum/pet_command/good_boy/dog, /datum/pet_command/follow/dog, + /datum/pet_command/perform_trick_sequence, /datum/pet_command/point_targeting/attack/dog, /datum/pet_command/point_targeting/fetch, /datum/pet_command/play_dead, @@ -49,12 +50,22 @@ ///icon state of our cult icon var/cult_icon_state +/datum/emote/dog + mob_type_allowed_typecache = /mob/living/basic/pet/dog + mob_type_blacklist_typecache = list() + +/datum/emote/dog/woof + key = "woof" + key_third_person = "woof" + message = "woofs happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/pet/dog/Initialize(mapload) . = ..() AddElement(/datum/element/cultist_pet, pet_cult_icon_state = cult_icon_state) AddElement(/datum/element/wears_collar, collar_icon_state = collar_icon_state) ADD_TRAIT(src, TRAIT_WOUND_LICKER, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "woofs happily!") + 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) diff --git a/code/modules/mob/living/basic/pets/fox.dm b/code/modules/mob/living/basic/pets/fox.dm index a442f60715851..780b4e896e0d1 100644 --- a/code/modules/mob/living/basic/pets/fox.dm +++ b/code/modules/mob/living/basic/pets/fox.dm @@ -28,12 +28,31 @@ attack_sound = 'sound/items/weapons/bite.ogg' attack_vis_effect = ATTACK_EFFECT_BITE ai_controller = /datum/ai_controller/basic_controller/fox + ///list of our pet commands we follow + var/static/list/pet_commands = list( + /datum/pet_command/idle, + /datum/pet_command/free, + /datum/pet_command/follow, + /datum/pet_command/point_targeting/attack, + /datum/pet_command/perform_trick_sequence, + ) + +/datum/emote/fox + mob_type_allowed_typecache = /mob/living/basic/pet/fox + mob_type_blacklist_typecache = list() + +/datum/emote/fox/yap + key = "yap" + key_third_person = "yaps" + message = "yaps happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE /mob/living/basic/pet/fox/Initialize(mapload) . = ..() + AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/cultist_pet) AddElement(/datum/element/wears_collar) - AddElement(/datum/element/pet_bonus, "pants and yaps happily!") + AddElement(/datum/element/pet_bonus, "yap") AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) AddElement(/datum/element/tiny_mob_hunter, MOB_SIZE_SMALL) AddElement(/datum/element/ai_retaliate) @@ -42,12 +61,14 @@ blackboard = list( BB_ALWAYS_IGNORE_FACTION = TRUE, BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/of_size/ours_or_smaller, + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_FLEE_TARGETING_STRATEGY = /datum/targeting_strategy/basic, ) ai_movement = /datum/ai_movement/basic_avoidance idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( + /datum/ai_planning_subtree/pet_planning, /datum/ai_planning_subtree/target_retaliate/to_flee, /datum/ai_planning_subtree/flee_target/from_flee_key, /datum/ai_planning_subtree/simple_find_target/not_while_observed, diff --git a/code/modules/mob/living/basic/pets/gondolas/gondola.dm b/code/modules/mob/living/basic/pets/gondolas/gondola.dm index 9e17d1e08a5e2..e607a13bf1e59 100644 --- a/code/modules/mob/living/basic/pets/gondolas/gondola.dm +++ b/code/modules/mob/living/basic/pets/gondolas/gondola.dm @@ -39,7 +39,7 @@ /mob/living/basic/pet/gondola/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_MUTE, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "smiles!") + AddElement(/datum/element/pet_bonus, "smile") if(LAZYLEN(loot)) loot = string_list(loot) AddElement(/datum/element/death_drops, loot) diff --git a/code/modules/mob/living/basic/pets/orbie/orbie_ai.dm b/code/modules/mob/living/basic/pets/orbie/orbie_ai.dm index 1452dd18dee09..a978b750d5036 100644 --- a/code/modules/mob/living/basic/pets/orbie/orbie_ai.dm +++ b/code/modules/mob/living/basic/pets/orbie/orbie_ai.dm @@ -3,7 +3,7 @@ /datum/ai_controller/basic_controller/orbie blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_TRICK_NAME = "Trick", ) @@ -13,7 +13,6 @@ planning_subtrees = list( /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/find_playmates, - /datum/ai_planning_subtree/basic_melee_attack_subtree, /datum/ai_planning_subtree/relay_pda_message, /datum/ai_planning_subtree/pet_planning, ) diff --git a/code/modules/mob/living/basic/pets/parrot/_parrot.dm b/code/modules/mob/living/basic/pets/parrot/_parrot.dm index e61b052217909..e22948848eb1c 100644 --- a/code/modules/mob/living/basic/pets/parrot/_parrot.dm +++ b/code/modules/mob/living/basic/pets/parrot/_parrot.dm @@ -76,6 +76,13 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( var/static/list/edibles = list( /obj/item/food/cracker, ) + ///list of commands we follow + var/static/list/pet_commands = list( + /datum/pet_command/idle, + /datum/pet_command/free, + /datum/pet_command/follow, + /datum/pet_command/perform_trick_sequence, + ) /// Tracks the times when we send a phrase through either being pet or attack to ensure it's not abused to flood COOLDOWN_DECLARE(forced_speech_cooldown) @@ -92,7 +99,7 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( AddElement(/datum/element/simple_flying) AddComponent(/datum/component/listen_and_repeat, desired_phrases = get_static_list_of_phrases(), blackboard_key = BB_PARROT_REPEAT_STRING) AddComponent(/datum/component/tameable, food_types = edibles, tame_chance = 100, bonus_tame_chance = 0) - + AddComponent(/datum/component/obeys_commands, pet_commands) RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(pre_attacking)) RegisterSignal(src, COMSIG_MOB_CLICKON, PROC_REF(on_click)) RegisterSignal(src, COMSIG_ATOM_ATTACKBY_SECONDARY, PROC_REF(on_attacked)) // this means we could have a peaceful interaction, like getting a cracker diff --git a/code/modules/mob/living/basic/pets/parrot/parrot_ai/_parrot_controller.dm b/code/modules/mob/living/basic/pets/parrot/parrot_ai/_parrot_controller.dm index 8a0fe5e157d93..2d6bccbc7036e 100644 --- a/code/modules/mob/living/basic/pets/parrot/parrot_ai/_parrot_controller.dm +++ b/code/modules/mob/living/basic/pets/parrot/parrot_ai/_parrot_controller.dm @@ -1,6 +1,7 @@ /datum/ai_controller/basic_controller/parrot blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_HOARD_LOCATION_RANGE = 9, ) @@ -9,11 +10,12 @@ idle_behavior = /datum/idle_behavior/idle_random_walk/parrot planning_subtrees = list( + /datum/ai_planning_subtree/parrot_as_in_repeat, // always get a witty oneliner in when you can + /datum/ai_planning_subtree/pet_planning, /datum/ai_planning_subtree/target_retaliate, /datum/ai_planning_subtree/perch_on_target, /datum/ai_planning_subtree/basic_melee_attack_subtree, /datum/ai_planning_subtree/hoard_items, - /datum/ai_planning_subtree/parrot_as_in_repeat, // always get a witty oneliner in when you can ) /datum/idle_behavior/idle_random_walk/parrot diff --git a/code/modules/mob/living/basic/pets/penguin.dm b/code/modules/mob/living/basic/pets/penguin.dm index c5829b210955e..2a1b78e9dd8c6 100644 --- a/code/modules/mob/living/basic/pets/penguin.dm +++ b/code/modules/mob/living/basic/pets/penguin.dm @@ -17,6 +17,15 @@ ///the egg it carries var/obj/carried_egg +/datum/emote/penguin + mob_type_allowed_typecache = /mob/living/basic/pet/penguin + mob_type_blacklist_typecache = list() + +/datum/emote/penguin/honk + key = "honk" + key_third_person = "honks" + message = "honks happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE /mob/living/basic/pet/penguin/Initialize(mapload) . = ..() @@ -24,7 +33,7 @@ AddElement(/datum/element/wears_collar) AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/ai_flee_while_injured) - AddElement(/datum/element/pet_bonus, "honks happily!") + AddElement(/datum/element/pet_bonus, "honk") AddElementTrait(TRAIT_WADDLING, INNATE_TRAIT, /datum/element/waddling) if(!can_lay_eggs) return diff --git a/code/modules/mob/living/basic/pets/pet_designer.dm b/code/modules/mob/living/basic/pets/pet_designer.dm new file mode 100644 index 0000000000000..a0cc7ca4018d9 --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_designer.dm @@ -0,0 +1,205 @@ +#define PET_OPTION_DOG "Dog" +#define PET_OPTION_CAT "Cat" +#define PET_OPTION_FOX "Fox" +#define PET_OPTION_VERMIN "Vermin" +#define PET_OPTION_BIRD "Bird" + +GLOBAL_LIST_INIT(pet_options, list( + PET_OPTION_DOG = list( + /mob/living/basic/pet/dog/corgi, + /mob/living/basic/pet/dog/pug, + /mob/living/basic/pet/dog/bullterrier, + /mob/living/basic/pet/dog/corgi/puppy, + /mob/living/basic/pet/dog/corgi/exoticcorgi, + ), + PET_OPTION_CAT = list( + /mob/living/basic/pet/cat/tabby, + /mob/living/basic/pet/cat, + /mob/living/basic/pet/cat/kitten, + ), + PET_OPTION_FOX = list( + /mob/living/basic/pet/fox, + ), + PET_OPTION_VERMIN = list( + /mob/living/basic/mothroach, + /mob/living/basic/spider/maintenance, + /mob/living/basic/mouse, + ), + PET_OPTION_BIRD = list( + /mob/living/basic/parrot, + ), +)) + +/datum/pet_customization + ///our selected path type + var/mob/living/basic/selected_path = /mob/living/basic/pet/dog/corgi + ///current selected specie + var/pet_specie = PET_OPTION_DOG + ///custom name to apply to our pet + var/custom_name + ///type of pet carrier to give our pet + var/pet_carrier_path + ///pet collar color to give our pet + var/pet_collar_type + ///our pet's gender + var/pet_gender = MALE + ///trick name of our pet! + var/pet_trick_name = "Trick" + ///our pet's trick moves + var/list/pet_trick_moves + ///our selected carrier + var/pet_carrier + ///our cached pet carrier icons + var/static/list/custom_pet_carriers + ///possible emotes our pet can run + var/static/list/pet_possible_emotes = list( + /datum/emote/flip, + /datum/emote/jump, + /datum/emote/spin, + ) + ///list of carrier colors we can pick from + var/static/list/possible_colors = list( + "Blue" = COLOR_BLUE, + "Red" = COLOR_RED, + "Yellow" = COLOR_YELLOW, + "Green" = COLOR_GREEN, + ) + +/datum/pet_customization/New(client/player_client) + . = ..() + if(isnull(custom_pet_carriers)) + custom_pet_carriers = setup_pet_carriers() + pet_carrier = possible_colors[1] + GLOB.customized_pets[REF(player_client)] = src + +/datum/pet_customization/proc/setup_pet_carriers() + var/list/list_to_return = list() + + var/obj/item/pet_carrier/demo_carrier = new() + demo_carrier.open = FALSE + demo_carrier.update_appearance() + + for(var/color in possible_colors) + demo_carrier.set_greyscale(possible_colors[color]) + list_to_return[color] = icon2base64(getFlatIcon(demo_carrier)) + qdel(demo_carrier) + return list_to_return + +/datum/pet_customization/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PetBuilder") + ui.open() + +/datum/pet_customization/ui_data(mob/user) + var/list/data = list() + data["pet_name"] = custom_name + data["pet_path"] = selected_path + data["pet_gender"] = pet_gender + data["pet_trick_name"] = pet_trick_name + data["pet_specie"] = pet_specie + data["pet_types"] = list() + data["pet_options"] = list() + for(var/pet_option in GLOB.pet_options) + data["pet_types"] += pet_option + data["pet_options"] += retrieve_pet_options(pet_option, GLOB.pet_options[pet_option]) + data["pet_carrier"] = pet_carrier + + data["carrier_options"] = list() + for(var/carrier_option in custom_pet_carriers) + data["carrier_options"] += list(list( + "carrier_color" = carrier_option, + "carrier_icon" = custom_pet_carriers[carrier_option], + )) + + data["pet_possible_emotes"] = list() + for(var/datum/emote/emote as anything in pet_possible_emotes) + data["pet_possible_emotes"] += emote.key + + return data + +/datum/pet_customization/ui_state(mob/user) + return GLOB.always_state + +/datum/pet_customization/proc/retrieve_pet_options(pet_specie, list/input_list) + var/list/pet_options = list() + for(var/mob/living/pet_type as anything in input_list) + pet_options += list(list( + "pet_specie" = pet_specie, + "pet_name" = pet_type::name, + "pet_icon" = pet_type:icon, + "pet_path" = pet_type, + "pet_icon_state" = pet_type::icon_state, + )) + return pet_options + +/datum/pet_customization/ui_act(action, params, datum/tgui/ui) + . = ..() + switch(action) + if("finalize_pet") + + var/pet_type = text2path(params["selected_path"]) + for(var/pet_category in GLOB.pet_options) + var/list/pet_list = GLOB.pet_options[pet_category] + if(pet_list.Find(pet_type)) + selected_path = pet_type + break + + var/trick_name = params["selected_trick_name"] + if(trick_name && sanitize_name(trick_name)) + pet_trick_name = trick_name + + var/pet_name = params["selected_pet_name"] + if(pet_name && sanitize_name(pet_name)) + custom_name = pet_name + + switch(params["selected_gender"]) + if("male") + pet_gender = MALE + if("female") + pet_gender = FEMALE + if("neuter") + pet_gender = NEUTER + + var/list/trick_moves = params["selected_trick_moves"] + if(length(trick_moves)) + pet_trick_moves = trick_moves + + var/selected_color = params["selected_carrier"] + if(!isnull(selected_color)) + pet_carrier = selected_color + + var/selected_specie = params["selected_specie"] + if(!isnull(selected_specie)) + pet_specie = selected_specie + ui.close() + + return TRUE + +/datum/pet_customization/proc/create_pet(mob/living/spawned, client/player_client) + var/obj/item/pet_carrier/carrier = new(get_turf(spawned)) + carrier.open = FALSE + carrier.update_appearance() + var/final_color = possible_colors[pet_carrier] || COLOR_BLUE + carrier.set_greyscale(final_color) + var/mob/living/our_pet = new selected_path(get_turf(spawned)) //spawning these in nullspace leads to runtimes + our_pet.gender = pet_gender + + if(custom_name) + our_pet.fully_replace_character_name(our_pet.name, custom_name) + + if(pet_trick_name) + our_pet.ai_controller.set_blackboard_key(BB_TRICK_NAME, pet_trick_name) + if(pet_trick_moves) + our_pet.ai_controller.override_blackboard_key(BB_TRICK_SEQUENCE, pet_trick_moves) + our_pet.befriend(spawned) + carrier.add_occupant(our_pet) + spawned.put_in_hands(carrier, forced = TRUE) + GLOB.customized_pets -= REF(player_client) + qdel(src) + +#undef PET_OPTION_DOG +#undef PET_OPTION_CAT +#undef PET_OPTION_FOX +#undef PET_OPTION_VERMIN +#undef PET_OPTION_BIRD diff --git a/code/modules/mob/living/basic/pets/sloth.dm b/code/modules/mob/living/basic/pets/sloth.dm index 9cd7711aa0672..b1f5c61001adc 100644 --- a/code/modules/mob/living/basic/pets/sloth.dm +++ b/code/modules/mob/living/basic/pets/sloth.dm @@ -37,9 +37,19 @@ GLOBAL_DATUM(cargo_sloth, /mob/living/basic/sloth) ai_controller = /datum/ai_controller/basic_controller/sloth +/datum/emote/sloth + mob_type_allowed_typecache = /mob/living/basic/sloth + mob_type_blacklist_typecache = list() + +/datum/emote/sloth/smile_slow + key = "ssmile" + key_third_person = "slowlysmiles" + message = "slowly smiles!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/sloth/Initialize(mapload) . = ..() - AddElement(/datum/element/pet_bonus, "slowly smiles!") + AddElement(/datum/element/pet_bonus, "ssmile") AddElement(/datum/element/footstep, footstep_type = FOOTSTEP_MOB_CLAW) AddElement(/datum/element/ai_retaliate) AddComponent(/datum/component/tree_climber) diff --git a/code/modules/mob/living/basic/ruin_defender/skeleton.dm b/code/modules/mob/living/basic/ruin_defender/skeleton.dm index e6754a80a22da..5eb8fda152323 100644 --- a/code/modules/mob/living/basic/ruin_defender/skeleton.dm +++ b/code/modules/mob/living/basic/ruin_defender/skeleton.dm @@ -162,7 +162,7 @@ /// Skeletons mostly just beat people to death, but they'll also find and drink milk. /datum/ai_controller/basic_controller/skeleton blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_TARGET_MINIMUM_STAT = HARD_CRIT, BB_EMOTE_KEY = "rattles", BB_EMOTE_CHANCE = 20, diff --git a/code/modules/mob/living/basic/space_fauna/ant.dm b/code/modules/mob/living/basic/space_fauna/ant.dm index 7fbbe03e631cd..3ae46b7f53947 100644 --- a/code/modules/mob/living/basic/space_fauna/ant.dm +++ b/code/modules/mob/living/basic/space_fauna/ant.dm @@ -36,10 +36,20 @@ ai_controller = /datum/ai_controller/basic_controller/ant +/datum/emote/ant + mob_type_allowed_typecache = /mob/living/basic/ant + mob_type_blacklist_typecache = list() + +/datum/emote/ant/clack + key = "clack" + key_third_person = "clacks" + message = "clacks happily!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/ant/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "clacks happily!") + AddElement(/datum/element/pet_bonus, "clack") AddElement(/datum/element/ai_retaliate) AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) 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 f1c12cc3ce9e9..a315e253ecebc 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm @@ -81,6 +81,16 @@ /obj/structure/window, )) +/datum/emote/carp + mob_type_allowed_typecache = /mob/living/basic/carp + mob_type_blacklist_typecache = list() + +/datum/emote/carp/bloop + key = "bloop" + key_third_person = "bloops" + message = "bloops!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/carp/Initialize(mapload, mob/tamer) ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT) //Need to set before init cause if we init in hyperspace we get dragged before the trait can be added . = ..() @@ -186,7 +196,7 @@ /mob/living/basic/carp/pet/Initialize(mapload) . = ..() AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "bloops happily!") + AddElement(/datum/element/pet_bonus, "bloop") /** * Lia - Sometimes the pet of the Head of Security. @@ -291,7 +301,7 @@ /mob/living/basic/carp/passive/Initialize(mapload) . = ..() AddComponent(/datum/component/ai_retaliate_advanced, CALLBACK(src, PROC_REF(on_attacked))) - AddElement(/datum/element/pet_bonus, "bloops happily!") + AddElement(/datum/element/pet_bonus, "bloop") ADD_TRAIT(src, TRAIT_PACIFISM, INNATE_TRAIT) /// If someone slaps one of the school, scatter diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp_controllers.dm b/code/modules/mob/living/basic/space_fauna/carp/carp_controllers.dm index ae011f5b14a31..93ede010eb6d0 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp_controllers.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp_controllers.dm @@ -10,7 +10,7 @@ /datum/ai_controller/basic_controller/carp blackboard = list( BB_BASIC_MOB_STOP_FLEEING = TRUE, - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_TARGET_PRIORITY_TRAIT = TRAIT_SCARY_FISHERMAN, BB_CARPS_FEAR_FISHERMAN = TRUE, @@ -24,11 +24,11 @@ /datum/ai_planning_subtree/find_target_prioritize_traits, /datum/ai_planning_subtree/make_carp_rift/panic_teleport, /datum/ai_planning_subtree/flee_target/from_fisherman, - /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/attack_obstacle_in_path/carp, /datum/ai_planning_subtree/shortcut_to_target_through_carp_rift, /datum/ai_planning_subtree/make_carp_rift/aggressive_teleport, /datum/ai_planning_subtree/basic_melee_attack_subtree/no_fisherman, + /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/carp_migration, ) @@ -36,7 +36,7 @@ /datum/ai_controller/basic_controller/carp/mega blackboard = list( BB_BASIC_MOB_STOP_FLEEING = TRUE, - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_TARGET_PRIORITY_TRAIT = TRAIT_SCARY_FISHERMAN, BB_CARPS_FEAR_FISHERMAN = FALSE, @@ -46,12 +46,12 @@ /datum/ai_planning_subtree/simple_find_nearest_target_to_flee, /datum/ai_planning_subtree/make_carp_rift/panic_teleport, /datum/ai_planning_subtree/flee_target, - /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/find_target_prioritize_traits, /datum/ai_planning_subtree/attack_obstacle_in_path/carp, /datum/ai_planning_subtree/shortcut_to_target_through_carp_rift, /datum/ai_planning_subtree/make_carp_rift/aggressive_teleport, /datum/ai_planning_subtree/basic_melee_attack_subtree, + /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/carp_migration, ) /** @@ -90,13 +90,13 @@ /datum/ai_planning_subtree/find_target_prioritize_traits, /datum/ai_planning_subtree/make_carp_rift/panic_teleport, /datum/ai_planning_subtree/flee_target/from_fisherman, - /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/find_nearest_magicarp_spell_target, /datum/ai_planning_subtree/targeted_mob_ability/magicarp, /datum/ai_planning_subtree/attack_obstacle_in_path/carp, /datum/ai_planning_subtree/shortcut_to_target_through_carp_rift, /datum/ai_planning_subtree/make_carp_rift/aggressive_teleport, /datum/ai_planning_subtree/basic_melee_attack_subtree/magicarp, + /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/carp_migration, ) diff --git a/code/modules/mob/living/basic/space_fauna/snake/snake.dm b/code/modules/mob/living/basic/space_fauna/snake/snake.dm index 78f7d86e0db3f..3125ae9d32351 100644 --- a/code/modules/mob/living/basic/space_fauna/snake/snake.dm +++ b/code/modules/mob/living/basic/space_fauna/snake/snake.dm @@ -73,7 +73,7 @@ /// Snakes are primarily concerned with getting those tasty, tasty mice, but aren't afraid to strike back at those who attack them /datum/ai_controller/basic_controller/snake blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, ) ai_traits = STOP_MOVING_WHEN_PULLED @@ -82,7 +82,7 @@ planning_subtrees = list( /datum/ai_planning_subtree/target_retaliate, - /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/basic_melee_attack_subtree, + /datum/ai_planning_subtree/find_food, /datum/ai_planning_subtree/random_speech/snake, ) diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_ai.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_ai.dm index ae971fd2558e5..18ae6fc3e7523 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_ai.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spider_ai.dm @@ -44,11 +44,13 @@ /datum/ai_controller/basic_controller/giant_spider/pest blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/of_size/ours_or_smaller, // Hunt mobs our size + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_FLEE_TARGETING_STRATEGY = /datum/targeting_strategy/basic/of_size/larger, // Run away from mobs bigger than we are ) idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( + /datum/ai_planning_subtree/pet_planning, /datum/ai_planning_subtree/target_retaliate/to_flee, /datum/ai_planning_subtree/flee_target/from_flee_key, /datum/ai_planning_subtree/simple_find_target, diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm index f293f1dcbaacd..1e78bd924a833 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm @@ -608,6 +608,6 @@ /mob/living/basic/spider/giant/sgt_araneus/Initialize(mapload) . = ..() - AddElement(/datum/element/pet_bonus, "chitters proudly!") + AddElement(/datum/element/pet_bonus, "chitter") AddElement(/datum/element/ai_retaliate) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider.dm b/code/modules/mob/living/basic/space_fauna/spider/spider.dm index 118487f038392..195b814983301 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider.dm @@ -49,6 +49,18 @@ /// If true then you shouldn't be told that you're a spider antagonist as soon as you are placed into this mob var/apply_spider_antag = TRUE +/datum/emote/spider + mob_type_allowed_typecache = /mob/living/basic/spider + mob_type_blacklist_typecache = list() + +/datum/emote/spider/chitter + key = "chitter" + key_third_person = "chitters" + message = "chitters." + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/insect/chitter.ogg' + /mob/living/basic/spider/Initialize(mapload) . = ..() add_traits(list(TRAIT_WEB_SURFER, TRAIT_FENCE_CLIMBER), INNATE_TRAIT) @@ -171,10 +183,18 @@ response_harm_simple = "splat" ai_controller = /datum/ai_controller/basic_controller/giant_spider/pest apply_spider_antag = FALSE + ///list of pet commands we follow + var/static/list/pet_commands = list( + /datum/pet_command/idle, + /datum/pet_command/free, + /datum/pet_command/follow, + /datum/pet_command/perform_trick_sequence, + ) /mob/living/basic/spider/maintenance/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) AddElement(/datum/element/web_walker, /datum/movespeed_modifier/average_web) AddElement(/datum/element/ai_retaliate) + AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/tiny_mob_hunter) diff --git a/code/modules/mob/living/basic/vermin/lizard.dm b/code/modules/mob/living/basic/vermin/lizard.dm index da68087d70ffa..5e3a07094a91e 100644 --- a/code/modules/mob/living/basic/vermin/lizard.dm +++ b/code/modules/mob/living/basic/vermin/lizard.dm @@ -46,16 +46,25 @@ /mob/living/basic/cockroach, )) +/datum/emote/lizard + mob_type_allowed_typecache = /mob/living/basic/lizard + mob_type_blacklist_typecache = list() + +/datum/emote/lizard/whicker + key = "tongue" + message = "sticks its tongue out contentedly!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + /mob/living/basic/lizard/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "sticks its tongue out contentedly!") + AddElement(/datum/element/pet_bonus, "tongue") AddElement(/datum/element/basic_eating, heal_amt = 5, food_types = edibles) ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(edibles)) /datum/ai_controller/basic_controller/lizard blackboard = list( - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, ) ai_traits = STOP_MOVING_WHEN_PULLED @@ -63,7 +72,6 @@ idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( /datum/ai_planning_subtree/find_food, - /datum/ai_planning_subtree/basic_melee_attack_subtree, /datum/ai_planning_subtree/random_speech/lizard, ) diff --git a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm index 9659408b8b1aa..e4798ba2d1c6b 100644 --- a/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm +++ b/code/modules/mob/living/basic/vermin/mothroach/mothroach.dm @@ -33,14 +33,32 @@ faction = list(FACTION_NEUTRAL) ai_controller = /datum/ai_controller/basic_controller/mothroach + ///list of pet commands we follow + var/static/list/pet_commands = list( + /datum/pet_command/idle, + /datum/pet_command/free, + /datum/pet_command/follow, + /datum/pet_command/perform_trick_sequence, + ) + +/datum/emote/mothroach + mob_type_allowed_typecache = /mob/living/basic/mothroach + mob_type_blacklist_typecache = list() + +/datum/emote/mothroach/squeaks + key = "squeaks" + key_third_person = "squeaks" + message = "squeaks!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE /mob/living/basic/mothroach/Initialize(mapload) . = ..() var/static/list/food_types = list(/obj/item/clothing) AddElement(/datum/element/basic_eating, food_types = food_types) + AddComponent(/datum/component/obeys_commands, pet_commands) ai_controller.set_blackboard_key(BB_BASIC_FOODS, typecacheof(food_types)) AddElement(/datum/element/ai_retaliate) - AddElement(/datum/element/pet_bonus, "squeaks happily!") + AddElement(/datum/element/pet_bonus, "squeak") add_verb(src, /mob/living/proc/toggle_resting) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) diff --git a/code/modules/mob/living/basic/vermin/mothroach/mothroach_ai.dm b/code/modules/mob/living/basic/vermin/mothroach/mothroach_ai.dm index 5801d18321594..c9e8558ec5c45 100644 --- a/code/modules/mob/living/basic/vermin/mothroach/mothroach_ai.dm +++ b/code/modules/mob/living/basic/vermin/mothroach/mothroach_ai.dm @@ -1,40 +1,25 @@ -#define MOTHROACH_EAT_TIMER 1 MINUTES - /datum/ai_controller/basic_controller/mothroach blackboard = list( BB_FLEE_TARGETING_STRATEGY = /datum/targeting_strategy/basic, - BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/allow_items, + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, + BB_EAT_FOOD_COOLDOWN = 1 MINUTES, ) ai_traits = STOP_MOVING_WHEN_PULLED ai_movement = /datum/ai_movement/basic_avoidance idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( + /datum/ai_planning_subtree/pet_planning, /datum/ai_planning_subtree/find_food/mothroach, /datum/ai_planning_subtree/target_retaliate/to_flee, /datum/ai_planning_subtree/flee_target/from_flee_key, - /datum/ai_planning_subtree/basic_melee_attack_subtree, /datum/ai_planning_subtree/random_speech/mothroach, ) -/datum/ai_controller/basic_controller/mothroach/TryPossessPawn(atom/new_pawn) - . = ..() - if(. & AI_CONTROLLER_INCOMPATIBLE) - return - RegisterSignal(new_pawn, COMSIG_MOB_ATE, PROC_REF(on_eaten)) - -/datum/ai_controller/basic_controller/mothroach/proc/on_eaten(datum/source) - SIGNAL_HANDLER - set_blackboard_key(BB_MOTHROACH_NEXT_EAT, world.time + MOTHROACH_EAT_TIMER) - /datum/ai_planning_subtree/find_food/mothroach finding_behavior = /datum/ai_behavior/find_and_set/in_list/mothroach_food -/datum/ai_planning_subtree/find_food/mothroach/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) - if(world.time < controller.blackboard[BB_MOTHROACH_NEXT_EAT]) - return - return ..() - /datum/ai_behavior/find_and_set/in_list/mothroach_food /datum/ai_behavior/find_and_set/in_list/mothroach_food/search_tactic(datum/ai_controller/controller, locate_paths, search_range) @@ -43,5 +28,3 @@ found -= living_pawn.loc if(length(found)) return pick(found) - -#undef MOTHROACH_EAT_TIMER diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm index cb62ad956f95c..a0c1faf971d06 100644 --- a/code/modules/mob/living/basic/vermin/mouse.dm +++ b/code/modules/mob/living/basic/vermin/mouse.dm @@ -36,6 +36,25 @@ var/contributes_to_ratcap = TRUE /// Probability that, if we successfully bite a shocked cable, that we will die to it. var/cable_zap_prob = 85 + ///list of pet commands we follow + var/static/list/pet_commands = list( + /datum/pet_command/idle, + /datum/pet_command/free, + /datum/pet_command/follow, + /datum/pet_command/perform_trick_sequence, + ) + +/datum/emote/mouse + mob_type_allowed_typecache = /mob/living/basic/mouse + mob_type_blacklist_typecache = list() + +/datum/emote/mouse/squeak + key = "squeak" + key_third_person = "squeaks" + message = "squeak!" + emote_type = EMOTE_VISIBLE | EMOTE_AUDIBLE + vary = TRUE + sound = 'sound/mobs/non-humanoids/mouse/mousesqueek.ogg' /mob/living/basic/mouse/Initialize(mapload, tame = FALSE, new_body_color) . = ..() @@ -55,6 +74,7 @@ var/static/list/loc_connections = list( COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) + AddComponent(/datum/component/obeys_commands, pet_commands) AddElement(/datum/element/connect_loc, loc_connections) make_tameable() AddComponent(/datum/component/swarming, 16, 16) //max_x, max_y @@ -270,7 +290,7 @@ . = ..() // Tom fears no cable. ADD_TRAIT(src, TRAIT_SHOCKIMMUNE, INNATE_TRAIT) - AddElement(/datum/element/pet_bonus, "squeaks happily!") + AddElement(/datum/element/pet_bonus, "squeak") /mob/living/basic/mouse/brown/tom/create_a_new_rat() new /mob/living/basic/mouse/brown(loc, /* tame = */ tame) // dominant gene @@ -383,9 +403,8 @@ /// The mouse AI controller /datum/ai_controller/basic_controller/mouse blackboard = list( // Always cowardly - BB_CURRENT_HUNTING_TARGET = null, // cheese - BB_LOW_PRIORITY_HUNTING_TARGET = null, // cable BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, // Use this to find people to run away from + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, BB_BASIC_MOB_FLEE_DISTANCE = 3, ) @@ -393,6 +412,7 @@ ai_movement = /datum/ai_movement/basic_avoidance idle_behavior = /datum/idle_behavior/idle_random_walk planning_subtrees = list( + /datum/ai_planning_subtree/pet_planning, // Top priority is to look for and execute hunts for cheese even if someone is looking at us /datum/ai_planning_subtree/find_and_hunt_target/look_for_cheese, // Next priority is see if anyone is looking at us diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 9744bcbada7e5..dcf00435fba91 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -29,6 +29,8 @@ /obj/item/toy/toy_xeno, /obj/item/sticker, //funny ~Jimmyl /obj/item/toy/plush/rouny, + /obj/item/hand_item, + /obj/item/queen_promotion, )) /mob/living/carbon/alien/Initialize(mapload) diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index 05192c8918aaa..4293977edec62 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -1,7 +1,6 @@ /mob/living/carbon/update_obscured_slots(obscured_flags) ..() - if(obscured_flags & (HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT|HIDEMUTWINGS)) - update_body() + update_body() /// Updates features and clothing attached to a specific limb with limb-specific offsets /mob/living/carbon/proc/update_features(feature_key) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 10417b55a9410..c5e597818a4b8 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -219,6 +219,10 @@ . += "[t_He] [t_is] flushed and wheezing." if (bodytemperature < dna.species.bodytemp_cold_damage_limit) . += "[t_He] [t_is] shivering." + if(HAS_TRAIT(src, TRAIT_EVIL)) + . += "[t_His] eyes radiate with a unfeeling, cold detachment. There is nothing but darkness within [t_his] soul." + living_user.add_mood_event("encountered_evil", /datum/mood_event/encountered_evil) + living_user.set_jitter_if_lower(15 SECONDS) if(HAS_TRAIT(user, TRAIT_SPIRITUAL) && mind?.holy_role) . += "[t_He] [t_has] a holy aura about [t_him]." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7366911cbf56c..7221c34797141 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -105,7 +105,7 @@ if(HAS_TRAIT(src, TRAIT_UNKNOWN)) to_chat(viewer, span_notice("You can't make out that ID anymore.")) return - if(get_dist(viewer, src) > ID_EXAMINE_DISTANCE + 1) // leeway + if(!isobserver(viewer) && get_dist(viewer, src) > ID_EXAMINE_DISTANCE + 1) // leeway, ignored if the viewer is a ghost to_chat(viewer, span_notice("You can't make out that ID from here.")) return 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 8ee7a43cf3245..f632621c116ea 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -72,8 +72,7 @@ There are several things that need to be remembered: /mob/living/carbon/human/update_obscured_slots(obscured_flags) ..() - if(obscured_flags & HIDEFACE) - sec_hud_set_security_status() + sec_hud_set_security_status() // SKYRAT EDIT ADDITION START - ERP Overlays if(obscured_flags & HIDESEXTOY) update_inv_lewd() diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 477eec5a6e90e..9d28872bacec3 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -441,6 +441,7 @@ if(offered_item.on_offered(src)) // see if the item interrupts with its own behavior return + balloon_alert_to_viewers("offers something") visible_message(span_notice("[src] is offering [offered ? "[offered] " : ""][offered_item]."), \ span_notice("You offer [offered ? "[offered] " : ""][offered_item]."), null, 2) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e6db0cf654308..d9f13dd76c3c7 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -352,9 +352,12 @@ /mob/living/silicon/robot/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) if(same_z_layer || QDELING(src)) return ..() - cut_overlay(eye_lights) - SET_PLANE_EXPLICIT(eye_lights, PLANE_TO_TRUE(eye_lights.plane), src) - add_overlay(eye_lights) + + if(eye_lights) + cut_overlay(eye_lights) + SET_PLANE_EXPLICIT(eye_lights, PLANE_TO_TRUE(eye_lights.plane), src) + add_overlay(eye_lights) + return ..() /mob/living/silicon/robot/proc/self_destruct(mob/usr) diff --git a/code/modules/power/singularity/dark_matter_singularity.dm b/code/modules/power/singularity/dark_matter_singularity.dm index 294c2063b1b98..870e298cf97cf 100644 --- a/code/modules/power/singularity/dark_matter_singularity.dm +++ b/code/modules/power/singularity/dark_matter_singularity.dm @@ -21,6 +21,9 @@ /obj/singularity/dark_matter/Initialize(mapload, starting_energy) . = ..() COOLDOWN_START(src, initial_explosion_immunity, 5 SECONDS) + var/datum/component/singularity/resolved_singularity = singularity_component.resolve() + resolved_singularity.chance_to_move_to_target = 100 + addtimer(CALLBACK(src, PROC_REF(normalize_tracking)), 20 SECONDS) /obj/singularity/dark_matter/examine(mob/user) . = ..() @@ -50,4 +53,9 @@ desc = "You managed to make a singularity from dark matter, which makes no sense at all, and then you threw a supermatter into it? Are you fucking insane? Fuck it, praise Lord Singuloth." consumed_supermatter = TRUE +///For 20 seconds, the singularity has buffed tracking to ensure it actually makes its way to the station, normalizes after 20 seconds +/obj/singularity/dark_matter/proc/normalize_tracking() + var/datum/component/singularity/resolved_singularity = singularity_component.resolve() + resolved_singularity.chance_to_move_to_target = consumed_supermatter ? initial(resolved_singularity.chance_to_move_to_target) + DARK_MATTER_SUPERMATTER_CHANCE_BONUS : initial(resolved_singularity.chance_to_move_to_target) + #undef DARK_MATTER_SUPERMATTER_CHANCE_BONUS diff --git a/code/modules/power/supermatter/supermatter_extra_effects.dm b/code/modules/power/supermatter/supermatter_extra_effects.dm index 4f35c1abe7219..ffbbf566386dd 100644 --- a/code/modules/power/supermatter/supermatter_extra_effects.dm +++ b/code/modules/power/supermatter/supermatter_extra_effects.dm @@ -160,7 +160,7 @@ step_towards(movable_atom,center) /proc/supermatter_anomaly_gen(turf/anomalycenter, type = FLUX_ANOMALY, anomalyrange = 5, has_changed_lifespan = TRUE) - var/turf/local_turf = pick(orange(anomalyrange, anomalycenter)) + var/turf/local_turf = pick(RANGE_TURFS(anomalyrange, anomalycenter)) if(!local_turf) return switch(type) diff --git a/code/modules/projectiles/projectile/bullets/special.dm b/code/modules/projectiles/projectile/bullets/special.dm index 2af0fe7b9cb9d..34f6c1e07187c 100644 --- a/code/modules/projectiles/projectile/bullets/special.dm +++ b/code/modules/projectiles/projectile/bullets/special.dm @@ -196,7 +196,7 @@ if(possible_victims.len) return pick(possible_victims) - var/list/static/prioritized_targets = list(/obj/structure/reagent_dispensers, /obj/item/grenade, /obj/structure/window) + var/static/list/prioritized_targets = list(/obj/structure/reagent_dispensers, /obj/item/grenade, /obj/structure/window) for(var/iter_type in prioritized_targets) for(var/already_coined_tries in 1 to 3) var/atom/iter_type_check = locate(iter_type) in valid_targets diff --git a/code/modules/reagents/chemistry/equilibrium.dm b/code/modules/reagents/chemistry/equilibrium.dm index 6b43e441d483c..bc7cbd37f4854 100644 --- a/code/modules/reagents/chemistry/equilibrium.dm +++ b/code/modules/reagents/chemistry/equilibrium.dm @@ -381,7 +381,7 @@ holder.adjust_thermal_energy(heat_energy * SPECIFIC_HEAT_DEFAULT, 0, CHEMICAL_MAXIMUM_TEMPERATURE) //Give a chance of sounds - if(prob(5)) + if(prob(5) && !HAS_TRAIT(holder.my_atom, TRAIT_SILENT_REACTIONS)) holder.my_atom.audible_message(span_notice("[icon2html(holder.my_atom, viewers(DEFAULT_MESSAGE_RANGE, src))] [reaction.mix_message]")) if(reaction.mix_sound) playsound(get_turf(holder.my_atom), reaction.mix_sound, 80, TRUE) diff --git a/code/modules/reagents/chemistry/holder/reactions.dm b/code/modules/reagents/chemistry/holder/reactions.dm index ebb3c0c10e92d..c5e7a1f8d0395 100644 --- a/code/modules/reagents/chemistry/holder/reactions.dm +++ b/code/modules/reagents/chemistry/holder/reactions.dm @@ -183,7 +183,7 @@ if(num_reactions) SEND_SIGNAL(src, COMSIG_REAGENTS_REACTION_STEP, num_reactions, seconds_per_tick) - if(length(mix_message)) //This is only at the end + if(length(mix_message) && !HAS_TRAIT(my_atom, TRAIT_SILENT_REACTIONS)) //This is only at the end my_atom.audible_message(span_notice("[icon2html(my_atom, viewers(DEFAULT_MESSAGE_RANGE, src))] [mix_message.Join()]")) if(!LAZYLEN(reaction_list)) @@ -210,9 +210,13 @@ stack_trace("The equilibrium datum currently processing in this reagents datum had a desynced holder to the ending reaction. src holder:[my_atom] | equilibrium holder:[equilibrium.holder.my_atom] || src type:[my_atom.type] | equilibrium holder:[equilibrium.holder.my_atom.type]") LAZYREMOVE(reaction_list, equilibrium) - var/reaction_message = equilibrium.reaction.mix_message - if(equilibrium.reaction.mix_sound) - playsound(get_turf(my_atom), equilibrium.reaction.mix_sound, 80, TRUE) + var/reaction_message = null + + if (!HAS_TRAIT(my_atom, TRAIT_SILENT_REACTIONS)) + reaction_message = equilibrium.reaction.mix_message + if(equilibrium.reaction.mix_sound) + playsound(get_turf(my_atom), equilibrium.reaction.mix_sound, 80, TRUE) + //SKYRAT EDIT ADDITION //If the reaction pollutes, pollute it here if we have an atom if(equilibrium.reaction.pollutant_type && my_atom) @@ -220,6 +224,7 @@ if(my_turf) // reactions can happen in nullspace (like inside of a mob's stomach for instance). my_turf.pollute_turf(equilibrium.reaction.pollutant_type, equilibrium.reaction.pollutant_amount * equilibrium.reacted_vol) //SKYRAT EDIT END + qdel(equilibrium) update_total() SEND_SIGNAL(src, COMSIG_REAGENTS_REACTED, .) @@ -263,7 +268,7 @@ if(result == reagent.type) mix_message += end_reaction(equilibrium) any_stopped = TRUE - if(length(mix_message)) + if(length(mix_message) && !HAS_TRAIT(my_atom, TRAIT_SILENT_REACTIONS)) my_atom.audible_message(span_notice("[icon2html(my_atom, viewers(DEFAULT_MESSAGE_RANGE, src))][mix_message.Join()]")) return any_stopped @@ -333,7 +338,7 @@ var/list/seen = viewers(4, get_turf(my_atom)) var/iconhtml = icon2html(cached_my_atom, seen) if(cached_my_atom) - if(!ismob(cached_my_atom)) // No bubbling mobs + if(!ismob(cached_my_atom) && !HAS_TRAIT(my_atom, TRAIT_SILENT_REACTIONS)) // No bubbling mobs if(selected_reaction.mix_sound) playsound(get_turf(cached_my_atom), selected_reaction.mix_sound, 80, TRUE) my_atom.audible_message(span_notice("[iconhtml] [selected_reaction.mix_message]")) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 8edfb38abc397..eab29727b3b25 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -121,8 +121,8 @@ SHOULD_CALL_PARENT(TRUE) . = SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_MOB, exposed_mob, methods, reac_volume, show_message, touch_protection) - if((methods & penetrates_skin) && exposed_mob.reagents) //smoke, foam, spray - var/amount = round(reac_volume*clamp((1 - touch_protection), 0, 1), 0.1) + if(penetrates_skin & methods) // models things like vapors which penetrate the skin + var/amount = round(reac_volume * clamp((1 - touch_protection), 0, 1), 0.1) if(amount >= 0.5) exposed_mob.reagents.add_reagent(type, amount, added_purity = purity) @@ -282,6 +282,10 @@ Primarily used in reagents/reaction_agents purity = src.purity return min(1-inverse_chem_val + purity + 0.01, 1) //Gives inverse reactions a 1% purity threshold for being 100% pure to appease players with OCD. +///Called when feeding a fish. If TRUE is returned, a portion of reagent will be consumed. +/datum/reagent/proc/used_on_fish(obj/item/fish/fish) + return FALSE + /** * Input a reagent_list, outputs pretty readable text! * Default output will be formatted as diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 70267be315c26..d6eec13cc552b 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1036,7 +1036,7 @@ else tips = world.file2list("strings/chemistrytips.txt") var/message = pick(tips) - send_tip_of_the_round(affected_mob, message) + send_tip_of_the_round(affected_mob, message, source = "Chemical-induced wisdom") /datum/reagent/medicine/neurine name = "Neurine" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index b1758086444e2..ca55a19ade6a6 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -405,6 +405,7 @@ data["deciseconds_metabolized"] += (seconds_per_tick * 1 SECONDS * REM) affected_mob.adjust_jitter_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS) + var/need_mob_update = FALSE if(IS_CULTIST(affected_mob)) for(var/datum/action/innate/cult/blood_magic/BM in affected_mob.actions) @@ -425,14 +426,23 @@ affected_mob.Unconscious(12 SECONDS) to_chat(affected_mob, span_cult_large("[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \ "All that power, and you still fail?", "If you cannot scour this poison, I shall scour your meager life!")].")) + else if(HAS_TRAIT(affected_mob, TRAIT_EVIL) && SPT_PROB(25, seconds_per_tick)) //Congratulations, your committment to evil has now made holy water a deadly poison to you! + if(!IS_CULTIST(affected_mob) || affected_mob.mind?.holy_role != HOLY_ROLE_PRIEST) + affected_mob.emote("scream") + need_mob_update += affected_mob.adjustFireLoss(3 * REM * seconds_per_tick, updating_health = FALSE) if(data["deciseconds_metabolized"] >= (1 MINUTES)) // 24 units if(IS_CULTIST(affected_mob)) affected_mob.mind.remove_antag_datum(/datum/antagonist/cult) affected_mob.Unconscious(10 SECONDS) + else if(HAS_TRAIT(affected_mob, TRAIT_EVIL)) //At this much holy water, you're probably going to fucking melt. good luck + if(!IS_CULTIST(affected_mob) || affected_mob.mind?.holy_role != HOLY_ROLE_PRIEST) + need_mob_update += affected_mob.adjustFireLoss(10 * REM * seconds_per_tick, updating_health = FALSE) affected_mob.remove_status_effect(/datum/status_effect/jitter) affected_mob.remove_status_effect(/datum/status_effect/speech/stutter) holder?.remove_reagent(type, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? + if(need_mob_update) + return UPDATE_MOB_HEALTH /datum/reagent/water/holywater/expose_turf(turf/exposed_turf, reac_volume) . = ..() @@ -583,6 +593,11 @@ if(reac_volume >= 1) exposed_turf.MakeSlippery(lube_kind, 15 SECONDS, min(reac_volume * 2 SECONDS, 120)) +/datum/reagent/lube/used_on_fish(obj/item/fish/fish) + ADD_TRAIT(fish, TRAIT_FISH_FED_LUBE, type) //required for the lubefish mutation + addtimer(TRAIT_CALLBACK_REMOVE(fish, TRAIT_FISH_FED_LUBE, type), fish.feeding_frequency, TIMER_UNIQUE|TIMER_OVERRIDE) + return TRUE + ///Stronger kind of lube. Applies TURF_WET_SUPERLUBE. /datum/reagent/lube/superlube name = "Super Duper Lube" @@ -2478,6 +2493,11 @@ affected_mob.update_transform(RESIZE_DEFAULT_SIZE/current_size) current_size = RESIZE_DEFAULT_SIZE +/datum/reagent/growthserum/used_on_fish(obj/item/fish/fish) + ADD_TRAIT(fish, TRAIT_FISH_QUICK_GROWTH, type) + addtimer(TRAIT_CALLBACK_REMOVE(fish, TRAIT_FISH_QUICK_GROWTH, type), fish.feeding_frequency * 0.8, TIMER_UNIQUE|TIMER_OVERRIDE) + return TRUE + /datum/reagent/plastic_polymers name = "Plastic Polymers" description = "the petroleum based components of plastic." diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index a804a106f7353..c81eb5e1fb6a5 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -312,6 +312,14 @@ affected_mob.electrocute_act(rand(5, 20), "Teslium in their body", 1, SHOCK_NOGLOVES) //SHOCK_NOGLOVES because it's caused from INSIDE of you playsound(affected_mob, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) +/datum/reagent/teslium/used_on_fish(obj/item/fish/fish) + if(HAS_TRAIT_FROM(fish, TRAIT_FISH_ELECTROGENESIS, FISH_TRAIT_DATUM)) + return FALSE + fish.add_traits(list(TRAIT_FISH_ON_TESLIUM, TRAIT_FISH_ELECTROGENESIS), type) + addtimer(TRAIT_CALLBACK_REMOVE(fish, TRAIT_FISH_ON_TESLIUM, type), fish.feeding_frequency * 0.75, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(TRAIT_CALLBACK_REMOVE(fish, TRAIT_FISH_ELECTROGENESIS, type), fish.feeding_frequency * 0.75, TIMER_UNIQUE|TIMER_OVERRIDE) + return TRUE + /datum/reagent/teslium/on_mob_metabolize(mob/living/carbon/human/affected_mob) . = ..() if(!istype(affected_mob)) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 95f73e552be34..37451462bac2f 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -71,6 +71,11 @@ mytray.mutation_roll(user) mytray.adjust_toxic(3) //It is still toxic, mind you, but not to the same degree. +/datum/reagent/mutagen/used_on_fish(obj/item/fish/fish) + ADD_TRAIT(fish, TRAIT_FISH_MUTAGENIC, type) + addtimer(TRAIT_CALLBACK_REMOVE(fish, TRAIT_FISH_MUTAGENIC, type), fish.feeding_frequency * 0.8, TIMER_UNIQUE|TIMER_OVERRIDE) + return TRUE + #define LIQUID_PLASMA_BP (50+T0C) #define LIQUID_PLASMA_IG (325+T0C) @@ -333,7 +338,7 @@ /datum/reagent/toxin/mindbreaker/fish/on_new(data) . = ..() if(holder?.my_atom) - RegisterSignals(holder.my_atom, list(COMSIG_ITEM_FRIED, TRAIT_FOOD_BBQ_GRILLED), PROC_REF(on_atom_cooked)) + RegisterSignals(holder.my_atom, list(COMSIG_ITEM_FRIED, COMSIG_ITEM_BARBEQUE_GRILLED), PROC_REF(on_atom_cooked)) /datum/reagent/toxin/mindbreaker/fish/proc/on_atom_cooked(datum/source, cooking_time) SIGNAL_HANDLER diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 69dda419d7cd3..0814834b25a51 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -178,12 +178,12 @@ ghostie.apply_status_effect(/datum/status_effect/incapacitating/paralyzed/revenant, 2 SECONDS) ghostie.apply_status_effect(/datum/status_effect/revenant/revealed, 10 SECONDS) ghostie.adjust_health(50) - for(var/mob/living/carbon/C in get_hearers_in_view(effective_size,T)) - if(IS_CULTIST(C)) - to_chat(C, span_userdanger("The divine explosion sears you!")) - C.Paralyze(40) - C.adjust_fire_stacks(5) - C.ignite_mob() + for(var/mob/living/carbon/evil_motherfucker in get_hearers_in_view(effective_size,T)) + if(IS_CULTIST(evil_motherfucker) || HAS_TRAIT(evil_motherfucker, TRAIT_EVIL)) + to_chat(evil_motherfucker, span_userdanger("The divine explosion sears you!")) + evil_motherfucker.Paralyze(40) + evil_motherfucker.adjust_fire_stacks(5) + evil_motherfucker.ignite_mob() ..() /datum/chemical_reaction/gunpowder diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index f6cafb535d808..42c37c50613e0 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -37,6 +37,8 @@ var/fill_icon_state = null /// The icon file to take fill icon appearances from var/fill_icon = 'icons/obj/medical/reagent_fillings.dmi' + ///The sound this container makes when picked up, dropped if there is liquid inside. + var/reagent_container_liquid_sound = null /obj/item/reagent_containers/apply_fantasy_bonuses(bonus) . = ..() @@ -297,3 +299,13 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) . += filling + +/obj/item/reagent_containers/dropped(mob/user, silent) + . = ..() + if(reagent_container_liquid_sound && reagents.total_volume > 0) + playsound(src, reagent_container_liquid_sound, LIQUID_SLOSHING_SOUND_VOLUME, vary = TRUE, ignore_walls = FALSE) + +/obj/item/reagent_containers/equipped(mob/user, slot, initial = FALSE) + . = ..() + if((slot & ITEM_SLOT_HANDS) && reagent_container_liquid_sound && reagents.total_volume > 0) + playsound(src, reagent_container_liquid_sound, LIQUID_SLOSHING_SOUND_VOLUME, vary = TRUE, ignore_walls = FALSE) diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 8a87661cfab77..de295778137b8 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -9,6 +9,7 @@ icon_state = "bottle" lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi' + reagent_container_liquid_sound = SFX_DEFAULT_LIQUID_SLOSH ///Like Edible's food type, what kind of drink is this? var/drink_type = NONE diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index c0882dbd30e18..3401f486f1201 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -227,6 +227,7 @@ var/mutable_appearance/cap_overlay var/flip_chance = 10 custom_price = PAYCHECK_LOWER * 0.8 + reagent_container_liquid_sound = SFX_PLASTIC_BOTTLE_LIQUID_SLOSH /obj/item/reagent_containers/cup/glass/waterbottle/Initialize(mapload) cap_overlay = mutable_appearance(cap_icon, cap_icon_state) diff --git a/code/modules/reagents/reagent_containers/misc.dm b/code/modules/reagents/reagent_containers/misc.dm index 8b13ab4a54beb..735fd1b9fb17a 100644 --- a/code/modules/reagents/reagent_containers/misc.dm +++ b/code/modules/reagents/reagent_containers/misc.dm @@ -128,6 +128,7 @@ has_variable_transfer_amount = FALSE volume = 5 spillable = FALSE + reagent_container_liquid_sound = null /obj/item/reagent_containers/cup/rag/Initialize(mapload) . = ..() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index a1792a9670db3..17ce2fea149f4 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -25,6 +25,7 @@ volume = 250 possible_transfer_amounts = list(5,10) var/spray_sound = 'sound/effects/spray2.ogg' + reagent_container_liquid_sound = SFX_DEFAULT_LIQUID_SLOSH /obj/item/reagent_containers/spray/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) return try_spray(interacting_with, user) ? ITEM_INTERACT_SUCCESS : ITEM_INTERACT_BLOCKING diff --git a/code/modules/religion/honorbound/honorbound_trauma.dm b/code/modules/religion/honorbound/honorbound_trauma.dm index 6bc0879b12592..ed4ecde1592ba 100644 --- a/code/modules/religion/honorbound/honorbound_trauma.dm +++ b/code/modules/religion/honorbound/honorbound_trauma.dm @@ -73,6 +73,8 @@ guilty(attacked_mob, "for blasphemous magicks!") if(HAS_TRAIT(attacked_mob, TRAIT_CULT_HALO)) guilty(attacked_mob, "for blasphemous worship!") + if(HAS_TRAIT(attacked_mob, TRAIT_EVIL)) + guilty(attacked_mob, "an almost fanatical commitment to EEEEVIL!") if(attacked_mob.mind) var/datum/mind/guilty_conscience = attacked_mob.mind if(guilty_conscience.has_antag_datum(/datum/antagonist/abductor)) diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm index d7d0fa818441c..b54c4e09b2951 100644 --- a/code/modules/religion/rites.dm +++ b/code/modules/religion/rites.dm @@ -150,7 +150,8 @@ ) = 9, // Brain / Head list( - /obj/item/organ/internal/cyberimp/brain/anti_drop = 100, + /obj/item/organ/internal/cyberimp/brain/anti_drop = 50, + /obj/item/organ/internal/cyberimp/brain/connector = 50, /obj/item/organ/internal/cyberimp/brain/anti_stun = 10, ) = 10, // Misc diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 5daf936119076..c34411fff61cb 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -592,6 +592,23 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/datum/design/cyberimp_connector + name = "CNS Skillchip Connector Implant" + desc = "This cybernetic adds a port to the back of your head, where you can remove or add skillchips at will." + id = "ci-connector" + build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + construction_time = 6 SECONDS + materials = list( + /datum/material/iron = SMALL_MATERIAL_AMOUNT*6, + /datum/material/glass = SMALL_MATERIAL_AMOUNT*6, + /datum/material/titanium = SMALL_MATERIAL_AMOUNT*3, + ) + build_path = /obj/item/organ/internal/cyberimp/brain/connector + category = list( + RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + /datum/design/cyberimp_nutriment name = "Nutriment Pump Implant" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving." diff --git a/code/modules/research/techweb/nodes/cyborg_nodes.dm b/code/modules/research/techweb/nodes/cyborg_nodes.dm index eeeed268be552..580b5380bb1ac 100644 --- a/code/modules/research/techweb/nodes/cyborg_nodes.dm +++ b/code/modules/research/techweb/nodes/cyborg_nodes.dm @@ -162,6 +162,7 @@ "ci-nutriment", "ci-thrusters", "ci-herculean", + "ci-connector", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL) diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index 89baa18720d7b..caaafd056423d 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -150,6 +150,10 @@ Slimecrossing Armor slowdown = 4 var/hit_reflect_chance = 40 +/obj/item/clothing/suit/armor/heavy/adamantine/Initialize(mapload) + . = ..() + AddComponent(/datum/component/item_equipped_movement_rustle, SFX_PLATE_ARMOR_RUSTLE, 8) + /obj/item/clothing/suit/armor/heavy/adamantine/IsReflect(def_zone) if((def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) && prob(hit_reflect_chance)) return TRUE diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index c23c370f47e93..9d181ba3255f8 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -559,7 +559,7 @@ color_override = "orange", ) INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts)) - // SSmapping.mapvote() //If no map vote has been run yet, start one. - BUBBER EDIT we have our own map vote + // INVOKE_ASYNC(SSvote, TYPE_PROC_REF(/datum/controller/subsystem/vote, initiate_vote), /datum/vote/map_vote, vote_initiator_name = "Map Rotation", forced = TRUE) // BUBBER EDIT REMOVAL we have our own map vote if(!is_reserved_level(z)) CRASH("Emergency shuttle did not move to transit z-level!") diff --git a/code/modules/spells/spell_types/conjure/simian.dm b/code/modules/spells/spell_types/conjure/simian.dm index b64a34f847ea7..1f1074cb981fb 100644 --- a/code/modules/spells/spell_types/conjure/simian.dm +++ b/code/modules/spells/spell_types/conjure/simian.dm @@ -98,7 +98,7 @@ weapon.attack_self(summoned_monkey) // Fashionable ape wear, organised by tier - var/list/static/monky_hats = list( + var/static/list/monky_hats = list( null, // nothin here /obj/item/clothing/head/costume/garland, /obj/item/clothing/head/helmet/durathread, diff --git a/code/modules/spells/spell_types/pointed/tie_shoes.dm b/code/modules/spells/spell_types/pointed/tie_shoes.dm index b8efafaf3ba92..42c47779aea2d 100644 --- a/code/modules/spells/spell_types/pointed/tie_shoes.dm +++ b/code/modules/spells/spell_types/pointed/tie_shoes.dm @@ -46,7 +46,7 @@ return isliving(cast_on) // We need to override this, as trying to change next_use_time in cast() will just result in it being overridden. -/datum/action/cooldown/spell/touch/before_cast(atom/cast_on) +/datum/action/cooldown/spell/pointed/untie_shoes/before_cast(atom/cast_on) return ..() | SPELL_NO_IMMEDIATE_COOLDOWN /datum/action/cooldown/spell/pointed/untie_shoes/cast(mob/living/carbon/cast_on) diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm index f71e29631b384..e9f3a88f481c3 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm @@ -40,7 +40,7 @@ icon_state = "brain_implant_antidrop" var/active = FALSE var/list/stored_items = list() - slot = ORGAN_SLOT_BRAIN_ANTIDROP + slot = ORGAN_SLOT_BRAIN_CEREBELLUM actions_types = list(/datum/action/item_action/organ_action/toggle) /obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click() @@ -100,7 +100,7 @@ name = "CNS rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." icon_state = "brain_implant_rebooter" - slot = ORGAN_SLOT_BRAIN_ANTISTUN + slot = ORGAN_SLOT_BRAIN_CNS var/static/list/signalCache = list( COMSIG_LIVING_STATUS_STUN, @@ -179,6 +179,107 @@ organ_flags &= ~ORGAN_FAILING implant_ready() +/obj/item/organ/internal/cyberimp/brain/connector + name = "CNS skillchip connector implant" + desc = "This cybernetic adds a port to the back of your head, where you can remove or add skillchips at will." + icon_state = "brain_implant_connector" + slot = ORGAN_SLOT_BRAIN_CNS + actions_types = list(/datum/action/item_action/organ_action/use) + +/obj/item/organ/internal/cyberimp/brain/connector/ui_action_click() + + to_chat(owner, span_warning("You start fiddling around with [src]...")) + playsound(owner, 'sound/items/taperecorder/tape_flip.ogg', 20, vary = TRUE) // asmr + + if(!do_after(owner, 1.5 SECONDS, owner)) // othwerwise it doesnt appear + to_chat(owner, span_warning("You were interrupted!")) + return + + if(organ_flags & ORGAN_FAILING) + var/holy_shit_my_brain = remove_brain() + if(holy_shit_my_brain) + to_chat(owner, span_warning("You take [holy_shit_my_brain] out of [src]. You stare at it for a moment in confusion.")) + return + + var/obj/item/skillchip/skillchip = owner.get_active_held_item() + if(skillchip) + if(istype(skillchip, /obj/item/skillchip)) + insert_skillchip(skillchip) + else + to_chat(owner, span_warning("You try to insert [owner.get_active_held_item()] into [src], but it won't fit!")) // make it kill you if you shove a crayon inside or something + else // no inhand item, assume removal + var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(/obj/item/organ/internal/brain) + if(!chippy_brain) + CRASH("we using a brain implant wit no brain") + remove_skillchip(chippy_brain) + +/obj/item/organ/internal/cyberimp/brain/connector/proc/insert_skillchip(obj/item/skillchip/skillchip) + var/fail_string = owner.implant_skillchip(skillchip, force = FALSE) + if(fail_string) + to_chat(owner, span_warning(fail_string)) + playsound(owner, 'sound/machines/buzz/buzz-sigh.ogg', 10, vary = TRUE) + return + + var/refail_string = skillchip.try_activate_skillchip(silent = FALSE, force = FALSE) + if(refail_string) + to_chat(owner, span_warning(fail_string)) + playsound(owner, 'sound/machines/buzz/buzz-two.ogg', 10, vary = TRUE) + return + + // success! + playsound(owner, 'sound/machines/chime.ogg', 10, vary = TRUE) + +/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_skillchip(obj/item/organ/internal/brain/chippy_brain) + var/obj/item/skillchip/skillchip = show_radial_menu(owner, owner, chippy_brain.skillchips) + if(skillchip) + owner.remove_skillchip(skillchip, silent = FALSE) + skillchip.forceMove(owner.drop_location()) + owner.put_in_hands(skillchip, del_on_fail = FALSE) + playsound(owner, 'sound/machines/click.ogg', 10, vary = TRUE) + to_chat(owner, span_warning("You take [skillchip] out of [src].")) + return + + to_chat(owner, span_warning("Your brain is empty!")) // heh + +/obj/item/organ/internal/cyberimp/brain/connector/emp_act(severity) + . = ..() + if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) + return + organ_flags |= ORGAN_FAILING + var/loops = 1 + if(severity != EMP_LIGHT) + loops = 2 + for(var/i in 1 to loops) + // you either lose a chip or a bit of your brain + owner.visible_message(span_warning("Something falls to the ground from behind [owner]'s head."),\ + span_boldwarning("You feel something fall off from behind your head.")) + var/obj/item/organ/internal/brain/chippy_brain = owner.get_organ_by_type(ORGAN_SLOT_BRAIN) + var/obj/item/skillchip/skillchip = chippy_brain?.skillchips[1] + if(skillchip) + owner.remove_skillchip(skillchip, silent = TRUE) + skillchip.forceMove(owner.drop_location()) + playsound(owner, 'sound/machines/terminal/terminal_eject.ogg', 25, TRUE) + else + remove_brain() + addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) + +/obj/item/organ/internal/cyberimp/brain/connector/proc/remove_brain(obj/item/organ/internal/brain/chippy_brain, severity = 1) + playsound(owner, 'sound/effects/meatslap.ogg', 25, TRUE) + if(!chippy_brain) + return + chippy_brain.apply_organ_damage(20 * severity) + chippy_brain.maxHealth -= 15 * severity // a bit of your brain fell off. again. + if(chippy_brain.damage >= chippy_brain.maxHealth) + chippy_brain.forceMove(owner.drop_location()) + owner.visible_message(span_userdanger("[owner]'s brain falls off the back of [owner.p_their()] head!!!"), span_boldwarning("You feel like you're missing something.")) + return chippy_brain + + new /obj/effect/decal/cleanable/blood/gibs/up(get_turf(owner)) + return FALSE + +/obj/item/organ/internal/cyberimp/brain/connector/proc/reboot() + organ_flags &= ~ORGAN_FAILING + //[[[[MOUTH]]]] /obj/item/organ/internal/cyberimp/mouth zone = BODY_ZONE_PRECISE_MOUTH diff --git a/code/modules/tgui/states/standing.dm b/code/modules/tgui/states/standing.dm new file mode 100644 index 0000000000000..5d6a49c401e9d --- /dev/null +++ b/code/modules/tgui/states/standing.dm @@ -0,0 +1,17 @@ +/** + * tgui state: standing_state + * + * Checks that the user isn't incapacitated and is standing upright + */ + +GLOBAL_DATUM_INIT(standing_state, /datum/ui_state/not_incapacitated_state/standing, new) + +/datum/ui_state/not_incapacitated_state/standing + +/datum/ui_state/not_incapacitated_state/standing/can_use_topic(src_object, mob/user) + if (!isliving(user)) + return ..() + var/mob/living/living_user = user + if (living_user.body_position) + return UI_DISABLED + return ..() diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 234e810bc2282..a386f7ad17a1a 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -99,6 +99,7 @@ #include "bake_a_cake.dm" #include "barsigns.dm" #include "baseturfs.dm" +#include "bee.dm" #include "bespoke_id.dm" #include "binary_insert.dm" #include "bitrunning.dm" @@ -118,6 +119,7 @@ #include "circuit_component_category.dm" #include "client_colours.dm" #include "closets.dm" +#include "clothing_drops_items.dm" #include "clothing_under_armor_subtype_check.dm" #include "combat.dm" #include "combat_stamina.dm" @@ -133,6 +135,7 @@ #include "dcs_get_id_from_elements.dm" #include "designs.dm" #include "dismemberment.dm" +#include "dna_infusion.dm" #include "door_access.dm" #include "dragon_expiration.dm" #include "drink_icons.dm" @@ -209,7 +212,6 @@ #include "operating_table.dm" #include "orderable_items.dm" #include "organ_bodypart_shuffle.dm" -#include "organ_set_bonus.dm" #include "organs.dm" #include "orphaned_genturf.dm" #include "outfit_sanity.dm" diff --git a/code/modules/unit_tests/bee.dm b/code/modules/unit_tests/bee.dm new file mode 100644 index 0000000000000..dad3a4d1a7372 --- /dev/null +++ b/code/modules/unit_tests/bee.dm @@ -0,0 +1,15 @@ +/// Test beegent transfer +/datum/unit_test/beegent + +/datum/unit_test/beegent/Run() + var/mob/living/basic/bee/bee = allocate(__IMPLIED_TYPE__) + var/turf/bee_turf = get_turf(bee) + var/datum/reagent/picked = GLOB.chemical_reagents_list[/datum/reagent/toxin/fentanyl] + bee.assign_reagent(picked) + bee.death() + var/obj/item/trash/bee/dead_bee = locate() in bee_turf + TEST_ASSERT_NOTNULL(dead_bee, "The bee did not leave a corpse.") + TEST_ASSERT_EQUAL(dead_bee.beegent, picked, "The bee's corpse did not have the correct beegent assigned.") + TEST_ASSERT(dead_bee.reagents.has_reagent(/datum/reagent/toxin/fentanyl), "The bee's corpse did not contain any of the beegent.") + // clean up, we aren't allocated + QDEL_NULL(dead_bee) diff --git a/code/modules/unit_tests/clothing_drops_items.dm b/code/modules/unit_tests/clothing_drops_items.dm new file mode 100644 index 0000000000000..8f1653bf4b6d2 --- /dev/null +++ b/code/modules/unit_tests/clothing_drops_items.dm @@ -0,0 +1,53 @@ +/// Tests that removing a piece of clothing drops items that hold said piece of clothing +/datum/unit_test/clothing_drops_items + +/datum/unit_test/clothing_drops_items/Run() + test_human() + test_android() + +/datum/unit_test/clothing_drops_items/proc/test_human() + var/list/dummy_items = allocate_items() + var/mob/living/carbon/human/consistent/dummy = allocate(__IMPLIED_TYPE__) + + for(var/slot in dummy_items) + TEST_ASSERT(dummy.equip_to_slot_if_possible(dummy_items[slot], text2num(slot)), \ + "[/datum/species/human::name] Dummy failed to equip one of the starting items ([dummy_items[slot]]). Test aborted.") + + dummy.dropItemToGround(dummy.w_uniform) + + for(var/slot in dummy_items) + var/obj/item/item = dummy_items[slot] + if(item.slot_flags & ITEM_SLOT_ICLOTHING) + continue + else if(item.slot_flags & (ITEM_SLOT_BACK|ITEM_SLOT_FEET)) + TEST_ASSERT_EQUAL(item.loc, dummy, "[item] should not have been dropped when unequipping the jumpsuit from \a [/datum/species/human::name].") + else + TEST_ASSERT_EQUAL(item.loc, dummy.loc, "[item] should have been dropped when unequipping the jumpsuit from \a [/datum/species/human::name].") + +/datum/unit_test/clothing_drops_items/proc/test_android() + var/list/robo_dummy_items = allocate_items() + var/mob/living/carbon/human/consistent/robo_dummy = allocate(__IMPLIED_TYPE__) + robo_dummy.set_species(/datum/species/android) + + for(var/slot in robo_dummy_items) + TEST_ASSERT(robo_dummy.equip_to_slot_if_possible(robo_dummy_items[slot], text2num(slot)), \ + "[/datum/species/android::name] Dummy failed to equip one of the starting items ([robo_dummy_items[slot]]). Test aborted.") + + robo_dummy.dropItemToGround(robo_dummy.w_uniform) + + for(var/slot in robo_dummy_items) + var/obj/item/item = robo_dummy_items[slot] + if(item.slot_flags & ITEM_SLOT_ICLOTHING) + continue + TEST_ASSERT_EQUAL(item.loc, robo_dummy, "[item] should not have been dropped when unequipping the jumpsuit from \a [/datum/species/android::name].") + +/datum/unit_test/clothing_drops_items/proc/allocate_items() + return list( + "[ITEM_SLOT_ICLOTHING]" = allocate(/obj/item/clothing/under/color/rainbow), // do this one first, it holds everything + "[ITEM_SLOT_FEET]" = allocate(/obj/item/clothing/shoes/jackboots), + "[ITEM_SLOT_BELT]" = allocate(/obj/item/storage/belt/utility), + "[ITEM_SLOT_BACK]" = allocate(/obj/item/storage/backpack), + "[ITEM_SLOT_ID]" = allocate(/obj/item/card/id/advanced/gold/captains_spare), + "[ITEM_SLOT_RPOCKET]" = allocate(/obj/item/assembly/flash/handheld), + "[ITEM_SLOT_LPOCKET]" = allocate(/obj/item/toy/plush/lizard_plushie), + ) diff --git a/code/modules/unit_tests/dcs_check_list_arguments.dm b/code/modules/unit_tests/dcs_check_list_arguments.dm index 67d7417062b27..769574cf95f29 100644 --- a/code/modules/unit_tests/dcs_check_list_arguments.dm +++ b/code/modules/unit_tests/dcs_check_list_arguments.dm @@ -11,7 +11,7 @@ * * Most of the time, you won't encounter two different static lists with similar contents used as element args, * meaning using static lists is accepted. However, should that happen, it's advised to replace the instances - * with various string_x procs: lists, assoc_lists, assoc_nested_lists or numbers_list, depending on the type. + * with either string_list(), string_assoc_list(), string_assoc_nested_list() or string_numbers_list(), depending on the contents of the list. * * In the case of an element where the position of the contents of each datum list argument is important, * ELEMENT_DONT_SORT_LIST_ARGS should be added to its flags, to prevent such issues where the contents are similar @@ -51,5 +51,5 @@ TEST_FAIL("Found [length(bad_lists)] datum list arguments with similar contents for [element_type]. Contents: [json_encode(unsorted_list)].") ///Let's avoid sending the same instructions over and over, as it's just going to clutter the CI and confuse someone. if(we_failed) - TEST_FAIL("Ensure that each list is static or cached. string_lists() (as well as similar procs) is your friend here.\n\ + TEST_FAIL("Ensure that each list is static or cached. string_list() (as well as similar procs) is your friend here.\n\ Check the documentation from dcs_check_list_arguments.dm for more information!") diff --git a/code/modules/unit_tests/organ_set_bonus.dm b/code/modules/unit_tests/dna_infusion.dm similarity index 87% rename from code/modules/unit_tests/organ_set_bonus.dm rename to code/modules/unit_tests/dna_infusion.dm index 8e2c65270f779..0df63be644b98 100644 --- a/code/modules/unit_tests/organ_set_bonus.dm +++ b/code/modules/unit_tests/dna_infusion.dm @@ -1,3 +1,16 @@ +///Check that input types that aren't living mobs have the TRAIT_VALID_DNA_INFUSION trait +/datum/unit_test/valid_dna_infusion + +/datum/unit_test/valid_dna_infusion/Run() + for(var/datum/infuser_entry/infuser_entry as anything in flatten_list(GLOB.infuser_entries)) + for(var/input_type as anything in infuser_entry.input_obj_or_mob) + if(ispath(input_type, /mob/living)) + continue + var/atom/movable/movable = allocate(input_type) + if(!HAS_TRAIT(movable, TRAIT_VALID_DNA_INFUSION)) + //TEST_FAIL() doesn't early return the unit test so we can keep checking. + TEST_FAIL("[input_type] is in the 'input_obj_or_mob' list for [infuser_entry.type] but doesn't have TRAIT_VALID_DNA_INFUSION.") + /// Checks that all "organ_set_bonus" status effects have unique "id" vars. /// Required to ensure that the status effects are treated as "unique". /datum/unit_test/organ_set_bonus_id diff --git a/code/modules/vehicles/mecha/mecha_movement.dm b/code/modules/vehicles/mecha/mecha_movement.dm index dcd6f47c4fc05..a4b21190a1ec3 100644 --- a/code/modules/vehicles/mecha/mecha_movement.dm +++ b/code/modules/vehicles/mecha/mecha_movement.dm @@ -29,6 +29,11 @@ /obj/vehicle/sealed/mecha/proc/play_stepsound() if(mecha_flags & QUIET_STEPS) return + + // if we are on the second step of the diagonal movement, don't play step sound + if(src.moving_diagonally == SECOND_DIAG_STEP) + return + playsound(src, stepsound, 40, TRUE) // Do whatever you do to mobs to these fuckers too @@ -131,9 +136,8 @@ break //if we're not facing the way we're going rotate us + // 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)) - if(dir != direction && !(mecha_flags & QUIET_TURNS) && !step_silent) - playsound(src,turnsound,40,TRUE) setDir(direction) if(keyheld || !pivot_step) //If we pivot step, we don't return here so we don't just come to a stop return TRUE @@ -141,6 +145,11 @@ set_glide_size(DELAY_TO_GLIDE_SIZE(movedelay)) //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/vending/cola.dm b/code/modules/vending/cola.dm index d9fddd07f1731..21f61f9a98b28 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -36,6 +36,40 @@ extra_price = PAYCHECK_CREW payment_department = ACCOUNT_SRV + var/static/list/spiking_booze = list( + // Your "common" spiking booze + /datum/reagent/consumable/ethanol/vodka = 5, + /datum/reagent/consumable/ethanol/beer = 5, + /datum/reagent/consumable/ethanol/whiskey = 5, + /datum/reagent/consumable/ethanol/gin = 5, + /datum/reagent/consumable/ethanol/rum = 5, + // A bit rarer, can be dangerous if you take too much + /datum/reagent/consumable/ethanol/thirteenloko = 3, + /datum/reagent/consumable/ethanol/absinthe = 3, + /datum/reagent/consumable/ethanol/hooch = 3, + /datum/reagent/consumable/ethanol/moonshine = 3, + // Gets funky here + /datum/reagent/consumable/ethanol/beepsky_smash = 1, + /datum/reagent/consumable/ethanol/gargle_blaster = 1, + /datum/reagent/consumable/ethanol/neurotoxin = 1, + ) + +/obj/machinery/vending/cola/on_dispense(obj/item/vended_item) + // 35% chance that your drink will be safe, as safe pure acid and sugar that these drinks probably are can be + if(!onstation || !HAS_TRAIT(SSstation, STATION_TRAIT_SPIKED_DRINKS) || !prob(65)) + return + // Don't fill booze with more booze + if (isnull(vended_item.reagents) || vended_item.reagents.has_reagent(/datum/reagent/consumable/ethanol, check_subtypes = TRUE)) + return + var/removed_volume = vended_item.reagents.remove_all(rand(5, vended_item.reagents.maximum_volume * 0.5)) + if (!removed_volume) + return + // Don't want bubbling sodas when we add some rum to cola + ADD_TRAIT(vended_item, TRAIT_SILENT_REACTIONS, VENDING_MACHINE_TRAIT) + vended_item.reagents.add_reagent(pick_weight(spiking_booze), removed_volume) + vended_item.reagents.handle_reactions() + REMOVE_TRAIT(vended_item, TRAIT_SILENT_REACTIONS, VENDING_MACHINE_TRAIT) + /obj/item/vending_refill/cola machine_name = "Robust Softdrinks" icon_state = "refill_cola" diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 98a77c7f40c3d..ce51c196746d2 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -45,7 +45,7 @@ /obj/item/stack/pipe_cleaner_coil/random = 10, ), ), - list( + list( "name" = "Fishing", "icon" = "fish", "products" = list( @@ -54,6 +54,7 @@ /obj/item/storage/box/fishing_lines = 2, /obj/item/storage/box/fishing_lures = 2, /obj/item/book/manual/fish_catalog = 5, + /obj/item/fish_feed = 4, /obj/item/fish_analyzer = 2, /obj/item/fishing_rod/telescopic = 1, ), @@ -96,6 +97,7 @@ /obj/item/clothing/shoes/wheelys/skishoes = 4, /obj/item/instrument/musicalmoth = 1, /obj/item/gun/ballistic/revolver/russian = 1, //the most dangerous game + /obj/item/skillchip/acrobatics = 1, ) premium = list( /obj/item/disk/holodisk = 5, diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml index 416ad6175c7a9..8a01e45b0f0f0 100644 --- a/html/changelogs/archive/2024-11.yml +++ b/html/changelogs/archive/2024-11.yml @@ -431,3 +431,146 @@ NullDagaf: - rscadd: added bellies - rscadd: added butts + Absolucy: + - bugfix: Allow dot radio prefixes to also work with the tgui-say radio prefix display. + Ben10Omintrix: + - code_imp: animals' food hunting behavior has been refactored, please report any + bugs + - rscadd: adds a new station trait, "bring your pet to work" day + - bugfix: fixes ashdrake arena attack not clearing out lavaland walls + Cruix: + - bugfix: Fixed chameleon clothing sometimes making you bald or hiding other parts + of your sprite. + DATA-xPUNGED: + - bugfix: Xeno queens can once again promote Drones to Praetorians + - bugfix: They can also once again do hand emotes + - bugfix: Ghosts can now see the details of an ID from any distance + - bugfix: Server Hopping should fade your screen into black, as it should. + EEASAS: + - bugfix: adds plasma to wawastation's xenobio + EnterTheJake: + - bugfix: Dark matter singularity no longer gets stuck on other z levels when summoned. + - bugfix: Space Phase now makes the Heretic Space proof. + EuSouAFazer: + - balance: '[TGC] Rebalances nearly every card in the game.' + - balance: '[TGC] Several keywords had their effects modified.' + - bugfix: '[TGC] Black Gaia is no longer an "Artifact", Fryer no longer mentions + tapping it.' + - spellcheck: '[TGC] Replaced "Tap this card:" with just "Tap:" alongside other + wording improvements' + - spellcheck: '[TGC] Mana has been replaced with Plasma. This is a completely cosmetic + change.' + - refactor: '[TGC] Merged many, many redudant card subtypes (the mechanic, not the + byond code stuff) into more comprehensive ones.' + FlufflesTheDog: + - bugfix: Mops and similar work properly on multi-z stations + Ghommie: + - bugfix: Fish like slimefish, unmarine bonemass and deepfryer fish can now be used + for DNA infusions. + - rscadd: The fishing skillchip now grants an action that dispenses fishing tips. + - rscadd: You can buy a fishing rod pre-equipped with a rescue hook from the mining + order console. + - balance: Paramedics can get a rescue fishing hook as a heirloom. + - bugfix: fixed fish infusion. Whoopsies. + - rscadd: Feeding fish certain reagents may have some effects. Mutagen for increased + evolution probability. Growth serum for faster growth. Teslium for electrogenesis. + - bugfix: The fishing portal generator (fish-porter 3000) now correctly links with + lava turfs from lavaland. + Hardly3D: + - spellcheck: fixes a small error in text when adjusting kitsune masks + Iajret: + - bugfix: health analyzers will show if your heart is missing once again + Jewelry-x: + - bugfix: fixed reagents not being applied correctly by venomous mobs + - bugfix: dead borgs no longer become invisible upon changing z level + - bugfix: the ghost "t-ray view" no longer requires a double press to activate a + second time. + - qol: renamed "t-ray view" to "t-ray scan" for clarity. + - bugfix: fixed mech step sound playing twice diagonally + - bugfix: fixed turn sound playing every time you move diagonally, now only plays + when the sprite turns + KazooBard: + - rscadd: More cardboard cutout icons (Pirate, ninja, changeling, heretic, abductor) + Mamaii: + - rscadd: shower will give felinids negative mood effect + - bugfix: fixed shower hater status effect alert not showing + Melbert: + - bugfix: Fixed medipens injecting 2x their contents + - bugfix: Fixes stuff staying on your body after removing your clothes + - bugfix: Dead bees maintain their color and reagents + Qwertytoforty: + - bugfix: Anomalies no longer spawn in objects or mobs from the supermatter. + SmArtKar: + - bugfix: Untie shoes should have its cooldown increased correctly when casting + it from a long distance + - qol: Jetpack movement near walls should be much smoother + - spellcheck: Fixed a typo in multiple lives component + - balance: You can no longer view operating computer UI while lying down + - rscadd: New station trait "Spiked Drinks" that will add booze to most sodas has + been added to rotation. + - bugfix: Ghosts can no longer cut people's tethers + StrangeWeirdKitten: + - admin: The Law Panel now properly logs and communicates law edits. + Striders13: + - balance: replaced gas mask fov with pepperspray applying tint to gas masks, making + the wearer blind until washed off. + SyncIt21: + - bugfix: you can drop/put drone tools back in the toolbox + - bugfix: you cannot dump the contents of the drone toolbox + YakumoChen: + - spellcheck: Proofreads some faxes sent during radioactive nebulae + ZephyrTFA: + - qol: map votes are now winner take all instead of weighted. + Zydras, RimiNosha: + - map: Biodome got a ton of fixes and tweaks, send feedback to RimiNosha so more + can be done! + carlarctg: + - rscadd: Added the FOSBURY skillchip, found in hacked toy vendors. This skillchip + allows you to bypass the emote cooldown when flipping or spinning. However, + if used too often, it will lower the chip's integrity and cause malfunctions. + - rscadd: Added the Chipped quirk. It allows you to spawn with one base skillchip. + (not the one above) + - rscadd: Added the Chip Connector quirk. It contains a new implant, the chip connector, + which allows you to install and take out skillchips at any time. + - code_imp: Renamed the organ slots for brain implants and made the connector implant + take the CNS slot. + - rscadd: you can use lizards to get lizard organs in the dna infuser + grungussuss: + - sound: plate armor now makes sound when moving around in it + - sound: helmets and their visors make sounds now + - code_imp: cleaned up laser tag helmet code a bit + - sound: ballistics have new handling sounds + - sound: gas analyzer now has handling sounds + - sound: reagent containers now make sounds if there is liquid in them when picked + up or dropped + - sound: fire extinguishers now make sounds when dropped or picked up + - bugfix: a lot of items that shouldn't slosh when picked up will no longer slosh + - balance: all chainsaws can now behead people + - bugfix: removed a few var edits from maps + - sound: medical, jani, soulstone, grenade belts got sounds + - rscadd: a lot of basic mobs and pets got new emotes + - refactor: emotes triggered by petting pets work differently now, please report + any oddities with these behaviors. + - sound: new emotes for basic mobs got sounds + - qol: offering an item displays a balloon alert + - sound: cards have new handling sounds + - bugfix: snore emote works properly now + junkgle01: + - image: resprited surplus limbs + necromanceranne: + - rscadd: Fundamentally Evil quirk. You might act normal, but you know deep down + that you totally don't give a shit about anyone but yourself. Empaths better + watch out. + - bugfix: Pyrokinesis/Cryokinesis cast range matches its projectile range. + - code_imp: Pyrokinesis and Cindikinesis are now their own types and not subtypes + of Cryokinesis and Geladikinesis. This allows you to not have to mutate yourself + in a specific order to not lock yourself out of the other mutation. + unit0016: + - bugfix: Shuttles that land next to plasma turfs no longer ruin the mass hallucination + that is Icebox having Plasma and not just super-deadly; spiky basalt deltas. + You're welcome; unreality fans. + vinylspiders: + - bugfix: fixes a bunch of improper static list declarations + wonderinghost: + - rscadd: Adds a few lights + - bugfix: removes the darkspot in wawa med diff --git a/icons/hud/lobby/signup_button.dmi b/icons/hud/lobby/signup_button.dmi index e015fa71948a3..26d32e9af8384 100644 Binary files a/icons/hud/lobby/signup_button.dmi and b/icons/hud/lobby/signup_button.dmi differ diff --git a/icons/mob/augmentation/surplus_augments.dmi b/icons/mob/augmentation/surplus_augments.dmi index 0fafab0533694..82e83ec27d76b 100644 Binary files a/icons/mob/augmentation/surplus_augments.dmi and b/icons/mob/augmentation/surplus_augments.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index ebcfea5967596..f38ce00161941 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 b8fd65ec07206..4639b290fe371 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/medical/organs/organs.dmi b/icons/obj/medical/organs/organs.dmi index a9366894d7bf3..06ed0e7058d1d 100644 Binary files a/icons/obj/medical/organs/organs.dmi and b/icons/obj/medical/organs/organs.dmi differ diff --git a/icons/obj/pet_carrier.dmi b/icons/obj/pet_carrier.dmi index 0a2b4f6c430e9..366fddd414412 100644 Binary files a/icons/obj/pet_carrier.dmi and b/icons/obj/pet_carrier.dmi differ diff --git a/modular_skyrat/modules/automapper/code/area_spawn_subsystem.dm b/modular_skyrat/modules/automapper/code/area_spawn_subsystem.dm index 89fd12bd40744..63bd3bab57b61 100644 --- a/modular_skyrat/modules/automapper/code/area_spawn_subsystem.dm +++ b/modular_skyrat/modules/automapper/code/area_spawn_subsystem.dm @@ -263,7 +263,7 @@ SUBSYSTEM_DEF(area_spawn) /// See code/__DEFINES/~skyrat_defines/automapper.dm var/mode = AREA_SPAWN_MODE_OPEN /// Map blacklist, this is used to determine what maps we should not spawn on. - var/list/blacklisted_stations = list("Void Raptor", "Runtime Station", "MultiZ Debug", "Gateway Test", "Blueshift") + var/list/blacklisted_stations = list("Void Raptor", "Runtime Station", "MultiZ Debug", "Gateway Test", "Blueshift", "Biodome") /// If failing to find a suitable area is OK, then this should be TRUE or CI will fail. /// Should probably be true if the target_areas are random, such as ruins. var/optional = FALSE diff --git a/modular_skyrat/modules/customization/modules/clothing/masks/gasmask.dm b/modular_skyrat/modules/customization/modules/clothing/masks/gasmask.dm index eb9ab470ebf2d..13a7ced1ba5bf 100644 --- a/modular_skyrat/modules/customization/modules/clothing/masks/gasmask.dm +++ b/modular_skyrat/modules/customization/modules/clothing/masks/gasmask.dm @@ -55,7 +55,6 @@ clothing_flags = MASKINTERNALS flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE - has_fov = FALSE greyscale_config = /datum/greyscale_config/clown_mask greyscale_config_worn = /datum/greyscale_config/clown_mask/worn greyscale_colors = "#FFFFFF#F20018#0000FF#00CC00" @@ -80,7 +79,6 @@ icon_state = "respirator" inhand_icon_state = "sechailer" w_class = WEIGHT_CLASS_SMALL - has_fov = FALSE clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEFACIALHAIR|HIDESNOUT flags_cover = MASKCOVERSMOUTH diff --git a/modular_skyrat/modules/implants/code/augments_internal.dm b/modular_skyrat/modules/implants/code/augments_internal.dm index ea4158bfc2386..1d52cedeacf74 100644 --- a/modular_skyrat/modules/implants/code/augments_internal.dm +++ b/modular_skyrat/modules/implants/code/augments_internal.dm @@ -3,7 +3,7 @@ desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious outside of REM sleeping cycles. Has a short cooldown. Conflicts with the CNS Rebooter, making them incompatible with eachother." icon_state = "brain_implant_rebooter" implant_color = "#0356fc" - slot = ORGAN_SLOT_BRAIN_ANTISTUN //One or the other, not both. + slot = ORGAN_SLOT_BRAIN_CNS //One or the other, not both. var/cooldown /obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life(seconds_per_tick, times_fired) diff --git a/modular_skyrat/modules/synths/code/bodyparts/brain.dm b/modular_skyrat/modules/synths/code/bodyparts/brain.dm index 266ff17255057..824c3df27e05f 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/brain.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/brain.dm @@ -38,7 +38,7 @@ to_chat(owner, span_warning("Alert: Electromagnetic damage taken in central processing unit. Error Code: 401-YT")) apply_organ_damage(SYNTH_ORGAN_LIGHT_EMP_DAMAGE, SYNTH_EMP_BRAIN_DAMAGE_MAXIMUM, required_organ_flag = ORGAN_ROBOTIC) -/obj/item/organ/internal/brain/synth/apply_organ_damage(damage_amount, maximumm, required_organ_flag) +/obj/item/organ/internal/brain/synth/apply_organ_damage(damage_amount, maximum = maxHealth, required_organ_flag = NONE) . = ..() if(owner && damage > 0 && (world.time - last_message_time) > SYNTH_BRAIN_DAMAGE_MESSAGE_INTERVAL) diff --git a/modular_zubbers/code/game/objects/effects/landmarks.dm b/modular_zubbers/code/game/objects/effects/landmarks.dm index 17945051bceed..9b51680912549 100644 --- a/modular_zubbers/code/game/objects/effects/landmarks.dm +++ b/modular_zubbers/code/game/objects/effects/landmarks.dm @@ -20,3 +20,9 @@ /datum/controller/subsystem/job/ var/list/latejoin_override_trackers = list() + +/obj/effect/landmark/navigate_destination/cryo + location = "Cryopods" + +/obj/effect/landmark/navigate_destination/dockpublicmining + location = "Public Mining" diff --git a/modular_zubbers/code/modules/nyamagotchi/nyamagotchi.dm b/modular_zubbers/code/modules/nyamagotchi/nyamagotchi.dm index 6fea8b7104da3..6b8e985858cea 100644 --- a/modular_zubbers/code/modules/nyamagotchi/nyamagotchi.dm +++ b/modular_zubbers/code/modules/nyamagotchi/nyamagotchi.dm @@ -2,12 +2,12 @@ #define ANIMAL_ALIVE 1 #define ANIMAL_DEAD 2 -#define MEOW_NORMAL 'sound/creatures/cat/cat_meow1.ogg' +#define MEOW_NORMAL 'sound/mobs/non-humanoids/cat/cat_meow1.ogg' #define MEOW_SAD 'modular_zubbers/code/modules/nyamagotchi/sound/cat_sad.ogg' #define MEOW_CRITICAL 'modular_zubbers/code/modules/nyamagotchi/sound/cat_alert.ogg' #define EAT_FOOD 'modular_zubbers/code/modules/nyamagotchi/sound/cat_eat.ogg' -#define PURR_PLAY 'sound/creatures/cat/cat_purr1.ogg' -#define PURR_SLEEP 'sound/creatures/cat/cat_purr3.ogg' +#define PURR_PLAY 'sound/mobs/non-humanoids/cat/cat_purr1.ogg' +#define PURR_SLEEP 'sound/mobs/non-humanoids/cat/cat_purr3.ogg' /obj/item/toy/nyamagotchi name = "Nyamagotchi" diff --git a/modular_zubbers/code/modules/~donator/mothdonator.dm b/modular_zubbers/code/modules/~donator/mothdonator.dm index 41aec317dcb4b..d4b4cafe82b58 100644 --- a/modular_zubbers/code/modules/~donator/mothdonator.dm +++ b/modular_zubbers/code/modules/~donator/mothdonator.dm @@ -32,45 +32,8 @@ if(held_mob != null) held_mob.desc = desc -/mob/living/basic/mothroach/pet - name = "pet mothroach" - desc = "A domestic mothroach that has learnt commands." - - ai_controller = /datum/ai_controller/basic_controller/mothroach/pet - - // doesn't include attack bc mothroaches are prolly too weak for that - var/static/list/pet_commands = list( - /datum/pet_command/idle, - /datum/pet_command/free, - /datum/pet_command/good_boy, - /datum/pet_command/follow, - /datum/pet_command/point_targeting/fetch, - /datum/pet_command/play_dead, - ) - -/mob/living/basic/mothroach/pet/Initialize(mapload) - . = ..() - AddComponent(/datum/component/obeys_commands, pet_commands) - -/mob/living/basic/mothroach/pet/gib() - // Peoples' bespoke pets probably shouldn't be gibbable. - // This is both for RP reasons (don't force people to RP permanent pet death) and to prevent griefing. - return - -/datum/ai_controller/basic_controller/mothroach/pet - blackboard = list( - BB_VISION_RANGE = AI_DOG_VISION_RANGE, - BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, - ) - planning_subtrees = list( - /datum/ai_planning_subtree/random_speech/mothroach, - /datum/ai_planning_subtree/pet_planning, - ) - - - /// == DONATOR PET: Mr. Fluff, Central's Mothroach, ckey centralsmith == -/mob/living/basic/mothroach/pet/mr_fluff +/mob/living/basic/mothroach/mr_fluff name = "Mr. Fluff" desc = "Central's beloved pet mothroach, Mr. Fluff. He looks so happy to be here!" gender = MALE @@ -84,8 +47,8 @@ desc = "Central's beloved pet mothroach, Mr. Fluff. He looks so happy to be here!" icon = 'modular_zubbers/icons/mob/donator_pets.dmi' icon_state = "mr_fluff" + starting_pet = /mob/living/basic/mothroach/mr_fluff - starting_pet = /mob/living/basic/mothroach/pet/mr_fluff //FIND A BETTER SPOT FOR THIS /datum/preference/choiced/pet_gender category = PREFERENCE_CATEGORY_MANUALLY_RENDERED diff --git a/modular_zubbers/master_files/code/game/objects/effects/spawners/random/decoration.dm b/modular_zubbers/master_files/code/game/objects/effects/spawners/random/decoration.dm new file mode 100644 index 0000000000000..1c85f7cac58ab --- /dev/null +++ b/modular_zubbers/master_files/code/game/objects/effects/spawners/random/decoration.dm @@ -0,0 +1,23 @@ +/obj/effect/spawner/random/decoration/carpet/luxury + name = "5x full stack bar floor spawner" + spawn_loot_count = 5 + loot = list( + /obj/item/stack/tile/carpet{amount=60}, + /obj/item/stack/tile/carpet/black{amount=60}, + /obj/item/stack/tile/carpet/blue{amount=60}, + /obj/item/stack/tile/carpet/cyan{amount=60}, + /obj/item/stack/tile/carpet/executive{amount=60}, + /obj/item/stack/tile/carpet/orange{amount=60}, + /obj/item/stack/tile/carpet/purple{amount=60}, + /obj/item/stack/tile/carpet/red{amount=60}, + /obj/item/stack/tile/carpet/royalblack{amount=60}, + /obj/item/stack/tile/carpet/royalblue{amount=60}, + /obj/item/stack/tile/carpet/star{amount=60}, + /obj/item/stack/tile/carpet/stellar{amount=60}, + /obj/item/stack/tile/iron{amount=60}, + /obj/item/stack/tile/bamboo/tatami{amount=60}, + /obj/item/stack/tile/bamboo/tatami/black{amount=60}, + /obj/item/stack/tile/bamboo/tatami/purple{amount=60}, + /obj/item/stack/tile/glass/sixty, + /obj/item/stack/tile/grass{amount=60}, + ) diff --git a/sound/items/handling/armor_rustle/plate_armor/attribution.txt b/sound/items/handling/armor_rustle/plate_armor/attribution.txt new file mode 100644 index 0000000000000..681f995687fb3 --- /dev/null +++ b/sound/items/handling/armor_rustle/plate_armor/attribution.txt @@ -0,0 +1,2 @@ +plate armor rustle: +armor.wav by juryduty -- https://freesound.org/s/180231/ -- License: Creative Commons 0 diff --git a/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle1.ogg b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle1.ogg new file mode 100644 index 0000000000000..0d5d521ad5b1b Binary files /dev/null and b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle1.ogg differ diff --git a/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle2.ogg b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle2.ogg new file mode 100644 index 0000000000000..dbbf25bbc3658 Binary files /dev/null and b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle2.ogg differ diff --git a/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle3.ogg b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle3.ogg new file mode 100644 index 0000000000000..074e1c61197b6 Binary files /dev/null and b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle3.ogg differ diff --git a/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle4.ogg b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle4.ogg new file mode 100644 index 0000000000000..6a105b85ac525 Binary files /dev/null and b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle4.ogg differ diff --git a/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle5.ogg b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle5.ogg new file mode 100644 index 0000000000000..b2069180364e1 Binary files /dev/null and b/sound/items/handling/armor_rustle/plate_armor/plate_armor_rustle5.ogg differ diff --git a/sound/items/handling/gas_analyzer/attribution.txt b/sound/items/handling/gas_analyzer/attribution.txt new file mode 100644 index 0000000000000..a2960bacfbb94 --- /dev/null +++ b/sound/items/handling/gas_analyzer/attribution.txt @@ -0,0 +1,2 @@ +gas_analyzer handling sounds made by sadboysuss +license: CC-BY-SA \ No newline at end of file diff --git a/sound/items/handling/gas_analyzer/gas_analyzer_drop.ogg b/sound/items/handling/gas_analyzer/gas_analyzer_drop.ogg new file mode 100644 index 0000000000000..779a600dee956 Binary files /dev/null and b/sound/items/handling/gas_analyzer/gas_analyzer_drop.ogg differ diff --git a/sound/items/handling/gas_analyzer/gas_analyzer_pickup.ogg b/sound/items/handling/gas_analyzer/gas_analyzer_pickup.ogg new file mode 100644 index 0000000000000..dc3f5988ae869 Binary files /dev/null and b/sound/items/handling/gas_analyzer/gas_analyzer_pickup.ogg differ diff --git a/sound/items/handling/helmet/attribution.txt b/sound/items/handling/helmet/attribution.txt new file mode 100644 index 0000000000000..78383b32fa3bf --- /dev/null +++ b/sound/items/handling/helmet/attribution.txt @@ -0,0 +1,8 @@ +visor_up and visor_down are: +Bike helmet visor.wav by Didi0508 -- https://freesound.org/s/541921/ -- License: Attribution NonCommercial 4.0 + +helmet drop and equip: +helmet motorbike put on a head by cupido-1 -- https://freesound.org/s/614199/ -- License: Creative Commons 0 + +helmet pickup: +helmet_grabbing_and_handling_sound by Artninja -- https://freesound.org/s/725314/ -- License: Attribution 4.0 diff --git a/sound/items/handling/helmet/helmet_drop1.ogg b/sound/items/handling/helmet/helmet_drop1.ogg new file mode 100644 index 0000000000000..8892e120e039e Binary files /dev/null and b/sound/items/handling/helmet/helmet_drop1.ogg differ diff --git a/sound/items/handling/helmet/helmet_equip1.ogg b/sound/items/handling/helmet/helmet_equip1.ogg new file mode 100644 index 0000000000000..379ad6ce866b8 Binary files /dev/null and b/sound/items/handling/helmet/helmet_equip1.ogg differ diff --git a/sound/items/handling/helmet/helmet_pickup1.ogg b/sound/items/handling/helmet/helmet_pickup1.ogg new file mode 100644 index 0000000000000..b28def3a51ecf Binary files /dev/null and b/sound/items/handling/helmet/helmet_pickup1.ogg differ diff --git a/sound/items/handling/helmet/visor_down1.ogg b/sound/items/handling/helmet/visor_down1.ogg new file mode 100644 index 0000000000000..df93db6b7cfb8 Binary files /dev/null and b/sound/items/handling/helmet/visor_down1.ogg differ diff --git a/sound/items/handling/helmet/visor_down2.ogg b/sound/items/handling/helmet/visor_down2.ogg new file mode 100644 index 0000000000000..1662f7cfbfecf Binary files /dev/null and b/sound/items/handling/helmet/visor_down2.ogg differ diff --git a/sound/items/handling/helmet/visor_down3.ogg b/sound/items/handling/helmet/visor_down3.ogg new file mode 100644 index 0000000000000..7d2d2b2a6ae98 Binary files /dev/null and b/sound/items/handling/helmet/visor_down3.ogg differ diff --git a/sound/items/handling/helmet/visor_up1.ogg b/sound/items/handling/helmet/visor_up1.ogg new file mode 100644 index 0000000000000..bb498d6d66368 Binary files /dev/null and b/sound/items/handling/helmet/visor_up1.ogg differ diff --git a/sound/items/handling/helmet/visor_up2.ogg b/sound/items/handling/helmet/visor_up2.ogg new file mode 100644 index 0000000000000..ffa485833e325 Binary files /dev/null and b/sound/items/handling/helmet/visor_up2.ogg differ diff --git a/sound/items/handling/id_card/attribution.txt b/sound/items/handling/id_card/attribution.txt new file mode 100644 index 0000000000000..1bb71cf8f7ee1 --- /dev/null +++ b/sound/items/handling/id_card/attribution.txt @@ -0,0 +1,2 @@ +id_card handling sounds made by sadboysuss +license: CC-BY-SA \ No newline at end of file diff --git a/sound/items/handling/id_card/id_card_drop1.ogg b/sound/items/handling/id_card/id_card_drop1.ogg new file mode 100644 index 0000000000000..81cfbb50e435c Binary files /dev/null and b/sound/items/handling/id_card/id_card_drop1.ogg differ diff --git a/sound/items/handling/id_card/id_card_pickup1.ogg b/sound/items/handling/id_card/id_card_pickup1.ogg new file mode 100644 index 0000000000000..cbd01a1189f5a Binary files /dev/null and b/sound/items/handling/id_card/id_card_pickup1.ogg differ diff --git a/sound/items/handling/reagent_containers/default/attribution.txt b/sound/items/handling/reagent_containers/default/attribution.txt new file mode 100644 index 0000000000000..102c46ad5919c --- /dev/null +++ b/sound/items/handling/reagent_containers/default/attribution.txt @@ -0,0 +1,2 @@ +default_liquid_slosh: +Liquid bottle shaking long.mp3 by Hope-Sounds -- https://freesound.org/s/502668/ -- License: Creative Commons 0 diff --git a/sound/items/handling/reagent_containers/default/default_liquid_slosh1.ogg b/sound/items/handling/reagent_containers/default/default_liquid_slosh1.ogg new file mode 100644 index 0000000000000..2177effd93077 Binary files /dev/null and b/sound/items/handling/reagent_containers/default/default_liquid_slosh1.ogg differ diff --git a/sound/items/handling/reagent_containers/default/default_liquid_slosh2.ogg b/sound/items/handling/reagent_containers/default/default_liquid_slosh2.ogg new file mode 100644 index 0000000000000..a641635ff0c07 Binary files /dev/null and b/sound/items/handling/reagent_containers/default/default_liquid_slosh2.ogg differ diff --git a/sound/items/handling/reagent_containers/default/default_liquid_slosh3.ogg b/sound/items/handling/reagent_containers/default/default_liquid_slosh3.ogg new file mode 100644 index 0000000000000..89eecf36337ad Binary files /dev/null and b/sound/items/handling/reagent_containers/default/default_liquid_slosh3.ogg differ diff --git a/sound/items/handling/reagent_containers/default/default_liquid_slosh4.ogg b/sound/items/handling/reagent_containers/default/default_liquid_slosh4.ogg new file mode 100644 index 0000000000000..feb7c0d29702e Binary files /dev/null and b/sound/items/handling/reagent_containers/default/default_liquid_slosh4.ogg differ diff --git a/sound/items/handling/reagent_containers/default/default_liquid_slosh5.ogg b/sound/items/handling/reagent_containers/default/default_liquid_slosh5.ogg new file mode 100644 index 0000000000000..b2ba3ee73c99b Binary files /dev/null and b/sound/items/handling/reagent_containers/default/default_liquid_slosh5.ogg differ diff --git a/sound/items/handling/reagent_containers/plastic_bottle/attribution.txt b/sound/items/handling/reagent_containers/plastic_bottle/attribution.txt new file mode 100644 index 0000000000000..dd3b21b412e39 --- /dev/null +++ b/sound/items/handling/reagent_containers/plastic_bottle/attribution.txt @@ -0,0 +1,2 @@ +plastic_bottle_liquid_slosh: +liquid in bottle shaking by mrrap4food -- https://freesound.org/s/470606/ -- License: Creative Commons 0 diff --git a/sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh1.ogg b/sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh1.ogg new file mode 100644 index 0000000000000..597a7b2fb5f8a Binary files /dev/null and b/sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh1.ogg differ diff --git a/sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh2.ogg b/sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh2.ogg new file mode 100644 index 0000000000000..4f8eb03293f34 Binary files /dev/null and b/sound/items/handling/reagent_containers/plastic_bottle/plastic_bottle_liquid_slosh2.ogg differ diff --git a/sound/creatures/cat/attribution.txt b/sound/mobs/non-humanoids/cat/attribution.txt similarity index 100% rename from sound/creatures/cat/attribution.txt rename to sound/mobs/non-humanoids/cat/attribution.txt diff --git a/sound/creatures/cat/cat_meow1.ogg b/sound/mobs/non-humanoids/cat/cat_meow1.ogg similarity index 100% rename from sound/creatures/cat/cat_meow1.ogg rename to sound/mobs/non-humanoids/cat/cat_meow1.ogg diff --git a/sound/creatures/cat/cat_meow2.ogg b/sound/mobs/non-humanoids/cat/cat_meow2.ogg similarity index 100% rename from sound/creatures/cat/cat_meow2.ogg rename to sound/mobs/non-humanoids/cat/cat_meow2.ogg diff --git a/sound/creatures/cat/cat_meow3.ogg b/sound/mobs/non-humanoids/cat/cat_meow3.ogg similarity index 100% rename from sound/creatures/cat/cat_meow3.ogg rename to sound/mobs/non-humanoids/cat/cat_meow3.ogg diff --git a/sound/creatures/cat/cat_purr1.ogg b/sound/mobs/non-humanoids/cat/cat_purr1.ogg similarity index 100% rename from sound/creatures/cat/cat_purr1.ogg rename to sound/mobs/non-humanoids/cat/cat_purr1.ogg diff --git a/sound/creatures/cat/cat_purr2.ogg b/sound/mobs/non-humanoids/cat/cat_purr2.ogg similarity index 100% rename from sound/creatures/cat/cat_purr2.ogg rename to sound/mobs/non-humanoids/cat/cat_purr2.ogg diff --git a/sound/creatures/cat/cat_purr3.ogg b/sound/mobs/non-humanoids/cat/cat_purr3.ogg similarity index 100% rename from sound/creatures/cat/cat_purr3.ogg rename to sound/mobs/non-humanoids/cat/cat_purr3.ogg diff --git a/sound/creatures/cat/cat_purr4.ogg b/sound/mobs/non-humanoids/cat/cat_purr4.ogg similarity index 100% rename from sound/creatures/cat/cat_purr4.ogg rename to sound/mobs/non-humanoids/cat/cat_purr4.ogg diff --git a/sound/creatures/cat/oranges_meow1.ogg b/sound/mobs/non-humanoids/cat/oranges_meow1.ogg similarity index 100% rename from sound/creatures/cat/oranges_meow1.ogg rename to sound/mobs/non-humanoids/cat/oranges_meow1.ogg diff --git a/strings/fishing_tips.txt b/strings/fishing_tips.txt index 44e7f32284ade..479769c44de47 100644 --- a/strings/fishing_tips.txt +++ b/strings/fishing_tips.txt @@ -43,7 +43,10 @@ The legendary fishing hat isn't just cosmetic. Space carps (as well as young lob Have you ever heard a lobster or crab talk? Well, neither have I, but they say they're quite the fishy punsters. You can get an experiscanner from science to perform fish scanning experiments, which can unlock more modules for the fishing portal, as well as fishing technology nodes (better equipment) to research. Fish is, of course, edible. Is it safe to eat raw? Well, if you've strong stomach, otherwise your best option is to cook it for a at least half a spessman minute if you don't want to catch nasty diseases. -After researching the Advanced Fishing Technology Node, you can print special fishing gloves that let you fish without having to carry around a fishing rod. There's one pair that even trains athletics on top of fishing.You can get an experiscanner from science to perform fish scanning experiments, which can unlock more modules for the fishing portal, as well as fishing technology nodes (better equipment) for research. -If you have enough credits, you can buy a set of fishing lures from cargo. Each lure allows you to catch different species of fish and won't get consumed, however they need to be spun at intervals to work. +After researching the Advanced Fishing Technology Node, you can print special fishing gloves that let you fish without having to carry around a fishing rod. There's one pair that even trains athletics on top of fishing. You can get an experiscanner from science to perform fish scanning experiments, which can unlock more modules for the fishing portal, as well as fishing technology nodes (better equipment) for research. +If you have enough credits, you can buy a set of fishing lures from cargo (or the library vending machine). Each lure allows you to catch different species of fish and won't get consumed, however they need to be spun at intervals to work. Various clothing and handheld items, as well as chairs you sit on, can make fishing easier (or sometimes harder). A trained fisherman can tell what can help and what won't, so keep an eye out. This may sound silly, but (live) squids and their ink sacs can be used as weapons to temporarily blind foes. +Got a bioelectricity generator aquarium but no electrogenic fish? Worry not, you can always feed your fish some teslium or liquid electricity to temporarily grant them (slightly less powerful) eletrogenesis. It'll also gradually hurt them however. +Fish can grow in size and weight if you fed them somewhat frequently. Giving them growth serum (from fly amanita) will also boost the rate at which they grow. +Feeding a fish mutagen can triple the probability of generating evolved offsprings, provided it has an evolution. diff --git a/strings/tcg/keywords.json b/strings/tcg/keywords.json index 854ac936fef1e..869dc8dbe607a 100644 --- a/strings/tcg/keywords.json +++ b/strings/tcg/keywords.json @@ -1,18 +1,18 @@ { - "Asimov": "Creatures possessing this trait cannot attack or defend against creatures with the Human subtype", + "Asimov": "Does not deal damage to other creature cards, only to players.", "Blocker": "The creature cannot declare attacks, but can defend", - "Changeling": "This creature possesses all creature subtypes simultaneously. Any effects which affect a specific subtype apply to Changelings", - "Clockwork": "The creature can copy a single keyword on another creature on the field, until they lose the clockwork keyword or leave the field", - "Deadeye": "This creature can always hit opponents, regardless of effects or immunities", + "Changeling": "This creature possesses all creature subtypes simultaneously, even outside of the field. Any effects which affect a specific subtype apply to Changelings", + "Clockwork": "On Summon: The creature can copy a single keyword on another creature on the field, until they lose the clockwork keyword or leave the field", + "Deadeye": "The following effect triggers when the creature damages the opponent.", "Faction": "Groupings of cards that can often share effects and traits together", "First Strike": "This creature has attack priority in combat", - "Fury": "The creature must attack at every possibility", - "Graytide": "When this creature enters the battlefield, it gains +1/+1 for the number of creatures on your side of the field with Graytide, until the end of the turn", + "Fury": "This creature is not tapped when it kills another unit in combat.", + "Graytide": "This creature gains +1/+1 for the number of other creatures on your side of the field with Graytide.", "Hivemind": "The creature enters combat with a hivemind token on it.The first time this card would take damage, remove that token instead. This does not apply to immediate removal effects, only points of damage", "Holy": "Immunity to all event cards", "Immunity": "The creature cannot be affected by card effects or combat of its immunity type. This includes both friendly and opposing effects", "On Equip": "This effect is activated once its item cost is paid and it enters the battlefield, equipping itself to a chosen card on your side of the field (Unless otherwise stated)", "On Summon": "This effect is activated once its creature cost is paid and it enters the battlefield", - "Squad Tactics": "When this creature attacks an opponent's creature and defeats it in combat, the owner of the defeated card takes 1 lifeshard of damage from combat", - "Taunt": "All opposing creature attacks must be directed towards the creature with Taunt" + "Squad Tactics": "This effect is activated when a card is added to your hand.", + "Taunt": "The following effect triggers when this card is on the field and any other card is added to your hand." } diff --git a/strings/tcg/set_one.json b/strings/tcg/set_one.json index de24543a66b96..73851198cd267 100644 --- a/strings/tcg/set_one.json +++ b/strings/tcg/set_one.json @@ -13,9 +13,9 @@ "id": "AI", "name": "AI", "desc": "The latest generation of NT's top secret artificial intelligence project, this time with actual human brains in a jar! Don't tell the press though.", - "rules": "{$Asimov}", + "rules": "{$Asimov} {$Fury}", "icon_state": "ai", - "power": "3", + "power": "5", "resolve": "6", "faction": "Science", "summoncost": "5", @@ -29,14 +29,14 @@ "id": "stickman", "name": "Angry Stickman", "desc": "Sure, he's flat and crudely drawn, but watch out! He's a menace!", - "rules": "{$On Summon}: If another 'Angry Stickman' card has been destroyed, you may summon it for at double cost. This ability may be activated only once per turn.", + "rules": "{$On Summon}: You can pay 1 plasma to summon an Angry Stickman from the discard pile.", "icon_state": "angry_stickman", "power": "1", "resolve": "1", "faction": "Xeno", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Construct", + "cardsubtype": "Wizardry", "rarity": "uncommon", "summon_icon_file": "icons/mob/simple/animal.dmi", "summon_icon_state": "stickman" @@ -45,7 +45,7 @@ "id": "changeling", "name": "Armoured Changeling", "desc": "The strange creatures known as changelings have been known to develop natural armour as a defense mechanism when in combat.", - "rules": "{$Changeling}", + "rules": "{$Changeling} {$Deadeye}: Add 1 creature with Changeling from your Deck to your hand.", "icon_state": "armored_changeling", "power": "2", "resolve": "8", @@ -61,14 +61,14 @@ "id": "assistant", "name": "Staff Assistant", "desc": "The lowest ladder on the Nanotrasen Employment Ladder, Staff Assistants are employed to help out with tasks deemed 'too menial for robots'.", - "rules": "{$Graytide}, for every card with '{$Graytide}', this card has +1/+1 on the field.", + "rules": "{$Graytide}. The buff this card gains from Graytide is doubled.", "icon_state": "assistant", "power": "1", "resolve": "1", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Maintenance Service", "rarity": "common", "summon_icon_state": "Assistant" }, @@ -76,14 +76,14 @@ "id": "atmos_tech", "name": "Atmospheric Technician", "desc": "The Atmospheric Technicians are tasked with keeping the station's air clean, breathable, and, most importantly, devoid of plasma.", - "rules": "{$On Summon}: Search your deck for an Atmospherics Battlefield card, and add it to your hand. Shuffle your deck afterward.", + "rules": "{$On Summon}: Search your deck for a Battlefield card, and add it to your hand. Shuffle your deck afterward.", "icon_state": "atmos_tech", - "power": "2", - "resolve": "3", + "power": "3", + "resolve": "2", "faction": "Engineering", - "summoncost": "4", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Human Engineer", + "cardsubtype": "Atmospherics Engineering", "rarity": "common", "summon_icon_state": "Atmospheric Technician" }, @@ -91,14 +91,14 @@ "id": "bartender", "name": "Bartender", "desc": "Prior to the introduction of on-station psychologists, the Bartender served to alleviate many employees' woes and fears. Remember, always drink responsibly.", - "rules": "", + "rules": "All your other creatures gain +1 power.", "icon_state": "bartender", - "power": "3", + "power": "2", "resolve": "2", "faction": "Service", - "summoncost": "3", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Service Bar", "rarity": "common", "summon_icon_state": "Bartender" }, @@ -106,14 +106,14 @@ "id": "botanist", "name": "Botanist", "desc": "The Botanist is in charge of keeping the station's food supply happy, healthy, and preferably not laced with hallucinogens.", - "rules": "", + "rules": "Start of turn: Heal 1 lifeshard.", "icon_state": "botanist", - "power": "1", - "resolve": "4", + "power": "0", + "resolve": "3", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Service Bar Plant", "rarity": "common", "summon_icon_state": "Botanist" }, @@ -121,14 +121,14 @@ "id": "captain", "name": "Captain", "desc": "Every Captain is expected to lay down their life for their assigned station. Any Captain who returns to Centcom alive without permission is ceremonially executed before being cloned and stripped of rank.", - "rules": "Tap this card: inflict -1/-1 to an opposing creature card.", + "rules": "Tap: Reduce the power of all opponent creatures to 0 for this turn.", "icon_state": "captain", "power": "5", "resolve": "5", "faction": "Command", "summoncost": "7", "cardtype": "Creature", - "cardsubtype": "Human Commander", + "cardsubtype": "Command", "rarity": "rare", "summon_icon_state": "Captain" }, @@ -138,26 +138,26 @@ "desc": "A heavily customized Apadyne Technologies Mk.2 R.I.O.T. Suit, rebuilt and refitted to Nanotrasen's highest standards for issue to Station Captains.", "rules": "{$On Equip}: tap the equipped card for 2 turns, without triggering the target card's effects.", "icon_state": "captain_hardsuit", - "power": "-1", - "resolve": "5", + "power": "0", + "resolve": "4", "faction": "Command", - "summoncost": "3", + "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Command", "rarity": "epic" }, { "id": "cargo_tech", "name": "Cargo Technician", "desc": "The grunts of Cargo. Any reports that Cargo Technicians are frequently overcome by revolutionary fervour are exaggerated.", - "rules": "Once per turn, you may give 'Cargo Technician' -1/0 until the start of your next turn and gain 1 mana.", + "rules": "Tap: Gain 1 plasma.", "icon_state": "cargo_tech", - "power": "3", - "resolve": "1", + "power": "1", + "resolve": "2", "faction": "Cargo", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Cargo Maintenance", "rarity": "common", "summon_icon_state": "Cargo Technician" }, @@ -170,23 +170,23 @@ "power": "2", "resolve": "2", "faction": "Service", - "summoncost": "2", + "summoncost": "3", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Service Wizardry", "rarity": "common" }, { "id": "chemist", "name": "Chemist", "desc": "Chemists are encouraged to not set up illicit methamphetamine factories on the company's dime.", - "rules": "Tap this card: flip a coin. If heads: a friendly Medical {$Faction} card gains 0/+2. If tails, an opponents creature of your choice gains +2/0.", + "rules": "Tap: Give another unit +2/+2. Destroy it at the end of the turn.", "icon_state": "chemist", "power": "0", "resolve": "3", "faction": "Medical", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Medical", "rarity": "common", "summon_icon_state": "Chemist" }, @@ -194,14 +194,14 @@ "id": "CE", "name": "Chief Engineer", "desc": "The Chief Engineer is in charge of keeping the station powered and intact.", - "rules": "If a battlefield card would otherwise be destroyed by an opponent's card effect, you may sacrifice an Engineering faction card of yours in play to negate the battlefield's destruction.", + "rules": "Battlefield cards you control cannot be destroyed.", "icon_state": "ce", - "power": "3", - "resolve": "6", + "power": "2", + "resolve": "2", "faction": "Engineering", - "summoncost": "5", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Engineer", + "cardsubtype": "Command Engineer", "rarity": "uncommon", "summon_icon_state": "Chief Engineer" }, @@ -209,14 +209,14 @@ "id": "ce_suit", "name": "Nakamura Engineering R.I.G.Suit (Advanced)", "desc": "An updated version of Nakamura Engineering's R.I.G.Suit, fitted with advanced radiation shielding and extra armour.", - "rules": "Tap this card: tap the equipped creature. The equipped creature avoids the effects of the active battlefield until removed from the field.", + "rules": "On Equip: Tap the equipped creature. It gains Immunity from Battlefields.", "icon_state": "ce_hardsuit", - "power": "0", - "resolve": "3", + "power": "1", + "resolve": "2", "faction": "Engineering", - "summoncost": "3", + "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Engineering Syndicate Cybersun", "rarity": "rare" }, { @@ -230,7 +230,7 @@ "faction": "Medical", "summoncost": "5", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Medical Command", "rarity": "common", "summon_icon_state": "Chief Medical Officer" }, @@ -238,28 +238,28 @@ "id": "cmo_suit", "name": "DeForest Medical Corporation 'Lifesaver' Carapace", "desc": "An advanced voidsuit designed for emergency medical personnel. Features include a built-in medical HUD and advanced medical gauntlets.", - "rules": "Tap this card: tap the equipped creature and re-equip 'DeForest Medical Corporation 'Lifesaver' Carapace' on a different creature on your side of the field. This effect may be activated once per turn.", + "rules": "Once per turn: equip 'DeForest Medical Corporation 'Lifesaver' Carapace' on a different creature on your side of the field.", "icon_state": "cmo_hardsuit", "power": "1", "resolve": "3", "faction": "Medical", - "summoncost": "3", + "summoncost": "2", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Medical", "rarity": "uncommon" }, { "id": "chrono", "name": "Chrono Legionnaire", "desc": "Currently in the earliest stages of development, the Chrono Legionnaire project is expected to weaponize time itself.", - "rules": "If this card is destroyed or discarded, flip 3 coins. If the result has 2 or more heads, add this card back to your hand. Otherwise, send it to your graveyard.", + "rules": "If this card is destroyed flip a coin. If the result is heads, add this card back to your hand.", "icon_state": "chrono_legionnaire", - "power": "6", - "resolve": "2", + "power": "3", + "resolve": "3", "faction": "Security", - "summoncost": "4", + "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Soldier", + "cardsubtype": "Wizardry Maintenance", "rarity": "epic", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "chrono" @@ -268,14 +268,14 @@ "id": "sloth", "name": "Citrus", "desc": "Cargo's happy sloth pal. Known for his cute sweater and always getting in the way.", - "rules": "Tap this card: Tap an opponent's card until the start of your next turn", + "rules": "Tap: Tap an opponent's card until the start of your next turn", "icon_state": "citrus", "power": "0", "resolve": "3", "faction": "Cargo", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Sloth", + "cardsubtype": "Cargo Animal", "rarity": "common", "summon_icon_file": "icons/mob/simple/pets.dmi", "summon_icon_state": "cool_sloth" @@ -286,12 +286,12 @@ "desc": "Every Nanotrasen station has a clown on board, as high command believes that a source of entertainment will reduce instances of murder-suicide on board Spinward Stations. The results of this hypothesis are, as of yet, unproven.", "rules": "{$Taunt}", "icon_state": "clown", - "power": "2", - "resolve": "4", + "power": "1", + "resolve": "3", "faction": "Service", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Clown", + "cardsubtype": "Bar Maintenance Abomination Clown", "rarity": "common", "summon_icon_state": "Clown" }, @@ -306,7 +306,7 @@ "faction": "Service", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon Clown", + "cardsubtype": "Silicon Bar Clown", "rarity": "uncommon", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "clown" @@ -321,7 +321,7 @@ "resolve": "0", "faction": "Service", "summoncost": "1", - "cardtype": "Equipment", + "cardtype": "Clown", "cardsubtype": "Armour", "rarity": "epic" }, @@ -329,7 +329,7 @@ "id": "abductor_armour", "name": "Abductor Combat Armour", "desc": "Recovered from the strange alien species known as the Abductors, this armour is made from an extremely tough yet flexible material that has been dubbed as Alien Alloy by researchers.", - "rules": "{$On Equip}: give the equipped unit Effect {$Immunity} and Spell {$Immunity}.", + "rules": "{$On Equip}: give the equipped unit Holy.", "icon_state": "abductor_combat", "power": "1", "resolve": "3", @@ -350,7 +350,7 @@ "faction": "Service", "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Bar Plants", "rarity": "common", "summon_icon_state": "Cook" }, @@ -365,21 +365,21 @@ "faction": "Syndicate", "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Wizardry", "rarity": "rare" }, { "id": "curator", "name": "Curator", "desc": "In Nanotrasen polls, the Curator has ranked as the most pointless job on station, much to the ire of the Curator's union. Thankfully, we don't have to listen to them.", - "rules": "{$On Summon}: Draw 1 card: if it's an event card, discard it.", + "rules": "{$On Summon}: Draw 1 card.", "icon_state": "curator", "power": "1", "resolve": "1", "faction": "Service", - "summoncost": "2", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Worker", + "cardsubtype": "Wizardry", "rarity": "common", "summon_icon_state": "Curator" }, @@ -394,7 +394,7 @@ "faction": "Science", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon Corgi", + "cardsubtype": "Silicon Animal", "rarity": "rare", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "borgi" @@ -405,26 +405,26 @@ "desc": "The most advanced set of armour available for purchase from Apadyne Technologies, the Mk.3 R.I.O.T. Carapace is issued to Nanotrasen's most elite forces.", "rules": "{$On Equip}: if the equipped creature is of the Security faction, it gains {$Taunt}.", "icon_state": "deathsquad", - "power": "3", - "resolve": "3", + "power": "2", + "resolve": "1", "faction": "Security", - "summoncost": "1", + "summoncost": "2", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Security ERT", "rarity": "epic" }, { "id": "det", "name": "Detective", "desc": "Nanotrasen hires nothing but the best detectives to investigate crime on our stations. A penchant for cigarettes and outdated fashion isn't mandatory, but is appreciated.", - "rules": "{$Deadeye}", + "rules": "{$Deadeye}: Draw 1 card. Cannot be attacked if you have other untapped creatures.", "icon_state": "detective", "power": "3", "resolve": "2", "faction": "Security", - "summoncost": "5", + "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Officer", + "cardsubtype": "Maintenance Bar", "rarity": "uncommon", "summon_icon_state": "Detective" }, @@ -437,9 +437,9 @@ "power": "5", "resolve": "5", "faction": "Syndicate", - "summoncost": "7", + "summoncost": "8", "cardtype": "Creature", - "cardsubtype": "Syndicate Soldier", + "cardsubtype": "Syndicate Cybersun", "rarity": "rare", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "syndicate_stormtrooper_sword" @@ -448,14 +448,14 @@ "id": "engiborg", "name": "Cyborg (Engineering Shell)", "desc": "A common sight on Nanotrasen Stations, Engineering Shells maintain critical station systems in hazardous conditions.", - "rules": "{$Asimov}", + "rules": "{$Asimov} Tap: Draw 1 card.", "icon_state": "borg_engi", "power": "2", "resolve": "2", "faction": "Engineering", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Engineering Atmosian", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "engineer" @@ -464,41 +464,41 @@ "id": "ert_command", "name": "NT P.A.V. Suit (Command)", "desc": "Issued to members of Emergency Response Teams, the P.A.V. Suit gives superior protection from any threat the galaxy can throw at it. This particular model is outfitted with a sidearm holster and a sleek blue finish.", - "rules": "While equipped, give the equipped unit {$Squad Tactics} and {$First Strike}.", + "rules": "While equipped, give the equipped unit {$First Strike}.", "icon_state": "ert_command", - "power": "2", - "resolve": "2", + "power": "0", + "resolve": "0", "faction": "Command", "summoncost": "2", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Command ERT", "rarity": "rare" }, { "id": "ert_engi", "name": "NT P.A.V. Suit (Engineering)", "desc": "Issued to members of Emergency Response Teams, the P.A.V. Suit gives superior protection from any threat the galaxy can throw at it. This particular model is outfitted with a welding screen and a flashy yellow finish.", - "rules": "While equipped, give the equipped unit {$Squad Tactics}.", + "rules": "While equipped, give the equipped unit {$Squad Tactics}: Gain +1/+1 until the end of the turn.", "icon_state": "ert_engi", "power": "1", "resolve": "1", "faction": "Engineering", "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "ERT Atmospherics", "rarity": "uncommon" }, { "id": "ert_med", "name": "NT P.A.V. Suit (Medical)", "desc": "Issued to members of Emergency Response Teams, the P.A.V. Suit gives superior protection from any threat the galaxy can throw at it. This particular model is outfitted with a sterile coating and a calming white finish.", - "rules": "While equipped, give the equipped unit {$Squad Tactics}.", + "rules": "Whenever the equipped unit deals damage it heals you (the player) for that amount.", "icon_state": "ert_med", "power": "1", - "resolve": "2", + "resolve": "1", "faction": "Medical", "summoncost": "2", - "cardtype": "Equipment", + "cardtype": "ERT Medical", "cardsubtype": "Armour", "rarity": "uncommon" }, @@ -506,28 +506,28 @@ "id": "ert_sec", "name": "NT P.A.V. Suit (Security)", "desc": "Issued to members of Emergency Response Teams, the P.A.V. Suit gives superior protection from any threat the galaxy can throw at it. This particular model is outfitted with bulletproof padding and an intimidating red finish.", - "rules": "While equipped, give the equipped unit {$Squad Tactics}.", + "rules": "While equipped, give the equipped unit {$Fury}.", "icon_state": "ert_sec", - "power": "2", - "resolve": "1", + "power": "-1", + "resolve": "0", "faction": "Security", "summoncost": "2", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "ERT Security", "rarity": "uncommon" }, { "id": "explorer", "name": "Explorer", "desc": "The Nanotrasen Explorers Corps boldly goes where humanity has never gone before. Or would, if they weren't buried under mounds of bureaucracy.", - "rules": "You may tap this card: Flip a coin, if heads, gain 4 mana this turn, if tails, tap this card for 2 turns.", + "rules": "Tap: Flip a coin, if heads, gain 1 plasma.", "icon_state": "explorer", "power": "2", "resolve": "2", "faction": "Cargo", - "summoncost": "2", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Explorer", + "cardsubtype": "Atmospherics", "rarity": "legendary", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "explorer" @@ -541,7 +541,7 @@ "power": "3", "resolve": "3", "faction": "Science", - "summoncost": "2", + "summoncost": "1", "cardtype": "Creature", "cardsubtype": "Silicon", "rarity": "common", @@ -552,14 +552,14 @@ "id": "geneticist", "name": "Geneticist", "desc": "Geneticists are tasked with manipulating human DNA to produce special effects. Nanotrasen maintains a strict 'no superhero' policy for mutations, following the Superhero Civil War of 2150.", - "rules": "You may tap this card and pay 3 mana: Give a friendly creature {$Hivemind} until this card leaves the field.", + "rules": "Tap: Give a friendly creature {$Hivemind} until this card leaves the field.", "icon_state": "geneticist", - "power": "3", - "resolve": "4", + "power": "2", + "resolve": "3", "faction": "Science", "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Scientist", + "cardsubtype": "Science Abomination", "rarity": "common", "summon_icon_state": "Geneticist" }, @@ -567,14 +567,14 @@ "id": "med_geneticist", "name": "Geneticist", "desc": "Geneticists are tasked with manipulating human DNA to produce special effects. Nanotrasen maintains a strict 'no superhero' policy for mutations, following the Superhero Civil War of 2150.", - "rules": "{$Graytide}, {$Hivemind}", + "rules": "All friendly creatures everywhere gain {$Hivemind} while this card is on the field.", "icon_state": "geneticist_med", - "power": "3", - "resolve": "6", + "power": "2", + "resolve": "3", "faction": "Medical", - "summoncost": "8", + "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Science Abomination", "rarity": "misprint", "summon_icon_state": "Geneticist" }, @@ -582,14 +582,14 @@ "id": "spookian", "name": "Ghost Ian", "desc": "Oh my god! Ian's dead!", - "rules": "{$On Summon}: Search your deck for a battlefield, and add it to your hand. Shuffle your deck afterwards.", + "rules": "When destroyed: Add this card back to your hand.", "icon_state": "ian_ghost", "power": "1", "resolve": "1", "faction": "Service", - "summoncost": "3", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Spirit Corgi", + "cardsubtype": "Wizardry Animal", "rarity": "epic", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "ghost" @@ -598,14 +598,14 @@ "id": "HOP", "name": "Head of Personnel", "desc": "The head of the Cargo and Service Departments, guardian of all access, and Ian's lovable, yet dumb, sidekick.", - "rules": "Once per turn: Select a friendly creature card. That card gains {$Changeling}.", + "rules": "Tap: Another animal you control gains Holy and cannot be damaged for the rest of this turn.", "icon_state": "hop", - "power": "4", - "resolve": "3", + "power": "2", + "resolve": "2", "faction": "Service", - "summoncost": "7", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Commander", + "cardsubtype": "Command Animal", "rarity": "uncommon", "summon_icon_state": "Head of Personnel" }, @@ -613,14 +613,14 @@ "id": "HOS", "name": "Head of Security", "desc": "Nanotrasen hires most heads of staff based on their qualifications as being amicable, good at conflict resolution, ability to handle high-stakes situations, humanity, and desire to learn. Heads of Security only need a highschool degree.", - "rules": "{$On Summon}: Select a card type. That card type now costs 1 extra mana to summon. This effect persists until Head of Security is removed from the battlefield.", + "rules": "Must declare a direct attack when attacking (but can still be blocked). {$Deadeye}: Deal 3 damage to your opponent or a unit. {$Fury} ", "icon_state": "hos", "power": "4", - "resolve": "4", + "resolve": "6", "faction": "Security", "summoncost": "7", "cardtype": "Creature", - "cardsubtype": "Human Officer", + "cardsubtype": "Command Security", "rarity": "uncommon", "summon_icon_state": "Head of Security" }, @@ -628,28 +628,28 @@ "id": "hos_suit", "name": "Apadyne Technologies 'Tyrant' Class Hardshell", "desc": "The distinctive shape of the Tyrant Class Hardshell is caused, in part, by the large amount of kevlar reinforcement and the ablative armour layer. Perhaps more importantly, it also looks rad.", - "rules": "Grant the equip card {$Fury} until this card is removed from play.", + "rules": "When the equipped card destroys a creature: It deals 1 damage to another creature.", "icon_state": "hos_hardsuit", - "power": "4", - "resolve": "2", + "power": "1", + "resolve": "1", "faction": "Security", - "summoncost": "5", + "summoncost": "3", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Command Security", "rarity": "rare" }, { "id": "ian", "name": "Ian", "desc": "This adorable corgi has become the defacto mascot of the Spinward Stations to many. He comes in many forms, many sizes, and many shapes, but he's still just as lovable. Hand wash only.", - "rules": "{$Holy}, You may Sacrifice this card on the field: Play a Command card from your hand for free.", + "rules": "{$Holy} On destroyed: Both players can summon a creature from their hand for free.", "icon_state": "ian", "power": "0", "resolve": "3", "faction": "Service", - "summoncost": "4", + "summoncost": "5", "cardtype": "Creature", - "cardsubtype": "Corgi", + "cardsubtype": "Animal", "rarity": "common", "summon_icon_file": "icons/mob/simple/pets.dmi", "summon_icon_state": "corgi" @@ -658,28 +658,28 @@ "id": "inquisitor_suit", "name": "Inquisitor's Hardsuit", "desc": "Nanotrasen officially doesn't believe in ghosts, magic, or anything that can't be solved with science. When you see someone show up in one of these, let that remind you of that fact.", - "rules": "Apply {$First Strike} to the equip creature.", + "rules": "Shuffle into the opponent's deck any creatures destroyed by battle with the equipped creature. The shuffled card's on destruction effects do not activate.", "icon_state": "inquisitor", - "power": "2", - "resolve": "2", + "power": "1", + "resolve": "1", "faction": "Service", - "summoncost": "4", + "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Wizardry ERT", "rarity": "epic" }, { "id": "intern", "name": "Intern", "desc": "All Nanotrasen interns come with 3 things: A resume, a desire to learn, and vague promises that they're getting paid at some point. So don't be too rough on them.", - "rules": "{$First Strike}", + "rules": "{$First Strike} {$Graytide}", "icon_state": "intern", "power": "1", "resolve": "1", "faction": "Command", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "ERT Maintenance", "rarity": "common", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "intern" @@ -688,14 +688,14 @@ "id": "jannie", "name": "Janitor", "desc": "A true testament to futility, they clean and they clean and they clean, knowing that there's no way they can clean it all. Yet, they persevere, knowing that without them, the crew would simply give in to their base animalistic nature.", - "rules": "{$Taunt}", + "rules": "{$Taunt} {$Deadeye}: Shuffle a card from the opponent's discard pile to their deck.", "icon_state": "janitor", "power": "1", - "resolve": "1", + "resolve": "2", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Maintenance", "rarity": "common", "summon_icon_state": "Janitor" }, @@ -703,14 +703,14 @@ "id": "jannieborg", "name": "Cyborg (Custodial Shell)", "desc": "A powerful, state of the act cleaning machine. They exist to eradicate stains, snag garbage, and replace lights, forever. We are legally obligated by the Janitor's Union to state that these machines are no replacement for a flesh-and-blood janitor.", - "rules": "{$Asimov}, you may tap this card: Tap an opponent's Human Creature as well.", + "rules": "{$Asimov} {$Deadeye}: Shuffle up to 3 cards from the opponent's discard pile to their deck.", "icon_state": "borg_janitor", "power": "1", "resolve": "3", "faction": "Service", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Maintenance", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "janitor" @@ -719,14 +719,14 @@ "id": "lawyer", "name": "Lawyer", "desc": "Nanotrasen knows the value of a good lawyer. That's why they're all working hard at our home offices defending us from frivolous labor suits from lazy no-good employees who should be working hard instead of slacking off reading trading cards.", - "rules": "When an opponent attacks with a creature with 3 or more power, this card gains {$Taunt}.", + "rules": "When an opponent attacks with a creature with 3 or less power, this card gains {$Taunt}.", "icon_state": "lawyer", "power": "0", "resolve": "4", "faction": "Service", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Service Security", "rarity": "common", "summon_icon_state": "Lawyer" }, @@ -734,7 +734,7 @@ "id": "legion", "name": "Legion", "desc": "They are the cursed, damned souls of civilizations born and lost in the flames of Indecipheres, conglomerated into a lump of emaciated bodies, wandering the realms they used to rule... or something along those lines, anyway.", - "rules": "When Legion is destroyed, search your deck for a human card, and summon it to the battlefield. Shuffle your deck afterward.", + "rules": "When Legion is destroyed, search your deck for a creature card costing 3 or less and add it to your hand. Shuffle your deck afterward.", "icon_state": "legion", "power": "2", "resolve": "1", @@ -750,14 +750,14 @@ "id": "medborg", "name": "Cyborg (Medical Shell)", "desc": "A state of the art medical shell, for when biological life just can't take care of itself. Comes equipped with built-in surgical equipment and all the medicated lollipops you could ever want.", - "rules": "{$Asimov}, you may tap this card and pay 2 mana: Reset a card's resolve to its original value.", + "rules": "{$Asimov} Tap: Reset a card's resolve to its original value (if possible) and heal it (if possible).", "icon_state": "borg_medical", "power": "2", "resolve": "3", "faction": "Medical", - "summoncost": "4", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon Doctor", + "cardsubtype": "Silicon Medical", "rarity": "uncommon", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "medical" @@ -766,14 +766,14 @@ "id": "doc", "name": "Medical Doctor", "desc": "Nanotrasen's doctors are well known for their ability to treat almost any ailment known to mankind... as well as causing a fair few in the process.", - "rules": "You may tap this card: Select a card that has less attack than this card from your graveyard, and summon it to your side of the field.", + "rules": "Tap: Add a card from your discard pile to your hand, except another 'Medical Doctor'.", "icon_state": "md", - "power": "2", + "power": "1", "resolve": "3", "faction": "Medical", "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Medical", "rarity": "common", "summon_icon_state": "Medical Doctor" }, @@ -781,14 +781,14 @@ "id": "mime", "name": "Mime", "desc": "Si vous regardez attentivement dans les yeux d'un mime, vous pouvez voir le tourment sans fin derrière leur façade silencieuse. C'est vraiment tragique.", - "rules": "You may tap this card: Pick an opponent's card and nullify its effect until it leaves play.", + "rules": "Tap: Target creature and all its attached equipment loses all its effect text until this card leaves the field.", "icon_state": "mime", - "power": "2", + "power": "0", "resolve": "1", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Mime", + "cardsubtype": "Bar", "rarity": "uncommon", "summon_icon_state": "Mime" }, @@ -796,14 +796,14 @@ "id": "miningborg", "name": "Cyborg (Mining Shell)", "desc": "Fitted with a drill and tracks, the Mining Shell is designed to hold up to the rigors of mining, be that on the hellish surface of Indecipheres, or in the silent vacuum of the asteroid belt.", - "rules": "{$Asimov}, at the end of your turn, if this card is not tapped, you may tap this card at the start of your next turn to gain 1 mana.", + "rules": "{$Asimov} At the start of your turn: Tap: Gain 2 plasma.", "icon_state": "borg_miner", "power": "3", - "resolve": "1", + "resolve": "2", "faction": "Cargo", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon Miner", + "cardsubtype": "Silicon Cargo", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "minerOLD" @@ -812,14 +812,14 @@ "id": "monkey", "name": "Monkey", "desc": "Nanotrasen seeks to phase out animal testing by 2570, in accordance with new TerraGov legislation. This will be replaced with more ethical solutions, such as computer simulations, or experimentation on Staff Assistants.", - "rules": "{$Graytide}, this card is considered Human with a Geneticist on your side of the field.", + "rules": "{$Graytide} {$Squad Tactics}: Deal 1 damage to your opponent.", "icon_state": "monkey", "power": "1", "resolve": "1", "faction": "Science", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Primate", + "cardsubtype": "Animal Science", "rarity": "common", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "monkey" @@ -828,14 +828,14 @@ "id": "nukeop", "name": "Nuclear Operative", "desc": "The frontline grunts of the syndicate army, Nuclear Operatives are typically well trained and equipped for their grim duty.", - "rules": "{$Squad Tactics}", + "rules": "On Play: Gain +1/+1 until the end of the turn", "icon_state": "nukie_red", - "power": "4", - "resolve": "2", + "power": "3", + "resolve": "3", "faction": "Syndicate", - "summoncost": "4", + "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Syndicate Soldier", + "cardsubtype": "Syndicate Cybersun", "rarity": "rare", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "syndicate_space_shotgun" @@ -851,7 +851,7 @@ "faction": "Medical", "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Medical", "rarity": "common", "summon_icon_state": "Paramedic" }, @@ -859,14 +859,14 @@ "id": "peaceborg", "name": "Cyborg (Peacekeeper Shell)", "desc": "After the unilateral phasing out of Security Shells in 2554 following mass reports of cyborg-on-human violence, the Peacekeeper Shell was introduced as a stopgap solution until the problems could be resolved.", - "rules": "{$Asimov}, this card loses -1 power for every creature on your opponent's side of the field", + "rules": "{$Asimov} {$Taunt} {$Blocker} When damaged: Return this card to the hand.", "icon_state": "borg_peace", "power": "3", "resolve": "3", "faction": "Security", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon Officer", + "cardsubtype": "Silicon Security", "rarity": "uncommon", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "peace" @@ -875,14 +875,14 @@ "id": "plasma_engi", "name": "Station Engineer (Plasmaman)", "desc": "The ever industrious plasmamen are well suited to engineering work, due to their natural radiation resistance.", - "rules": "{$Immunity} to Battlefields", + "rules": "{$Immunity} to Battlefields. When this creature dies deal 1 damage to all other creatures.", "icon_state": "engi_plasma", "power": "2", "resolve": "4", "faction": "Engineering", - "summoncost": "5", + "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Plasmaman Engineer", + "cardsubtype": "Atmospherics", "rarity": "common", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "plasmaman" @@ -891,14 +891,14 @@ "id": "QM", "name": "Quartermaster", "desc": "Every Nanotrasen station has a Quartermaster, who controls the flow of cargo to and from the station, and by extension to and from the hands of the crew. He's not given the distinction of being a head, though. His job isn't hard enough.", - "rules": "Pay 3 mana and tap this card: All card cards on your side of the field gain +1/+1 until the end of this turn.", + "rules": "You cannot be damaged while this unit is on the field. Holy.", "icon_state": "qm", - "power": "3", - "resolve": "3", + "power": "0", + "resolve": "7", "faction": "Cargo", "summoncost": "6", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Cargo Command", "rarity": "uncommon", "summon_icon_state": "Quartermaster" }, @@ -906,14 +906,14 @@ "id": "qm_head", "name": "Quartermaster", "desc": "Every Nanotrasen station has a Quartermaster, who controls the flow of cargo to and from the station, and by extension to and from the hands of the crew.", - "rules": "Pay 8 mana and permanently tap this card: All cargo cards on your side of the field gain +2/+2 until this card leaves play.", + "rules": "You cannot be damaged while this unit is on the field. Holy.", "icon_state": "qm_head", - "power": "6", - "resolve": "6", + "power": "7", + "resolve": "7", "faction": "Cargo", - "summoncost": "10", + "summoncost": "6", "cardtype": "Creature", - "cardsubtype": "Human Employee", + "cardsubtype": "Cargo Command", "rarity": "misprint", "summon_icon_state": "Quartermaster" }, @@ -921,14 +921,14 @@ "id": "rabbit_pai", "name": "Personal AI Device (Rabbit Shell)", "desc": "Personal AI Devices are able to take the form of many household pets, to provide a homely sense of comfort and companionship to their owners.", - "rules": "This card may steal the {$Asimov} keyword off of another friendly silicon creature.", + "rules": "Tap: Remove the {$Asimov} keyword off of another friendly silicon creature.", "icon_state": "pai_rabbit", "power": "0", "resolve": "1", "faction": "Science", - "summoncost": "2", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Silicon Rabbit", + "cardsubtype": "Silicon Creature", "rarity": "common", "summon_icon_file": "icons/mob/silicon/pai.dmi", "summon_icon_state": "rabbit" @@ -937,14 +937,14 @@ "id": "drone_pai", "name": "Personal AI Device (Drone Shell)", "desc": "The most basic Personal AI shell, the Drone Shell resembles the old maintainance drones used on Nanotrasen Stations prior to 'the incident', and is perfect for the tech-savvy AI-owner.", - "rules": "You may pay 1 mana and tap this card: a silicon card may attack one additional time this turn.", + "rules": "Tap this card: Add a silicon card from your discard pile to your hand.", "icon_state": "pai_drone", "power": "2", "resolve": "4", "faction": "Science", - "summoncost": "5", + "summoncost": "4", "cardtype": "Creature", - "cardsubtype": "Silicon Drone", + "cardsubtype": "Silicon", "rarity": "common", "summon_icon_file": "icons/mob/silicon/pai.dmi", "summon_icon_state": "repairbot" @@ -953,14 +953,14 @@ "id": "RD", "name": "Research Director", "desc": "The Research Director is the head of the Science Division, and is responsible for, shockingly, directing research.", - "rules": "Once per turn, you may tap all Science faction cards in play, activate the effect of an event card twice.", + "rules": "Tap: The effect of the next event or instant card you activate this turn is played twice.", "icon_state": "rd", "power": "2", "resolve": "5", "faction": "Science", - "summoncost": "7", + "summoncost": "6", "cardtype": "Creature", - "cardsubtype": "Human Scientist", + "cardsubtype": "Science Command", "rarity": "uncommon", "summon_icon_state": "Research Director" }, @@ -968,28 +968,28 @@ "id": "rd_suit", "name": "Nakamura Engineering B.O.M.B.Suit", "desc": "The Nakamura Engineering B.O.M.B.Suit is an innovative combination of a R.I.G.Suit and a bomb suit, perfect for toxins research.", - "rules": "Reduces all battlefield damage to the equipped creature by 2.", + "rules": "Damage to the equipped creature cannot exceed 2.", "icon_state": "rd_hardsuit", "power": "0", "resolve": "0", "faction": "Science", "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Science", "rarity": "rare" }, { "id": "roboticist", "name": "Roboticist", "desc": "The roboticist's work is as close as Nanotrasen legally allows its employees to come to necromancy.", - "rules": "If a {$Asimov} card on your side of the field is destroyed, you may pay 2 mana and tap this card: Return that card to your hand.", + "rules": "On Play: Add a Silicon from your deck to your hand.", "icon_state": "roboticist", "power": "2", "resolve": "2", "faction": "Science", "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Scientist", + "cardsubtype": "Science Silicon", "rarity": "uncommon", "summon_icon_state": "Roboticist" }, @@ -997,14 +997,14 @@ "id": "runtime", "name": "Runtime", "desc": "Runtime is the CMO's personal feline companion, and is well known for her laziness. It's said that opening a tin of tuna anywhere on the station will bring her running.", - "rules": "You may sacrifice this card: reduce the cost of summoning a medical faction card this turn by 2 mana.", + "rules": "Sacrifice this card: reduce the cost of summoning your next medical faction card this turn by 2 mana.", "icon_state": "runtime", "power": "0", "resolve": "1", "faction": "Medical", - "summoncost": "3", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Cat", + "cardsubtype": "Animal Medical", "rarity": "uncommon", "summon_icon_file": "icons/mob/simple/pets.dmi", "summon_icon_state": "cat" @@ -1013,14 +1013,14 @@ "id": "scientist", "name": "Scientist", "desc": "Rumours that Nanotrasen hires 'mad scientists' are greatly exaggerated. Scientists are regularly screened to ensure that their insanity remains within acceptable limits.", - "rules": "When this card is targeted by an opponent's single target event, you gain 1 lifeshard.", + "rules": "{$On Summon}: Destroy a creature with 4 or more power.", "icon_state": "scientist", "power": "1", - "resolve": "2", + "resolve": "3", "faction": "Science", - "summoncost": "4", + "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Scientist", + "cardsubtype": "Science", "rarity": "common", "summon_icon_state": "Scientist" }, @@ -1028,14 +1028,14 @@ "id": "secborg", "name": "Cyborg (Security Shell)", "desc": "Following an incident in 2554, the Security Cyborg Shell was unilaterally phased out and replaced by the Peacekeeper. Nonetheless, many units remain in service with various other organisations such as private militaries.", - "rules": "{$Asimov}, when this card targets a human creature, deal 1 damage to it after the battle resolves.", + "rules": "{$Asimov} When this attacks deal 1 damage to the blocker before the battle resolves (ignoring Asimov).", "icon_state": "borg_sec", "power": "4", "resolve": "2", "faction": "Security", - "summoncost": "6", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon Officer", + "cardsubtype": "Silicon Security", "rarity": "epic", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "sec" @@ -1044,14 +1044,14 @@ "id": "sec_officer", "name": "Security Officer", "desc": "Nanotrasen would like to remind all employees to support their station security team; remember, the boys in red keep you safe!", - "rules": "{$Squad Tactics}", + "rules": "{$Squad Tactics}: Heal this unit to full resolve.", "icon_state": "sec", - "power": "2", - "resolve": "2", + "power": "3", + "resolve": "3", "faction": "Security", "summoncost": "3", "cardtype": "Creature", - "cardsubtype": "Human Officer", + "cardsubtype": "Security", "rarity": "common", "summon_icon_state": "Security Officer" }, @@ -1061,26 +1061,26 @@ "desc": "Fashioned from paranormally reinforced brass, the Ratvar Cult's clockwork armour is as beautiful as it is heretical.", "rules": "While equipped, give the equipped unit {$Clockwork}.", "icon_state": "clock_cultist", - "power": "2", - "resolve": "2", + "power": "0", + "resolve": "0", "faction": "Syndicate", - "summoncost": "4", + "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Armour", + "cardsubtype": "Wizardry", "rarity": "epic" }, { "id": "beercanborg", - "name": "Cyborg (Service Shell- Beercan)", + "name": "Cyborg (Service Shell - Beercan)", "desc": "Despite being based on the Medical Shell, this particular Service Shell is tasked with destroying livers, rather than healing them.", - "rules": "{$Asimov}, you may discard this card: draw one Service {$Faction} card from your deck, then shuffle.", + "rules": "{$Asimov} All enemy creatures gain {$Fury} and -1 Resolve while this is on the field.", "icon_state": "borg_serv_can", "power": "1", "resolve": "1", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Bar", "rarity": "uncommon", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "kent" @@ -1089,46 +1089,46 @@ "id": "flamboyantborg", "name": "Cyborg (Service Shell- Flamboyant)", "desc": "Sometimes a cyborg just needs to show a bit of flamboyance, you know?", - "rules": "{$Asimov}, gains +2/+2 when it's the only card on your side of the field.", + "rules": "{$Asimov}, gains +2/+2 and loses {$Asimov} when it's the only card on your side of the field.", "icon_state": "borg_serv_pink", "power": "0", "resolve": "1", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Bar", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "brobot" }, { "id": "skirtborg", - "name": "Cyborg (Service Shell- Skirted)", + "name": "Cyborg (Service Shell - Skirted)", "desc": "The Service Shell is intended to be the most human of the Cyborg Shells, due to its outwardly social role- none exemplify this better than the Skirted Shell, showing that even robots can't escape fashion norms.", - "rules": "{$Asimov}", + "rules": "{$Asimov} On Play: You (the player) heal 1 for every creature on your side of the field.", "icon_state": "borg_serv_skirt", "power": "0", "resolve": "3", "faction": "Service", - "summoncost": "1", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Bar", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "service_f" }, { "id": "classicborg", - "name": "Cyborg (Service Shell- Classic)", + "name": "Cyborg (Service Shell - Classic)", "desc": "The classic Service Shell, the Classic Shell is what most crewmembers think of when they think of a 'useless robot that serves drinks'.", - "rules": "{$Asimov}, for every piece of equipment in play, gain +1 temporary resolve during the opponent's turn. That temporary resolve is lost at the start of your turn.", + "rules": "{$Asimov}, for every equipment in play gain +1 resolve during the opponent's turn only.", "icon_state": "borg_serv_suit", "power": "1", "resolve": "1", "faction": "Service", "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Bar", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "service_m" @@ -1137,14 +1137,14 @@ "id": "stylinborg", "name": "Cyborg (Service Shell- Ritzy)", "desc": "Ooh, isn't this robot one cool cat?", - "rules": "{$Asimov}", + "rules": "{$Asimov} On Play: Remove {$Asimov} from a creature.", "icon_state": "borg_serv_tux", "power": "1", "resolve": "2", "faction": "Service", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Silicon", + "cardsubtype": "Silicon Bar", "rarity": "common", "summon_icon_file": "icons/mob/silicon/robots.dmi", "summon_icon_state": "tophat" @@ -1153,14 +1153,14 @@ "id": "miner", "name": "Shaft Miner", "desc": "When the station needs materials, these are the guys who risk their lives, bravely pioneering the wastes of Indecipheres, to bring them in.", - "rules": "Once per turn, you may pay 1 mana and tap this card: Draw one card from your deck, and either discard it, or send it to the bottom of your deck.", + "rules": "Tap: Look at the top 3 cards of your deck, choose one to add to your hand and shuffle the rest back into your deck.", "icon_state": "miner", "power": "5", "resolve": "3", "faction": "Cargo", - "summoncost": "5", + "summoncost": "4", "cardtype": "Creature", - "cardsubtype": "Human Miner", + "cardsubtype": "Cargo", "rarity": "rare", "summon_icon_state": "Shaft Miner" }, @@ -1168,14 +1168,14 @@ "id": "engi", "name": "Station Engineer", "desc": "Station Engineers maintain the intricate and delicate web of machinery that keeps you, and everyone else aboard your station, alive. No pressure there, then.", - "rules": "Tap this card: Reduce the damage a card would take this turn from a battlefield to zero.", + "rules": "{$Graytide} Tap: Destroy or return to the hand a Battlefield card on the field.", "icon_state": "engi", "power": "2", "resolve": "2", "faction": "Engineering", - "summoncost": "4", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Human Engineer", + "cardsubtype": "Atmospherics Maintenance", "rarity": "common", "summon_icon_state": "Station Engineer" }, @@ -1183,14 +1183,14 @@ "id": "swarmer", "name": "Swarmer", "desc": "Leading researchers theorise that Swarmers were designed as some kind of vanguard for an alien invasion force, which seemingly has never materialised.", - "rules": "{$Graytide}, {$Immunity} to Engineering creature cards.", + "rules": "{$Graytide}, {$Squad Tactics}: Create a 1/1 'Swarmer Spawn' token.", "icon_state": "swarmer", "power": "0", "resolve": "1", "faction": "Syndicate", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Robot", + "cardsubtype": "Silicon Maintenance", "rarity": "rare", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", "summon_icon_state": "swarmer" @@ -1199,14 +1199,14 @@ "id": "viro", "name": "Virologist", "desc": "Officially, the virologist is present on station to deal with novel diseases and ailments that originate from deep space. As everyone knows, this is not what the virologist actually does.", - "rules": "", + "rules": "On Play: Gain +3 Power until the end of this turn.", "icon_state": "viro", - "power": "5", + "power": "1", "resolve": "1", "faction": "Medical", - "summoncost": "3", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Medical", "rarity": "common", "summon_icon_state": "Virologist" }, @@ -1214,10 +1214,10 @@ "id": "warden", "name": "Warden", "desc": "The Warden is tasked with the herculean (and futile) feat of defending the armory and brig, and never leaving his post, no matter the situation.", - "rules": "{$Squad Tactics}, {$Blocker}", + "rules": "{$Holy}, {$Blocker}", "icon_state": "warden", "power": "2", - "resolve": "4", + "resolve": "6", "faction": "Security", "summoncost": "4", "cardtype": "Creature", @@ -1234,7 +1234,7 @@ "power": "2", "resolve": "3", "faction": "Xeno", - "summoncost": "4", + "summoncost": "3", "cardtype": "Creature", "cardsubtype": "Xenomorph", "series": "coreset2020", @@ -1246,14 +1246,14 @@ "id": "tough_choices", "name": "Tough Choices", "desc": "Every Nanotrasen employee will, at some point, be forced to make a tough choice. Make sure you make the right one!", - "rules": "Draw the top three cards from your deck. Summon one at no cost, and discard the other two.", + "rules": "Draw the top three cards from your deck. Choose one to add to your hand and discard the other two.", "icon_state": "tough_choices", "power": "0", "resolve": "0", "faction": "Syndicate", - "summoncost": "2", + "summoncost": "1", "cardtype": "Event", - "cardsubtype": "Instant", + "cardsubtype": "Security", "series": "coreset2020", "rarity": "common" }, @@ -1261,14 +1261,14 @@ "id": "bsa_barrage", "name": "Bluespace Barrage", "desc": "The officers at Centcom are well known for their ability to hit targets extremely accurately with their bluespace artillery, especially when stupid pictures show up at their fax machine.", - "rules": "Destroy any creature on the opponent's battlefield. If your opponent has no creatures, deal 2 damage directly to them.", + "rules": "The opponent chooses a creature they control. It is destroyed. If your opponent has no creatures, deal 5 damage directly to them.", "icon_state": "bsa_barrage", "power": "0", "resolve": "0", "faction": "Security", - "summoncost": "3", - "cardtype": "Event", - "cardsubtype": "Instant", + "summoncost": "4", + "cardtype": "Instant", + "cardsubtype": "Command ERT", "series": "coreset2020", "rarity": "uncommon" }, @@ -1282,8 +1282,8 @@ "resolve": "0", "faction": "Science", "summoncost": "1", - "cardtype": "Event", - "cardsubtype": "Instant", + "cardtype": "Instant", + "cardsubtype": "Silicon", "series": "coreset2020", "rarity": "common" }, @@ -1291,14 +1291,14 @@ "id": "adrenals", "name": "Adrenals", "desc": "A potent mixture of stimulants, designed to enhance a soldier's ability in the field. Technically illegal in Terragov territory, but since when has that stopped anyone?", - "rules": "Grant +2/+1 to a Creature card that you control.", + "rules": "Grant +2/+1 to a Creature card that you control until the end of this turn.", "icon_state": "adrenals", "power": "+2", "resolve": "+1", "faction": "Medical", "summoncost": "1", - "cardtype": "Event", - "cardsubtype": "Instant", + "cardtype": "Instant", + "cardsubtype": "Medical Security", "series": "coreset2020", "rarity": "common" }, @@ -1311,7 +1311,7 @@ "power": "0", "resolve": "0", "faction": "Engineering", - "summoncost": "3", + "summoncost": "1", "cardtype": "Battlefield", "cardsubtype": "Atmospherics", "series": "coreset2020", @@ -1321,14 +1321,14 @@ "id": "psych", "name": "Psychologist", "desc": "The psychologist is the newest addition to Nanotrasen's medical workforce, quickly settling into their role as the job that does nothing valuable.", - "rules": "", + "rules": "Tap: Destroy an equipment card on the field.", "icon_state": "psych", "power": "1", "resolve": "1", "faction": "Medical", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Human Doctor", + "cardsubtype": "Medical", "series": "coreset2020", "rarity": "common", "summon_icon_state": "Psychologist" @@ -1343,8 +1343,8 @@ "resolve": "0", "faction": "Security", "summoncost": "2", - "cardtype": "Event", - "cardsubtype": "Instant", + "cardtype": "Instant", + "cardsubtype": "Security", "series": "coreset2020", "rarity": "uncommon" }, @@ -1359,7 +1359,7 @@ "faction": "Science", "summoncost": "3", "cardtype": "Battlefield", - "cardsubtype": "Anomaly", + "cardsubtype": "Wizardry Science", "series": "coreset2020", "rarity": "common" }, @@ -1374,7 +1374,7 @@ "faction": "Science", "summoncost": "3", "cardtype": "Event", - "cardsubtype": "Instant", + "cardsubtype": "Science", "series": "coreset2020", "rarity": "uncommon" }, @@ -1389,7 +1389,7 @@ "faction": "Cargo", "summoncost": "2", "cardtype": "Battlefield", - "cardsubtype": "Event", + "cardsubtype": "Cargo", "series": "coreset2020", "rarity": "common" }, @@ -1403,7 +1403,7 @@ "resolve": "0", "faction": "Service", "summoncost": "0", - "cardtype": "Artifact", + "cardtype": "Equipment", "cardsubtype": "Plant", "series": "coreset2020", "rarity": "legendary" @@ -1419,7 +1419,7 @@ "faction": "Security", "summoncost": "2", "cardtype": "Event", - "cardsubtype": "Instant", + "cardsubtype": "Security Maintenance", "series": "coreset2020", "rarity": "common" }, @@ -1432,9 +1432,9 @@ "power": "2", "resolve": "3", "faction": "Syndicate", - "summoncost": "3", + "summoncost": "2", "cardtype": "Creature", - "cardsubtype": "Spirit", + "cardsubtype": "Wizardry", "series": "coreset2020", "rarity": "rare", "summon_icon_file": "icons/mob/simple/mob.dmi", @@ -1444,14 +1444,14 @@ "id": "re_education", "name": "Re-Education", "desc": "Nobody ever seems to return from re-education. Probably best not to question it.", - "rules": "Destroy any creature on the opponent's battlefield.", + "rules": "Destroy a creature on the opponent's battlefield.", "icon_state": "re_education", "power": "0", "resolve": "0", "faction": "Security", - "summoncost": "2", - "cardtype": "Event", - "cardsubtype": "Instant", + "summoncost": "5", + "cardtype": "Instant", + "cardsubtype": "Security", "series": "coreset2020", "rarity": "uncommon" }, @@ -1459,14 +1459,14 @@ "id": "immoral_surgeon", "name": "Immoral Surgeon", "desc": "Remember, the Hippocratic oath is only a suggestion.", - "rules": "2 Mana- You may tap Immoral Surgeon and give a creature +1/+1.", + "rules": "Tap: Give a creature +1/-1.", "icon_state": "immoral_surgeon", "power": "2", - "resolve": "4", + "resolve": "1", "faction": "Medical", - "summoncost": "4", + "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Lizard Doctor", + "cardsubtype": "Medical", "series": "coreset2020", "rarity": "uncommon", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", @@ -1476,14 +1476,14 @@ "id": "botanist_plant", "name": "Committed Botanist", "desc": "When you've grown the plants, nurtured the plants, and harvested the plants, there's only one place to go from there... becoming the plant.", - "rules": "While Committed Botanist is on your battlefield, you can play Plant and Service cards at half their cost, rounded up.", + "rules": "While Committed Botanist is on your battlefield you can play Plant cards at half their cost, rounded up.", "icon_state": "botanist_plant", "power": "2", "resolve": "3", "faction": "Service", "summoncost": "4", "cardtype": "Creature", - "cardsubtype": "Plant Worker", + "cardsubtype": "Plant Bar", "series": "coreset2020", "rarity": "rare", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", @@ -1493,14 +1493,14 @@ "id": "scientist_moth", "name": "Scientist (Moth)", "desc": "Moths are a common sight in Nanotrasen research departments, acting as integral ideas guys for new clothing designs and lighting innovations.", - "rules": "", + "rules": "Enemy creatures cannot block this unit if it is attacking directly.", "icon_state": "scientist_moth", "power": "2", "resolve": "2", "faction": "Science", "summoncost": "1", "cardtype": "Creature", - "cardsubtype": "Moth Scientist", + "cardsubtype": "Scientist", "series": "coreset2020", "rarity": "common", "summon_icon_file": "icons/obj/toys/tcgsummons.dmi", @@ -1510,14 +1510,14 @@ "id": "inducer", "name": "Inducer", "desc": "The inducer is a marvelous piece of tech, allowing the recharging of an internal cell without opening a machine.", - "rules": "Pay 3 lifeshards: Gain 3 mana this turn.", + "rules": "Pay 2 lifeshards to gain 1 plasma.", "icon_state": "inducer", "power": "0", "resolve": "0", "faction": "Engineering", "summoncost": "0", "cardtype": "Event", - "cardsubtype": "Instant", + "cardsubtype": "Science", "series": "coreset2020", "rarity": "common" }, @@ -1525,7 +1525,7 @@ "id": "fryer", "name": "Deep Fryer", "desc": "God bless the United States of Space America.", - "rules": "For 2 mana: Tap this card and destroy an opposing equipment card.", + "rules": "Destroy an opposing equipment card.", "icon_state": "fryer", "power": "0", "resolve": "0", @@ -1540,14 +1540,14 @@ "id": "sleeping_carp", "name": "Scroll of the Sleeping Carp", "desc": "Created by the long-extinct Carp Monks of Space Tibet, the Sleeping Carp style has been kept alive by dedicated practitioners, and even found its way into the Syndicate's training regime.", - "rules": "{$On Equip}: Your opponent must show you one card in their hand of their choice.", + "rules": "{$On Equip}: Your opponent must show you their entire hand.", "icon_state": "sleeping_carp", - "power": "3", + "power": "1", "resolve": "1", "faction": "Syndicate", - "summoncost": "3", + "summoncost": "1", "cardtype": "Equipment", - "cardsubtype": "Weapon", + "cardsubtype": "Syndicate", "series": "coreset2020", "rarity": "epic" }, @@ -1555,14 +1555,14 @@ "id": "nuclear_option", "name": "The Nuclear Option", "desc": "The Gorlex Marauders are well known for their nuclear weapons, and their nuke first, second, third and fourth policy with regards to deploying them.", - "rules": "Destroy the active battlefield card. Deal 2 damage to all creatures on both battlefields.", + "rules": "Destroy the active battlefield card. Destroy all creatures on both battlefields.", "icon_state": "nuclear_option", "power": "0", "resolve": "0", "faction": "Syndicate", - "summoncost": "3", - "cardtype": "Event", - "cardsubtype": "Instant", + "summoncost": "5", + "cardtype": "Instant", + "cardsubtype": "Atmospherics Syndicate", "series": "coreset2020", "rarity": "rare" }, @@ -1570,14 +1570,14 @@ "id": "bepis", "name": "B.E.P.I.S. Chamber", "desc": "Created as an automated investment machine for a venture capitalism company, the B.E.P.I.S. ended up in the hands of Nanotrasen's research division after bankrupting the original creators... and 27 other corporations.", - "rules": "Flip a coin. If heads, gain 2 mana. If tails, lose up to 2 mana.", + "rules": "Flip a coin. If heads, gain 4 mana.", "icon_state": "bepis", "power": "0", "resolve": "0", "faction": "Science", - "summoncost": "0", + "summoncost": "2", "cardtype": "Event", - "cardsubtype": "Instant", + "cardsubtype": "Clown Science", "series": "coreset2020", "rarity": "common" }, @@ -1591,8 +1591,8 @@ "resolve": "0", "faction": "Medical", "summoncost": "3", - "cardtype": "Event", - "cardsubtype": "Instant", + "cardtype": "Instant", + "cardsubtype": "Clown Medical", "series": "coreset2020", "rarity": "uncommon" }, @@ -1600,14 +1600,14 @@ "id": "disco_inferno", "name": "Disco Inferno", "desc": "(Burn baby burn) burn that mother down y'all\n(Burn baby burn) Disco Inferno\n(Burn baby burn) burn that mother down", - "rules": "For 2 mana: Tap this card permanantly. While tapped, all active creatures take 3 damage during the first play phase of each turn. This card is destroyed after 2 turns of being tapped.", + "rules": "All active creatures take 3 damage during the first play phase of each turn. This card is destroyed after this effect triggers 4 times.", "icon_state": "disco_inferno", "power": "0", "resolve": "0", "faction": "Science", "summoncost": "4", "cardtype": "Battlefield", - "cardsubtype": "Shuttle", + "cardsubtype": "Science Atmosian", "series": "coreset2020", "rarity": "uncommon" } diff --git a/strings/tcg/set_two.json b/strings/tcg/set_two.json index 02331326deaee..935fbfaf840c1 100644 --- a/strings/tcg/set_two.json +++ b/strings/tcg/set_two.json @@ -1,6 +1,6 @@ { "templates": [ - { + { "template": "default", "icon": "icons/runtime/tcg/xenos.dmi", "series": "resinfront", @@ -13,12 +13,12 @@ "id": "xenoborg", "name": "Xenoborg", "desc": "With a mini-gun in one hand and a rocket launcher in the other, the Xenoborg is a failed hybridization of a Xenomorph and a cyborg.", - "rules": "{$Asimov}. Once per turn, you may sacrifice a silicon card, and pay the difference between that card's summon cost and this card's summon cost to summon this card from your hand.", + "rules": "You may sacrifice a silicon, reducing the cost of this card by the sacrificed creature's plasma cost, to summon this card from your hand.", "icon_state": "xeno_borg", "power": 7, "resolve": 5, "faction": "Science", - "summoncost": 6, + "summoncost": 5, "cardtype": "Creature", "cardsubtype": "Silicon Xenomorph", "rarity": "epic", @@ -28,10 +28,10 @@ "id": "sentinel", "name": "Xenomorph Sentinel", "desc": "The juices from a Sentinel's neurotoxin gland pair brilliantly with a Pan-Galactic Gargle Blaster.", - "rules": "{$Hivemind}", + "rules": "{$Hivemind} {$Taunt} {$Blocker}", "icon_state": "xeno_sentinel", "power": 5, - "resolve": 3, + "resolve": 2, "faction": "Xeno", "summoncost": 4, "cardtype": "Creature", @@ -43,12 +43,12 @@ "id": "drone", "name": "Xenomorph Drone", "desc": "Rarely seen on the frontline, the Drone is your average worker that lays the foundation of the hive.", - "rules": "{$Hivemind}. Tap this card: you may summon a Xeno faction creature for 1 less mana this turn.", + "rules": "{$Hivemind}. Tap: Summon a Xeno faction creature for 1 less mana.", "icon_state": "xeno_drone", "power": 1, "resolve": 1, "faction": "Xeno", - "summoncost": 2, + "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", "rarity": "common", @@ -63,7 +63,7 @@ "power": 6, "resolve": 3, "faction": "Xeno", - "summoncost": 5, + "summoncost": 4, "cardtype": "Creature", "cardsubtype": "Xenomorph", "rarity": "uncommon", @@ -73,10 +73,10 @@ "id": "spitter", "name": "Xenomorph Spitter", "desc": "While their acid gland is too dangerous to mix with alcohol (not that it stops the marines), a Spitter's acid is useful for industry as it can melt almost anything with ease.", - "rules": "{$Hivemind}. Tap this card: draw the top 2 cards of your deck, you may re-arrange their order, then return them to the top of your deck.", + "rules": "{$Hivemind}. Tap: Draw the top 2 cards of your deck then discard any that weren't Xenomorph.", "icon_state": "xeno_spitter", - "power": 3, - "resolve": 3, + "power": 2, + "resolve": 1, "faction": "Xeno", "summoncost": 3, "cardtype": "Creature", @@ -103,12 +103,12 @@ "id": "praetorian", "name": "Xenomorph Praetorian", "desc": "The Praetorian is the Queen's royal guard, never seen far from the Queen's chambers.", - "rules": "{$Hivemind}. If you have 2 or more other Xeno cards on your field alongside this card, you may sacrifice 3 Xeno cards and add Xenomorph Queen to your hand from your deck.", + "rules": "{$Hivemind}. {On Summon}: Add a Xenomorph Queen card to your hand from your deck.", "icon_state": "xeno_praetorian", - "power": 3, - "resolve": 6, + "power": 2, + "resolve": 3, "faction": "Xeno", - "summoncost": 5, + "summoncost": 2, "cardtype": "Creature", "cardsubtype": "Xenomorph", "rarity": "rare", @@ -118,7 +118,7 @@ "id": "hivelord", "name": "Xenomorph Hivelord", "desc": "The Hivelord is the last word in construction, capable of building entire hives in a matter of seconds.", - "rules": "{$Hivemind}. For two mana, tap this card and summon a 0/2 Resin Wall counter creature. Each Resin Wall has {$Blocker}.", + "rules": "{$Hivemind}. Tap; summon a 0/2 Resin Wall counter creature. Each Resin Wall has {$Blocker}.", "icon_state": "xeno_hivelord", "power": 1, "resolve": 3, @@ -133,7 +133,7 @@ "id": "boiler", "name": "Xenomorph Boiler", "desc": "The Boiler is a long-range artillery machine, capable of spewing clouds of acid that melt everything in seconds.", - "rules": "{$Hivemind}. If this card attacks, it is tapped for an additional turn before it is untapped.", + "rules": "{$Hivemind}. This creatures' direct attacks cannot be blocked..", "icon_state": "xeno_boiler", "power": 6, "resolve": 2, @@ -150,7 +150,7 @@ "desc": "With large scythe claws for hands, the furious Ravager goes berserk at the sight of fire.", "rules": "{$Hivemind}, {$Fury}", "icon_state": "xeno_ravager", - "power": 4, + "power": 2, "resolve": 2, "faction": "Xeno", "summoncost": 3, @@ -181,9 +181,9 @@ "rules": "{$Hivemind}, {$Blocker}", "icon_state": "xeno_defender", "power": 1, - "resolve": 2, + "resolve": 1, "faction": "Xeno", - "summoncost": 2, + "summoncost": 0, "cardtype": "Creature", "cardsubtype": "Xenomorph", "rarity": "common", @@ -193,10 +193,10 @@ "id": "warrior", "name": "Xenomorph Warrior", "desc": "Warriors exhibit greater cruelty than other Xeno strains, enjoying snapping a victim's limbs before finishing them off.", - "rules": "{$Hivemind}", + "rules": "{$Hivemind} {$First Strike}", "icon_state": "xeno_warrior", - "power": 4, - "resolve": 4, + "power": 3, + "resolve": 3, "faction": "Xeno", "summoncost": 4, "cardtype": "Creature", @@ -208,12 +208,12 @@ "id": "queen", "name": "Xenomorph Queen (Resin Frontier)", "desc": "The ruler of the hive. Organs from a Queen fetch a high price amongst researchers and less-than-moral surgeons.", - "rules": "For 2 mana, tap the equipped creature and summon a 1/1 Xenomorph Brood counter creature, with {$Hivemind}.", + "rules": "If the equipped card is a Xenomorph give it {$Taunt} {$First Strike} {$Blocker}.", "icon_state": "xeno_queen", - "power": 5, - "resolve": 5, + "power": 0, + "resolve": 0, "faction": "Xeno", - "summoncost": 5, + "summoncost": 3, "cardtype": "Equipment", "cardsubtype": "Armour", "rarity": "epic" @@ -222,7 +222,7 @@ "id": "carrier", "name": "Xenomorph Carrier", "desc": "Carriers are like the Easter Bunny except the eggs they hide will kill you.", - "rules": "{$Hivemind}, {$Squad Tactics}", + "rules": "{$Hivemind}, {$Deadeye}: Add one Xenomorph from your Deck to your hand.", "icon_state": "xeno_carrier", "power": 2, "resolve": 2, @@ -237,7 +237,7 @@ "id": "defiler", "name": "Xenomorph Defiler", "desc": "Instead of utilizing eggs, the Defiler prefers to inject an unknown chemical in their victim, causing a devastating infection.", - "rules": "{$Hivemind}. When this card attacks a target enemy creature, calculate damage as though the target creature has this card's power subtracted from it first.", + "rules": "{$Hivemind}. While this creature is on the field all enemy creatures lose 1 power.", "icon_state": "xeno_defiler", "power": 1, "resolve": 3, @@ -255,7 +255,7 @@ "rules": "{$Hivemind}, {$Changeling}", "icon_state": "xeno_predalien", "power": 4, - "resolve": 3, + "resolve": 2, "faction": "Xeno", "summoncost": 3, "cardtype": "Creature", @@ -267,12 +267,12 @@ "id": "shrike", "name": "Xenomorph Shrike", "desc": "It is unknown why Shrikes are able to lead a Hive, but their hives are always much smaller than a Queen's.", - "rules": "{$Hivemind}. If Xenomorph Queen would be destroyed, you may re-equip Xenomorph Queen on this card instead, once per game.", + "rules": "{$Hivemind}. Tap: Add Xenomorph Queen from your discard pile to your hand.", "icon_state": "xeno_shrike", - "power": 3, + "power": 2, "resolve": 1, "faction": "Xeno", - "summoncost": 2, + "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", "rarity": "rare", @@ -297,7 +297,7 @@ "id": "hivemind", "name": "Xenomorph Hivemind", "desc": "Recently discovered to have sapience, this pulsating orb will dig into the earth and rapidly spread resin throughout planets.", - "rules": "Defender", + "rules": "{$Blocker} Tap: Add 1 Xenomorph creature from your Deck to your hand.", "icon_state": "xeno_hivemind", "power": 0, "resolve": 1, @@ -312,7 +312,7 @@ "id": "screecher", "name": "Xenomorph Screecher", "desc": "The Screecher's screeches are more psychologically damaging than the resulting hearing damage.", - "rules": "{$Deadeye}", + "rules": "{$Deadeye}: All tapped enemy creatures take 1 damage.", "icon_state": "xeno_screecher", "power": 3, "resolve": 2, @@ -327,12 +327,12 @@ "id": "creep", "name": "Xenomorph Creep", "desc": "This special Hunter strain prioritizes stalking its target. It evolves into a strain of Hunter that is (mercifully) rarely seen aboard space stations.", - "rules": "Tap this card: Until the start of your next turn, this card has immunity to Xeno Creatures.", + "rules": "Tap this card: Until the start of your next turn, this card has immunity to creatures.", "icon_state": "xeno_creep", - "power": 4, - "resolve": 3, + "power": 2, + "resolve": 2, "faction": "Xeno", - "summoncost": 5, + "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", "rarity": "common", diff --git a/tgstation.dme b/tgstation.dme index f641cf622df0c..402b451a3c51d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1040,6 +1040,7 @@ #include "code\datums\ai\basic_mobs\basic_ai_behaviors\climb_tree.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\emote_with_target.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\find_parent.dm" +#include "code\datums\ai\basic_mobs\basic_ai_behaviors\interact_with_target.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\nearest_targeting.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\pick_up_item.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\pull_target.dm" @@ -1212,6 +1213,7 @@ #include "code\datums\components\chuunibyou.dm" #include "code\datums\components\cleaner.dm" #include "code\datums\components\clickbox.dm" +#include "code\datums\components\clothing_dirt.dm" #include "code\datums\components\clothing_fov_visor.dm" #include "code\datums\components\codeword_hearing.dm" #include "code\datums\components\combo_attacks.dm" @@ -1915,6 +1917,7 @@ #include "code\datums\quirks\neutral_quirks\borg_ready.dm" #include "code\datums\quirks\neutral_quirks\colorist.dm" #include "code\datums\quirks\neutral_quirks\deviant_tastes.dm" +#include "code\datums\quirks\neutral_quirks\evil.dm" #include "code\datums\quirks\neutral_quirks\extrovert.dm" #include "code\datums\quirks\neutral_quirks\foreigner.dm" #include "code\datums\quirks\neutral_quirks\gamer.dm" @@ -1933,6 +1936,8 @@ #include "code\datums\quirks\positive_quirks\alcohol_tolerance.dm" #include "code\datums\quirks\positive_quirks\apathetic.dm" #include "code\datums\quirks\positive_quirks\bilingual.dm" +#include "code\datums\quirks\positive_quirks\chip_connector.dm" +#include "code\datums\quirks\positive_quirks\chipped.dm" #include "code\datums\quirks\positive_quirks\clown_enjoyer.dm" #include "code\datums\quirks\positive_quirks\drunk_healing.dm" #include "code\datums\quirks\positive_quirks\empath.dm" @@ -2045,6 +2050,7 @@ #include "code\datums\status_effects\debuffs\stamcrit.dm" #include "code\datums\status_effects\debuffs\static_vision.dm" #include "code\datums\status_effects\debuffs\strandling.dm" +#include "code\datums\status_effects\debuffs\temperature_over_time.dm" #include "code\datums\status_effects\debuffs\terrified.dm" #include "code\datums\status_effects\debuffs\tower_of_babel.dm" #include "code\datums\status_effects\debuffs\tox_vomit.dm" @@ -2056,6 +2062,7 @@ #include "code\datums\storage\subtypes\backpack.dm" #include "code\datums\storage\subtypes\bag_of_holding.dm" #include "code\datums\storage\subtypes\cards.dm" +#include "code\datums\storage\subtypes\drone.dm" #include "code\datums\storage\subtypes\duffel_bag.dm" #include "code\datums\storage\subtypes\extract_inventory.dm" #include "code\datums\storage\subtypes\fish_case.dm" @@ -3911,6 +3918,7 @@ #include "code\modules\client\preferences\blindfold_color.dm" #include "code\modules\client\preferences\body_type.dm" #include "code\modules\client\preferences\broadcast_login_logout.dm" +#include "code\modules\client\preferences\chipped.dm" #include "code\modules\client\preferences\clothing.dm" #include "code\modules\client\preferences\darkened_flash.dm" #include "code\modules\client\preferences\food_allergy.dm" @@ -4646,9 +4654,11 @@ #include "code\modules\library\random_books.dm" #include "code\modules\library\skill_learning\skill_station.dm" #include "code\modules\library\skill_learning\skillchip.dm" +#include "code\modules\library\skill_learning\generic_skillchips\acrobatics.dm" #include "code\modules\library\skill_learning\generic_skillchips\matrix_taunt.dm" +#include "code\modules\library\skill_learning\generic_skillchips\misc.dm" +#include "code\modules\library\skill_learning\generic_skillchips\musical.dm" #include "code\modules\library\skill_learning\generic_skillchips\point.dm" -#include "code\modules\library\skill_learning\generic_skillchips\rod_suplex.dm" #include "code\modules\library\skill_learning\job_skillchips\_job.dm" #include "code\modules\library\skill_learning\job_skillchips\chef.dm" #include "code\modules\library\skill_learning\job_skillchips\clown.dm" @@ -4656,6 +4666,7 @@ #include "code\modules\library\skill_learning\job_skillchips\janitor.dm" #include "code\modules\library\skill_learning\job_skillchips\miner.dm" #include "code\modules\library\skill_learning\job_skillchips\psychologist.dm" +#include "code\modules\library\skill_learning\job_skillchips\research_director.dm" #include "code\modules\library\skill_learning\job_skillchips\roboticist.dm" #include "code\modules\library\skill_learning\job_skillchips\station_engineer.dm" #include "code\modules\lighting\lighting_area.dm" @@ -5096,6 +5107,7 @@ #include "code\modules\mob\living\basic\pets\fox.dm" #include "code\modules\mob\living\basic\pets\penguin.dm" #include "code\modules\mob\living\basic\pets\pet.dm" +#include "code\modules\mob\living\basic\pets\pet_designer.dm" #include "code\modules\mob\living\basic\pets\sloth.dm" #include "code\modules\mob\living\basic\pets\cat\bread_cat_ai.dm" #include "code\modules\mob\living\basic\pets\cat\cat.dm" @@ -6266,6 +6278,7 @@ #include "code\modules\tgui\states\physical.dm" #include "code\modules\tgui\states\reverse_contained.dm" #include "code\modules\tgui\states\self.dm" +#include "code\modules\tgui\states\standing.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tgui_input\alert.dm" #include "code\modules\tgui_input\checkboxes.dm" @@ -9383,6 +9396,7 @@ #include "modular_zubbers\master_files\code\datums\quirks\positive_quirks\self_aware.dm" #include "modular_zubbers\master_files\code\datums\quirks\positive_quirks\skittish.dm" #include "modular_zubbers\master_files\code\datums\traits\slow.dm" +#include "modular_zubbers\master_files\code\game\objects\effects\spawners\random\decoration.dm" #include "modular_zubbers\master_files\code\modules\client\preferences\hypnopref.dm" #include "modular_zubbers\master_files\code\modules\client\preferences\obscurity_examine.dm" #include "modular_zubbers\master_files\code\modules\client\preferences\scaling_method.dm" diff --git a/tgui/packages/tgui-say/TguiSay.tsx b/tgui/packages/tgui-say/TguiSay.tsx index fbee44f00f9e2..c06e72405d4f1 100644 --- a/tgui/packages/tgui-say/TguiSay.tsx +++ b/tgui/packages/tgui-say/TguiSay.tsx @@ -206,7 +206,8 @@ export class TguiSay extends Component<{}, State> { // Is it a valid prefix? const prefix = typed .slice(0, 3) - ?.toLowerCase() as keyof typeof RADIO_PREFIXES; + ?.toLowerCase() + ?.replace('.', ':') as keyof typeof RADIO_PREFIXES; if (!RADIO_PREFIXES[prefix] || prefix === this.currentPrefix) { return; } diff --git a/tgui/packages/tgui/interfaces/LootPanel/IconDisplay.tsx b/tgui/packages/tgui/interfaces/LootPanel/IconDisplay.tsx index fb792f907f28e..a214a0a969e26 100644 --- a/tgui/packages/tgui/interfaces/LootPanel/IconDisplay.tsx +++ b/tgui/packages/tgui/interfaces/LootPanel/IconDisplay.tsx @@ -4,11 +4,18 @@ import { SearchItem } from './types'; type Props = { item: SearchItem; + size: Size; +}; + +type Size = { + height: number; + width: number; }; export function IconDisplay(props: Props) { const { item: { icon, icon_state }, + size: { height, width }, } = props; const fallback = ; @@ -27,8 +34,8 @@ export function IconDisplay(props: Props) { fallback={fallback} icon={icon} icon_state={icon_state} - height={3} - width={3} + height={height} + width={width} /> ); } diff --git a/tgui/packages/tgui/interfaces/LootPanel/LootBox.tsx b/tgui/packages/tgui/interfaces/LootPanel/LootBox.tsx index 3fb94324b6a2b..b4fafcf57036c 100644 --- a/tgui/packages/tgui/interfaces/LootPanel/LootBox.tsx +++ b/tgui/packages/tgui/interfaces/LootPanel/LootBox.tsx @@ -56,7 +56,7 @@ export function LootBox(props: Props) { }); }} > - + {amount > 1 &&
{amount}
} {!is_blind && {name}} diff --git a/tgui/packages/tgui/interfaces/PetBuilder.tsx b/tgui/packages/tgui/interfaces/PetBuilder.tsx new file mode 100644 index 0000000000000..289281ade7f73 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PetBuilder.tsx @@ -0,0 +1,431 @@ +import { useState } from 'react'; + +import { useBackend } from '../backend'; +import { + Box, + Button, + Dropdown, + Flex, + Icon, + Image, + Input, + LabeledList, + Section, + Stack, +} from '../components'; +import { Window } from '../layouts'; +import { IconDisplay } from './LootPanel/IconDisplay'; +type Data = { + pet_name: string | null; + pet_specie: string; + pet_path: string; + pet_gender: string; + pet_types: string[]; + pet_trick_name: string; + pet_options: PetOptions[]; + pet_carrier: string; + carrier_options: CarrierOptions[]; + pet_possible_emotes: String[]; +}; + +enum PetGender { + male = 'male', + female = 'female', + neuter = 'neuter', +} + +type CarrierOptions = { + carrier_color: string; + carrier_icon: string; +}; + +type PetOptions = { + pet_specie: string; + pet_name: string; + pet_icon: string; + pet_path: string; + pet_icon_state: string; +}; + +const RetrievePet = (pet_path: string, pet_options: PetOptions[]) => { + return pet_options.find((option) => option.pet_path === pet_path); +}; + +const RetrieveCarrier = (color: string, carrier_options: CarrierOptions[]) => { + return carrier_options.find((option) => option.carrier_color === color); +}; + +const FilterPetList = (pet_specie: string, pet_options: PetOptions[]) => { + return pet_options.filter((pet) => pet.pet_specie === pet_specie); +}; + +export const PetBuilder = (props) => { + const { act, data } = useBackend(); + const { + pet_name, + pet_path, + pet_gender, + pet_options, + pet_types, + pet_specie, + pet_trick_name, + carrier_options, + pet_carrier, + pet_possible_emotes, + } = data; + + const [selectedCarrier, setSelectedCarrier] = useState( + () => RetrieveCarrier(pet_carrier, carrier_options) || null, + ); + const [sequences, setSequences] = useState(['none', 'none', 'none']); + const [TrickName, setTrickName] = useState(pet_trick_name); + + const UpdateSequence = (Index: number, Trick: string) => { + const NewSequence = [...sequences]; + NewSequence[Index] = Trick; + setSequences(NewSequence); + }; + + const [selectedPath, setSelectedPath] = useState(pet_path); + const [selectedPet, setSelectedPet] = useState( + () => RetrievePet(selectedPath, pet_options) || null, + ); + const [selectedSpecie, setSelectedSpecie] = useState(pet_specie); + const [filteredPetList, setFilteredPetList] = useState( + () => FilterPetList(selectedSpecie, pet_options) || [], + ); + const [selectedName, setSelectedName] = useState(pet_name); + const [selectedGender, setSelectedGender] = useState(pet_gender); + + const ScrollPetSpecies = (direction: string) => { + let dir = direction === 'next' ? 1 : -1; + let currindex = pet_types.indexOf(selectedSpecie); + const newSpecie = + pet_types[(currindex + dir + pet_types.length) % pet_types.length]; + + const newFilteredPetList = FilterPetList(newSpecie, pet_options); + setSelectedSpecie(newSpecie); + setFilteredPetList(newFilteredPetList); + setSelectedPet(newFilteredPetList[0]); + }; + + const ScrollPetOptions = (direction: string) => { + if (!selectedPet) { + return; + } + let dir = direction === 'next' ? 1 : -1; + let currindex = filteredPetList.indexOf(selectedPet); + setSelectedPet( + filteredPetList[ + (currindex + dir + filteredPetList.length) % filteredPetList.length + ], + ); + }; + + return ( + + + + + + + + + +
+ +
+
+
+
+ +
+ + + + + + + + + +
+
+
+
+
+ ); +}; + +const PetSelector = ({ + selectedSpecie, + selectedPet, + pet_types, + ScrollPetSpecies, + ScrollPetOptions, +}: any) => ( +
+ + + + +
+); + +const PetDetails = ({ + selectedName, + setSelectedName, + selectedGender, + setSelectedGender, +}: any) => ( + + + + + Pet Name + + setSelectedName(value)} + style={{ borderRadius: '1em' }} + /> + + + + + + + + + + Pet Gender + + + +